diff -Nru gem-0.94~pre1/abstractions/gemwin.pd gem-0.94/abstractions/gemwin.pd --- gem-0.94~pre1/abstractions/gemwin.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/abstractions/gemwin.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,54 +1,55 @@ #N canvas 789 95 937 708 10; #X obj 126 74 inlet; #X obj 626 678 outlet; -#N canvas 1 51 1018 458 argument 0; -#X obj 291 213 list append \$1; -#X obj 291 234 route float; -#X obj 312 33 inlet; -#X obj 291 256 * -1; -#X obj 291 276 moses; -#X obj 291 298 * -1; -#X msg 365 303 20; -#X obj 365 278 t b; -#X obj 291 337 t f; -#X obj 291 375 s \$0-rate; -#X obj 678 271 list prepend \$2; -#X obj 599 388 symbol; -#X obj 599 151 t b b; -#X obj 599 225 select sym; -#X obj 599 203 symbol \$2_; -#X obj 670 203 makefilename %s2_; -#X msg 670 176 symbol $; +#N canvas 6 61 702 458 argument 0; +#X obj 318 213 list append \$1; +#X obj 318 234 route float; +#X obj 299 33 inlet; +#X obj 318 256 * -1; +#X obj 318 276 moses; +#X obj 318 298 * -1; +#X msg 392 303 20; +#X obj 318 337 t f; +#X obj 318 375 s \$0-rate; +#X obj 148 271 list prepend \$2; +#X obj 318 415 symbol; +#X obj 69 151 t b b; +#X obj 69 225 select sym; +#X obj 69 203 symbol \$2_; +#X obj 140 203 makefilename %s2_; +#X msg 140 176 symbol $; #X msg 599 347 __gem_render; -#X msg 678 347 __gem_render\$1; -#X obj 678 249 t b; -#X obj 291 98 t b b; -#X obj 599 410 s \$0-gemheadbasename; +#X msg 148 347 __gem_render\$1; +#X obj 148 249 t b; +#X obj 318 437 s \$0-gemheadbasename; +#X obj 392 278 t b s; +#X obj 299 98 t b b b; #X connect 0 0 1 0; #X connect 1 0 3 0; -#X connect 1 1 7 0; -#X connect 2 0 20 0; +#X connect 1 1 20 0; +#X connect 2 0 21 0; #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 4 1 6 0; -#X connect 5 0 8 0; -#X connect 6 0 8 0; -#X connect 7 0 6 0; -#X connect 8 0 9 0; -#X connect 10 0 18 0; -#X connect 11 0 21 0; -#X connect 12 0 14 0; -#X connect 12 1 16 0; -#X connect 13 0 17 0; -#X connect 13 1 19 0; -#X connect 14 0 13 0; -#X connect 15 0 13 1; -#X connect 16 0 15 0; -#X connect 17 0 11 0; -#X connect 18 0 11 0; -#X connect 19 0 10 0; -#X connect 20 0 0 0; -#X connect 20 1 12 0; +#X connect 5 0 7 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 9 0 17 0; +#X connect 10 0 19 0; +#X connect 11 0 13 0; +#X connect 11 1 15 0; +#X connect 12 1 18 0; +#X connect 13 0 12 0; +#X connect 14 0 12 1; +#X connect 15 0 14 0; +#X connect 16 0 10 0; +#X connect 17 0 10 0; +#X connect 18 0 9 0; +#X connect 20 0 6 0; +#X connect 20 1 17 0; +#X connect 21 0 11 0; +#X connect 21 1 0 0; +#X connect 21 2 16 0; #X restore 390 87 pd argument; #N canvas 216 61 991 633 messages 0; #X text 94 19 bang float render title create createStereo createstereo @@ -78,12 +79,12 @@ #X text 71 589 unused:; #X text 112 604 blur; #X restore 230 59 pd messages; -#N canvas 114 51 901 630 window 0; +#N canvas 114 61 901 811 window 0; #X obj 282 340 t a; #X obj 282 389 t a; -#X obj 282 574 outlet; +#X obj 282 664 outlet; #X text 417 23 messages to be understood:; -#N canvas 0 50 450 300 messages 0; +#N canvas 6 61 450 300 messages 0; #X text 22 100 create destroy dimen offset secondscreen fullscreen cursor menubar border title topmost buffer reset print FSAA; #X restore 639 19 pd messages; @@ -187,8 +188,7 @@ #X connect 7 0 8 0; #X connect 8 0 1 0; #X restore 124 241 pd live decoration; -#X obj 282 502 t b; -#X text 113 485 context established \, now draw!; +#X text 113 585 context established \, now draw!; #X obj 439 557 route mouse keyboard dimen offset info; #X obj 439 535 outlet info; #X obj 282 288 t a; @@ -202,7 +202,7 @@ #X obj 31 186 outlet; #X obj 195 216 outlet gemwin; #X obj 195 154 t b; -#X msg 195 177 dimen 500 500 \, offset 0 0 \, fullscreen 0 \, title +#X msg 195 177 dimen 500 500 \, offset 50 50 \, fullscreen 0 \, title GEM \, buffer 2 \, cursor 1 \, topmost 0; #X connect 0 0 1 0; #X connect 1 0 4 0; @@ -213,12 +213,12 @@ #N canvas 0 50 450 300 info 0; #X obj 195 216 outlet gemwin; #X obj 195 189 list prepend print; -#X obj 195 159 r \$0-print; +#X obj 195 159 r \$0-print.window; #X connect 1 0 0 0; #X connect 2 0 1 0; #X restore 124 262 pd info; #X obj 282 361 gemdefaultwindow; -#X obj 565 431 s \$0-realdimen; +#X obj 550 431 s \$0-realdimen; #X obj 333 254 inlet; #X obj 282 425 route bang; #X obj 348 449 t a a; @@ -234,23 +234,40 @@ #X connect 3 0 1 0; #X connect 4 0 3 0; #X restore 126 291 pd rendercontext; -#X connect 0 0 30 0; -#X connect 1 0 33 0; -#X connect 17 0 24 0; -#X connect 18 0 24 0; -#X connect 19 0 24 0; -#X connect 20 0 2 0; -#X connect 24 0 25 0; -#X connect 25 0 0 0; -#X connect 29 0 24 0; -#X connect 30 0 1 0; -#X connect 32 0 0 0; -#X connect 33 0 20 0; +#X obj 282 602 t b b; +#N canvas 6 61 450 300 gemman 0; +#X obj 130 195 gemmanager; +#X msg 130 172 dimen \$1 \$2; +#X obj 247 124 r \$0-realdimen; +#X obj 130 149 list prepend 500 500; +#X obj 130 26 inlet; +#X obj 130 49 t b; +#X connect 1 0 0 0; +#X connect 2 0 3 1; +#X connect 3 0 1 0; +#X connect 4 0 5 0; +#X connect 5 0 3 0; +#X restore 309 635 pd gemman; +#X obj 640 431 s \$0-realoffset; +#X connect 0 0 29 0; +#X connect 1 0 32 0; +#X connect 17 0 23 0; +#X connect 18 0 23 0; +#X connect 19 0 23 0; +#X connect 23 0 24 0; +#X connect 24 0 0 0; +#X connect 28 0 23 0; +#X connect 29 0 1 0; +#X connect 31 0 0 0; +#X connect 32 0 36 0; +#X connect 32 1 33 0; +#X connect 33 0 22 0; #X connect 33 1 34 0; -#X connect 34 0 23 0; -#X connect 34 1 35 0; -#X connect 35 2 31 0; -#X connect 36 0 24 0; +#X connect 34 2 30 0; +#X connect 34 3 38 0; +#X connect 35 0 23 0; +#X connect 36 0 2 0; +#X connect 36 1 37 0; #X restore 131 285 pd window; #X text 55 19 meant as a modular replacement for the internal [gemwin] ; @@ -831,18 +848,20 @@ #X connect 36 0 38 0; #X connect 37 0 31 0; #X restore 118 106 pd window; -#N canvas 1 51 450 300 print 0; -#X obj 118 78 t b; +#N canvas 5 51 450 300 print 0; #X obj 118 28 inlet; #X obj 209 27 outlet; -#X obj 118 100 s \$0-print; #X obj 118 57 route print debug; -#X obj 202 100 s \$0-debug; -#X connect 0 0 3 0; -#X connect 1 0 4 0; -#X connect 4 0 0 0; -#X connect 4 1 5 0; -#X connect 4 2 2 0; +#X obj 167 80 s \$0-debug; +#X obj 118 78 t b b; +#X obj 118 100 s \$0-print.win; +#X obj 145 120 s \$0-print.window; +#X connect 0 0 2 0; +#X connect 2 0 4 0; +#X connect 2 1 3 0; +#X connect 2 2 1 0; +#X connect 4 0 5 0; +#X connect 4 1 6 0; #X restore 118 77 pd print; #N canvas 1521 50 810 323 stereo 0; #X obj 101 28 inlet; @@ -1047,7 +1066,7 @@ #X connect 14 0 8 0; #X connect 14 1 10 0; #X restore 144 166 pd perspec; -#N canvas 1900 93 450 229 viewport 0; +#N canvas 1464 93 450 229 viewport 0; #X obj 87 93 inlet; #X obj 87 157 outlet; #X obj 87 126 GEMglViewport 0 0 500 500; @@ -1064,18 +1083,18 @@ #X connect 3 0 2 0; #X connect 4 0 3 0; #X restore 115 160 pd viewpoint; -#N canvas 914 178 685 625 fog 0; +#N canvas 1203 395 685 625 fog 0; #X obj 71 73 inlet; #X obj 71 507 outlet; #X obj 71 98 t a a; #X obj 71 246 spigot 1; #X obj 71 273 GEMglDisable GL_FOG; #X obj 71 428 t a; -#X obj 261 273 GEMglEnable GL_FOG; -#X obj 261 246 spigot 0; -#X obj 165 223 t f f; -#X obj 165 199 == 0; -#N canvas 0 50 450 300 density 0; +#X obj 261 253 GEMglEnable GL_FOG; +#X obj 261 226 spigot 0; +#X obj 185 122 t f f; +#X obj 185 98 == 0; +#N canvas 6 61 450 300 density 0; #X obj 100 113 inlet; #X obj 100 234 outlet; #X obj 100 203 GEMglFogf; @@ -1083,8 +1102,8 @@ #X obj 238 139 t b f; #X obj 130 169 GLdefine GL_FOG_DENSITY; #X obj 238 112 f 0.5; -#X obj 336 78 r \$0-reset; -#X msg 336 101 0.5; +#X obj 156 58 r \$0-reset; +#X msg 156 81 0.5; #X connect 0 0 2 0; #X connect 2 0 1 0; #X connect 3 0 6 0; @@ -1093,7 +1112,7 @@ #X connect 5 0 2 1; #X connect 6 0 4 0; #X connect 7 0 8 0; -#X connect 8 0 6 1; +#X connect 8 0 6 0; #X restore 261 326 pd density; #N canvas 1 51 450 300 mode 0; #X obj 149 191 GEMglFogf; @@ -1117,8 +1136,8 @@ #X obj 238 139 t b f; #X obj 130 169 GLdefine GL_FOG_START; #X obj 238 112 f 1; -#X obj 336 78 r \$0-reset; -#X msg 336 101 1; +#X obj 156 48 r \$0-reset; +#X msg 156 71 1; #X connect 0 0 2 0; #X connect 2 0 1 0; #X connect 3 0 6 0; @@ -1127,7 +1146,7 @@ #X connect 5 0 2 1; #X connect 6 0 4 0; #X connect 7 0 8 0; -#X connect 8 0 6 1; +#X connect 8 0 6 0; #X restore 261 346 pd start; #N canvas 0 50 450 300 end 0; #X obj 100 113 inlet; @@ -1136,9 +1155,9 @@ #X obj 238 82 inlet value; #X obj 238 139 t b f; #X obj 130 169 GLdefine GL_FOG_END; -#X obj 336 78 r \$0-reset; +#X obj 166 58 r \$0-reset; #X obj 238 112 f 20; -#X msg 336 101 20; +#X msg 166 81 20; #X connect 0 0 2 0; #X connect 2 0 1 0; #X connect 3 0 7 0; @@ -1147,7 +1166,7 @@ #X connect 5 0 2 1; #X connect 6 0 8 0; #X connect 7 0 4 0; -#X connect 8 0 7 1; +#X connect 8 0 7 0; #X restore 261 366 pd end; #N canvas 0 50 450 300 color 0; #X obj 100 113 inlet; @@ -1158,8 +1177,8 @@ #X obj 238 139 t b l; #X obj 238 64 route bang; #X obj 280 92 t b l; -#X obj 368 68 r \$0-reset; -#X msg 368 91 1 1 1 1; +#X obj 338 28 r \$0-reset; +#X msg 338 51 1 1 1 1; #X obj 238 112 list append 1 1 1 1; #X connect 0 0 3 0; #X connect 2 0 6 0; @@ -1172,15 +1191,16 @@ #X connect 7 0 10 0; #X connect 7 1 10 1; #X connect 8 0 9 0; -#X connect 9 0 10 1; +#X connect 9 0 7 0; #X connect 10 0 5 0; #X restore 261 386 pd color; #X obj 485 324 unpack; -#X obj 165 174 r \$0-fog; -#X obj 307 219 r \$0-fogMode; +#X obj 185 73 r \$0-fog; +#X obj 347 279 r \$0-fogMode; #X obj 347 307 r \$0-fogDensity; #X obj 485 301 r \$0-fogRange; #X obj 365 368 r \$0-fogColor; +#X obj 306 200 == 0; #X connect 0 0 2 0; #X connect 2 0 3 0; #X connect 2 1 7 0; @@ -1190,7 +1210,7 @@ #X connect 6 0 11 0; #X connect 7 0 6 0; #X connect 8 0 3 1; -#X connect 8 1 7 1; +#X connect 8 1 21 0; #X connect 9 0 8 0; #X connect 10 0 12 0; #X connect 11 0 10 0; @@ -1204,6 +1224,7 @@ #X connect 18 0 10 1; #X connect 19 0 15 0; #X connect 20 0 14 1; +#X connect 21 0 7 1; #X restore 115 186 pd fog; #N canvas 303 56 722 526 lighting 0; #X obj 71 168 t a a; @@ -1289,8 +1310,8 @@ #X obj 175 126 r \$0-lighting; #X obj 320 84 print light; #X obj 71 235 GEMglDisable GL_LIGHTING; -#X floatatom 437 214 5 0 0 0 - - -, f 5; -#X floatatom 242 149 5 0 0 0 - - -, f 5; +#X floatatom 437 214 5 0 0 0 - - -; +#X floatatom 242 149 5 0 0 0 - - -; #X obj 414 191 == 0; #X connect 0 0 1 0; #X connect 0 1 2 0; @@ -1389,7 +1410,7 @@ #X connect 3 0 4 0; #X connect 4 0 5 0; #X restore 163 580 pd normalRendering; -#N canvas 4 50 596 529 2screenStereo 0; +#N canvas 6 61 596 529 2screenStereo 0; #X obj 95 70 inlet; #X obj 95 90 t a b; #X obj 163 92 list append 500 500; @@ -1898,7 +1919,7 @@ #X connect 16 0 8 0; #X connect 16 1 15 0; #X restore 163 496 pd stereoDemux; -#N canvas 4 50 436 529 anaglyphStereo 0; +#N canvas 6 61 436 529 anaglyphStereo 0; #X obj 95 70 inlet; #X obj 95 90 t a b; #X obj 146 142 list append 500 500; @@ -2350,7 +2371,7 @@ #X connect 10 0 9 0; #X connect 10 1 8 0; #X restore 226 536 pd anaglyphStereo; -#N canvas 519 50 506 526 CrystalEyeStereo 0; +#N canvas 519 61 506 526 CrystalEyeStereo 0; #X obj 95 70 inlet; #X obj 95 90 t a b; #X obj 146 142 list append 500 500; @@ -2882,7 +2903,6 @@ #X obj 131 190 t f f; #X obj 264 235 t b f; #X obj 278 363 f; -#X obj 626 497 t a a; #X obj 658 523 s __gem; #N canvas 1 51 450 300 fps 0; #X obj 101 60 inlet; @@ -3059,9 +3079,40 @@ #X connect 5 0 2 1; #X connect 6 0 1 0; #X restore 174 97 pd loadbang; -#X connect 0 0 46 0; -#X connect 4 0 38 0; -#X connect 4 1 33 0; +#X obj 626 497 t a a a; +#N canvas 351 154 450 474 print 0; +#X obj 180 153 list append 500 500; +#X obj 336 111 r \$0-dimen; +#X obj 291 89 r \$0-realdimen; +#X obj 291 133 pack 0 0; +#X obj 77 66 r \$0-print.win; +#X obj 267 223 pack 0 0; +#X obj 180 243 list append 0 0; +#X obj 267 179 r \$0-realoffset; +#X obj 312 201 r \$0-offset; +#X obj 77 89 t b b; +#X msg 180 133 dimen; +#X msg 180 223 offset; +#X obj 100 349 print [gemwin]; +#X obj 100 326 list trim; +#X connect 0 0 13 0; +#X connect 1 0 3 0; +#X connect 2 0 3 0; +#X connect 3 0 0 1; +#X connect 4 0 9 0; +#X connect 5 0 6 1; +#X connect 6 0 13 0; +#X connect 7 0 5 0; +#X connect 8 0 5 0; +#X connect 9 0 11 0; +#X connect 9 1 10 0; +#X connect 10 0 0 0; +#X connect 11 0 6 0; +#X connect 13 0 12 0; +#X restore 741 519 pd print; +#X connect 0 0 45 0; +#X connect 4 0 37 0; +#X connect 4 1 47 0; #X connect 7 0 2 0; #X connect 10 0 23 0; #X connect 11 0 24 0; @@ -3078,7 +3129,7 @@ #X connect 15 1 25 0; #X connect 17 0 18 0; #X connect 18 0 19 1; -#X connect 19 0 40 0; +#X connect 19 0 39 0; #X connect 20 0 28 0; #X connect 21 0 17 0; #X connect 22 0 30 0; @@ -3092,24 +3143,24 @@ #X connect 29 1 25 0; #X connect 30 0 19 0; #X connect 30 1 31 0; -#X connect 31 0 42 0; +#X connect 31 0 41 0; #X connect 31 1 32 1; #X connect 32 0 29 0; -#X connect 33 0 1 0; -#X connect 33 1 34 0; -#X connect 35 0 1 0; -#X connect 36 0 20 0; -#X connect 36 1 35 0; -#X connect 38 0 41 0; -#X connect 39 0 4 0; -#X connect 39 1 38 1; -#X connect 40 0 39 0; -#X connect 41 0 36 0; -#X connect 41 1 32 0; -#X connect 41 2 37 0; -#X connect 42 0 39 0; -#X connect 43 0 39 0; -#X connect 44 0 43 0; -#X connect 45 0 40 0; -#X connect 46 0 9 0; -#X connect 46 1 47 0; +#X connect 34 0 1 0; +#X connect 35 0 20 0; +#X connect 35 1 34 0; +#X connect 37 0 40 0; +#X connect 38 0 4 0; +#X connect 38 1 37 1; +#X connect 39 0 38 0; +#X connect 40 0 35 0; +#X connect 40 1 32 0; +#X connect 40 2 36 0; +#X connect 41 0 38 0; +#X connect 42 0 38 0; +#X connect 43 0 42 0; +#X connect 44 0 39 0; +#X connect 45 0 9 0; +#X connect 45 1 46 0; +#X connect 47 0 1 0; +#X connect 47 1 33 0; diff -Nru gem-0.94~pre1/abstractions/Makefile.am gem-0.94/abstractions/Makefile.am --- gem-0.94~pre1/abstractions/Makefile.am 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/abstractions/Makefile.am 2019-02-12 13:10:01.000000000 +0000 @@ -1,6 +1,6 @@ AUTOMAKE_OPTIONS = foreign -SUFFIXES = .pd +.SUFFIXES = .pd gemabsdir=$(pkglibdir) diff -Nru gem-0.94~pre1/build/travis-ci/common.source gem-0.94/build/travis-ci/common.source --- gem-0.94~pre1/build/travis-ci/common.source 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/build/travis-ci/common.source 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -## include this at the beginning of your travis-scripts -## with something like -## test -r ${0%/*}/common.source && . ${0%/*}/common.source - - -## helper functions -error() { - echo "$@" 1>&2 -} -debug() { - error "$@" - $@ -} -getbin() { - for i in $@ - do - if which "${i}" >/dev/null 2>&1 - then - echo "${i}" - return - fi - done -} - -READLINK=$(getbin greadlink readlink) - -if [ "x$(${READLINK} -f . 2>/dev/null)" = "x" ]; then - READLINK="" -fi - -SCRIPTDIR=${0%/*} - -if [ "x${READLINK}" != "x" ]; then - SCRIPTDIR=$(${READLINK} -f "${SCRIPTDIR}") - GEMDIR=$(${READLINK} -f "${SCRIPTDIR}/../..") -else -## try to get full path of SCRIPTDIR -# if SCRIPTDIR starts with a slash, it's an absolute path (leave it as it is) -# else we append it to the current working directory - if [ "x${SCRIPTDIR#/}" = "x${SCRIPTDIR}" ]; then - SCRIPTDIR=$(pwd)/${SCRIPTDIR} - fi - GEMDIR=${SCRIPTDIR}/../.. -fi - -PDDIR=/usr/include/pd -BUILDDIR=${GEMDIR} - -ENVFILE=${SCRIPTDIR}/gem.env - -if [ -e "${ENVFILE}" ]; then - . "${ENVFILE}" -else - error "couldn't read env-file ${ENVFILE}, continuing anyhow" -fi - - -error "SCRIPTDIR: ${SCRIPTDIR}" -error "GEMDIR: ${GEMDIR}" -error "ARCH: ${ARCH}" diff -Nru gem-0.94~pre1/build/travis-ci/configure.sh gem-0.94/build/travis-ci/configure.sh --- gem-0.94~pre1/build/travis-ci/configure.sh 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/build/travis-ci/configure.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -#!/bin/sh -# this script is intended to be run by Travis -# see https://travis-ci.org/umlaeute/Gem - -## it's based on avilleret's work: -# see https://travis-ci.org/avilleret/Gem - -test -r ${0%/*}/common.source && . ${0%/*}/common.source - -cd "${SCRIPTDIR}" - -error "configuring Gem for $TRAVIS_OS_NAME" - -debug ${GEMDIR}/autogen.sh || exit 1 -mkdir -p "${BUILDDIR}" -cd "${BUILDDIR}" - -case "$TRAVIS_OS_NAME" in - linux) - if [ "x${ARCH}" != "x" -a "x${ARCH}" != "x$(uname -m)" ]; then - error "unable to cross-compile for architecture ${ARCH}" - exit 1 - fi - CONFIGUREFLAGS="" - #CONFIGUREFLAGS="--without-ftgl" - ;; - osx) - CONFIGUREFLAGS="--without-ftgl \ - --without-QuickTime-framework \ - --without-Carbon-framework" - if [ "x${ARCH}" != "x" ]; then - CONFIGUREFLAGS+=" --enable-fat-binary=${ARCH}" - fi - ;; -esac - -debug "${GEMDIR}/configure" --with-pd="${PDDIR}" ${CONFIGUREFLAGS} diff -Nru gem-0.94~pre1/build/travis-ci/coverity_branch.sh gem-0.94/build/travis-ci/coverity_branch.sh --- gem-0.94~pre1/build/travis-ci/coverity_branch.sh 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/build/travis-ci/coverity_branch.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -#!/bin/sh - -PUSH= -if [ "x$1" = "x-n" ]; then - PUSH=no -fi -if [ "x$1" = "x-y" ]; then - PUSH=yes -fi - -if git push . master:coverity_scan -then - if [ "x${PUSH}" = "x" ]; then - echo -n "Shall I push 'coverity_scan' to remote [Y/n]? " 1>&2 - read PUSH - if [ "x${PUSH}" = "x" ]; then - PUSH=yes - fi - case "${PUSH}" in - yes|YES|y|Y) - PUSH=yes - ;; - no|NO|n|N) - PUSH=no - ;; - *) - echo "Invalid value '${PUSH}' - assuming 'no'" 1>&2 - PUSH=no - ;; - esac - fi - if [ "x${PUSH}" = "xyes" ]; then - git push origin coverity_scan:coverity_scan - fi -fi diff -Nru gem-0.94~pre1/build/travis-ci/depinstall-linux.sh gem-0.94/build/travis-ci/depinstall-linux.sh --- gem-0.94~pre1/build/travis-ci/depinstall-linux.sh 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/build/travis-ci/depinstall-linux.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -#!/bin/sh - -test -r ${0%/*}/common.source && . ${0%/*}/common.source - -DEPDIR=${SCRIPTDIR}/deps -mkdir -p "${DEPDIR}" -cd "${DEPDIR}" - -doinstall() { - sudo ../depinstall-linux.sudo.sh - - #wget http://msp.ucsd.edu/Software/pd-0.46-2.src.tar.gz - #tar -xvf pd-0.46-2.src.tar.gz - #PDDIR=$(pwd)/pd-0.46-2/src -} - -doinstall 1>&2 - -ENVFILE=$(mktemp /tmp/gemenv.XXXXXX) - -cat > ${ENVFILE} << EOF -PDDIR=${PDDIR} -EOF - -echo "${ENVFILE}" - - diff -Nru gem-0.94~pre1/build/travis-ci/depinstall-linux.sudo.sh gem-0.94/build/travis-ci/depinstall-linux.sudo.sh --- gem-0.94~pre1/build/travis-ci/depinstall-linux.sudo.sh 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/build/travis-ci/depinstall-linux.sudo.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -#!/bin/sh - -apt-get update -qq -apt-get build-dep gem -qq -apt-get install libglfw-dev libglfw3-dev libsdl2-dev -qq -apt-get install libvncserver-dev -qq diff -Nru gem-0.94~pre1/build/travis-ci/depinstall-osx.sh gem-0.94/build/travis-ci/depinstall-osx.sh --- gem-0.94~pre1/build/travis-ci/depinstall-osx.sh 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/build/travis-ci/depinstall-osx.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ -#!/bin/sh -test -r ${0%/*}/common.source && . ${0%/*}/common.source - -DEPDIR=${SCRIPTDIR}/deps - -mkdir -p "${DEPDIR}" -cd "${DEPDIR}" - -## LATER: fetch the lastest GemDependencies package via -github_list_releaseartifacts() { - # call as: github_list_releaseartifacts umlaeute/Gem-dependencies - curl -s https://api.github.com/repos/$1/releases/latest \ - | jq -r ".assets[] | select(.name | test(\"${spruce_type}\")) | .browser_download_url" -} - -brewinstall() { - brew install "$@" || (brew upgrade "$@" && brew cleanup "$@") -} - -doinstall() { - brew update - brewinstall pkg-config gettext - brew link gettext --force - if [ "x${ARCH}" != "xi386" ]; then - brewinstall fribidi - fi - brewinstall imagemagick ftgl - brewinstall sdl glfw glfw@2 - brewinstall coreutils - - ## and install pd - PDVERSION="0.48-0" - if [ "x${ARCH}" = "xi386" ]; then - wget http://msp.ucsd.edu/Software/pd-${PDVERSION}-i386.mac.tar.gz - tar -xf pd-${PDVERSION}-i386.mac.tar.gz - PDDIR=$(pwd)/Pd-${PDVERSION}-i386.app/Contents/Resources/ - else - wget http://msp.ucsd.edu/Software/pd-${PDVERSION}.mac.tar.gz - tar -xf pd-${PDVERSION}.mac.tar.gz - PDDIR=$(pwd)/Pd-${PDVERSION}.app/Contents/Resources/ - fi - chmod -R u+rXw . - -} - -doinstall 1>&2 - - -ENVFILE=$(mktemp /tmp/gemenv.XXXXXX) - -cat > ${ENVFILE} << EOF -PDDIR=${PDDIR} -EOF - -echo "${ENVFILE}" - diff -Nru gem-0.94~pre1/build/travis-ci/depinstall.sh gem-0.94/build/travis-ci/depinstall.sh --- gem-0.94~pre1/build/travis-ci/depinstall.sh 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/build/travis-ci/depinstall.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -#!/bin/sh -test -r ${0%/*}/common.source && . ${0%/*}/common.source - -cd "${SCRIPTDIR}" -INSTALLSCRIPT="./depinstall-${TRAVIS_OS_NAME}.sh" - -if [ -x "${INSTALLSCRIPT}" ]; then - envfile=$(${INSTALLSCRIPT}) - mv "${envfile}" "${ENVFILE}" -else - error "no install-script found for: ${TRAVIS_OS_NAME}" - error "assuming all is well" -fi - - diff -Nru gem-0.94~pre1/build/travis-ci/deploy-git.sh gem-0.94/build/travis-ci/deploy-git.sh --- gem-0.94~pre1/build/travis-ci/deploy-git.sh 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/build/travis-ci/deploy-git.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,106 +0,0 @@ -#!/bin/sh -# this script is intended to be run by Travis -# and creates a tgz from the "make install" data. -test -r ${0%/*}/common.source && . ${0%/*}/common.source - -if [ "x${GITDEPLOYTARGET}" = "x" ]; then - error "no git-deploytarget defined; skipping deployment" - exit 0 -fi -GITDEPLOYHOST="${GITDEPLOYTARGET##*@}" -GITDEPLOYHOST="${GITDEPLOYHOST%%/*}" - -KEYFILE=${HOME}/.ssh/id_rsa - -# check if there is an ssh keyfile -# if not, try to decrypt one; if that fails stop -if [ ! -e "${KEYFILE}" ]; then - mkdir -p ${HOME}/.ssh - openssl aes-256-cbc -K $encrypted_a508a15bf9d3_key -iv $encrypted_a508a15bf9d3_iv -in ${0%/*}/travisci.enc -out "${KEYFILE}" -d -fi -if [ ! -e "${KEYFILE}" ]; then - error "couldn't find ${KEYFILE}; skipping deployment" - exit 0 -fi - - - -OS_NAME="${TRAVIS_OS_NAME}" -if [ "x${OS_NAME}" = "x" ]; then OS_NAME=OS; fi -if [ "x$(which dpkg-architecture)" != "x" ]; then - if [ "x${ARCH}" = "x" ]; then ARCH=$(dpkg-architecture -qDEB_BUILD_ARCH); fi -fi -if [ "x$(which uname)" != "x" ]; then - if [ "x${ARCH}" = "x" ]; then ARCH=$(uname -m); fi -fi -if [ "x${ARCH}" = "x" ]; then ARCH=default; fi -if [ "x${BUILDDIR}" = "x" ]; then BUILDDIR=.; fi - -DEPLOY_BRANCH="${TRAVIS_OS_NAME}/${ARCH}" - - -error "deploying to branch: ${DEPLOY_BRANCH}" - - -## config done - -## password-less authentication to deploy host - -# make sure our remote host is known -# (so we are not asked to accept it) -mkdir -p ~/.ssh -chmod 700 ~/.ssh -ssh-keyscan -H ${GITDEPLOYHOST} >> ~/.ssh/known_hosts -error "ssh-keyscanned ${GITDEPLOYHOST}" - -# and use the (encrypted) auth key -if [ -e "${KEYFILE}" ]; then - chmod 600 "${KEYFILE}" - ssh-add "${KEYFILE}" - error "ssh-added ${KEYFILE}" -else - error "missing ${KEYFILE}" -fi - -## prepare the target directory -# (fetch it via git) -cd "${BUILDDIR}" -BUILDDIR=$(pwd) - -DESTDIR=$(mktemp -d /tmp/geminstall.XXXXXX) - -## shallow clone of the repository (of the desired branch if possible) -git clone -b "${DEPLOY_BRANCH}" --depth 1 ${GITDEPLOYTARGET} "${DESTDIR}" \ -|| git clone --depth 1 ${GITDEPLOYTARGET} "${DESTDIR}" -cd "${DESTDIR}" -## if the shallow clone (above) managed to clone the proper branch, the -## following is a nop. -## else it will create the branch for us -git checkout "${DEPLOY_BRANCH}" \ -|| git checkout -b "${DEPLOY_BRANCH}" -## cleanup, we don't want content from the olde commits -rm -rf * -cd "${BUILDDIR}" - - -error "now installing Gem to ${DESTDIR}" -make install DESTDIR=${DESTDIR}/Gem pkglibdir=/ extradir=/ includedir=/develop/include pkgconfigdir=/develop/pkgconfig - -cd "${DESTDIR}" -error "setting up user-identity" -git config user.email "zmoelnig@travis-ci.umlaeute.mur.at" -git config user.name "Travis CI" - - -if [ -d "Gem" ]; then - error "commiting Gem-${DEPLOY_BRANCH}" - git add -A Gem - git commit -m "Gem ${TRAVIS_COMMIT} ${DEPLOY_BRANCH} - -built '${TRAVIS_BRANCH}:${TRAVIS_COMMIT}' for ${DEPLOY_BRANCH}" - error "now pushing Gem from $(pwd)" - git push --set-upstream origin "${DEPLOY_BRANCH}" -else - error "refusing to push non-existing Gem" -fi -error "$0 done." diff -Nru gem-0.94~pre1/build/travis-ci/prepare-upload.sh gem-0.94/build/travis-ci/prepare-upload.sh --- gem-0.94~pre1/build/travis-ci/prepare-upload.sh 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/build/travis-ci/prepare-upload.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -#!/bin/sh -# this script is intended to be run by Travis -# and creates a tgz from the "make install" data. -test -r ${0%/*}/common.source && . ${0%/*}/common.source - -cd "${BUILDDIR}" - -DESTDIR=$(mktemp -d /tmp/geminstall.XXXXXX) - -make install DESTDIR=${DESTDIR}/Gem pkglibdir=/ extradir=/ includedir=/develop/include pkgconfigdir=/develop/pkgconfig - -cd "${DESTDIR}" && tar cvzf "${TRAVIS_BUILD_DIR}/Gem-${TRAVIS_OS_NAME}${ARCH}-${TRAVIS_TAG}.tgz" Gem/ diff -Nru gem-0.94~pre1/build/travis-ci/skipbuild.sh gem-0.94/build/travis-ci/skipbuild.sh --- gem-0.94~pre1/build/travis-ci/skipbuild.sh 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/build/travis-ci/skipbuild.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -#!/bin/sh - -error() { - echo "$@" 1>&2 -} - -## skip coverity_scan builds on anything but linux -if [ "x${TRAVIS_OS_NAME}" = "xosx" -a "x${COVERITY_SCAN_BRANCH}" = "x1" ]; then - error "(not) skipping coverity_scan build on OSX" - #exit 0 -fi - -exit 1 diff -Nru gem-0.94~pre1/build/travis-ci/travisci_build_coverity_scan.sh gem-0.94/build/travis-ci/travisci_build_coverity_scan.sh --- gem-0.94~pre1/build/travis-ci/travisci_build_coverity_scan.sh 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/build/travis-ci/travisci_build_coverity_scan.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,105 +0,0 @@ -#!/bin/sh - -set -e - -# Environment check -echo -e "\033[33;1mNote: COVERITY_SCAN_PROJECT_NAME and COVERITY_SCAN_TOKEN are available on Project Settings page on scan.coverity.com\033[0m" -[ -z "$COVERITY_SCAN_PROJECT_NAME" ] && echo "ERROR: COVERITY_SCAN_PROJECT_NAME must be set" && exit 1 -[ -z "$COVERITY_SCAN_NOTIFICATION_EMAIL" ] && echo "ERROR: COVERITY_SCAN_NOTIFICATION_EMAIL must be set" && exit 1 -[ -z "$COVERITY_SCAN_BRANCH_PATTERN" ] && echo "ERROR: COVERITY_SCAN_BRANCH_PATTERN must be set" && exit 1 -[ -z "$COVERITY_SCAN_BUILD_COMMAND" ] && echo "ERROR: COVERITY_SCAN_BUILD_COMMAND must be set" && exit 1 -[ -z "$COVERITY_SCAN_TOKEN" ] && echo "ERROR: COVERITY_SCAN_TOKEN must be set" && exit 1 - -PLATFORM=`uname` -TOOL_ARCHIVE=/tmp/cov-analysis-${PLATFORM}.tgz -TOOL_URL=https://scan.coverity.com/download/${PLATFORM} -TOOL_BASE=/tmp/coverity-scan-analysis -UPLOAD_URL="https://scan.coverity.com/builds" -SCAN_URL="https://scan.coverity.com" - -# Do not run on pull requests -if [ "${TRAVIS_PULL_REQUEST}" = "true" ]; then - echo -e "\033[33;1mINFO: Skipping Coverity Analysis: branch is a pull request.\033[0m" - exit 0 -fi - -# Only run on the first job -if [ "x${TRAVIS_JOB_NUMBER%.1}" = "x${TRAVIS_JOB_NUMBER}" ]; then - echo -e "\033[33;1mINFO: Skipping Coverity Analysis for non-first sub-job ${TRAVIS_JOB_NUMBER}.\033[0m" - exit 0 -fi - -# Verify this branch should run -IS_COVERITY_SCAN_BRANCH=`ruby -e "puts '${TRAVIS_BRANCH}' =~ /\\A$COVERITY_SCAN_BRANCH_PATTERN\\z/ ? 1 : 0"` -if [ "$IS_COVERITY_SCAN_BRANCH" = "1" ]; then - echo -e "\033[33;1mCoverity Scan configured to run on branch ${TRAVIS_BRANCH}\033[0m" -else - echo -e "\033[33;1mCoverity Scan NOT configured to run on branch ${TRAVIS_BRANCH}\033[0m" - exit 1 -fi - -# Verify upload is permitted -AUTH_RES=`curl -s --form project="$COVERITY_SCAN_PROJECT_NAME" --form token="$COVERITY_SCAN_TOKEN" $SCAN_URL/api/upload_permitted` -if [ "$AUTH_RES" = "Access denied" ]; then - echo -e "\033[33;1mCoverity Scan API access denied. Check COVERITY_SCAN_PROJECT_NAME and COVERITY_SCAN_TOKEN.\033[0m" - exit 1 -else - AUTH=`echo $AUTH_RES | ruby -e "require 'rubygems'; require 'json'; puts JSON[STDIN.read]['upload_permitted']"` - if [ "$AUTH" = "true" ]; then - echo -e "\033[33;1mCoverity Scan analysis authorized per quota.\033[0m" - else - WHEN=`echo $AUTH_RES | ruby -e "require 'rubygems'; require 'json'; puts JSON[STDIN.read]['next_upload_permitted_at']"` - echo -e "\033[33;1mCoverity Scan analysis NOT authorized until $WHEN.\033[0m" - exit 1 - fi -fi - -if [ ! -d $TOOL_BASE ]; then - # Download Coverity Scan Analysis Tool - if [ ! -e $TOOL_ARCHIVE ]; then - echo -e "\033[33;1mDownloading Coverity Scan Analysis Tool...\033[0m" - wget -nv -O $TOOL_ARCHIVE $TOOL_URL --post-data "project=$COVERITY_SCAN_PROJECT_NAME&token=$COVERITY_SCAN_TOKEN" - fi - - # Extract Coverity Scan Analysis Tool - echo -e "\033[33;1mExtracting Coverity Scan Analysis Tool...\033[0m" - mkdir -p $TOOL_BASE - pushd $TOOL_BASE - tar xzf $TOOL_ARCHIVE - popd -fi - -TOOL_DIR=`find $TOOL_BASE -type d -name 'cov-analysis*'` -export PATH=$TOOL_DIR/bin:$PATH - -# Build -echo -e "\033[33;1mRunning Coverity Scan Analysis Tool...\033[0m" -COV_BUILD_OPTIONS="" -#COV_BUILD_OPTIONS="--return-emit-failures 8 --parse-error-threshold 85" -RESULTS_DIR="cov-int" -eval "${COVERITY_SCAN_BUILD_COMMAND_PREPEND}" -COVERITY_UNSUPPORTED=1 cov-build --dir $RESULTS_DIR $COV_BUILD_OPTIONS $COVERITY_SCAN_BUILD_COMMAND -cov-import-scm --dir $RESULTS_DIR --scm git --log $RESULTS_DIR/scm_log.txt 2>&1 - -# Upload results -echo -e "\033[33;1mTarring Coverity Scan Analysis results...\033[0m" -RESULTS_ARCHIVE=analysis-results.tgz -tar czf $RESULTS_ARCHIVE $RESULTS_DIR -SHA=`git rev-parse --short HEAD` - -echo -e "\033[33;1mUploading Coverity Scan Analysis results...\033[0m" -response=$(curl \ - --silent --write-out "\n%{http_code}\n" \ - --form project=$COVERITY_SCAN_PROJECT_NAME \ - --form token=$COVERITY_SCAN_TOKEN \ - --form email=$COVERITY_SCAN_NOTIFICATION_EMAIL \ - --form file=@$RESULTS_ARCHIVE \ - --form version=$SHA \ - --form description="Travis CI build" \ - $UPLOAD_URL) -status_code=$(echo "$response" | sed -n '$p') -if [ "$status_code" != "201" ]; then - TEXT=$(echo "$response" | sed '$d') - echo -e "\033[33;1mCoverity Scan upload failed: $TEXT.\033[0m" - exit 1 -fi Binary files /tmp/tmpIPHUbg/u0376ifVzr/gem-0.94~pre1/build/travis-ci/travisci.enc and /tmp/tmpIPHUbg/brDH7W1Hy6/gem-0.94/build/travis-ci/travisci.enc differ diff -Nru gem-0.94~pre1/configure.ac gem-0.94/configure.ac --- gem-0.94~pre1/configure.ac 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/configure.ac 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.60) -AC_INIT([Gem],[0.94~pre1],[zmoelnig@iem.at],[Gem],[http://gem.iem.at]) +AC_INIT([Gem],[0.94],[zmoelnig@iem.at],[Gem],[http://gem.iem.at]) AM_INIT_AUTOMAKE([1.10 foreign]) @@ -28,12 +28,14 @@ AC_CONFIG_FILES([plugins/imageTIFF/Makefile]) AC_CONFIG_FILES([plugins/imageJPEG/Makefile]) AC_CONFIG_FILES([plugins/imageSGI/Makefile]) +AC_CONFIG_FILES([plugins/imageSTB/Makefile]) AC_CONFIG_FILES([plugins/imageIO/Makefile]) AC_CONFIG_FILES([plugins/filmAVF/Makefile]) AC_CONFIG_FILES([plugins/filmAVI/Makefile]) AC_CONFIG_FILES([plugins/filmAVIPLAY/Makefile]) AC_CONFIG_FILES([plugins/filmDS/Makefile]) +AC_CONFIG_FILES([plugins/filmDSATL/Makefile]) AC_CONFIG_FILES([plugins/filmDarwin/Makefile]) AC_CONFIG_FILES([plugins/filmGMERLIN/Makefile]) AC_CONFIG_FILES([plugins/filmMPEG1/Makefile]) @@ -85,6 +87,7 @@ AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([src/config.h]) +AC_CONFIG_HEADERS([src/Gem/GemGLconfig.h]) AC_CONFIG_SRCDIR([src/Base/GemBase.h]) AC_CONFIG_SUBDIRS([extra]) @@ -99,6 +102,18 @@ ARCH=$(uname -m) KERN=$(uname -s) +IFEQ=ifeq +IFNEQ=ifneq +IFDEF=ifdef +IFNDEF=ifndef +ELSE=else +ENDIF=endif +AC_SUBST([IFEQ]) +AC_SUBST([IFNEQ]) +AC_SUBST([IFDEF]) +AC_SUBST([IFNDEF]) +AC_SUBST([ELSE]) +AC_SUBST([ENDIF]) AC_SUBST(CXXCPP) AC_SUBST(CXX) @@ -149,6 +164,7 @@ GEM_CPPFLAGS="" GEM_CHECK_EXTERNAL +AC_ARG_WITH([GLU], AC_HELP_STRING([--without-GLU], [force building without GLU (*not* recommended!)])) GEM_ARG_ENABLE([mmx], [MMX-support]) dnl disabled SSE2 by default, since there are still few chips around that fully support it dnl unlike MMX or SSE @@ -170,6 +186,9 @@ GEM_TARGET(openGL) GEM_TARGET_DISABLED(Vertex) +AC_ARG_ENABLE([experimental], AC_HELP_STRING([--enable-experimental], [enable experimental objects (if any)])) +AM_CONDITIONAL(EXPERIMENTAL, [test "x$enable_experimental" = "xyes"]) + # checks for default headers IEM_CHECK_INCLUDES_DEFAULT([windows.h]) @@ -180,7 +199,7 @@ AC_HEADER_STDC AC_CHECK_HEADERS([stddef.h stdlib.h unistd.h]) AC_CHECK_HEADERS([fcntl.h float.h memory.h string.h strings.h]) -AC_CHECK_HEADERS([sys/select.h sys/ioctl.h sys/time.h]) +AC_CHECK_HEADERS([sys/select.h sys/ioctl.h sys/time.h sys/ipc.h sys/shm.h]) AC_CHECK_HEADERS([wordexp.h]) @@ -207,22 +226,15 @@ AC_CHECK_LIB([z],[zlibVersion]) AC_CHECK_LIB([dl],[dlopen]) -# w32 compatibility library -AC_CHECK_LIB([OLDNAMES], [close]) -AC_CHECK_LIB([coldname], [close]) -# Standard C++ Libray: -AC_CHECK_LIB([libcpmt], [main]) -# C runtime library: -AC_CHECK_LIB([msvcrt], [fclose]) -# Standard C++ Libray: -AC_CHECK_LIB([msvcprt], [main]) -# Winsock Library -AC_CHECK_LIB([ws2_32], [main]) -AC_CHECK_LIB([wsock32], [select]) - -# w32 window creating -AC_CHECK_LIB([gdi32], [main]) - +## w32 compatibility library +#AC_CHECK_LIB([OLDNAMES], [close]) +#AC_CHECK_LIB([coldname], [close]) +## Standard C++ Libray: +#AC_CHECK_LIB([libcpmt], [main]) +## C runtime library: +#AC_CHECK_LIB([msvcrt], [fclose]) +## Standard C++ Libray: +#AC_CHECK_LIB([msvcprt], [main]) ## on OSX X shouldn't be used by default as there are other ways ## however, if people really want it ("--with-x") they should get it @@ -232,8 +244,6 @@ AC_PATH_XTRA AS_IF([test "x$with_x" != "xno"], [ -dnl AC_CHECK_LIB([X11],[main]) -dnl AC_CHECK_LIB([Xext],[main]) AC_CHECK_LIB([Xxf86vm],[XF86VidModeGetAllModeLines]) AC_CHECK_HEADERS([X11/extensions/XInput2.h]) AC_CHECK_LIB([Xrender],[XRenderFindVisualFormat]) @@ -241,11 +251,18 @@ ]) IEM_CHECK_GL -IEM_CHECK_GLU +no_glu=yes +AS_IF([test "x$with_GLU" != "xno"], [IEM_CHECK_GLU]) +AM_CONDITIONAL([HAVE_GLU], [test "x${no_glu}" != "xyes"]) IEM_CHECK_GLUT IEM_CHECK_GLX IEM_CHECK_AGL + +AS_IF([test "x$no_glu" != "xyes"], + AC_DEFINE([GEM_HAVE_GLU], [1], [whether we can use libGLU (normally: yes)]) +) + ## use system's libGLEW GEM_ARG_ENABLE([multicontext], [experimental support for multiple windows]) ## glewmx-args default to glew-args @@ -263,16 +280,16 @@ GEM_LIB_GLEW_LIBS="$GEM_LIB_GLEWMX_LIBS" AM_CONDITIONAL(HAVE_LIB_GLEW, [test "x${have_glew}" = "xyes"]) + AC_DEFINE([GEM_MULTICONTEXT], [1], [whether Gem is built with multi-context support]) ]) AM_CONDITIONAL(ENABLE_MULTICONTEXT, [test "x${enable_multicontext}" = "xyes"]) AS_IF([test "x${have_glew}" != "xyes"], [ - GEM_CPPFLAGS+=" -DGLEW_BUILD" - AS_IF([test "x${enable_multicontext}" = "xyes"], [ - GEM_CPPFLAGS+=" -DGLEW_MX" - ])]) +AC_DEFINE([GLEW_BUILD], [1], [Define to 1 if using the built-in glew]) +]) GEM_CHECK_LIB([sdl], [SDL],[SDL.h], [SDL_Quit],,,,[SDL windowing]) +GEM_CHECK_LIB([sdl2], [SDL2],[SDL_log.h], [SDL_Quit],,,,[SDL2 windowing]) ## use GLFW windowing framework GEM_CHECK_LIB([libglfw], [glfw],[GL/glfw.h], [glfwInit],,,,[GLFW2 windowing]) @@ -346,6 +363,7 @@ GEM_CHECK_LIB([tiff], [tiff],[tiffio.h], [TIFFOpen],,,,[image loader]) GEM_CHECK_LIB([jpeg], [jpeg],[jpeglib.h], [jpeg_read_header],,,,[image loader]) +GEM_CHECK_LIB([stb], [stb],[stb/stb_image.h], [stbi_load],,,,[image loader]) IEM_CHECK_FTGL() GEM_CHECK_LIB([fribidi], [fribidi],[fribidi.h], [fribidi_log2vis],,,, [bidrectional text rendering using FriBidi]) @@ -461,43 +479,6 @@ AC_MSG_RESULT(no)) LIBS="$gem_tmp_lqt_libs" -# using pix_videoOS rather than pix_video -AC_ARG_WITH([video], AS_HELP_STRING([--with-video=plugins|Darwin|DS|NT],[use plugins for video capture or OS-specific "pix_video"])) - -AS_IF( - [test "x$with_video" = "x"], [with_video="plugins"], - [test "x$with_video" = "xyes"], [with_video="plugins"], - [test "x$with_video" = "xno"], - [ - # hmm, what to do here? - AC_MSG_RESULT([ignoring request for no video...using plugins]) - with_video="plugins" - ], - [test "x$with_video" = "xplugins"], [:], - [ - AC_DEFINE_UNQUOTED([GEM_VIDEOBACKEND], [GEM_VIDEOBACKEND_$with_video], [backend for deprecated video-capture objects]) - AC_MSG_RESULT([using deprecated video-loader $with_video]) -]) - -# using pix_filmOS rather than pix_film -AC_ARG_WITH([film], AS_HELP_STRING([--with-film=plugins|Darwin],[use plugins for video decoding or OS-specific "pix_film"])) - -AS_IF( - [test "x$with_film" = "x"], [with_film="plugins"], - [test "x$with_film" = "xyes"], [with_film="plugins"], - [test "x$with_film" = "xno"], - [ - # hmm, what to do here? - AC_MSG_RESULT([ignoring request for no film...using plugins]) - with_film="plugins" - ], - [test "x$with_film" = "xplugins"], [:], - [ - AC_DEFINE_UNQUOTED([GEM_FILMBACKEND], - [GEM_FILMBACKEND_$with_film], [backend for deprecated film-decoding objects]) - AC_MSG_RESULT([using deprecated film-loader $with_film]) -]) - # enabling "-freg-struct-return" (for FreeFrame) # i wonder could we make this the default ??? AS_IF([test "x$enable_registerstruct" != "xno" ], [ @@ -511,6 +492,7 @@ ])]) AS_IF([test "x$WINDOWS" = "xyes"], [GEM_CHECK_CXXFLAGS([-mms-bitfields])]) +AS_IF([test "x$WINDOWS" = "xyes"], [GEM_CHECK_CXXFLAGS([-fexceptions])]) AS_IF([test "x$KERN" = "xDarwin"], [ GEM_CHECK_CXXFLAGS([-Os],,GEM_CHECK_CXXFLAGS([-O3])) ], [ @@ -651,13 +633,9 @@ ]) AS_IF([test "x${have_unicap}" = "x"], [have_unicap="no"]) AS_IF([test "x${have_vfw32}" = "x"], [have_vfw32="no"]) +AS_IF([test "x${have_stb}" = "xyes"], [have_stb="YES (library)"], [have_stb="YES (local)"]) # TODO: have_ds -AS_IF([test "x$with_film" = "xplugins"], [use_film_plugins="yes"], - [use_film_plugins="no (using $with_film backend)"]) -AS_IF([test "x$with_video" = "xplugins"], [use_video_plugins="yes"], - [use_video_plugins="no (using $with_video backend)"]) - AC_MSG_RESULT([ Result: Target : Gem.${EXT} @@ -688,29 +666,42 @@ default font : ${GEM_DEFAULT_FONT} image-support + use ImageIO : ${have_imageio_framework} + use JPEG : ${have_jpeg} use ImageMagick : ${have_ImageMagick} use QuickTime : ${have_libquicktime} - use ImageIO : ${have_libimageio} + use SGI : YES (local) + use STB : ${have_stb} use TIFF : ${have_tiff} - use JPEG : ${have_jpeg} - moviefile-support - use PLUGINS : ${use_film_plugins} + film-support + use AVFoundation : ${have_avfoundation_framework} + use AVI : ${WINDOWS} + use aviplay : ${have_avifile} + use DirectShow : ${WINDOWS} + use gmerlin : ${have_gmerlin_avdec} use mpeg : ${have_mpeg} use mpeg-3 : ${have_libmpeg3} use QuickTime : ${have_libquicktime} - use AVFoundation : ${have_libavfoundation} - use aviplay : ${have_avifile} - use gmerlin : ${have_gmerlin_avdec} capture-support - use PLUGINS : ${use_video_plugins} - use v4l : ${have_v4l} - use v4l2 : ${have_v4l2} + use AVfoundation : ${have_avfoundation_framework} use ieee1394 : ${have_ieee1394} + use DirectShow : NO use DV : ${have_libdv} use Unicap : ${have_unicap} + use v4l : ${have_v4l} + use v4l2 : ${have_v4l2} use Video-for-WinDOS : ${have_vfw32} + use VideoInput : ${WINDOWS} + use VLC : ${have_libvlc} + use VNC : ${have_libvncclient} + record-support use QuickTime : ${have_libquicktime} - use AVFoundation : ${have_libavfoundation} + use v4l : ${have_v4l} + use v4l2 : ${have_v4l2} + model-support + use OBJ : YES (local) + use ASSIMP2 : ${have_assimp2} + use ASSIMP3 : ${have_assimp3} ]) AS_IF([test "x$have_pd" = "xno"], [ @@ -722,7 +713,7 @@ ]) AS_IF([test "x$no_glu" = "xyes" && test "x$no_agl" = "xyes"], [ - AC_MSG_ERROR([GLU (headers) not found! you need openGL Utility Library!!!]) + AS_IF([test "x$with_GLU" != "xno"],[AC_MSG_ERROR([GLU (headers) not found! you need openGL Utility Library!!!])]) ]) AC_MSG_RESULT([Now run make ...]) diff -Nru gem-0.94~pre1/debian/changelog gem-0.94/debian/changelog --- gem-0.94~pre1/debian/changelog 2018-12-23 11:13:37.000000000 +0000 +++ gem-0.94/debian/changelog 2019-02-12 13:49:57.000000000 +0000 @@ -1,3 +1,15 @@ +gem (1:0.94-1) unstable; urgency=medium + + * New upstream version 0.94 + * Dropped unneeded patches + * Include imageSTB plugin + * Sort B-Ds alphabetically + * Refreshed d/copyright(_hints) + * Bumped dh compat to 12 + * Bumped standards version to 4.3.0 + + -- IOhannes m zmölnig (Debian/GNU) Tue, 12 Feb 2019 14:49:57 +0100 + gem (1:0.94~pre1-1) unstable; urgency=medium * New upstream version 0.94~pre1 diff -Nru gem-0.94~pre1/debian/compat gem-0.94/debian/compat --- gem-0.94~pre1/debian/compat 2018-12-23 11:13:37.000000000 +0000 +++ gem-0.94/debian/compat 2019-02-12 13:49:57.000000000 +0000 @@ -1 +1 @@ -11 +12 diff -Nru gem-0.94~pre1/debian/control gem-0.94/debian/control --- gem-0.94~pre1/debian/control 2018-12-23 11:13:37.000000000 +0000 +++ gem-0.94/debian/control 2019-02-12 13:49:57.000000000 +0000 @@ -9,37 +9,37 @@ Vcs-Browser: https://salsa.debian.org/multimedia-team/pd/gem Vcs-Git: https://salsa.debian.org/multimedia-team/pd/gem.git Build-Depends: - debhelper (>=11~), + debhelper (>=12~), autoconf, automake, pkg-config, puredata-dev | puredata (<<0.43), - libxxf86vm-dev, + freeglut3-dev, + libassimp-dev, + libdc1394-22-dev [linux-any], + libdv4-dev [linux-any], + libfribidi-dev, + libftgl-dev, libgl1-mesa-dev | libgl-dev, - zlib1g-dev (>= 1:1.1.3), libglewmx-dev, libglfw3-dev, - freeglut3-dev, - libsdl1.2-dev, - libftgl-dev, - libfribidi-dev, - libmagick++-dev, - libjpeg-dev, - libtiff-dev, libgmerlin-avdec-dev, - libquicktime-dev, - libmpeg3-dev, - libdv4-dev [linux-any], libiec61883-dev [linux-any], - libdc1394-22-dev [linux-any], + libjpeg-dev, + libmagick++-dev, + libmpeg3-dev, + libquicktime-dev, + libsdl1.2-dev, + libtiff-dev, libunicap2-dev [linux-any], libv4l-dev [linux-any], libvlc-dev, libvncserver-dev, - libassimp-dev, + libxxf86vm-dev, + zlib1g-dev (>= 1:1.1.3), Build-Conflicts: libgraphicsmagick++-dev Rules-Requires-Root: no -Standards-Version: 4.2.1 +Standards-Version: 4.3.0 Package: gem Architecture: any diff -Nru gem-0.94~pre1/debian/copyright gem-0.94/debian/copyright --- gem-0.94~pre1/debian/copyright 2018-12-23 11:13:37.000000000 +0000 +++ gem-0.94/debian/copyright 2019-02-12 13:49:57.000000000 +0000 @@ -5,20 +5,20 @@ License: GPL-2+ Files: * -Copyright: 2001-2018, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +Copyright: 2001-2019, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at 1997-2000, Mark Danks Günther Geiger. geiger@epy.co.at 2003 Daniel Heckenberg 2002-2006 James Tittle II. tigital@mac.com 2002-2006 Chris Clepper. cgc@humboldtblvd.com 2006-2011 Cyrille Henry. cyrille.henry@la-kitchen.fr - 1997-2018 Gem development team + 1997-2019 Gem development team License: GPL-2+ Files: debian/* Copyright: 1999-2009, Guenter Geiger 2009-2012, Paul Brossier - 2010-2018, IOhannes m zmölnig + 2010-2019, IOhannes m zmölnig License: GPL-2+ Files: src/Gem/PBuffer.* @@ -35,6 +35,11 @@ Pablo Aguilar 2005 License: BSL-1.0 +Files: ./src/Utils/is_pointer.h +Copyright: 2010, fredoverflow https:stackoverflow.com/a/3177723/1169096 + 2019, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +License: GPL-2+ + Files: src/Utils/plist.* src/Utils/pstk.* Copyright: 2002-2011, Ricardo Fabbri License: GPL-2 @@ -48,6 +53,13 @@ Günther Geiger License: GPL-2+ +Files: ./src/Base/GemWinCreateEM.cpp +Copyright: 1997-2000, Mark Danks. + 2001-2019, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + 2019, Claude Heiland-Allen + Günther Geiger. +License: GPL-2+ + Files: src/Nongeos/spot_light.cpp Copyright: 1997-1999, Mark Danks 2001-2011, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at @@ -146,7 +158,7 @@ THE SOFTWARE. Files: plugins/filmDS/* -Copyright: 2018, IOhannes m zmölnig +Copyright: 2014-2019, IOhannes m zmölnig 2014, Theodore Watson License: GPL-2+ @@ -215,6 +227,7 @@ Files: m4/pkg.m4 Copyright: 2004, Scott James Remnant + 2012-2015, Dan Nicholson License: GPL-2+ Files: examples/data/Toon.* diff -Nru gem-0.94~pre1/debian/copyright_hints gem-0.94/debian/copyright_hints --- gem-0.94~pre1/debian/copyright_hints 2018-12-23 11:13:37.000000000 +0000 +++ gem-0.94/debian/copyright_hints 2019-02-12 13:49:57.000000000 +0000 @@ -5,12 +5,12 @@ Disclaimer: Autogenerated by licensecheck Files: ./.editorconfig + ./.git ./ChangeLog ./Gem-meta.pd.in ./Gem.pc.in ./Makefile.am ./README.txt - ./TODO ./abstractions/Makefile.am ./abstractions/gemdefaultwindow.pd.in ./abstractions/gemhead.pd @@ -47,17 +47,6 @@ ./build/osx-xcode/Gem.xcodeproj/project.pbxproj ./build/tools/indent.sh ./build/tools/systeminfo.sh - ./build/travis-ci/common.source - ./build/travis-ci/configure.sh - ./build/travis-ci/coverity_branch.sh - ./build/travis-ci/depinstall-linux.sh - ./build/travis-ci/depinstall-linux.sudo.sh - ./build/travis-ci/depinstall-osx.sh - ./build/travis-ci/depinstall.sh - ./build/travis-ci/deploy-git.sh - ./build/travis-ci/prepare-upload.sh - ./build/travis-ci/skipbuild.sh - ./build/travis-ci/travisci_build_coverity_scan.sh ./build/win-nsis/Gem.nsi ./build/win-nsis/buildinstaller.bat ./build/win-nsis/uninstaller1.nsi @@ -443,19 +432,30 @@ ./help/emission-help.pd ./help/emissionRGB-help.pd ./help/fragment_program-help.pd + ./help/gemcocoawindow-help.pd ./help/gemcubeframebuffer-help.pd ./help/gemframebuffer-help.pd + ./help/gemglfw2window-help.pd + ./help/gemglfw3window-help.pd + ./help/gemglutwindow-help.pd + ./help/gemglxwindow-help.pd ./help/gemhead-help.pd ./help/gemkeyboard-help.pd ./help/gemkeyname-help.pd ./help/gemlist-help.pd ./help/gemlist_info-help.pd ./help/gemlist_matrix-help.pd + ./help/gemmacoswindow-help.pd + ./help/gemmacwindow-help.pd + ./help/gemmanager-help.pd ./help/gemmouse-help.pd ./help/gemorb-help.pd ./help/gemreceive-help.pd + ./help/gemsdl2window-help.pd + ./help/gemsdlwindow-help.pd ./help/gemtablet-help.pd ./help/gemvertexbuffer-help.pd + ./help/gemw32window-help.pd ./help/gemwin-help.pd ./help/glsl_fragment-help.pd ./help/glsl_geometry-help.pd @@ -588,7 +588,6 @@ ./help/pix_threshold-help.pd ./help/pix_threshold_bernsen-help.pd ./help/pix_video-help.pd - ./help/pix_videoDS-help.pd ./help/pix_write-help.pd ./help/pix_writer-help.pd ./help/pix_yuv-help.pd @@ -708,6 +707,9 @@ ./plugins/imageSGI/win-vs2003/imageSGI.vcproj ./plugins/imageSGI/win-vs2008/imageSGI.sln ./plugins/imageSGI/win-vs2008/imageSGI.vcproj + ./plugins/imageSTB/Makefile.am + ./plugins/imageSTB/STB/stb_image.h + ./plugins/imageSTB/STB/stb_image_write.h ./plugins/imageTIFF/Makefile.am ./plugins/imageTIFF/win-vce2010/TIFF.props ./plugins/imageTIFF/win-vce2010/imageTIFF.vcxproj @@ -873,6 +875,7 @@ ./src/Gem/Files.cpp ./src/Gem/GemConfig.h ./src/Gem/GemGL.h + ./src/Gem/GemGLconfig.h.in ./src/Gem/Makefile.am ./src/Gem/Makefile.am.template ./src/Gem/Properties.cpp @@ -905,13 +908,12 @@ ./src/Pixes/pix_lumaoffset.cpp ./src/Pixes/pix_metaimage.cpp ./src/Pixes/pix_movement2.h - ./src/Pixes/pix_movieDS.cpp - ./src/Pixes/pix_movieDS.h ./src/Pixes/pix_record.cpp ./src/Pixes/pix_refraction.cpp ./src/README.linux ./src/RTE/Makefile.am ./src/Utils/GLUtil_define_generated.h + ./src/Utils/GLUtil_define_generator.sh ./src/Utils/GemString.cpp ./src/Utils/MSVCMinGW.cpp ./src/Utils/Makefile.am @@ -1000,6 +1002,7 @@ ./plugins/imageMAGICK/imageMAGICK.h ./plugins/imageQT/imageQT.h ./plugins/imageSGI/imageSGI.h + ./plugins/imageSTB/imageSTB.h ./plugins/imageTIFF/imageTIFF.h ./plugins/modelASSIMP2/modelASSIMP2.cpp ./plugins/modelASSIMP2/modelASSIMP2.h @@ -1026,8 +1029,11 @@ ./src/Controls/gemlist_info.h ./src/Controls/gemlist_matrix.cpp ./src/Controls/gemlist_matrix.h + ./src/Controls/gemmanager.cpp + ./src/Controls/gemmanager.h ./src/Controls/gemreceive.cpp ./src/Controls/gemreceive.h + ./src/Controls/modelfiler.h ./src/Gem/ContextData.cpp ./src/Gem/ContextData.h ./src/Gem/Dylib.h @@ -1042,6 +1048,8 @@ ./src/Gem/Rectangle.cpp ./src/Gem/Settings.cpp ./src/Gem/Settings.h + ./src/Manips/glsl_tesscontrol.h + ./src/Manips/glsl_tesseval.h ./src/Output/gemcocoawindow.h ./src/Output/gemglfw2window.h ./src/Output/gemglfw3window.h @@ -1049,6 +1057,7 @@ ./src/Output/gemglxwindow.h ./src/Output/gemmacoswindow.h ./src/Output/gemmacwindow.h + ./src/Output/gemsdl2window.h ./src/Output/gemsdlwindow.h ./src/Output/gemw32window.h ./src/Pixes/pix_buffer.cpp @@ -1266,6 +1275,8 @@ ./src/openGL/GEMglGenLists.h ./src/openGL/GEMglGenTextures.cpp ./src/openGL/GEMglGenTextures.h + ./src/openGL/GEMglGenerateMipmap.cpp + ./src/openGL/GEMglGenerateMipmap.h ./src/openGL/GEMglGetError.cpp ./src/openGL/GEMglGetError.h ./src/openGL/GEMglGetFloatv.cpp @@ -1585,6 +1596,7 @@ ./src/openGL/GEMglTranslated.h ./src/openGL/GEMglTranslatef.cpp ./src/openGL/GEMglTranslatef.h + ./src/openGL/GEMglUniform1f.cpp ./src/openGL/GEMglUniform1fARB.cpp ./src/openGL/GEMglVertex2d.cpp ./src/openGL/GEMglVertex2d.h @@ -1655,6 +1667,7 @@ 2001-2014, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at 2001-2016, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at 2002-2011, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + 2002-2018, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at 2004-2011, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at 2006-2011, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at 2008-2011, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at @@ -1669,6 +1682,7 @@ 2015, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at 2016, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at 2018, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + 2019, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at License: UNKNOWN FIXME @@ -1685,6 +1699,7 @@ ./plugins/imageMAGICK/imageMAGICK.cpp ./plugins/imageQT/imageQT.cpp ./plugins/imageSGI/imageSGI.cpp + ./plugins/imageSTB/imageSTB.cpp ./plugins/imageTIFF/imageTIFF.cpp ./plugins/recordQT4L/recordQT4L.cpp ./plugins/recordV4L/recordV4L.cpp @@ -1708,6 +1723,7 @@ ./src/Controls/gemlist.cpp ./src/Controls/gemmouse.cpp ./src/Controls/gemwin.cpp + ./src/Controls/modelfiler.cpp ./src/Controls/render_trigger.cpp ./src/Gem/Cache.cpp ./src/Gem/Event.cpp @@ -1779,6 +1795,7 @@ ./src/Output/gemglfw3window.cpp ./src/Output/gemglutwindow.cpp ./src/Output/gemglxwindow.cpp + ./src/Output/gemsdl2window.cpp ./src/Output/gemsdlwindow.cpp ./src/Particles/part_color.cpp ./src/Particles/part_damp.cpp @@ -1823,7 +1840,6 @@ ./src/Pixes/pix_threshold.cpp ./src/Pixes/pix_threshold_bernsen.cpp ./src/Pixes/pix_video.cpp - ./src/Pixes/pix_videoOS.cpp ./src/Pixes/pix_zoom.cpp ./src/Utils/Functions.cpp ./src/Utils/GLUtil.cpp @@ -1980,7 +1996,6 @@ ./src/Pixes/pix_clearblock.h ./src/Pixes/pix_draw.h ./src/Pixes/pix_film.h - ./src/Pixes/pix_filmOS.h ./src/Pixes/pix_image.h ./src/Pixes/pix_movement.h ./src/Pixes/pix_noise.h @@ -1991,7 +2006,6 @@ ./src/Pixes/pix_snap.h ./src/Pixes/pix_tIIR.h ./src/Pixes/pix_video.h - ./src/Pixes/pix_videoOS.h ./src/Pixes/pix_write.h ./src/Pixes/pix_writer.h ./src/Pixes/pix_zoom.h @@ -2017,11 +2031,14 @@ 1997-1999, Mark Danks. mark@danks.org 1997-2000, Mark Danks. mark@danks.org 2001-2011, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + 2001-2019, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at Günther Geiger. geiger@epy.co.at License: UNKNOWN FIXME -Files: ./src/openGL/GEMglActiveTextureARB.cpp +Files: ./src/openGL/GEMglActiveTexture.cpp + ./src/openGL/GEMglActiveTexture.h + ./src/openGL/GEMglActiveTextureARB.cpp ./src/openGL/GEMglActiveTextureARB.h ./src/openGL/GEMglBindProgramARB.cpp ./src/openGL/GEMglBindProgramARB.h @@ -2042,6 +2059,8 @@ ./src/openGL/GEMglMultTransposeMatrixd.h ./src/openGL/GEMglMultTransposeMatrixf.cpp ./src/openGL/GEMglMultTransposeMatrixf.h + ./src/openGL/GEMglMultiTexCoord2f.cpp + ./src/openGL/GEMglMultiTexCoord2f.h ./src/openGL/GEMglMultiTexCoord2fARB.cpp ./src/openGL/GEMglMultiTexCoord2fARB.h ./src/openGL/GEMglProgramEnvParameter4dARB.cpp @@ -2077,7 +2096,6 @@ ./src/Pixes/pix_dump.cpp ./src/Pixes/pix_duotone.cpp ./src/Pixes/pix_film.cpp - ./src/Pixes/pix_filmOS.cpp ./src/Pixes/pix_flip.cpp ./src/Pixes/pix_gain.cpp ./src/Pixes/pix_imageInPlace.cpp @@ -2128,7 +2146,6 @@ ./src/Pixes/pix_invert.h ./src/Pixes/pix_mix.h ./src/Pixes/pix_movie.h - ./src/Pixes/pix_movieOS.h ./src/Pixes/pix_normalize.h ./src/Pixes/pix_offset.h ./src/Pixes/pix_rgb2hsv.h @@ -2160,8 +2177,6 @@ ./src/Pixes/pix_emboss.h ./src/Pixes/pix_motionblur.cpp ./src/Pixes/pix_motionblur.h - ./src/Pixes/pix_recordQT.cpp - ./src/Pixes/pix_recordQT.h ./src/Pixes/pix_roll.cpp ./src/Pixes/pix_roll.h ./src/Pixes/pix_scanline.cpp @@ -2276,6 +2291,20 @@ License: UNKNOWN FIXME +Files: ./src/Manips/glsl_fragment.cpp + ./src/Manips/glsl_geometry.cpp + ./src/Manips/glsl_tesscontrol.cpp + ./src/Manips/glsl_tesseval.cpp + ./src/Manips/glsl_vertex.cpp + ./src/Pixes/pix_movie.cpp +Copyright: 1997-1999, Mark Danks. + 2001-2011, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + 2002, James Tittle + 2005, James Tittle + Günther Geiger. +License: UNKNOWN + FIXME + Files: ./m4/gem.m4 ./m4/iem_ftgl.m4 ./m4/iem_operatingsystem.m4 @@ -2325,19 +2354,6 @@ License: UNKNOWN FIXME -Files: ./src/Manips/glsl_fragment.cpp - ./src/Manips/glsl_geometry.cpp - ./src/Manips/glsl_vertex.cpp - ./src/Pixes/pix_movie.cpp - ./src/Pixes/pix_movieOS.cpp -Copyright: 1997-1999, Mark Danks. - 2001-2011, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - 2002, James Tittle - 2005, James Tittle - Günther Geiger. -License: UNKNOWN - FIXME - Files: ./src/Base/GemWinCreateNT.cpp ./src/Output/gemw32window.cpp ./src/Pixes/pix_multiblob.cpp @@ -2571,7 +2587,7 @@ Files: ./extra/pix_drum/pix_drum.h ./extra/pix_fiducialtrack/pix_fiducialtrack.h Copyright: 1997-1998, Mark Danks. mark@danks.org - 2001-2002, IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + 2001-2002, IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.at 2002, James Tittle & Chris Clepper Günther Geiger. geiger@epy.co.at License: UNKNOWN @@ -2600,6 +2616,13 @@ License: UNKNOWN FIXME +Files: ./src/openGL/GEMglUniform1f.h + ./src/openGL/GEMglUniform1fARB.h +Copyright: 2002-2011, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + 2005, James Tittle. tigital @ mac.com +License: UNKNOWN + FIXME + Files: ./plugins/videoVIDS/videoVIDS.cpp ./plugins/videoVLC/videoVLC.cpp Copyright: 2011, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at @@ -2607,20 +2630,6 @@ License: UNKNOWN FIXME -Files: ./src/Pixes/pix_videoDarwin.cpp - ./src/Pixes/pix_videoDarwin.h -Copyright: 2002, James Tittle & Chris Clepper - 2002-2005, James Tittle & Chris Clepper -License: UNKNOWN - FIXME - -Files: ./src/Pixes/pix_filmDarwin.cpp - ./src/Pixes/pix_movieDarwin.cpp -Copyright: 1997-1999, Mark Danks. - 2002, James Tittle & Chris Clepper -License: UNKNOWN - FIXME - Files: ./src/Controls/gemcubeframebuffer.h ./src/Controls/gemframebuffer.h Copyright: 2005-2006, James Tittle II, tigital AT mac DOT com @@ -2706,6 +2715,12 @@ License: GPL-2+ FIXME +Files: ./m4/pkg.m4 +Copyright: 2004, Scott James Remnant . + 2012-2015, Dan Nicholson +License: GPL-2+ + FIXME + Files: ./plugins/imageSGI/COPYING.txt Copyright: 1997-2000, Mark Danks 2001-2011, IOhannes m zmölnig, @@ -2723,11 +2738,6 @@ License: GPL-2+ FIXME -Files: ./m4/pkg.m4 -Copyright: 2004, Scott James Remnant . -License: GPL-2+ - FIXME - Files: ./m4/ax_compiler_vendor.m4 Copyright: 2008, Matteo Frigo 2008, Steven G. Johnson @@ -2767,6 +2777,14 @@ License: UNKNOWN FIXME +Files: ./src/Base/GemWinCreateEM.cpp +Copyright: 1997-2000, Mark Danks. + 2001-2012, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + 2019, Claude Heiland-Allen + Günther Geiger. +License: UNKNOWN + FIXME + Files: ./src/Geos/tube.cpp Copyright: 2003, Cyrille Henry. La Kitchen, Paris 2003-2011, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at @@ -2989,12 +3007,6 @@ License: UNKNOWN FIXME -Files: ./src/openGL/GEMglUniform1fARB.h -Copyright: 2002-2011, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - 2005, James Tittle. tigital @ mac.com -License: UNKNOWN - FIXME - Files: ./src/Output/gemmacwindow.cpp Copyright: 1997-2000, Mark Danks. 2000-2004, Jamie Tittle @@ -3009,8 +3021,14 @@ FIXME Files: ./plugins/filmDS/filmDS.cpp -Copyright: 2014, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - 2014, Theodore Watson +Copyright: 2014, Theodore Watson + 2014-2019, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +License: UNKNOWN + FIXME + +Files: ./src/Utils/is_pointer.h +Copyright: 2010, fredoverflow https:stackoverflow.com/a/3177723/1169096 + 2019, IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at License: UNKNOWN FIXME @@ -3036,12 +3054,6 @@ License: UNKNOWN FIXME -Files: ./src/Pixes/pix_movieDarwin.h -Copyright: 1997-1999, Mark Danks. mark@danks.org - 2002, James Tittle & Chris Clepper -License: UNKNOWN - FIXME - Files: ./src/Pixes/pix_multitexture.cpp Copyright: 2005, James Tittle II License: UNKNOWN @@ -3052,12 +3064,6 @@ License: UNKNOWN FIXME -Files: ./src/Pixes/pix_filmDarwin.h -Copyright: 1997-1999, Mark Danks. mark@danks.org - 2002, James Tittle. tigital@mac.com -License: UNKNOWN - FIXME - Files: ./src/Base/GemWinCreateMac.cpp Copyright: 1997-2000, Mark Danks. 2000-2004, Jamie Tittle diff -Nru gem-0.94~pre1/debian/gem.install gem-0.94/debian/gem.install --- gem-0.94~pre1/debian/gem.install 2018-12-23 11:13:37.000000000 +0000 +++ gem-0.94/debian/gem.install 2019-02-12 13:49:57.000000000 +0000 @@ -3,6 +3,7 @@ debian/tmp/usr/lib/pd/extra/Gem/*.pd debian/tmp/usr/lib/pd/extra/Gem/gem_videoDECKLINK.so debian/tmp/usr/lib/pd/extra/Gem/gem_modelOBJ.so +debian/tmp/usr/lib/pd/extra/Gem/gem_imageSTB.so gemdefaultwindow-glx.pd usr/lib/pd/extra/Gem/ README.txt usr/share/doc/gem/ debian/gem.xpm usr/share/pixmaps/ diff -Nru gem-0.94~pre1/debian/patches/multicontext.patch gem-0.94/debian/patches/multicontext.patch --- gem-0.94~pre1/debian/patches/multicontext.patch 2018-12-23 11:13:37.000000000 +0000 +++ gem-0.94/debian/patches/multicontext.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -Description: force multicontext for GLEWmx -Author: IOhannes m zmölnig -Forwarded: no -Last-Update: 2018-12-21 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ ---- pd-gem.orig/src/Gem/GemGL.h -+++ pd-gem/src/Gem/GemGL.h -@@ -26,6 +26,13 @@ - # include - #endif - -+/* on Debian we build with multicontext and link against libGLEWmx */ -+#ifndef GEM_NO_MULTICONTEXT -+# ifndef GLEW_MX -+# define GLEW_MX -+# endif -+#endif -+ - #ifdef GLEW_MX - # define GEM_MULTICONTEXT - #endif diff -Nru gem-0.94~pre1/debian/patches/series gem-0.94/debian/patches/series --- gem-0.94~pre1/debian/patches/series 2018-12-23 11:13:37.000000000 +0000 +++ gem-0.94/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -multicontext.patch diff -Nru gem-0.94~pre1/devgem.sh.in gem-0.94/devgem.sh.in --- gem-0.94~pre1/devgem.sh.in 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/devgem.sh.in 2019-02-12 13:10:01.000000000 +0000 @@ -4,7 +4,7 @@ ## Pd binary can be overriden by setting the PD environment if [ "x${PD}" = "x" ]; then - PD=@PD_EXE@ + PD="@PD_EXE@" if [ "x${PD#@}" != "x${PD}" ]; then PD="" fi @@ -39,4 +39,4 @@ gempath=${builddir} fi -"${PD}" -stderr -oss -nosound -path "${gempath}" -lib ${builddir}/Gem "$@" +${PD} -stderr -oss -nosound -path "${gempath}" -lib ${builddir}/Gem "$@" diff -Nru gem-0.94~pre1/doc/manual/index.html gem-0.94/doc/manual/index.html --- gem-0.94~pre1/doc/manual/index.html 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/doc/manual/index.html 2019-02-12 13:10:01.000000000 +0000 @@ -17,7 +17,7 @@ Any comments are appreciated. Send them to Mark Danks
In fact, this ought to be the second attempt at such a manual. There will not be much now. -But send any comments to IOhannes m zmölnig instead. +But send any comments to IOhannes m zmölnig instead.

Introduction
    An introduction to GEM and what you can do with diff -Nru gem-0.94~pre1/examples/01.basic/01.redSquare.pd gem-0.94/examples/01.basic/01.redSquare.pd --- gem-0.94~pre1/examples/01.basic/01.redSquare.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/01.basic/01.redSquare.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 139 83 602 502 10; +#X declare -lib Gem; #X obj 240 186 gemhead; #X floatatom 348 258 0 0 0 0 - - -; #X obj 240 246 color; @@ -49,6 +50,7 @@ #X text 386 157 red; #X text 389 192 white; #X text 379 260 (in degree); +#X obj 495 5 declare -lib Gem; #X connect 0 0 2 0; #X connect 1 0 13 1; #X connect 2 0 13 0; diff -Nru gem-0.94~pre1/examples/01.basic/02.blueRectangle.pd gem-0.94/examples/01.basic/02.blueRectangle.pd --- gem-0.94~pre1/examples/01.basic/02.blueRectangle.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/01.basic/02.blueRectangle.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 396 160 600 500 10; +#X declare -lib Gem; #X obj 350 159 gemhead; #X obj 350 337 rotate; #X floatatom 409 275 0 0 0 0 - - -; @@ -51,6 +52,7 @@ #X text 495 146 white; #X obj 350 219 color 0 0 1; #X text 422 221 (blue); +#X obj 493 6 declare -lib Gem; #X connect 0 0 21 0; #X connect 1 0 8 0; #X connect 2 0 1 1; diff -Nru gem-0.94~pre1/examples/01.basic/03.disk.pd gem-0.94/examples/01.basic/03.disk.pd --- gem-0.94~pre1/examples/01.basic/03.disk.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/01.basic/03.disk.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 28 208 601 392 10; +#X declare -lib Gem; #X obj 274 138 gemhead; #X floatatom 350 169 0 0 0 0 - - -; #X obj 22 325 world_light; @@ -46,6 +47,7 @@ #X restore 35 103 pd gemwin; #X msg 35 79 create; #X text 31 59 Create window and render; +#X obj 495 5 declare -lib Gem; #X connect 0 0 6 0; #X connect 1 0 6 1; #X connect 1 0 6 2; diff -Nru gem-0.94~pre1/examples/01.basic/04.PrimTri.pd gem-0.94/examples/01.basic/04.PrimTri.pd --- gem-0.94~pre1/examples/01.basic/04.PrimTri.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/01.basic/04.PrimTri.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 173 -28 667 537 12; +#N canvas 173 61 667 537 12; +#X declare -lib Gem; #X obj 306 137 gemhead; #X obj 306 248 rotate; #X floatatom 372 194 0 0 0 0 - - -; @@ -50,6 +51,7 @@ #X restore 35 153 pd gemwin; #X msg 35 129 create; #X text 31 109 Create window and render; +#X obj 543 6 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 5 0; #X connect 2 0 1 1; diff -Nru gem-0.94~pre1/examples/01.basic/05.cube.pd gem-0.94/examples/01.basic/05.cube.pd --- gem-0.94~pre1/examples/01.basic/05.cube.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/01.basic/05.cube.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 361 165 602 280 10; +#X declare -lib Gem; #X obj 372 91 gemhead; #X floatatom 416 122 0 -4.5 4.5 0 - - -; #X obj 372 197 cube; @@ -36,6 +37,7 @@ #X restore 35 153 pd gemwin; #X msg 35 129 create; #X text 31 109 Create window and render; +#X obj 495 5 declare -lib Gem; #X connect 0 0 3 0; #X connect 1 0 3 1; #X connect 1 0 3 2; diff -Nru gem-0.94~pre1/examples/01.basic/06.sphere.pd gem-0.94/examples/01.basic/06.sphere.pd --- gem-0.94~pre1/examples/01.basic/06.sphere.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/01.basic/06.sphere.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 393 222 603 394 10; +#X declare -lib Gem; #X obj 275 174 gemhead; #X floatatom 319 205 0 0 0 0 - - -; #X obj 275 317 sphere; @@ -44,6 +45,7 @@ #X restore 36 97 pd gemwin; #X msg 36 73 create; #X text 32 53 Create window and render; +#X obj 495 5 declare -lib Gem; #X connect 0 0 6 0; #X connect 1 0 6 1; #X connect 1 0 6 2; diff -Nru gem-0.94~pre1/examples/01.basic/07.cylinder.pd gem-0.94/examples/01.basic/07.cylinder.pd --- gem-0.94~pre1/examples/01.basic/07.cylinder.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/01.basic/07.cylinder.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 393 222 603 394 10; +#X declare -lib Gem; #X obj 274 138 gemhead; #X floatatom 318 169 0 0 0 0 - - -; #X obj 22 325 world_light; @@ -48,6 +49,7 @@ #X obj 94 325 world_light; #X obj 94 283 gemhead 1; #X obj 94 302 rotateXYZ 12 54 20; +#X obj 495 5 declare -lib Gem; #X connect 0 0 8 0; #X connect 1 0 8 1; #X connect 1 0 8 2; diff -Nru gem-0.94~pre1/examples/01.basic/08.model.pd gem-0.94/examples/01.basic/08.model.pd --- gem-0.94~pre1/examples/01.basic/08.model.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/01.basic/08.model.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 348 152 673 462 12; +#X declare -lib Gem; #X floatatom 460 79 0 0 0 0 - - -; #X obj 385 44 gemhead; #X floatatom 446 179 0 0 0 0 - - -; @@ -50,6 +51,7 @@ #X obj 385 205 rotate 0 0 1 0; #X obj 385 134 translate 0 0 0 1; #X obj 460 103 / 100; +#X obj 543 6 declare -lib Gem; #X connect 0 0 14 0; #X connect 1 0 13 0; #X connect 2 0 12 1; diff -Nru gem-0.94~pre1/examples/01.basic/09.yelloTeapot.pd gem-0.94/examples/01.basic/09.yelloTeapot.pd --- gem-0.94~pre1/examples/01.basic/09.yelloTeapot.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/01.basic/09.yelloTeapot.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 56 98 635 502 12; +#X declare -lib Gem; #X obj 350 226 gemhead; #X floatatom 458 298 0 0 0 0 - - -; #X obj 350 286 color; @@ -51,6 +52,7 @@ #X text 32 73 Create window and render; #X text 32 261 this is the famous; #X text 52 294 utah teapot; +#X obj 515 5 declare -lib Gem; #X connect 0 0 2 0; #X connect 1 0 6 1; #X connect 1 0 6 2; diff -Nru gem-0.94~pre1/examples/02.advanced/00.gemwin-subpatch.pd gem-0.94/examples/02.advanced/00.gemwin-subpatch.pd --- gem-0.94~pre1/examples/02.advanced/00.gemwin-subpatch.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/00.gemwin-subpatch.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 725 412 10; +#N canvas 6 61 725 412 10; +#X declare -lib Gem; #N canvas 95 194 290 179 Gem.init 0; #X obj 83 30 loadbang; #X msg 83 67 reset; @@ -58,4 +59,5 @@ anymore...; #X text 249 113 for the sake of simplicity \, from now on the examples will use the subpatch on the left side to control the Gem-window.; +#X obj 618 8 declare -lib Gem; #X connect 0 0 1 0; diff -Nru gem-0.94~pre1/examples/02.advanced/01.Separator.pd gem-0.94/examples/02.advanced/01.Separator.pd --- gem-0.94~pre1/examples/02.advanced/01.Separator.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/01.Separator.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 215 32 781 537 10; +#N canvas 215 61 781 537 10; +#X declare -lib Gem; #X obj 607 137 separator; #X msg 697 200 1; #X msg 734 199 0; @@ -100,6 +101,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 100 134 pd gemwin; +#X obj 668 8 declare -lib Gem; #X connect 0 0 37 0; #X connect 1 0 30 0; #X connect 2 0 30 0; diff -Nru gem-0.94~pre1/examples/02.advanced/02.Ortho.pd gem-0.94/examples/02.advanced/02.Ortho.pd --- gem-0.94~pre1/examples/02.advanced/02.Ortho.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/02.Ortho.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 396 100 600 500 10; +#X declare -lib Gem; #X obj 358 140 gemhead; #X floatatom 377 222 0 0 0 0 - - -; #X obj 358 256 rotateXYZ; @@ -71,6 +72,7 @@ #X restore 18 95 pd gemwin; #X text 142 32 one model is in "perspective" mode; #X text 159 54 the other is in "orthographic" mode; +#X obj 488 8 declare -lib Gem; #X connect 0 0 12 0; #X connect 1 0 2 1; #X connect 2 0 14 0; diff -Nru gem-0.94~pre1/examples/02.advanced/03.View_OSD.pd gem-0.94/examples/02.advanced/03.View_OSD.pd --- gem-0.94~pre1/examples/02.advanced/03.View_OSD.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/03.View_OSD.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 50 151 946 464 10; +#X declare -lib Gem; #N canvas 50 173 290 229 Gem.init 0; #X obj 71 191 outlet; #X obj 71 81 loadbang; @@ -184,7 +185,7 @@ #X obj 201 151 * 0.5; #X obj 136 153 * 0.5; #X obj 201 209 clip -90 90; -#N canvas 1020 394 450 300 space 0; +#N canvas 20 394 450 300 space 0; #X obj 42 13 inlet; #X obj 42 35 symbol; #X obj 42 87 select space; @@ -292,6 +293,7 @@ #X obj 604 88 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 2 2; #X text 632 87 <- should the view affect light position or not; +#X obj 828 8 declare -lib Gem; #X connect 0 0 32 0; #X connect 2 0 11 0; #X connect 3 0 2 0; diff -Nru gem-0.94~pre1/examples/02.advanced/03.View.pd gem-0.94/examples/02.advanced/03.View.pd --- gem-0.94~pre1/examples/02.advanced/03.View.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/03.View.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 55 43 729 499 10; +#N canvas 55 61 729 499 10; +#X declare -lib Gem; #X obj 309 426 gemhead; #X obj 179 426 gemhead 1; #X obj 179 464 world_light; @@ -72,6 +73,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 29 200 pd gemwin; +#X obj 618 8 declare -lib Gem; #X connect 0 0 3 0; #X connect 1 0 2 0; #X connect 4 0 22 0; diff -Nru gem-0.94~pre1/examples/02.advanced/04.Fog.pd gem-0.94/examples/02.advanced/04.Fog.pd --- gem-0.94~pre1/examples/02.advanced/04.Fog.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/04.Fog.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 275 99 721 506 10; +#X declare -lib Gem; #X floatatom 414 85 0 0 0 0 - - -; #X obj 385 44 gemhead; #X floatatom 403 165 0 0 0 0 - - -; @@ -82,6 +83,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 40 258 pd gemwin; +#X obj 608 8 declare -lib Gem; #X connect 0 0 6 3; #X connect 1 0 6 0; #X connect 2 0 7 1; diff -Nru gem-0.94~pre1/examples/02.advanced/05.Stereo.pd gem-0.94/examples/02.advanced/05.Stereo.pd --- gem-0.94~pre1/examples/02.advanced/05.Stereo.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/05.Stereo.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 631 50 600 504 10; +#N canvas 31 61 600 504 10; +#X declare -lib Gem; #X obj 426 54 gemhead; #X floatatom 464 134 0 0 0 0 - - -; #X obj 464 307 gemhead 1; @@ -81,6 +82,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 58 207 pd gemwin; +#X obj 488 8 declare -lib Gem; #X connect 0 0 6 0; #X connect 1 0 7 2; #X connect 2 0 3 0; diff -Nru gem-0.94~pre1/examples/02.advanced/06.StereoParticle.pd gem-0.94/examples/02.advanced/06.StereoParticle.pd --- gem-0.94~pre1/examples/02.advanced/06.StereoParticle.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/06.StereoParticle.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 396 160 600 500 10; +#X declare -lib Gem; #X obj 198 50 gemhead; #X obj 198 82 part_head; #X obj 198 136 part_color; @@ -72,6 +73,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 31 187 pd gemwin; +#X obj 488 8 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 20 0; diff -Nru gem-0.94~pre1/examples/02.advanced/07.Snapshot1.pd gem-0.94/examples/02.advanced/07.Snapshot1.pd --- gem-0.94~pre1/examples/02.advanced/07.Snapshot1.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/07.Snapshot1.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 396 100 600 375 10; +#X declare -lib Gem; #X obj 210 252 gemhead; #X obj 210 312 model ../data/venus.obj; #X text 117 4 snap a portion of the graphics window into a texture @@ -74,6 +75,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 30 137 pd gemwin; +#X obj 488 8 declare -lib Gem; #X connect 0 0 3 0; #X connect 3 0 1 0; #X connect 4 0 10 0; diff -Nru gem-0.94~pre1/examples/02.advanced/08.Snapshot2.pd gem-0.94/examples/02.advanced/08.Snapshot2.pd --- gem-0.94~pre1/examples/02.advanced/08.Snapshot2.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/08.Snapshot2.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 389 0 635 537 10; +#N canvas 389 61 635 537 10; +#X declare -lib Gem; #X obj 64 405 gemhead; #X obj 64 509 model ../data/venus.obj; #X text 115 2 snap a portion of the graphics window into a texture @@ -110,6 +111,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 18 206 pd gemwin; +#X obj 528 8 declare -lib Gem; #X connect 0 0 25 0; #X connect 3 0 4 0; #X connect 4 0 11 0; diff -Nru gem-0.94~pre1/examples/02.advanced/09.SnapshotSaveHD.pd gem-0.94/examples/02.advanced/09.SnapshotSaveHD.pd --- gem-0.94~pre1/examples/02.advanced/09.SnapshotSaveHD.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/09.SnapshotSaveHD.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 73 51 832 392 10; +#N canvas 73 61 832 392 10; +#X declare -lib Gem; #X msg 26 26 create \, 1; #X msg 39 53 destroy; #X obj 340 29 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 @@ -28,6 +29,7 @@ resolution is limited by your openGL-implementation!; #X msg 342 90 symbol /tmp/foo.tif; #X text 485 93 <- save as another imagefile.; +#X obj 718 8 declare -lib Gem; #X connect 0 0 6 0; #X connect 1 0 6 0; #X connect 2 0 17 1; diff -Nru gem-0.94~pre1/examples/02.advanced/09.SnapshotSave.pd gem-0.94/examples/02.advanced/09.SnapshotSave.pd --- gem-0.94~pre1/examples/02.advanced/09.SnapshotSave.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/09.SnapshotSave.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 54 216 940 412 10; +#X declare -lib Gem; #N canvas 338 262 290 225 Gem.init 0; #X obj 83 30 loadbang; #X msg 161 76 reset; @@ -60,7 +61,7 @@ 1; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 --1 -1 1 1; +-1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; @@ -103,6 +104,7 @@ #X obj 60 362 color 0 1 0; #X obj 60 382 sphere 0.5; #X obj 652 326 pix_write; +#X obj 828 8 declare -lib Gem; #X connect 0 0 34 0; #X connect 1 0 2 0; #X connect 2 0 5 0; diff -Nru gem-0.94~pre1/examples/02.advanced/10.LinearPath.pd gem-0.94/examples/02.advanced/10.LinearPath.pd --- gem-0.94~pre1/examples/02.advanced/10.LinearPath.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/10.LinearPath.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 372 134 624 496 10; +#X declare -lib Gem; #X floatatom 481 249 0 0 0 0 - - -; #X msg 422 21 1; #X msg 455 21 0; @@ -8,7 +9,7 @@ #X obj 350 364 square; #N canvas 21 297 600 400 arrays 0; #N canvas 0 0 450 300 (subpatch) 0; -#X array array2 15 float 0; +#X array array2 18 float 0; #X array array3 24 float 0; #X coords 0 1 15 -1 400 300 1; #X restore 63 4 graph; @@ -70,6 +71,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 54 151 pd gemwin; +#X obj 518 8 declare -lib Gem; #X connect 0 0 14 0; #X connect 1 0 12 0; #X connect 2 0 12 0; diff -Nru gem-0.94~pre1/examples/02.advanced/11.SplinePath.pd gem-0.94/examples/02.advanced/11.SplinePath.pd --- gem-0.94~pre1/examples/02.advanced/11.SplinePath.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/11.SplinePath.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 355 106 641 505 10; +#X declare -lib Gem; #X floatatom 492 288 0 0 0 0 - - -; #X msg 421 55 1; #X msg 461 55 0; @@ -70,6 +71,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 33 171 pd gemwin; +#X obj 528 8 declare -lib Gem; #X connect 0 0 12 0; #X connect 1 0 13 0; #X connect 2 0 13 0; diff -Nru gem-0.94~pre1/examples/02.advanced/12.Hsv.pd gem-0.94/examples/02.advanced/12.Hsv.pd --- gem-0.94~pre1/examples/02.advanced/12.Hsv.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/12.Hsv.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 433 87 762 506 12; +#X declare -lib Gem; #X obj 248 352 gemhead; #X obj 248 412 color; #X msg 559 202 1 1 1; @@ -35,7 +36,7 @@ #X restore 26 133 pd Gem.init; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 --1 -1 1 1; +-1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; @@ -79,6 +80,7 @@ -8 0 10 -262144 -1 -1 0 1; #X obj 532 112 hsl 128 15 0 1 0 0 \$0-value empty value -2 -8 0 10 -262144 -1 -1 0 1; +#X obj 638 8 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 4 0; #X connect 2 0 7 0; diff -Nru gem-0.94~pre1/examples/02.advanced/13.ModelRescale.pd gem-0.94/examples/02.advanced/13.ModelRescale.pd --- gem-0.94~pre1/examples/02.advanced/13.ModelRescale.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/13.ModelRescale.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 8 40 682 502 12; +#N canvas 8 61 682 502 12; +#X declare -lib Gem; #X floatatom 241 220 0 0 0 0 - - -; #X obj 208 268 translate; #X msg 275 220 0 0 1; @@ -78,6 +79,7 @@ #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 124 pd gemwin; #X text 228 51 before the 'open' occurs; +#X obj 558 8 declare -lib Gem; #X connect 0 0 1 1; #X connect 1 0 16 0; #X connect 2 0 1 2; diff -Nru gem-0.94~pre1/examples/02.advanced/14.RenderOrder.pd gem-0.94/examples/02.advanced/14.RenderOrder.pd --- gem-0.94~pre1/examples/02.advanced/14.RenderOrder.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/14.RenderOrder.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 986 385 10; +#N canvas 6 61 986 385 10; +#X declare -lib Gem; #X text 276 35 Blue Sphere; #N canvas 95 194 290 179 Gem.init 0; #X obj 118 18 loadbang; @@ -120,6 +121,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 72 168 pd gemwin; +#X obj 878 8 declare -lib Gem; #X connect 1 0 34 0; #X connect 2 0 4 0; #X connect 3 0 5 0; diff -Nru gem-0.94~pre1/examples/02.advanced/15.GemWin.pd gem-0.94/examples/02.advanced/15.GemWin.pd --- gem-0.94~pre1/examples/02.advanced/15.GemWin.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/15.GemWin.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 51 56 650 553 10; +#N canvas 51 61 650 553 10; +#X declare -lib Gem; #X obj 53 224 gemwin; #X obj 38 397 gemmouse; #X obj 109 206 r gemwin_mess; @@ -22,7 +23,7 @@ -66577 0; #X msg 253 49 title Graphic's_Environment_for_Multimedia; #X msg 286 94 title \$1; -#X symbolatom 286 72 10 0 0; +#X symbolatom 286 72 10 0 0 0 - - -; #X text 359 94 type your own title; #X obj 253 125 s gemwin_mess; #X obj 247 259 cnv 15 380 120 empty empty dimensions+positioning 20 @@ -45,7 +46,7 @@ #X text 548 330 borders !; #X obj 247 391 cnv 15 380 80 empty empty full-screen 20 0 0 14 -233017 -66577 0; -#X obj 257 409 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +#X obj 257 409 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X msg 257 428 \; gemwin_mess fullscreen \$1; #X text 276 407 fullscreen/windowed; @@ -55,6 +56,7 @@ #X text 458 415 dimensions & offsets; #X text 468 432 mean nothing in; #X text 463 448 fullscreen mode !; +#X obj 528 518 declare -lib Gem; #X connect 1 2 4 0; #X connect 2 0 0 0; #X connect 4 0 5 0; diff -Nru gem-0.94~pre1/examples/02.advanced/16.vertex_program.pd gem-0.94/examples/02.advanced/16.vertex_program.pd --- gem-0.94~pre1/examples/02.advanced/16.vertex_program.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/16.vertex_program.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 27 90 540 557 10; +#X declare -lib Gem; #X obj 404 142 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 235 42 gemhead; @@ -147,6 +148,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 54 83 pd gemwin; +#X obj 38 138 declare -lib Gem; #X connect 0 0 26 0; #X connect 1 0 25 0; #X connect 2 0 41 0; diff -Nru gem-0.94~pre1/examples/02.advanced/17.fragment_program.pd gem-0.94/examples/02.advanced/17.fragment_program.pd --- gem-0.94~pre1/examples/02.advanced/17.fragment_program.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/17.fragment_program.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 27 90 540 557 10; +#X declare -lib Gem; #X obj 404 142 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 235 42 gemhead; @@ -101,6 +102,7 @@ #X connect 1 0 0 0; #X connect 2 0 1 0; #X restore 70 104 pd Gem.init; +#X obj 428 8 declare -lib Gem; #X connect 0 0 9 0; #X connect 1 0 20 0; #X connect 2 0 8 0; diff -Nru gem-0.94~pre1/examples/02.advanced/18.gl_shading_language.pd gem-0.94/examples/02.advanced/18.gl_shading_language.pd --- gem-0.94~pre1/examples/02.advanced/18.gl_shading_language.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/18.gl_shading_language.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 54 22 842 789 10; +#N canvas 54 61 842 789 10; +#X declare -lib Gem; #X obj 225 24 gemhead 1; #X obj 225 47 world_light; #X obj 77 112 gemhead; @@ -89,7 +90,7 @@ #X obj 335 114 symbol ../data/Toon; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 --1 -1 1 1; +-1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; @@ -130,6 +131,7 @@ #X msg 39 29 lighting \$1; #X obj 39 10 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; +#X obj 738 8 declare -lib Gem; #X connect 0 0 1 0; #X connect 2 0 3 0; #X connect 3 0 37 0; diff -Nru gem-0.94~pre1/examples/02.advanced/19.pointer.pd gem-0.94/examples/02.advanced/19.pointer.pd --- gem-0.94~pre1/examples/02.advanced/19.pointer.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/19.pointer.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 102 54 864 638 10; +#N canvas 102 61 864 638 10; +#X declare -lib Gem; #X obj 209 223 gemhead; #X obj 241 277 t a a a; #X obj 264 320 cube 1; @@ -182,6 +183,7 @@ #X connect 1 0 2 0; #X connect 2 0 0 0; #X restore 44 36 pd Gem.init; +#X obj 748 8 declare -lib Gem; #X connect 0 0 13 0; #X connect 1 0 22 0; #X connect 1 1 2 0; diff -Nru gem-0.94~pre1/examples/02.advanced/20.double-gemhead_vs_repeat.pd gem-0.94/examples/02.advanced/20.double-gemhead_vs_repeat.pd --- gem-0.94~pre1/examples/02.advanced/20.double-gemhead_vs_repeat.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/20.double-gemhead_vs_repeat.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 265 100 742 519 10; +#X declare -lib Gem; #X obj 93 144 gemhead; #X obj 93 205 b; #X obj 93 124 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1 @@ -143,6 +144,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 53 69 pd gemwin; +#X obj 628 8 declare -lib Gem; #X connect 0 0 33 0; #X connect 1 0 9 0; #X connect 2 0 0 0; diff -Nru gem-0.94~pre1/examples/02.advanced/21.basic_LSystem.pd gem-0.94/examples/02.advanced/21.basic_LSystem.pd --- gem-0.94~pre1/examples/02.advanced/21.basic_LSystem.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/21.basic_LSystem.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 515 27 647 743 10; +#N canvas 515 61 647 743 10; +#X declare -lib Gem; #X obj 15 16 gemhead; #X obj 76 483 GEMglPushMatrix; #X obj 96 462 GEMglPopMatrix; @@ -35,8 +36,8 @@ #X text 397 502 <- size of the system; #X msg 15 164 F \, [ \, - \, F \, ] \, F \, [ \, + \, F \, ] \, F; #X text 12 640 This is a basic implementation of Lindenmayer System -(LSystem) in GEM. Wikipedia is a good place for information about -Lsystems; +(LSystem) in GEM. Wikipedia is a good place for information about Lsystems +; #X obj 15 351 gemlist; #X obj 47 110 s \$0-gemlist; #X obj 35 372 gemlist; @@ -94,6 +95,7 @@ #X connect 0 0 1 0; #X connect 1 0 2 0; #X restore 377 40 pd Gem.init; +#X obj 528 8 declare -lib Gem; #X connect 0 0 21 0; #X connect 3 0 24 0; #X connect 4 0 18 0; diff -Nru gem-0.94~pre1/examples/02.advanced/22.double-iterative.pd gem-0.94/examples/02.advanced/22.double-iterative.pd --- gem-0.94~pre1/examples/02.advanced/22.double-iterative.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/22.double-iterative.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 473 588 10; +#N canvas 6 61 473 588 10; +#X declare -lib Gem; #X obj 32 103 gemhead; #X obj 106 235 gemlist; #X msg 106 192 20; @@ -87,6 +88,7 @@ #X text 386 416 <- fun 2; #X text 389 457 <- fun 3; #X text 136 30 double iterative process; +#X obj 368 8 declare -lib Gem; #X connect 0 0 6 0; #X connect 1 0 7 0; #X connect 2 0 3 0; diff -Nru gem-0.94~pre1/examples/02.advanced/23.SplitScreen.pd gem-0.94/examples/02.advanced/23.SplitScreen.pd --- gem-0.94~pre1/examples/02.advanced/23.SplitScreen.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/23.SplitScreen.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 26 51 799 698 10; +#N canvas 26 61 799 698 10; +#X declare -lib Gem; #N canvas 22 50 213 300 Gem.init 0; #X obj 71 191 outlet; #X obj 71 81 loadbang; @@ -13,7 +14,7 @@ #X restore 24 75 pd Gem.init; #N canvas 330 97 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 --1 -1 1 1; +-1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; @@ -245,9 +246,9 @@ 1; #X obj 263 17 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj 263 263 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +#X obj 263 263 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj 588 278 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +#X obj 588 278 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 423 540 ortho; #X obj 246 664 square 1; @@ -259,7 +260,8 @@ #X text 18 240 in the left-hand "screen".; #X obj 454 23 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 -262144 -1 -1 0 256; -#X floatatom 141 549 5 0 0 0 - - -, f 5; +#X floatatom 141 549 5 0 0 0 - - -; +#X obj 38 298 declare -lib Gem; #X connect 0 0 1 0; #X connect 2 0 11 0; #X connect 3 0 2 0; diff -Nru gem-0.94~pre1/examples/02.advanced/snapshotHD.pd gem-0.94/examples/02.advanced/snapshotHD.pd --- gem-0.94~pre1/examples/02.advanced/snapshotHD.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/02.advanced/snapshotHD.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 143 49 609 575 10; +#N canvas 143 61 609 575 10; +#X declare -lib Gem; #X obj 152 105 gemframebuffer; #X obj 179 148 translateXYZ 0 0 -4; #X obj 152 126 t a a; @@ -49,6 +50,7 @@ #X obj 152 343 t b a b b b; #X obj 167 374 t a b a; #X text 453 523 (c) Jack/RYBN 2011; +#X obj 478 8 declare -lib Gem; #X connect 0 0 2 0; #X connect 0 1 12 1; #X connect 1 0 5 0; diff -Nru gem-0.94~pre1/examples/03.lighting/01.world_light.pd gem-0.94/examples/03.lighting/01.world_light.pd --- gem-0.94~pre1/examples/03.lighting/01.world_light.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/03.lighting/01.world_light.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 139 90 771 570 10; +#X declare -lib Gem; #X obj 518 59 gemhead; #X msg 86 180 lighting 1; #X obj 518 170 rotate; @@ -69,6 +70,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 255 pd gemwin; +#X obj 654 8 declare -lib Gem; #X connect 0 0 2 0; #X connect 1 0 22 0; #X connect 2 0 7 0; diff -Nru gem-0.94~pre1/examples/03.lighting/02.light.pd gem-0.94/examples/03.lighting/02.light.pd --- gem-0.94~pre1/examples/03.lighting/02.light.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/03.lighting/02.light.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 253 63 751 605 10; +#X declare -lib Gem; #X obj 532 45 gemhead; #X msg 107 177 lighting 1; #X obj 532 156 rotate; @@ -76,6 +77,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 32 281 pd gemwin; +#X obj 634 8 declare -lib Gem; #X connect 0 0 2 0; #X connect 1 0 28 0; #X connect 2 0 6 0; diff -Nru gem-0.94~pre1/examples/03.lighting/03.controlLights.pd gem-0.94/examples/03.lighting/03.controlLights.pd --- gem-0.94~pre1/examples/03.lighting/03.controlLights.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/03.lighting/03.controlLights.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 396 160 600 500 10; +#X declare -lib Gem; #X obj 373 75 gemhead; #X msg 128 75 lighting 1; #X msg 128 107 lighting 0; @@ -73,6 +74,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 165 pd gemwin; +#X obj 484 8 declare -lib Gem; #X connect 0 0 3 0; #X connect 1 0 28 0; #X connect 2 0 28 0; diff -Nru gem-0.94~pre1/examples/03.lighting/04.moveSpheres.pd gem-0.94/examples/03.lighting/04.moveSpheres.pd --- gem-0.94~pre1/examples/03.lighting/04.moveSpheres.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/03.lighting/04.moveSpheres.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 172 20 824 640 10; +#N canvas 172 61 824 640 10; +#X declare -lib Gem; #X text 745 116 on; #X text 782 114 off; #X text 557 122 on; @@ -94,6 +95,7 @@ #X restore 34 255 pd gemwin; #X obj 444 424 sphere 1 5; #X obj 634 416 sphere 1 20; +#X obj 704 8 declare -lib Gem; #X connect 4 0 35 0; #X connect 5 0 35 0; #X connect 8 0 21 0; diff -Nru gem-0.94~pre1/examples/03.lighting/05.materials.pd gem-0.94/examples/03.lighting/05.materials.pd --- gem-0.94~pre1/examples/03.lighting/05.materials.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/03.lighting/05.materials.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 253 63 743 597 10; +#X declare -lib Gem; #X obj 349 34 gemhead; #X obj 349 307 rotate; #X floatatom 367 272 0 0 0 0 - - -; @@ -70,6 +71,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 155 pd gemwin; +#X obj 624 8 declare -lib Gem; #X connect 0 0 12 0; #X connect 1 0 13 0; #X connect 2 0 1 1; diff -Nru gem-0.94~pre1/examples/04.pix/01.image.pd gem-0.94/examples/04.pix/01.image.pd --- gem-0.94~pre1/examples/04.pix/01.image.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/01.image.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 452 108 681 502 12; +#X declare -lib Gem; #X text 172 376 click on the pix_image object to display the loaded image with imgview; #X obj 179 199 gemhead; @@ -47,6 +48,7 @@ #X obj 264 284 / 100; #X floatatom 213 261 0 0 0 0 - - -; #X obj 213 284 / 100; +#X obj 552 5 declare -lib Gem; #X connect 1 0 4 0; #X connect 4 0 5 0; #X connect 5 0 2 0; diff -Nru gem-0.94~pre1/examples/04.pix/02.multiimage.pd gem-0.94/examples/04.pix/02.multiimage.pd --- gem-0.94~pre1/examples/04.pix/02.multiimage.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/02.multiimage.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 411 137 739 504 12; +#X declare -lib Gem; #X msg 345 170 1; #X msg 345 202 0; #X obj 278 200 gemhead; @@ -39,6 +40,7 @@ #X text 21 209 Create window and render; #X obj 278 313 pix_texture; #X obj 278 335 square 3; +#X obj 612 5 declare -lib Gem; #X connect 0 0 6 1; #X connect 1 0 6 1; #X connect 2 0 6 0; diff -Nru gem-0.94~pre1/examples/04.pix/04.ImageInPlace.pd gem-0.94/examples/04.pix/04.ImageInPlace.pd --- gem-0.94~pre1/examples/04.pix/04.ImageInPlace.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/04.ImageInPlace.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 314 61 654 599 12; +#X declare -lib Gem; #X msg 489 227 1; #X msg 489 259 0; #X obj 375 254 gemhead; @@ -52,6 +53,7 @@ #X restore 25 113 pd gemwin; #X msg 25 89 create; #X text 21 69 Create window and render; +#X obj 532 5 declare -lib Gem; #X connect 0 0 5 1; #X connect 1 0 5 1; #X connect 2 0 5 0; diff -Nru gem-0.94~pre1/examples/04.pix/05.film.pd gem-0.94/examples/04.pix/05.film.pd --- gem-0.94~pre1/examples/04.pix/05.film.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/05.film.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 61 44 827 553 12; +#N canvas 61 61 827 553 12; +#X declare -lib Gem; #X obj 90 186 gemhead; #X floatatom 220 155 5 0 0 0 - - -; #X msg 150 156 auto \$1; @@ -26,8 +27,8 @@ is in RGBA.; #X text 36 334 you might notice a significant performance-enhancement by just turning the [pix_rgba] off (via the toggle). however \, not -[pix_rgba] is expensive but actually the [pix_convolve] (which appears to do -nothing when initialized with "0 0 0 0 1 0 0 0 0". When [pix_rgba] +[pix_rgba] is expensive but actually the [pix_convolve] (which appears +to do nothing when initialized with "0 0 0 0 1 0 0 0 0". When [pix_rgba] is "off" \, the [pix_convolve] will be bypassed \, and therefore be very fast.; #X restore 635 187 pd README; @@ -93,6 +94,7 @@ not RGBA \, [pix_convolve] might not be able to process the image and therefore will do nothing \, which will dramatically "increase" performance) ; +#X obj 682 5 declare -lib Gem; #X connect 0 0 12 0; #X connect 1 0 12 1; #X connect 2 0 12 0; diff -Nru gem-0.94~pre1/examples/04.pix/05.movie.pd gem-0.94/examples/04.pix/05.movie.pd --- gem-0.94~pre1/examples/04.pix/05.movie.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/05.movie.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 133 25 637 554 12; +#N canvas 133 61 637 554 12; +#X declare -lib Gem; #X obj 157 59 gemhead; #X floatatom 336 167 0 0 0 0 - - -; #X obj 157 385 rotateXYZ; @@ -61,6 +62,7 @@ #X restore 510 453 pd gemwin; #X msg 510 430 create; #X text 506 413 Create window:; +#X obj 512 5 declare -lib Gem; #X connect 0 0 8 0; #X connect 1 0 8 1; #X connect 2 0 3 0; diff -Nru gem-0.94~pre1/examples/04.pix/06.PixRect.pd gem-0.94/examples/04.pix/06.PixRect.pd --- gem-0.94~pre1/examples/04.pix/06.PixRect.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/06.PixRect.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 183 99 635 638 12; +#X declare -lib Gem; #X obj 179 176 gemhead; #X obj 179 587 pix_texture; #X msg 291 536 1 0 0; @@ -58,6 +59,7 @@ #X msg 25 89 create; #X text 21 69 Create window and render; #X text 118 26 draw a rectangle onto an image; +#X obj 502 5 declare -lib Gem; #X connect 0 0 11 0; #X connect 1 0 3 0; #X connect 2 0 26 2; diff -Nru gem-0.94~pre1/examples/04.pix/07.PixSet.pd gem-0.94/examples/04.pix/07.PixSet.pd --- gem-0.94~pre1/examples/04.pix/07.PixSet.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/07.PixSet.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 243 272 754 536 10; +#X declare -lib Gem; #X obj 143 110 gemhead; #X text 99 37 ========; #X msg 149 366 quality 0; @@ -54,6 +55,7 @@ #X restore 455 433 pd gemwin; #X msg 455 409 create; #X text 451 389 Create window and render; +#X obj 642 5 declare -lib Gem; #X connect 0 0 22 0; #X connect 2 0 23 0; #X connect 4 0 2 0; diff -Nru gem-0.94~pre1/examples/04.pix/08.PixDump.pd gem-0.94/examples/04.pix/08.PixDump.pd --- gem-0.94~pre1/examples/04.pix/08.PixDump.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/08.PixDump.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 53 47 761 536 10; +#N canvas 53 61 761 536 10; +#X declare -lib Gem; #X obj 143 110 gemhead; #X obj 143 203 pix_dump; #X text 101 24 pix_dump; @@ -52,6 +53,7 @@ #X msg 460 74 create; #X text 456 54 Create window and render; #X obj 143 135 pix_image ../data/blob2.tif; +#X obj 652 5 declare -lib Gem; #X connect 0 0 25 0; #X connect 1 0 5 0; #X connect 1 1 11 0; diff -Nru gem-0.94~pre1/examples/04.pix/09.Histogram.pd gem-0.94/examples/04.pix/09.Histogram.pd --- gem-0.94~pre1/examples/04.pix/09.Histogram.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/09.Histogram.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 764 557 10; +#N canvas 6 61 764 557 10; +#X declare -lib Gem; #N canvas 412 247 681 394 tables 0; #N canvas 0 0 450 300 (subpatch) 0; #X array red 256 float 0; @@ -75,6 +76,7 @@ #X msg 25 89 create; #X text 21 69 Create window and render; #X obj 34 217 pix_multiimage ../data/temp*.JPG 2; +#X obj 652 5 declare -lib Gem; #X connect 1 0 27 0; #X connect 2 0 9 0; #X connect 6 0 27 1; diff -Nru gem-0.94~pre1/examples/04.pix/10.PixDataSimple.pd gem-0.94/examples/04.pix/10.PixDataSimple.pd --- gem-0.94~pre1/examples/04.pix/10.PixDataSimple.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/10.PixDataSimple.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 284 93 594 539 10; +#X declare -lib Gem; #X obj 46 186 gemwin; #X obj 319 173 gemhead; #X obj 258 329 pix_data; @@ -50,6 +51,7 @@ #X obj 419 253 random 1000; #X obj 419 270 / 1000; #X obj 419 288 t f f; +#X obj 482 5 declare -lib Gem; #X connect 1 0 27 0; #X connect 2 1 13 1; #X connect 3 0 0 0; diff -Nru gem-0.94~pre1/examples/04.pix/11.PixDataComplex.pd gem-0.94/examples/04.pix/11.PixDataComplex.pd --- gem-0.94~pre1/examples/04.pix/11.PixDataComplex.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/11.PixDataComplex.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 331 86 929 574 10; +#X declare -lib Gem; #X obj 30 159 gemwin; #X obj 372 135 gemhead; #X obj 372 164 pix_image ../data/fractal.JPG; @@ -60,6 +61,7 @@ #X floatatom 537 423 5 0 0 0 - - -; #X obj 537 473 * 0.2; #X obj 537 369 f; +#X obj 822 5 declare -lib Gem; #X connect 1 0 2 0; #X connect 2 0 3 1; #X connect 3 1 14 1; diff -Nru gem-0.94~pre1/examples/04.pix/12.add.pd gem-0.94/examples/04.pix/12.add.pd --- gem-0.94~pre1/examples/04.pix/12.add.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/12.add.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 542 198 681 468 10; +#X declare -lib Gem; #X obj 270 175 pix_image ../data/dancer.JPG; #X obj 270 342 pix_texture; #X obj 270 383 square; @@ -40,6 +41,7 @@ #X msg 25 106 create; #X text 21 79 Create window and render; #X text 135 60 blending \, using pixel addition; +#X obj 572 5 declare -lib Gem; #X connect 0 0 8 0; #X connect 1 0 2 0; #X connect 3 0 2 1; diff -Nru gem-0.94~pre1/examples/04.pix/12.blending.pd gem-0.94/examples/04.pix/12.blending.pd --- gem-0.94~pre1/examples/04.pix/12.blending.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/12.blending.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 138 0 775 371 10; +#N canvas 138 61 775 371 10; +#X declare -lib Gem; #X obj 254 305 pix_texture; #X obj 290 112 gemhead 20; #X obj 254 65 gemhead; @@ -158,6 +159,7 @@ #X restore 25 113 pd gemwin; #X msg 25 89 create; #X text 21 69 Create window and render; +#X obj 662 5 declare -lib Gem; #X connect 0 0 5 0; #X connect 1 0 16 0; #X connect 2 0 15 0; diff -Nru gem-0.94~pre1/examples/04.pix/12.composite.pd gem-0.94/examples/04.pix/12.composite.pd --- gem-0.94~pre1/examples/04.pix/12.composite.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/12.composite.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 246 168 681 468 10; +#X declare -lib Gem; #X obj 270 175 pix_image ../data/dancer.JPG; #X obj 270 338 pix_texture; #X obj 270 379 square; @@ -41,6 +42,7 @@ #X restore 25 123 pd gemwin; #X msg 25 105 create; #X text 21 79 Create window and render; +#X obj 572 5 declare -lib Gem; #X connect 0 0 7 0; #X connect 1 0 2 0; #X connect 3 0 2 1; diff -Nru gem-0.94~pre1/examples/04.pix/12.pix_multiply.pd gem-0.94/examples/04.pix/12.pix_multiply.pd --- gem-0.94~pre1/examples/04.pix/12.pix_multiply.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/12.pix_multiply.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 58 175 600 500 10; +#X declare -lib Gem; #X obj 288 247 pix_image ../data/dancer.JPG; #X obj 270 153 gemhead; #X obj 270 188 pix_image ../data/fractal.JPG; @@ -19,7 +20,7 @@ #X msg 182 68 set create; #X msg 132 112 create \, 1; #X msg 238 112 destroy; -#N canvas 689 152 247 179 Gem.init 0; +#N canvas 89 152 247 179 Gem.init 0; #X obj 118 46 loadbang; #X msg 118 81 reset; #X obj 118 113 outlet; @@ -45,6 +46,7 @@ #X msg 25 89 create; #X text 21 69 Create window and render; #X obj 270 379 square 3; +#X obj 492 5 declare -lib Gem; #X connect 0 0 4 1; #X connect 1 0 2 0; #X connect 2 0 4 0; diff -Nru gem-0.94~pre1/examples/04.pix/13.maskDancer.pd gem-0.94/examples/04.pix/13.maskDancer.pd --- gem-0.94~pre1/examples/04.pix/13.maskDancer.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/13.maskDancer.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 4 20 600 500 10; +#N canvas 6 61 600 500 10; +#X declare -lib Gem; #X obj 270 278 pix_mask; #X obj 288 247 pix_image ../data/dancer.JPG; #X obj 270 153 gemhead; @@ -44,6 +45,7 @@ #X restore 25 133 pd gemwin; #X msg 25 109 create; #X text 21 89 Create window and render; +#X obj 482 5 declare -lib Gem; #X connect 0 0 3 0; #X connect 1 0 0 1; #X connect 2 0 4 0; diff -Nru gem-0.94~pre1/examples/04.pix/14.takeAlpha.pd gem-0.94/examples/04.pix/14.takeAlpha.pd --- gem-0.94~pre1/examples/04.pix/14.takeAlpha.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/14.takeAlpha.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 426 68 613 402 10; +#X declare -lib Gem; #X obj 257 92 gemhead; #X obj 343 168 gemhead; #X obj 257 244 pix_takealpha; @@ -47,6 +48,7 @@ #X obj 343 210 t a a; #X obj 257 125 pix_image ../data/temp2.JPG; #X obj 343 190 pix_image ../data/fractalAlpha.TIF; +#X obj 502 5 declare -lib Gem; #X connect 0 0 19 0; #X connect 1 0 20 0; #X connect 2 0 10 0; diff -Nru gem-0.94~pre1/examples/04.pix/15.pix_alpha.pd gem-0.94/examples/04.pix/15.pix_alpha.pd --- gem-0.94~pre1/examples/04.pix/15.pix_alpha.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/15.pix_alpha.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 78 67 719 587 10; +#X declare -lib Gem; #X obj 332 30 gemhead; #X obj 332 371 pix_texture; #X msg 375 394 4; @@ -66,6 +67,7 @@ #X restore 25 113 pd gemwin; #X msg 25 89 create; #X text 21 69 Create window and render; +#X obj 612 5 declare -lib Gem; #X connect 0 0 3 0; #X connect 1 0 5 0; #X connect 2 0 5 1; diff -Nru gem-0.94~pre1/examples/04.pix/16.alphaGrey.pd gem-0.94/examples/04.pix/16.alphaGrey.pd --- gem-0.94~pre1/examples/04.pix/16.alphaGrey.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/16.alphaGrey.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 28 0 713 500 10; +#N canvas 28 61 713 500 10; +#X declare -lib Gem; #X obj 135 336 pix_texture; #X obj 135 393 square 2; #X obj 135 171 pix_image ../data/fractalAlpha.TIF; @@ -14,7 +15,7 @@ #X text 261 55 grey's out all pixels \, of which the alpha-channel is above a certain threshold; #X obj 240 269 hsl 128 15 -1 1 0 0 empty empty empty 20 8 0 8 -262144 --1 -1 3100 1; +-1 -1 0 1; #X msg 237 246 0; #X msg 266 246 0.5; #X obj 20 39 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 @@ -23,7 +24,7 @@ #X obj 135 139 gemhead; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 --1 -1 1 1; +-1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; @@ -62,6 +63,7 @@ #X coords 0 -1 1 1 85 40 1 100 100; #X restore 28 61 pd gemwin; #X floatatom 237 288 5 -1 1 0 - - -; +#X obj 602 5 declare -lib Gem; #X connect 0 0 1 0; #X connect 2 0 4 0; #X connect 3 0 0 0; diff -Nru gem-0.94~pre1/examples/04.pix/16.pix_2grey.pd gem-0.94/examples/04.pix/16.pix_2grey.pd --- gem-0.94~pre1/examples/04.pix/16.pix_2grey.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/16.pix_2grey.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 204 170 691 547 10; +#X declare -lib Gem; #X obj 308 140 gemhead; #X obj 308 374 pix_texture; #X obj 308 402 square 2; @@ -37,6 +38,7 @@ #X text 21 159 Create window and render; #X text 64 81 greys out all pixels (but pixel-values are still in RGBA) ; +#X obj 582 5 declare -lib Gem; #X connect 0 0 3 0; #X connect 1 0 2 0; #X connect 3 0 4 0; diff -Nru gem-0.94~pre1/examples/04.pix/17.pix_gain.pd gem-0.94/examples/04.pix/17.pix_gain.pd --- gem-0.94~pre1/examples/04.pix/17.pix_gain.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/17.pix_gain.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 111 106 885 510 10; +#X declare -lib Gem; #X floatatom 664 182 0 0 0 0 - - -; #X obj 664 210 / 100; #X floatatom 610 163 0 0 0 0 - - -; @@ -52,6 +53,7 @@ #X restore 25 113 pd gemwin; #X msg 25 89 create; #X text 21 69 Create window and render; +#X obj 772 5 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 10 2; #X connect 1 0 13 0; diff -Nru gem-0.94~pre1/examples/04.pix/18.Curves.pd gem-0.94/examples/04.pix/18.Curves.pd --- gem-0.94~pre1/examples/04.pix/18.Curves.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/18.Curves.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 119 33 764 634 10; +#N canvas 119 61 764 634 10; +#X declare -lib Gem; #N canvas 285 0 681 629 tables 0; #N canvas 0 0 450 300 (subpatch) 0; #X array red 256 float 0; @@ -26,8 +27,8 @@ #X obj 30 272 gemhead; #X obj 30 468 pix_texture; #N canvas 0 0 450 300 (subpatch) 0; -#X array rgba 67 float 0; -#X coords 0 256 66 0 256 140 1; +#X array rgba 256 float 0; +#X coords 0 256 255 0 256 140 1; #X restore 217 70 graph; #X text 78 8 pix_curve: adjust the colour of an image; #X text 291 227 separate tables for r \, g \, b and a; @@ -161,6 +162,7 @@ #X restore 16 195 pd gemwin; #X msg 16 171 create; #X text 12 151 Create window and render; +#X obj 652 5 declare -lib Gem; #X connect 1 0 29 0; #X connect 2 0 21 0; #X connect 13 0 28 0; diff -Nru gem-0.94~pre1/examples/04.pix/19.colorMatrix.pd gem-0.94/examples/04.pix/19.colorMatrix.pd --- gem-0.94~pre1/examples/04.pix/19.colorMatrix.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/19.colorMatrix.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 10 20 769 486 10; +#N canvas 10 61 769 486 10; +#X declare -lib Gem; #X obj 252 258 gemhead; #X obj 252 313 pix_image ../data/fractal.JPG; #X obj 252 343 pix_colormatrix; @@ -48,6 +49,7 @@ #X restore 46 186 pd gemwin; #X msg 46 162 create; #X text 42 142 Create window and render; +#X obj 662 5 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 6 0; diff -Nru gem-0.94~pre1/examples/04.pix/20.convolve.pd gem-0.94/examples/04.pix/20.convolve.pd --- gem-0.94~pre1/examples/04.pix/20.convolve.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/20.convolve.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 150 20 846 728 12; +#N canvas 150 61 846 728 12; +#X declare -lib Gem; #X obj 575 515 s matrix; #X obj 502 516 s scale; #X msg 502 483 1; @@ -74,6 +75,7 @@ #X obj 241 571 /; #X text 43 650 a good start for the scale is the sum of all the elements ; +#X obj 722 685 declare -lib Gem; #X connect 2 0 1 0; #X connect 5 0 4 0; #X connect 8 0 7 0; diff -Nru gem-0.94~pre1/examples/04.pix/22.biquad.pd gem-0.94/examples/04.pix/22.biquad.pd --- gem-0.94~pre1/examples/04.pix/22.biquad.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/22.biquad.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 269 10 753 499 10; +#N canvas 269 61 753 499 10; +#X declare -lib Gem; #X msg 360 312 set; #X floatatom 401 209 4 0 0 0 - - -; #X floatatom 442 209 4 0 0 0 - - -; @@ -75,6 +76,7 @@ #X msg 25 89 create; #X text 21 69 Create window and render; #X obj 35 247 pix_multiimage ../data/temp*.JPG 2; +#X obj 642 5 declare -lib Gem; #X connect 0 0 38 0; #X connect 1 0 14 0; #X connect 2 0 3 0; diff -Nru gem-0.94~pre1/examples/04.pix/23.gravity.pd gem-0.94/examples/04.pix/23.gravity.pd --- gem-0.94~pre1/examples/04.pix/23.gravity.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/23.gravity.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 626 514 10; +#N canvas 6 61 626 514 10; +#X declare -lib Gem; #X floatatom 107 437 5 0 0 0 - - -; #X floatatom 160 436 5 0 0 0 - - -; #X floatatom 219 435 5 0 0 0 - - -; @@ -76,6 +77,7 @@ #X restore 25 63 pd gemwin; #X msg 25 39 create; #X text 21 19 Create window and render; +#X obj 512 5 declare -lib Gem; #X connect 3 0 40 0; #X connect 3 1 0 0; #X connect 3 2 1 0; diff -Nru gem-0.94~pre1/examples/04.pix/24.time-filtering.pd gem-0.94/examples/04.pix/24.time-filtering.pd --- gem-0.94~pre1/examples/04.pix/24.time-filtering.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/24.time-filtering.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 228 84 794 352 10; +#X declare -lib Gem; #X floatatom 279 191 5 0 0 0 - - -; #X obj 266 241 pix_tIIR 2 2; #X obj 279 211 * 0.01; @@ -63,6 +64,7 @@ #X restore 25 113 pd gemwin; #X msg 25 89 create; #X text 21 69 Create window and render; +#X obj 672 5 declare -lib Gem; #X connect 0 0 2 0; #X connect 1 0 21 0; #X connect 2 0 1 1; diff -Nru gem-0.94~pre1/examples/04.pix/25.buffer.pd gem-0.94/examples/04.pix/25.buffer.pd --- gem-0.94~pre1/examples/04.pix/25.buffer.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/25.buffer.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 832 589 10; +#N canvas 6 61 832 589 10; +#X declare -lib Gem; #X obj 62 327 gemhead; #X obj 62 369 pix_texture; #X obj 62 392 square 4; @@ -89,6 +90,7 @@ #X text 287 20 [pix_buffer]; #X msg 353 181 open ../data/fractal.JPG 5; #X text 524 182 load an image into a certain storage-buffer; +#X obj 722 5 declare -lib Gem; #X connect 0 0 36 0; #X connect 1 0 2 0; #X connect 3 0 4 0; diff -Nru gem-0.94~pre1/examples/04.pix/26.framebuffer_readback.pd gem-0.94/examples/04.pix/26.framebuffer_readback.pd --- gem-0.94~pre1/examples/04.pix/26.framebuffer_readback.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/26.framebuffer_readback.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 826 651 10; +#N canvas 6 61 826 651 10; +#X declare -lib Gem; #X msg 112 86 create \, 1; #X obj 112 131 gemwin; #X obj 311 112 pix_buffer \$0-framebuffer 2; @@ -45,11 +46,12 @@ #X text 562 308 fetch framebuffer-pix; #X text 535 379 apply some nifty FX; #X text 73 597 note \, that there are more efficient ways to apply -FX to framebuffers (notably openGL-shaders: see examples/10.glsl/ -for more information); -#X obj 425 358 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +FX to framebuffers (notably openGL-shaders: see examples/10.glsl/ for +more information); +#X obj 425 358 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 410 380 pix_kaleidoscope; +#X obj 722 5 declare -lib Gem; #X connect 0 0 1 0; #X connect 3 0 4 0; #X connect 5 0 1 0; diff -Nru gem-0.94~pre1/examples/04.pix/27.bitmap_font.pd gem-0.94/examples/04.pix/27.bitmap_font.pd --- gem-0.94~pre1/examples/04.pix/27.bitmap_font.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.pix/27.bitmap_font.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 656 222 901 508 10; +#N canvas 56 222 901 508 10; +#X declare -lib Gem; #X obj 191 413 pix_texture; #X obj 463 158 gemwin; #X msg 506 135 0 \, destroy; @@ -103,6 +104,7 @@ #X obj 191 483 rectangle 32 -2; #X text 501 84 2 click on this patch (to focuses it) and type something with your keyboard; +#X obj 782 5 declare -lib Gem; #X connect 0 0 44 0; #X connect 2 0 1 0; #X connect 3 0 0 0; diff -Nru gem-0.94~pre1/examples/04.video/00.SimpleVideo.pd gem-0.94/examples/04.video/00.SimpleVideo.pd --- gem-0.94~pre1/examples/04.video/00.SimpleVideo.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.video/00.SimpleVideo.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 147 59 659 387 12; +#N canvas 147 61 659 387 12; +#X declare -lib Gem; #X obj 134 180 cnv 15 500 40 empty empty empty 20 12 0 14 -245500 -66577 0; #X obj 55 78 gemhead; @@ -79,6 +80,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 502 304 pd gemwin; +#X obj 532 5 declare -lib Gem; #X connect 1 0 4 0; #X connect 3 0 2 0; #X connect 4 0 3 0; diff -Nru gem-0.94~pre1/examples/04.video/01.VideoPaint.pd gem-0.94/examples/04.video/01.VideoPaint.pd --- gem-0.94~pre1/examples/04.video/01.VideoPaint.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.video/01.VideoPaint.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 38 374 800 574 10; +#X declare -lib Gem; #X obj 50 130 gemhead; #X obj 50 493 square; #X obj 50 371 alpha; @@ -89,6 +90,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 503 362 pd gemwin; +#X obj 672 5 declare -lib Gem; #X connect 0 0 3 0; #X connect 2 0 7 0; #X connect 3 0 8 0; diff -Nru gem-0.94~pre1/examples/04.video/02.VideoSphere.pd gem-0.94/examples/04.video/02.VideoSphere.pd --- gem-0.94~pre1/examples/04.video/02.VideoSphere.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.video/02.VideoSphere.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 84 483 743 466 10; +#X declare -lib Gem; #X obj 57 215 pix_texture; #X text 187 75 click on any of these; #X text 40 25 texture live video onto a sphere; @@ -77,6 +78,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 458 266 pd gemwin; +#X obj 632 5 declare -lib Gem; #X connect 0 0 6 0; #X connect 3 0 6 1; #X connect 4 0 6 2; diff -Nru gem-0.94~pre1/examples/04.video/03.movement_detection.pd gem-0.94/examples/04.video/03.movement_detection.pd --- gem-0.94~pre1/examples/04.video/03.movement_detection.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.video/03.movement_detection.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 378 405 793 522 10; +#X declare -lib Gem; #X floatatom 227 258 6 0 0 0 - - -; #X floatatom 280 258 6 0 0 0 - - -; #X floatatom 339 258 6 0 0 0 - - -; @@ -66,6 +67,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 481 376 pd gemwin; +#X obj 682 5 declare -lib Gem; #X connect 0 0 11 0; #X connect 1 0 13 0; #X connect 2 0 15 0; diff -Nru gem-0.94~pre1/examples/04.video/04.videoRTX.pd gem-0.94/examples/04.video/04.videoRTX.pd --- gem-0.94~pre1/examples/04.video/04.videoRTX.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.video/04.videoRTX.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 67 70 636 509 10; +#X declare -lib Gem; #X obj 43 89 gemhead; #X obj 190 380 pix_texture; #X obj 43 380 pix_texture; @@ -80,6 +81,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 424 422 pd gemwin; +#X obj 532 45 declare -lib Gem; #X connect 0 0 20 0; #X connect 1 0 21 0; #X connect 2 0 24 0; diff -Nru gem-0.94~pre1/examples/04.video/05.buffer_rtx.pd gem-0.94/examples/04.video/05.buffer_rtx.pd --- gem-0.94~pre1/examples/04.video/05.buffer_rtx.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.video/05.buffer_rtx.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 109 48 758 483 10; +#N canvas 109 61 758 483 10; +#X declare -lib Gem; #X obj 29 30 gemhead; #X obj 29 163 pix_video; #X obj 29 100 gemframebuffer; @@ -79,6 +80,7 @@ #X msg 43 76 dimen 256 256; #X obj 69 305 t b a; #X obj 559 212 t a b; +#X obj 652 5 declare -lib Gem; #X connect 0 0 2 0; #X connect 1 0 7 0; #X connect 2 0 3 0; diff -Nru gem-0.94~pre1/examples/04.video/06.frame_diff_tracking.pd gem-0.94/examples/04.video/06.frame_diff_tracking.pd --- gem-0.94~pre1/examples/04.video/06.frame_diff_tracking.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.video/06.frame_diff_tracking.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 42 41 639 499 10; +#N canvas 42 61 639 499 10; +#X declare -lib Gem; #X obj 140 80 gemhead; #X obj 140 271 pix_diff; #X obj 23 397 pix_texture; @@ -165,6 +166,7 @@ #X text 356 384 <-- render a cursor using the (x \, y) and size; #X text 6 460 render the video of the; #X text 6 472 frame difference; +#X obj 526 62 declare -lib Gem; #X connect 0 0 8 0; #X connect 1 0 12 0; #X connect 2 0 11 0; diff -Nru gem-0.94~pre1/examples/04.video/07.bg_subtract_tracking.pd gem-0.94/examples/04.video/07.bg_subtract_tracking.pd --- gem-0.94~pre1/examples/04.video/07.bg_subtract_tracking.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.video/07.bg_subtract_tracking.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 22 22 620 460 10; +#N canvas 22 61 620 460 10; +#X declare -lib Gem; #X obj 8 10 cnv 15 400 40 empty empty tracking_using_background_subtraction 20 12 0 16 -228992 -66577 0; #X obj 179 223 pix_grey; @@ -162,6 +163,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 483 25 pd gemwin; +#X obj 481 75 declare -lib Gem; #X connect 1 0 3 0; #X connect 2 0 3 0; #X connect 3 0 5 0; diff -Nru gem-0.94~pre1/examples/04.video/08.color_classification.pd gem-0.94/examples/04.video/08.color_classification.pd --- gem-0.94~pre1/examples/04.video/08.color_classification.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/04.video/08.color_classification.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 55 233 930 428 10; +#X declare -lib Gem; #X obj 297 283 separator; #X obj 297 304 pix_texture; #X obj 96 130 gemhead 10; @@ -92,6 +93,7 @@ #X obj 65 240 pix_colorclassify; #X text 7 385 Author: Ricardo Fabbri labmacambira.sf.net rfabbri at gmail; +#X obj 822 5 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 10 0; #X connect 2 0 3 0; diff -Nru gem-0.94~pre1/examples/05.text/01.TextNoLoadBang.pd gem-0.94/examples/05.text/01.TextNoLoadBang.pd --- gem-0.94~pre1/examples/05.text/01.TextNoLoadBang.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/05.text/01.TextNoLoadBang.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 262 20 734 641 10; +#N canvas 262 61 734 641 10; +#X declare -lib Gem; #X floatatom 623 223 0 0 0 0 - - -; #X floatatom 322 240 0 0 0 0 - - -; #X msg 490 144 1; @@ -77,6 +78,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 255 pd gemwin; +#X obj 615 11 declare -lib Gem; #X connect 0 0 29 3; #X connect 1 0 22 3; #X connect 2 0 7 0; diff -Nru gem-0.94~pre1/examples/05.text/01.Text.pd gem-0.94/examples/05.text/01.Text.pd --- gem-0.94~pre1/examples/05.text/01.Text.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/05.text/01.Text.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 262 20 734 641 10; +#N canvas 262 61 734 641 10; +#X declare -lib Gem; #X floatatom 623 223 0 0 0 0 - - -; #X floatatom 322 240 0 0 0 0 - - -; #X msg 490 144 1; @@ -84,6 +85,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 255 pd gemwin; +#X obj 615 11 declare -lib Gem; #X connect 0 0 29 3; #X connect 1 0 22 3; #X connect 2 0 7 0; diff -Nru gem-0.94~pre1/examples/05.text/03.ChangeTextNoLoadBang.pd gem-0.94/examples/05.text/03.ChangeTextNoLoadBang.pd --- gem-0.94~pre1/examples/05.text/03.ChangeTextNoLoadBang.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/05.text/03.ChangeTextNoLoadBang.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 262 100 734 532 10; +#X declare -lib Gem; #X floatatom 495 359 0 0 0 0 - - -; #X obj 451 243 gemhead; #X obj 451 484 text3d hello world; @@ -62,6 +63,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 255 pd gemwin; +#X obj 615 11 declare -lib Gem; #X connect 0 0 17 2; #X connect 1 0 15 0; #X connect 4 0 2 0; diff -Nru gem-0.94~pre1/examples/05.text/03.ChangeText.pd gem-0.94/examples/05.text/03.ChangeText.pd --- gem-0.94~pre1/examples/05.text/03.ChangeText.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/05.text/03.ChangeText.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 262 100 734 532 10; +#X declare -lib Gem; #X floatatom 495 359 0 0 0 0 - - -; #X obj 451 243 gemhead; #X obj 451 484 text3d hello world; @@ -70,6 +71,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 362 pd gemwin; +#X obj 615 11 declare -lib Gem; #X connect 0 0 17 2; #X connect 1 0 15 0; #X connect 4 0 2 0; diff -Nru gem-0.94~pre1/examples/06.particle/01.simple.pd gem-0.94/examples/06.particle/01.simple.pd --- gem-0.94~pre1/examples/06.particle/01.simple.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/06.particle/01.simple.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 509 196 487 398 10; +#X declare -lib Gem; #X obj 167 160 gemhead; #X obj 167 192 part_head; #X obj 167 328 part_draw; @@ -59,6 +60,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 37 65 pd gemwin; +#X obj 372 7 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 10 0; #X connect 8 0 10 2; diff -Nru gem-0.94~pre1/examples/06.particle/02.fountain.pd gem-0.94/examples/06.particle/02.fountain.pd --- gem-0.94~pre1/examples/06.particle/02.fountain.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/06.particle/02.fountain.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 396 160 600 500 10; +#X declare -lib Gem; #X obj 198 50 gemhead; #X obj 198 82 part_head; #X obj 198 136 part_color; @@ -69,6 +70,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 176 pd gemwin; +#X obj 492 7 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 6 0; diff -Nru gem-0.94~pre1/examples/06.particle/03.orbit.pd gem-0.94/examples/06.particle/03.orbit.pd --- gem-0.94~pre1/examples/06.particle/03.orbit.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/06.particle/03.orbit.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 396 160 600 500 10; +#X declare -lib Gem; #X obj 198 50 gemhead; #X obj 198 82 part_head; #X obj 198 136 part_color; @@ -70,6 +71,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 255 pd gemwin; +#X obj 492 7 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 20 0; diff -Nru gem-0.94~pre1/examples/06.particle/04.combo.pd gem-0.94/examples/06.particle/04.combo.pd --- gem-0.94~pre1/examples/06.particle/04.combo.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/06.particle/04.combo.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 125 39 600 634 10; +#N canvas 125 61 600 634 10; +#X declare -lib Gem; #X obj 41 197 gemwin; #X msg 41 39 create; #X msg 58 68 destroy; @@ -66,6 +67,7 @@ #X connect 6 0 2 0; #X connect 6 1 5 0; #X restore 85 327 pd alternate; +#X obj 492 7 declare -lib Gem; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 3 0 34 0; diff -Nru gem-0.94~pre1/examples/06.particle/05.twoSrc.pd gem-0.94/examples/06.particle/05.twoSrc.pd --- gem-0.94~pre1/examples/06.particle/05.twoSrc.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/06.particle/05.twoSrc.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 336 24 600 774 10; +#N canvas 336 61 600 774 10; +#X declare -lib Gem; #X obj 198 50 gemhead; #X obj 198 82 part_head; #X obj 198 136 part_color; @@ -143,8 +144,9 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 255 pd gemwin; -#X obj 375 392 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +#X obj 375 392 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; +#X obj 492 7 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 12 0; diff -Nru gem-0.94~pre1/examples/06.particle/06.target.pd gem-0.94/examples/06.particle/06.target.pd --- gem-0.94~pre1/examples/06.particle/06.target.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/06.particle/06.target.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 396 160 600 500 10; +#X declare -lib Gem; #X obj 198 50 gemhead; #X obj 198 82 part_head; #X obj 198 447 part_draw; @@ -62,6 +63,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 255 pd gemwin; +#X obj 492 7 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 13 0; #X connect 3 0 11 0; diff -Nru gem-0.94~pre1/examples/06.particle/07.render.pd gem-0.94/examples/06.particle/07.render.pd --- gem-0.94~pre1/examples/06.particle/07.render.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/06.particle/07.render.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 136 52 487 571 10; +#N canvas 136 61 487 571 10; +#X declare -lib Gem; #X obj 167 53 gemhead; #X obj 167 81 part_head; #X text 293 262 set the number per frame; @@ -68,6 +69,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 36 148 pd gemwin; +#X obj 372 7 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 14 0; #X connect 7 0 9 2; diff -Nru gem-0.94~pre1/examples/06.particle/08.info.pd gem-0.94/examples/06.particle/08.info.pd --- gem-0.94~pre1/examples/06.particle/08.info.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/06.particle/08.info.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 22 71 611 571 10; +#X declare -lib Gem; #X obj 169 18 gemhead; #X obj 168 85 part_head; #X text 278 259 set the number per frame; @@ -80,6 +81,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 255 pd gemwin; +#X obj 492 7 declare -lib Gem; #X connect 0 0 24 0; #X connect 1 0 7 0; #X connect 4 0 6 2; diff -Nru gem-0.94~pre1/examples/06.particle/09.sink.pd gem-0.94/examples/06.particle/09.sink.pd --- gem-0.94~pre1/examples/06.particle/09.sink.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/06.particle/09.sink.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 424 93 600 500 10; +#X declare -lib Gem; #X obj 198 50 gemhead; #X obj 198 82 part_head; #X obj 198 136 part_color; @@ -77,6 +78,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 255 pd gemwin; +#X obj 492 6 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 6 0; diff -Nru gem-0.94~pre1/examples/07.texture/01.texture.pd gem-0.94/examples/07.texture/01.texture.pd --- gem-0.94~pre1/examples/07.texture/01.texture.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/07.texture/01.texture.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 180 41 560 399 10; +#N canvas 180 61 560 399 10; +#X declare -lib Gem; #X floatatom 369 147 0 0 0 0 - - -; #X obj 325 202 pix_image ../data/fractal.JPG; #X obj 325 245 pix_texture; @@ -52,6 +53,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 60 170 pd gemwin; +#X obj 444 11 declare -lib Gem; #X connect 0 0 3 1; #X connect 1 0 2 0; #X connect 2 0 4 0; diff -Nru gem-0.94~pre1/examples/07.texture/02.TexCoord.pd gem-0.94/examples/07.texture/02.TexCoord.pd --- gem-0.94~pre1/examples/07.texture/02.TexCoord.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/07.texture/02.TexCoord.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 127 46 642 483 10; +#N canvas 127 61 642 483 10; +#X declare -lib Gem; #X obj 251 46 gemhead; #X obj 251 424 square; #X obj 251 369 pix_coordinate; @@ -58,6 +59,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 255 pd gemwin; +#X obj 534 11 declare -lib Gem; #X connect 0 0 4 0; #X connect 2 0 1 0; #X connect 3 0 2 0; diff -Nru gem-0.94~pre1/examples/07.texture/04.moveImages.pd gem-0.94/examples/07.texture/04.moveImages.pd --- gem-0.94~pre1/examples/07.texture/04.moveImages.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/07.texture/04.moveImages.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 180 41 816 619 10; +#N canvas 180 61 816 619 10; +#X declare -lib Gem; #X text 730 64 on; #X text 767 62 off; #X text 513 71 on; @@ -105,6 +106,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 255 pd gemwin; +#X obj 4 11 declare -lib Gem; #X connect 4 0 18 0; #X connect 5 0 25 0; #X connect 6 0 33 0; diff -Nru gem-0.94~pre1/examples/07.texture/05.newWave.pd gem-0.94/examples/07.texture/05.newWave.pd --- gem-0.94~pre1/examples/07.texture/05.newWave.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/07.texture/05.newWave.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 110 90 876 486 10; +#X declare -lib Gem; #X text 653 313 Inlet 1: gemlist; #X obj 209 277 gemhead; #X floatatom 622 130 5 0 0 2 size - -; @@ -136,6 +137,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 502 402 pd gemwin; +#X obj 744 461 declare -lib Gem; #X connect 1 0 73 0; #X connect 2 0 57 1; #X connect 3 0 36 0; diff -Nru gem-0.94~pre1/examples/07.texture/06.ripple.pd gem-0.94/examples/07.texture/06.ripple.pd --- gem-0.94~pre1/examples/07.texture/06.ripple.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/07.texture/06.ripple.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 153 39 582 638 10; +#N canvas 153 61 582 638 10; +#X declare -lib Gem; #X obj 299 39 openpanel; #X msg 34 50 dimen 640 480; #X obj 174 115 gemhead; @@ -80,6 +81,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 185 pd gemwin; +#X obj 454 611 declare -lib Gem; #X connect 0 0 10 0; #X connect 1 0 32 0; #X connect 2 0 22 0; diff -Nru gem-0.94~pre1/examples/07.texture/07.feedback.pd gem-0.94/examples/07.texture/07.feedback.pd --- gem-0.94~pre1/examples/07.texture/07.feedback.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/07.texture/07.feedback.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 4 50 630 424 10; +#N canvas 6 61 630 424 10; +#X declare -lib Gem; #X msg 320 121 snap; #X obj 320 68 gemhead 15; #X obj 39 64 gemhead 10; @@ -71,6 +72,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 455 355 pd gemwin; +#X obj 524 11 declare -lib Gem; #X connect 0 0 10 0; #X connect 1 0 19 0; #X connect 2 0 3 0; diff -Nru gem-0.94~pre1/examples/07.texture/08.MotionBlur.pd gem-0.94/examples/07.texture/08.MotionBlur.pd --- gem-0.94~pre1/examples/07.texture/08.MotionBlur.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/07.texture/08.MotionBlur.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 13 0 1023 406 10; +#N canvas 13 61 1023 406 10; +#X declare -lib Gem; #X obj 33 260 world_light; #X msg 282 164 bang; #X obj 282 144 metro 500; @@ -108,6 +109,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 47 160 pd gemwin; +#X obj 914 11 declare -lib Gem; #X connect 1 0 19 0; #X connect 2 0 1 0; #X connect 3 0 2 0; diff -Nru gem-0.94~pre1/examples/07.texture/09.sharedTextures.pd gem-0.94/examples/07.texture/09.sharedTextures.pd --- gem-0.94~pre1/examples/07.texture/09.sharedTextures.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/07.texture/09.sharedTextures.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 180 41 1035 404 10; +#N canvas 180 61 1035 404 10; +#X declare -lib Gem; #X floatatom 370 259 0 0 0 0 - - -; #X obj 325 122 pix_image ../data/fractal.JPG; #X obj 325 155 pix_texture; @@ -62,6 +63,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 91 191 pd gemwin; +#X obj 914 11 declare -lib Gem; #X connect 0 0 3 1; #X connect 1 0 2 0; #X connect 2 0 6 0; diff -Nru gem-0.94~pre1/examples/07.texture/10.framebuffer.pd gem-0.94/examples/07.texture/10.framebuffer.pd --- gem-0.94~pre1/examples/07.texture/10.framebuffer.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/07.texture/10.framebuffer.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,90 +1,91 @@ -#N canvas 446 42 834 667 10; -#X obj 202 83 gemhead 20; -#X obj 491 166 gemhead; -#X floatatom 532 391 5 0 0 0 - - -; -#X floatatom 481 392 5 0 0 0 - - -; -#X obj 581 389 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +#N canvas 226 61 834 813 10; +#X declare -lib Gem; +#X obj 272 83 gemhead 20; +#X obj 561 166 gemhead; +#X floatatom 602 391 5 0 0 0 - - -; +#X floatatom 551 392 5 0 0 0 - - -; +#X obj 651 389 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0 256; -#X msg 286 97 dim 320 240; -#X msg 286 117 dim 256 256; -#X obj 278 634 rotateXYZ; -#X floatatom 334 617 5 0 0 0 - - -; -#X floatatom 346 636 5 0 0 0 - - -; -#X floatatom 295 617 5 0 0 0 - - -; -#X floatatom 299 443 5 0 0 0 - - -; -#X floatatom 348 443 5 0 0 0 - - -; -#X floatatom 250 443 5 0 0 0 - - -; -#X obj 278 333 separator; -#X obj -56 319 gemhead 1; -#X obj -56 339 world_light; -#X msg 286 137 dim 512 512; -#X floatatom 507 322 5 0 0 0 - - -; -#X floatatom 582 333 5 0 0 0 - - -; -#X msg 289 45 color 0 0 1 0; -#X msg 286 157 dim 1024 1024; -#X msg 289 69 color 0 0 0 0; -#X obj 203 507 rotateXYZ; -#X floatatom 226 490 5 0 0 0 - - -; -#X floatatom 269 490 5 0 0 0 - - -; -#X floatatom 318 496 5 0 0 0 - - -; -#X msg -21 72 color 0 0 0 0; -#X obj 278 554 t a b; -#X msg -33 51 color 0 1 1 0; -#X msg -12 121 lighting \$1; -#X obj -12 100 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X floatatom 554 433 5 0 0 0 - - -; -#X obj 202 302 t a a; -#X obj 202 355 color 1 1 1; -#X obj 203 413 pix_texture; -#X msg 406 94 mode \$1; -#X obj 406 67 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +#X msg 356 97 dim 320 240; +#X msg 356 117 dim 256 256; +#X obj 348 634 rotateXYZ; +#X floatatom 404 617 5 0 0 0 - - -; +#X floatatom 416 636 5 0 0 0 - - -; +#X floatatom 365 617 5 0 0 0 - - -; +#X floatatom 369 443 5 0 0 0 - - -; +#X floatatom 418 443 5 0 0 0 - - -; +#X floatatom 320 443 5 0 0 0 - - -; +#X obj 348 333 separator; +#X obj 14 319 gemhead 1; +#X obj 14 339 world_light; +#X msg 356 137 dim 512 512; +#X floatatom 577 322 5 0 0 0 - - -; +#X floatatom 652 333 5 0 0 0 - - -; +#X msg 359 45 color 0 0 1 0; +#X msg 356 157 dim 1024 1024; +#X msg 359 69 color 0 0 0 0; +#X obj 273 507 rotateXYZ; +#X floatatom 296 490 5 0 0 0 - - -; +#X floatatom 339 490 5 0 0 0 - - -; +#X floatatom 388 496 5 0 0 0 - - -; +#X msg 49 72 color 0 0 0 0; +#X obj 348 554 t a b; +#X msg 37 51 color 0 1 1 0; +#X msg 58 121 lighting \$1; +#X obj 58 100 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X floatatom 624 433 5 0 0 0 - - -; +#X obj 272 302 t a a; +#X obj 272 355 color 1 1 1; +#X obj 273 413 pix_texture; +#X msg 476 94 mode \$1; +#X obj 476 67 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; -#X obj 203 467 translateXYZ -0.5 -0.8 -1; -#X msg 229 374 open data/fractal.JPG; -#X floatatom 376 507 5 0 0 0 - - -; -#X msg 289 10 type FLOAT; -#X obj 460 131 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +#X obj 273 467 translateXYZ -0.5 -0.8 -1; +#X msg 299 374 open data/fractal.JPG; +#X floatatom 446 507 5 0 0 0 - - -; +#X msg 359 10 type FLOAT; +#X obj 530 131 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; -#X floatatom 342 281 5 0 0 0 - - -; -#X obj 203 527 sphere 0.4; -#X obj 491 357 rotateXYZ 28 0 200; -#X obj 491 431 square 2; -#X obj 491 410 translateXYZ 0 0 1.53; -#X obj 202 281 translateXYZ 0 0 -4; -#X obj 278 681 cube 0.57; -#X obj 278 527 translateXYZ 2 0 -1; -#X obj 202 135 color 0 1 0; -#X obj 179 195 cnv 15 400 60 empty empty empty 20 12 0 14 -233017 -66577 +#X floatatom 412 281 5 0 0 0 - - -; +#X obj 273 527 sphere 0.4; +#X obj 561 357 rotateXYZ 28 0 200; +#X obj 561 431 square 2; +#X obj 561 410 translateXYZ 0 0 1.53; +#X obj 272 281 translateXYZ 0 0 -4; +#X obj 348 681 cube 0.57; +#X obj 348 527 translateXYZ 2 0 -1; +#X obj 272 135 color 0 1 0; +#X obj 249 195 cnv 15 400 60 empty empty empty 20 12 0 14 -233017 -66577 0; -#X obj 202 200 gemframebuffer; -#X obj 491 233 pix_texture; -#X obj -56 410 gemhead; -#X obj -56 459 teapot 0.3; -#X obj -56 435 translateXYZ -3 3 0; -#X text -52 726 this example renders a scene (cube and sphere) into +#X obj 272 200 gemframebuffer; +#X obj 561 233 pix_texture; +#X obj 14 410 gemhead; +#X obj 14 459 teapot 0.3; +#X obj 14 435 translateXYZ -3 3 0; +#X text 18 726 this example renders a scene (cube and sphere) into a framebuffer \, which is then used as a texture onto a square. teapot and square live in a "meta"-world in relation to cube and sphere.; -#X obj 362 575 % 360; -#X obj 308 575 i; -#X obj 491 265 t a b; -#X obj 567 286 + 1; -#X obj 334 575 + 5; -#X obj 521 286 i 200; -#X obj 595 286 % 3600; -#X obj 582 313 / 10; -#X text 435 65 <-- click me to change between normalized(0) and rectangle(1) +#X obj 432 575 % 360; +#X obj 378 575 i; +#X obj 561 265 t a b; +#X obj 637 286 + 1; +#X obj 404 575 + 5; +#X obj 591 286 i 200; +#X obj 665 286 % 3600; +#X obj 652 313 / 10; +#X text 505 65 <-- click me to change between normalized(0) and rectangle(1) textures.; -#X text 399 717 you need framebuffer support on your gfx-card; -#X text 395 738 (and its driver!); -#X obj 202 394 pix_image ../data/fractal.JPG; +#X text 469 717 you need framebuffer support on your gfx-card; +#X text 465 738 (and its driver!); +#X obj 272 394 pix_image ../data/fractal.JPG; #N canvas 87 154 247 179 Gem.init 0; #X obj 118 46 loadbang; #X msg 118 81 reset; #X obj 118 113 outlet; #X connect 0 0 1 0; #X connect 1 0 2 0; -#X restore -3 160 pd Gem.init; +#X restore 67 160 pd Gem.init; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 -1 -1 0 1; @@ -124,7 +125,8 @@ #X connect 15 0 16 0; #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; -#X restore -33 177 pd gemwin; +#X restore 37 177 pd gemwin; +#X obj 704 11 declare -lib Gem; #X connect 0 0 51 0; #X connect 1 0 54 0; #X connect 2 0 47 2; diff -Nru gem-0.94~pre1/examples/07.texture/11.multiples_gemhead_in_a_framebuffer.pd gem-0.94/examples/07.texture/11.multiples_gemhead_in_a_framebuffer.pd --- gem-0.94~pre1/examples/07.texture/11.multiples_gemhead_in_a_framebuffer.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/07.texture/11.multiples_gemhead_in_a_framebuffer.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 39 70 764 536 10; +#X declare -lib Gem; #X obj 108 279 cnv 15 300 80 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 112 112 cnv 15 300 60 empty empty empty 20 12 0 14 -233017 -66577 @@ -46,7 +47,7 @@ #X restore 625 90 pd Gem.init; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 --1 -1 1 1; +-1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; @@ -87,6 +88,7 @@ #X msg 595 63 color \$1 \$1 \$1; #X obj 595 44 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 0.5; +#X obj 654 501 declare -lib Gem; #X connect 2 0 12 0; #X connect 3 0 13 0; #X connect 4 0 16 0; diff -Nru gem-0.94~pre1/examples/08.io/01.Mouse.pd gem-0.94/examples/08.io/01.Mouse.pd --- gem-0.94~pre1/examples/08.io/01.Mouse.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/08.io/01.Mouse.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 396 160 600 500 10; +#X declare -lib Gem; #X text 303 95 left button; #X obj 302 193 spigot; #X floatatom 391 324 0 0 0 0 - - -; @@ -27,7 +28,7 @@ #X restore 64 238 pd Gem.init; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 --1 -1 1 1; +-1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; @@ -66,6 +67,7 @@ #X coords 0 -1 1 1 85 40 1 100 100; #X restore 34 255 pd gemwin; #X obj 338 143 gemmouse 2 2; +#X obj 491 4 declare -lib Gem; #X connect 1 0 9 0; #X connect 2 0 8 2; #X connect 3 0 7 0; diff -Nru gem-0.94~pre1/examples/08.io/02.Tablet.pd gem-0.94/examples/08.io/02.Tablet.pd --- gem-0.94~pre1/examples/08.io/02.Tablet.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/08.io/02.Tablet.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,14 +1,15 @@ #N canvas 308 107 688 553 10; +#X declare -lib Gem; #X msg 197 266 bang; #X obj 375 326 spigot; -#X floatatom 448 437 0 0 0; +#X floatatom 448 437 0 0 0 0 - - -; #X obj 12 444 gemwin; #X msg 26 150 create; #X obj 197 299 gemhead; #X msg 38 179 destroy; #X msg 63 227 1; #X msg 70 251 0; -#X floatatom 375 438 0 0 0; +#X floatatom 375 438 0 0 0 0 - - -; #X obj 197 358 translateXYZ; #X obj 375 382 - 1; #X obj 375 410 * 4; @@ -75,6 +76,7 @@ #X connect 4 0 2 0; #X connect 5 0 2 0; #X restore 61 417 pd Gem.init; +#X obj 581 4 declare -lib Gem; #X connect 0 0 5 0; #X connect 1 0 0 0; #X connect 1 0 27 0; diff -Nru gem-0.94~pre1/examples/08.io/03.Orb.pd gem-0.94/examples/08.io/03.Orb.pd --- gem-0.94~pre1/examples/08.io/03.Orb.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/08.io/03.Orb.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,13 +1,14 @@ #N canvas 396 160 600 500 10; +#X declare -lib Gem; #X text 52 292 x pos; #X text 94 292 y pos; #X obj 234 146 gemorb 2; -#X floatatom 82 267 0 0 0; -#X floatatom 117 267 0 0 0; -#X floatatom 152 267 0 0 0; -#X floatatom 202 271 0 0 0; -#X floatatom 237 271 0 0 0; -#X floatatom 272 271 0 0 0; +#X floatatom 82 267 0 0 0 0 - - -; +#X floatatom 117 267 0 0 0 0 - - -; +#X floatatom 152 267 0 0 0 0 - - -; +#X floatatom 202 271 0 0 0 0 - - -; +#X floatatom 237 271 0 0 0 0 - - -; +#X floatatom 272 271 0 0 0 0 - - -; #X text 133 90 the outputs of gemorb are:; #X text 134 292 z pos; #X text 197 293 x rot; @@ -15,13 +16,13 @@ #X text 279 293 z rot; #X obj 91 230 unpack 0 0 0; #X obj 204 230 unpack 0 0 0; -#X floatatom 333 270 0 0 0; -#X floatatom 368 270 0 0 0; -#X floatatom 403 270 0 0 0; +#X floatatom 333 270 0 0 0 0 - - -; +#X floatatom 368 270 0 0 0 0 - - -; +#X floatatom 403 270 0 0 0 0 - - -; #X obj 385 231 unpack 0 0 0 0 0 0; -#X floatatom 448 271 0 0 0; -#X floatatom 483 271 0 0 0; -#X floatatom 518 271 0 0 0; +#X floatatom 448 271 0 0 0 0 - - -; +#X floatatom 483 271 0 0 0 0 - - -; +#X floatatom 518 271 0 0 0 0 - - -; #X text 133 111 position; #X text 224 110 rotation; #X text 317 109 button status; @@ -34,6 +35,7 @@ #X text 94 56 The argument should be the serial port number of the orb; #X text 255 17 gemorb; +#X obj 491 4 declare -lib Gem; #X connect 2 0 14 0; #X connect 2 1 15 0; #X connect 2 2 19 0; diff -Nru gem-0.94~pre1/examples/08.io/04.UseOrb.pd gem-0.94/examples/08.io/04.UseOrb.pd --- gem-0.94~pre1/examples/08.io/04.UseOrb.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/08.io/04.UseOrb.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 396 160 600 366 10; +#X declare -lib Gem; #X obj 41 324 gemwin; #X msg 70 111 create; #X obj 223 109 gemhead; @@ -60,6 +61,7 @@ #X connect 10 0 1 2; #X connect 12 0 0 0; #X restore 338 89 pd process; +#X obj 491 4 declare -lib Gem; #X connect 1 0 0 0; #X connect 2 0 12 0; #X connect 3 0 0 0; diff -Nru gem-0.94~pre1/examples/09.openGL/01.primQuad.pd gem-0.94/examples/09.openGL/01.primQuad.pd --- gem-0.94~pre1/examples/09.openGL/01.primQuad.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/09.openGL/01.primQuad.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 50 20 769 629 10; +#N canvas 50 61 769 629 10; +#X declare -lib Gem; #X obj 469 17 gemhead; #X obj 468 504 GEMglEnd; #X obj 469 233 GEMglColor4f 1 0 0 0; @@ -79,6 +80,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 74 187 pd gemwin; +#X obj 26 549 declare -lib Gem; #X connect 0 0 9 0; #X connect 1 0 17 0; #X connect 2 0 3 0; diff -Nru gem-0.94~pre1/examples/09.openGL/02.displayList.pd gem-0.94/examples/09.openGL/02.displayList.pd --- gem-0.94~pre1/examples/09.openGL/02.displayList.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/09.openGL/02.displayList.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 76 58 1137 553 10; +#N canvas 76 61 1137 553 10; +#X declare -lib Gem; #X obj 366 251 GEMglGenLists 1; #X obj 336 418 GEMglNewList; #X obj 147 432 GEMglCallList; @@ -148,6 +149,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 89 116 pd gemwin; +#X obj 1026 9 declare -lib Gem; #X connect 0 1 14 0; #X connect 1 0 10 0; #X connect 3 0 0 0; diff -Nru gem-0.94~pre1/examples/09.openGL/03.stencilBuffer.pd gem-0.94/examples/09.openGL/03.stencilBuffer.pd --- gem-0.94~pre1/examples/09.openGL/03.stencilBuffer.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/09.openGL/03.stencilBuffer.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,113 +1,115 @@ -#N canvas 431 30 849 872 10; -#X obj 39 330 GEMglEnable; -#X floatatom 125 332 5 0 0 0 - - -; -#X obj 111 282 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 111 305 GLdefine GL_STENCIL_TEST; -#X obj 129 280 loadbang; -#X obj 104 382 GLdefine GL_STENCIL_BUFFER_BIT; -#X obj 166 361 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X floatatom 119 407 5 0 0 0 - - -; -#X obj 104 359 loadbang; -#X obj 39 249 GEMglClearStencil 0; -#X obj 39 407 GEMglClear; -#X obj 39 33 gemhead 45; -#X obj 39 506 GEMglStencilFunc; -#X msg 146 480 1; -#X obj 75 436 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 74 459 GLdefine GL_ALWAYS; -#X obj 96 436 loadbang; -#X floatatom 100 480 5 0 0 0 - - -; -#X obj 39 586 GEMglStencilOp; -#X floatatom 156 581 5 0 0 0 - - -; -#X obj 70 486 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 70 552 GLdefine GL_REPLACE; -#X obj 95 530 loadbang; -#X obj 239 743 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 170 742 loadbang; -#X obj 39 810 GEMglClear; -#X floatatom 156 812 5 0 0 0 - - -; -#X obj 145 788 GLdefine GL_DEPTH_BUFFER_BIT; -#X obj 126 743 t b b; -#X obj 490 287 GEMglStencilFunc; -#X msg 597 263 1; -#X obj 525 220 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 546 218 loadbang; -#X floatatom 535 264 5 0 0 0 - - -; -#X obj 525 241 GLdefine GL_NOTEQUAL; -#X obj 490 396 color 1 0 0; -#X obj 490 659 GEMglStencilFunc; -#X msg 597 634 1; -#X obj 525 594 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 547 592 loadbang; -#X floatatom 536 638 5 0 0 0 - - -; -#X obj 490 709 rotateXYZ 0 0 45; -#X obj 525 615 GLdefine GL_EQUAL; -#X obj 490 685 color 1 1 0; -#X obj 126 766 GLdefine GL_COLOR_BUFFER_BIT; -#X obj 490 365 GEMglStencilOp; -#X floatatom 601 364 5 0 0 0 - - -; -#X obj 521 310 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 544 307 loadbang; -#X obj 521 331 GLdefine GL_KEEP; -#X floatatom 58 144 5 0 0 0 - - -; -#X floatatom 97 144 5 0 0 0 - - -; -#X obj 39 187 colorRGB 0 0 1; -#X obj 126 810 |; -#X floatatom 587 830 5 0 0 0 - - -; -#X obj 569 782 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 569 805 GLdefine GL_STENCIL_TEST; -#X obj 587 780 loadbang; -#X obj 490 830 GEMglDisable; -#X text 67 212 allow \, clear and configure stencil buffer; -#X obj 39 695 circle 1.5; -#X text 131 685 draw in all buffer; -#X text 104 840 clear color and depth buffer; -#X text 488 189 draw where the stencil buffer is not 1; -#X obj 490 423 square 3; -#X text 522 565 draw where the stencil buffer is 1; -#X obj 529 21 gemhead 10; -#X floatatom 562 41 5 0 0 0 - - -; -#X floatatom 602 41 5 0 0 0 - - -; -#X floatatom 642 41 5 0 0 0 - - -; -#X obj 529 87 world_light; -#X obj 529 62 rotateXYZ 0 0 0; -#X obj 39 167 rotateXYZ; -#X text 151 144 <- play with this.; -#X text 238 858 (c) Cyrille Henry 2006; -#X obj 39 56 t a b; -#X obj 74 78 i; -#X obj 122 56 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +#N canvas 431 61 849 900 10; +#X declare -lib Gem; +#X obj 39 337 GEMglEnable; +#X floatatom 125 339 5 0 0 0 - - -; +#X obj 111 289 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 111 312 GLdefine GL_STENCIL_TEST; +#X obj 129 287 loadbang; +#X obj 104 389 GLdefine GL_STENCIL_BUFFER_BIT; +#X obj 166 368 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X floatatom 119 414 5 0 0 0 - - -; +#X obj 104 366 loadbang; +#X obj 39 256 GEMglClearStencil 0; +#X obj 39 414 GEMglClear; +#X obj 39 40 gemhead 45; +#X obj 39 513 GEMglStencilFunc; +#X msg 146 487 1; +#X obj 75 443 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 74 466 GLdefine GL_ALWAYS; +#X obj 96 443 loadbang; +#X floatatom 100 487 5 0 0 0 - - -; +#X obj 39 593 GEMglStencilOp; +#X floatatom 156 588 5 0 0 0 - - -; +#X obj 70 493 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 70 559 GLdefine GL_REPLACE; +#X obj 95 537 loadbang; +#X obj 239 750 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 170 749 loadbang; +#X obj 39 817 GEMglClear; +#X floatatom 156 819 5 0 0 0 - - -; +#X obj 145 795 GLdefine GL_DEPTH_BUFFER_BIT; +#X obj 126 750 t b b; +#X obj 490 294 GEMglStencilFunc; +#X msg 597 270 1; +#X obj 525 227 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 546 225 loadbang; +#X floatatom 535 271 5 0 0 0 - - -; +#X obj 525 248 GLdefine GL_NOTEQUAL; +#X obj 490 403 color 1 0 0; +#X obj 490 666 GEMglStencilFunc; +#X msg 597 641 1; +#X obj 525 601 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 547 599 loadbang; +#X floatatom 536 645 5 0 0 0 - - -; +#X obj 490 716 rotateXYZ 0 0 45; +#X obj 525 622 GLdefine GL_EQUAL; +#X obj 490 692 color 1 1 0; +#X obj 126 773 GLdefine GL_COLOR_BUFFER_BIT; +#X obj 490 372 GEMglStencilOp; +#X floatatom 601 371 5 0 0 0 - - -; +#X obj 521 317 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 544 314 loadbang; +#X obj 521 338 GLdefine GL_KEEP; +#X floatatom 58 151 5 0 0 0 - - -; +#X floatatom 97 151 5 0 0 0 - - -; +#X obj 39 194 colorRGB 0 0 1; +#X obj 126 817 |; +#X floatatom 587 837 5 0 0 0 - - -; +#X obj 569 789 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 569 812 GLdefine GL_STENCIL_TEST; +#X obj 587 787 loadbang; +#X obj 490 837 GEMglDisable; +#X text 67 219 allow \, clear and configure stencil buffer; +#X obj 39 702 circle 1.5; +#X text 131 692 draw in all buffer; +#X text 104 847 clear color and depth buffer; +#X text 488 196 draw where the stencil buffer is not 1; +#X obj 490 430 square 3; +#X text 522 572 draw where the stencil buffer is 1; +#X obj 529 28 gemhead 10; +#X floatatom 562 48 5 0 0 0 - - -; +#X floatatom 602 48 5 0 0 0 - - -; +#X floatatom 642 48 5 0 0 0 - - -; +#X obj 529 94 world_light; +#X obj 529 69 rotateXYZ 0 0 0; +#X obj 39 174 rotateXYZ; +#X text 151 151 <- play with this.; +#X text 238 865 (c) Cyrille Henry 2006; +#X obj 39 63 t a b; +#X obj 74 85 i; +#X obj 122 63 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; -#X obj 103 78 + 0; -#X obj 74 123 t f f; -#X obj 74 100 spigot; -#X obj 104 673 teapot 1.5; -#X obj 39 657 spigot; -#X obj 104 654 spigot; -#X obj 79 610 loadbang; -#X obj 147 632 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +#X obj 103 85 + 0; +#X obj 74 130 t f f; +#X obj 74 107 spigot; +#X obj 104 680 teapot 1.5; +#X obj 39 664 spigot; +#X obj 104 661 spigot; +#X obj 79 617 loadbang; +#X obj 147 639 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; -#X obj 82 634 == 0; -#X msg 147 611 0; -#X obj 131 77 % 360; -#X obj 490 754 sphere 1.2 25; -#X obj 36 6 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; +#X obj 82 641 == 0; +#X msg 147 618 0; +#X obj 131 84 % 360; +#X obj 490 761 sphere 1.2 25; +#X obj 39 13 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; #N canvas 87 154 247 179 Gem.init 0; #X obj 118 46 loadbang; #X obj 118 113 outlet; #X msg 118 81 reset \, lighting 1; #X connect 0 0 2 0; #X connect 2 0 1 0; -#X restore 372 38 pd Gem.init; +#X restore 372 45 pd Gem.init; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 -1 -1 0 1; @@ -147,7 +149,8 @@ #X connect 15 0 16 0; #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; -#X restore 342 55 pd gemwin; +#X restore 342 62 pd gemwin; +#X obj 716 16 declare -lib Gem; #X connect 0 0 10 0; #X connect 2 0 3 0; #X connect 3 0 1 0; diff -Nru gem-0.94~pre1/examples/09.openGL/04.clearZ.pd gem-0.94/examples/09.openGL/04.clearZ.pd --- gem-0.94~pre1/examples/09.openGL/04.clearZ.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/09.openGL/04.clearZ.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 710 401 10; +#N canvas 6 61 710 401 10; +#X declare -lib Gem; #X obj 111 162 loadbang; #X obj 44 209 GEMglClear; #X obj 111 186 GLdefine GL_DEPTH_BUFFER_BIT; @@ -16,6 +17,7 @@ buffer test \, but not quite the same...; #X text 176 213 <- clear Depth buffer \, so that you can draw anything even if it is behind something else; +#X obj 596 9 declare -lib Gem; #X connect 0 0 2 0; #X connect 1 0 5 0; #X connect 2 0 1 1; diff -Nru gem-0.94~pre1/examples/09.openGL/05.load_identity_matrix.pd gem-0.94/examples/09.openGL/05.load_identity_matrix.pd --- gem-0.94~pre1/examples/09.openGL/05.load_identity_matrix.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/09.openGL/05.load_identity_matrix.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 784 537 10; +#N canvas 6 61 650 591 10; +#X declare -lib Gem; #X obj 64 47 gemhead; #X obj 96 94 gemlist_info; #X floatatom 177 138 5 0 0 0 - - -; @@ -42,6 +43,7 @@ #X text 211 457 <- move the object regarding the camera position (this is normally done automatically by the gemwin \, but since we have reset the transformation matrix we have to do it ourselves...); +#X obj 506 9 declare -lib Gem; #X connect 0 0 7 0; #X connect 1 4 5 0; #X connect 5 0 2 0; diff -Nru gem-0.94~pre1/examples/10.glsl/01.simple_texture.pd gem-0.94/examples/10.glsl/01.simple_texture.pd --- gem-0.94~pre1/examples/10.glsl/01.simple_texture.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/01.simple_texture.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 486 82 722 633 10; +#X declare -lib Gem; #X obj 76 22 gemhead; #X obj 76 367 glsl_program; #X obj 169 329 print linking; @@ -13,7 +14,7 @@ #X msg 106 154 open texture.frag; #X obj 76 197 glsl_fragment; #X text 215 459 <- load texture; -#X obj 106 535 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +#X obj 106 535 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 76 489 pix_image img1.jpg; #X msg 103 460 open img2.jpg; @@ -41,7 +42,7 @@ #X restore 566 142 pd Gem.init; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 --1 -1 1 1; +-1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; @@ -88,6 +89,7 @@ #X floatatom 192 372 0 0 0 0 - - -; #X msg 151 308 link \$1; #X obj 151 259 change; +#X obj 604 13 declare -lib Gem; #X connect 0 0 11 0; #X connect 1 0 3 0; #X connect 1 1 38 0; diff -Nru gem-0.94~pre1/examples/10.glsl/02.primitive_distortion.pd gem-0.94/examples/10.glsl/02.primitive_distortion.pd --- gem-0.94~pre1/examples/10.glsl/02.primitive_distortion.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/02.primitive_distortion.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,17 +1,18 @@ -#N canvas 228 49 587 690 10; +#N canvas 228 61 587 690 10; +#X declare -lib Gem; #X obj 74 19 gemhead; #X msg 29 100 print; #X obj 74 362 glsl_program; #X obj 215 141 change; #X msg 98 333 print; -#X floatatom 215 164 2 0 0 0 ID - -, f 2; +#X floatatom 215 164 2 0 0 0 ID - -; #X obj 164 312 print linking; #X obj 74 122 glsl_vertex; #X obj 74 551 pix_texture; #X obj 74 44 alpha; #X obj 101 497 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; -#X floatatom 292 302 5 0 0 0 - - -, f 5; +#X floatatom 292 302 5 0 0 0 - - -; #X msg 101 475 0; #X msg 292 323 K \$1; #X obj 74 594 sphere 2 30; @@ -92,7 +93,7 @@ #X msg 101 517 rectangle \$1; #X obj 74 180 glsl_fragment; #X obj 162 202 change; -#X floatatom 162 225 2 0 0 0 ID - -, f 2; +#X floatatom 162 225 2 0 0 0 ID - -; #X obj 162 244 pack 0 0; #X msg 162 291 link \$1 \$2; #X msg 198 100 open \$1.frag; @@ -100,6 +101,7 @@ #X obj 166 63 t s s; #X msg 88 100 open \$1.vert; #X text 423 651 ch 2007; +#X obj 389 43 declare -lib Gem; #X connect 0 0 9 0; #X connect 1 0 7 0; #X connect 2 0 22 0; diff -Nru gem-0.94~pre1/examples/10.glsl/03.texture_distortion.pd gem-0.94/examples/10.glsl/03.texture_distortion.pd --- gem-0.94~pre1/examples/10.glsl/03.texture_distortion.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/03.texture_distortion.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 10 10 552 667 10; +#N canvas 10 61 552 667 10; +#X declare -lib Gem; #X text 381 660 ch 20007; #X obj 74 -1 gemhead; #X msg 29 80 print; @@ -64,7 +65,7 @@ #X restore 384 41 pd Gem.init; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 --1 -1 1 1; +-1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; @@ -103,6 +104,7 @@ #X coords 0 -1 1 1 85 40 1 100 100; #X restore 354 58 pd gemwin; #X msg 124 542 rectangle \$1; +#X obj 384 23 declare -lib Gem; #X connect 1 0 18 0; #X connect 2 0 15 0; #X connect 3 0 33 0; diff -Nru gem-0.94~pre1/examples/10.glsl/04.game_of_life.pd gem-0.94/examples/10.glsl/04.game_of_life.pd --- gem-0.94~pre1/examples/10.glsl/04.game_of_life.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/04.game_of_life.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 10 10 599 681 10; +#N canvas 10 61 599 681 10; +#X declare -lib Gem; #X obj 316 488 pix_snap2tex; #X msg 356 461 0 0; #X msg 402 460 500 500; @@ -92,6 +93,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 52 117 pd gemwin; +#X obj 484 13 declare -lib Gem; #X connect 0 0 4 0; #X connect 1 0 0 1; #X connect 2 0 0 2; diff -Nru gem-0.94~pre1/examples/10.glsl/05.multitexture_bis.pd gem-0.94/examples/10.glsl/05.multitexture_bis.pd --- gem-0.94~pre1/examples/10.glsl/05.multitexture_bis.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/05.multitexture_bis.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 207 200 1100 637 10; +#X declare -lib Gem; #X obj 76 5 gemhead; #X obj 75 429 glsl_program; #X obj 149 268 pack 0 0; @@ -76,7 +77,7 @@ #X restore 395 47 pd Gem.init; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 --1 -1 1 1; +-1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; @@ -133,6 +134,7 @@ #X msg 471 402 rectangle 0; #X msg 462 313 open img1.jpg; #X obj 443 342 pix_image img1.jpg; +#X obj 983 7 declare -lib Gem; #X connect 0 0 11 0; #X connect 1 0 48 0; #X connect 1 1 30 0; diff -Nru gem-0.94~pre1/examples/10.glsl/05.multitexture.pd gem-0.94/examples/10.glsl/05.multitexture.pd --- gem-0.94~pre1/examples/10.glsl/05.multitexture.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/05.multitexture.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 10 10 930 667 10; +#N canvas 10 61 930 667 10; +#X declare -lib Gem; #X obj 76 5 gemhead; #X obj 75 429 glsl_program; #X obj 149 268 pack 0 0; @@ -91,7 +92,7 @@ #X restore 395 47 pd Gem.init; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 --1 -1 1 1; +-1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; @@ -135,6 +136,7 @@ #X msg 220 591 texunit 2 \, rectangle 0; #X msg 491 409 texunit 0 \, rectangle 0; #X msg 716 409 texunit 1 \, rectangle 0; +#X obj 793 7 declare -lib Gem; #X connect 0 0 11 0; #X connect 1 0 56 0; #X connect 1 1 39 0; diff -Nru gem-0.94~pre1/examples/10.glsl/06.rectangle_multitexture.pd gem-0.94/examples/10.glsl/06.rectangle_multitexture.pd --- gem-0.94~pre1/examples/10.glsl/06.rectangle_multitexture.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/06.rectangle_multitexture.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 511 97 648 675 10; +#X declare -lib Gem; #X obj 279 76 gemhead; #X obj 295 208 loadbang; #X obj 279 251 pix_texture; @@ -140,6 +141,7 @@ #X text 292 186 images have different sizes; #X msg 139 507 mix_factor \$1; #X obj 37 646 square 4; +#X obj 543 647 declare -lib Gem; #X connect 0 0 61 0; #X connect 1 0 3 0; #X connect 3 0 2 0; diff -Nru gem-0.94~pre1/examples/10.glsl/07.framebuffer_and_shader.pd gem-0.94/examples/10.glsl/07.framebuffer_and_shader.pd --- gem-0.94~pre1/examples/10.glsl/07.framebuffer_and_shader.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/07.framebuffer_and_shader.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 1 25 1126 659 10; +#N canvas 30 77 1126 659 10; +#X declare -lib Gem; #X obj 9 470 translateXYZ 0 0 -4; #X obj 9 234 ortho; #X floatatom 83 538 5 0 0 0 - - -; @@ -152,7 +153,7 @@ -1 -1; #X obj 454 308 loadbang; #X obj 786 442 loadbang; -#N canvas 693 153 804 667 _glsl 0; +#N canvas 93 153 804 667 _glsl 0; #X obj 80 426 glsl_program; #X obj 261 238 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; @@ -255,7 +256,7 @@ #X connect 11 0 0 0; #X restore 402 542 pd gouttes; #X msg 244 284 quality 0; -#X obj 774 541 rectangle -4 -4; +#X obj 774 541 rectangle 4 4; #X obj 9 155 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; #X obj 220 180 delay 1000; @@ -298,7 +299,7 @@ #X restore 760 47 pd Gem.init; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 --1 -1 1 1; +-1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; @@ -343,6 +344,7 @@ #X msg 867 255 K \$1 \, texture1 2 \, texture2 3; #X text 880 276 texture1==base; #X text 882 294 texture2==deformation; +#X obj 1004 13 declare -lib Gem; #X connect 0 0 5 0; #X connect 1 0 18 0; #X connect 3 0 2 0; diff -Nru gem-0.94~pre1/examples/10.glsl/08.multi_pass_rendering.pd gem-0.94/examples/10.glsl/08.multi_pass_rendering.pd --- gem-0.94~pre1/examples/10.glsl/08.multi_pass_rendering.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/08.multi_pass_rendering.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 208 184 980 477 10; +#X declare -lib Gem; #X obj 42 315 square 4; #X obj 42 199 translateXYZ 0 0 -4; #X obj 671 399 pix_texture; @@ -29,7 +30,7 @@ #X connect 3 0 2 0; #X restore 669 120 pd init; #X obj 353 199 translateXYZ 0 0 -4; -#N canvas 700 0 407 295 init 0; +#N canvas 70 0 407 295 init 0; #X obj 106 175 outlet; #X obj 106 68 loadbang; #X msg 106 118 type FLOAT \, dimen 1024 1024 \, rectangle 0; @@ -150,7 +151,7 @@ #X connect 22 0 16 0; #X connect 23 0 18 0; #X restore 353 78 pd shader2; -#N canvas 660 91 589 635 shader3 0; +#N canvas 60 91 589 635 shader3 0; #X obj 94 500 glsl_program; #X obj 94 340 glsl_fragment; #X obj 94 160 glsl_vertex; @@ -246,7 +247,7 @@ #X restore 99 394 pd Gem.init; #N canvas 340 107 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 --1 -1 1 1; +-1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; @@ -292,6 +293,7 @@ #X obj 353 291 pix_texture; #X msg 666 209 rectangle 0; #X msg 691 378 rectangle 0; +#X obj 99 376 declare -lib Gem; #X connect 1 0 13 0; #X connect 2 0 3 0; #X connect 4 0 52 0; diff -Nru gem-0.94~pre1/examples/10.glsl/09.vertex_texture_fetching.pd gem-0.94/examples/10.glsl/09.vertex_texture_fetching.pd --- gem-0.94~pre1/examples/10.glsl/09.vertex_texture_fetching.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/09.vertex_texture_fetching.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 239 0 785 526 10; +#N canvas 239 61 690 677 10; +#X declare -lib Gem; #X obj 504 69 gemhead; #X obj 576 346 pack 0 0; #X obj 597 326 t b f; @@ -23,7 +24,7 @@ #X obj 49 231 loadbang; #X obj 44 419 loadbang; #X msg 520 456 quality 0; -#N canvas 703 231 450 300 load_glsl 0; +#N canvas 70 231 450 300 load_glsl 0; #X obj 51 22 gemhead; #X obj 51 98 outlet; #X obj 51 50 route gem_state; @@ -102,6 +103,7 @@ 1024; #X msg 44 439 rectangle 0 \, quality 0; #X obj 520 437 loadbang; +#X obj 563 7 declare -lib Gem; #X connect 0 0 15 0; #X connect 1 0 3 0; #X connect 2 0 1 0; diff -Nru gem-0.94~pre1/examples/10.glsl/10.GPGPU_Physical_model.pd gem-0.94/examples/10.glsl/10.GPGPU_Physical_model.pd --- gem-0.94~pre1/examples/10.glsl/10.GPGPU_Physical_model.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/10.GPGPU_Physical_model.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N struct 1002-xy-pad-knob-1 float x0 float y0 float id; -#N canvas 875 218 764 482 10; +#N struct 1071-xy-pad-knob-1 float x0 float y0 float id; +#N canvas 75 218 764 482 10; +#X declare -lib Gem; #X obj 27 380 hradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144 -1 -1 0; #X floatatom 185 212 5 0 0 0 - - -; @@ -90,7 +91,7 @@ #X obj 506 610 square 4; #X obj 261 477 translateXYZ 0 0 -4; #X obj 290 368 loadbang; -#N canvas 1062 27 528 709 shader 0; +#N canvas 62 27 528 709 shader 0; #X obj 32 384 glsl_program; #X obj 32 36 inlet; #X obj 32 453 outlet; @@ -633,7 +634,7 @@ -1; #X obj 146 134 t b; #X msg 146 155 texture_mass 1; -#N canvas 668 405 301 465 shader 0; +#N canvas 68 405 301 465 shader 0; #X obj 110 298 pack 0 0; #X obj 131 278 t b f; #X msg 110 321 link \$1 \$2; @@ -647,7 +648,7 @@ #X obj 110 135 change; #X obj 131 233 change; #X obj 38 371 glsl_program; -#N canvas 703 231 450 300 load_glsl 0; +#N canvas 70 231 450 300 load_glsl 0; #X obj 51 22 gemhead; #X obj 51 98 outlet; #X obj 51 50 route gem_state; @@ -779,7 +780,7 @@ #X text 12 6 "Potential Flag" \, by Samuel Bianchini; #X floatatom 606 304 5 0 0 0 - - -; #X obj 606 324 * 10; -#N canvas 830 53 450 300 Gem.init 0; +#N canvas 30 53 450 300 Gem.init 0; #X obj 26 3 loadbang; #X msg 26 26 perspec -1 1 -1 1 10 100; #X obj 26 124 t a; @@ -796,7 +797,7 @@ #X restore 66 188 pd Gem.init; #N canvas 341 104 682 322 gemwin 0; #X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 --1 -1 1 1; +-1 -1 0 1; #X obj 102 161 r \$0-gemstart; #X obj 102 182 select 1 0; #X msg 102 214 create \, 1; @@ -951,7 +952,7 @@ #X restore 27 342 pd shader_normal ______________; #X obj 6 304 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; -#N canvas 1468 153 767 700 \$0-pad 0; +#N canvas 68 153 767 700 \$0-pad 0; #X msg 158 309 clear; #N canvas 6 50 590 367 clear-all 0; #X obj 89 46 inlet; @@ -1060,7 +1061,7 @@ #X msg 72 233 900; #X obj 162 646 outlet; #X text 486 42 based on: xy-pad; -#N canvas 1444 366 450 300 xy2rphi 0; +#N canvas 44 366 450 300 xy2rphi 0; #X obj 46 35 inlet x y; #X obj 46 272 outlet r; #X obj 136 266 outlet phi; @@ -1113,7 +1114,7 @@ #X obj 304 74 cnv 10 12 12 empty empty empty 20 12 0 14 -99865 -66577 0; #N canvas 493 264 450 300 \$0-work 0; -#X scalar 1002-xy-pad-knob-1 71.2205 45 900 \;; +#X scalar 1071-xy-pad-knob-1 45 45 900 \;; #X coords 0 100 100 0 100 100 1; #X restore 260 30 pd \$0-work; #X obj 451 532 wrap; @@ -1184,7 +1185,7 @@ #X coords 0 -1 1 1 100 100 2 260 30; #X restore 445 290 pd \$0-pad; #X obj 445 151 vsl 15 128 0 1 0 0 empty \$0-force force 0 -9 0 10 -262144 --1 -1 7400 1; +-1 -1 0 1; #X obj 538 152 vsl 15 128 0 1 0 0 empty \$0-direction direction 0 -9 0 10 -262144 -1 -1 0 1; #N canvas 424 571 337 368 wind-control. 0; @@ -1232,6 +1233,7 @@ on a CPU) (My GPU is old \, this patch performs 10 to 50 times faster on a good GPU); #X obj 606 346 s qqt_noise; +#X obj 654 13 declare -lib Gem; #X connect 0 0 5 0; #X connect 2 0 1 0; #X connect 9 0 10 0; diff -Nru gem-0.94~pre1/examples/10.glsl/11.geometry.pd gem-0.94/examples/10.glsl/11.geometry.pd --- gem-0.94~pre1/examples/10.glsl/11.geometry.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/11.geometry.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 197 25 552 632 10; +#N canvas 197 61 552 632 10; +#X declare -lib Gem; #X floatatom 132 447 9 0 0 0 ID - -; #X floatatom 132 279 9 0 0 0 ID - -; #X obj 150 506 print linking; @@ -14,7 +15,6 @@ #X floatatom 164 531 5 0 0 0 - - -; #X floatatom 209 532 5 0 0 0 - - -; #X obj 44 512 glsl_program; -#X msg 182 200 -1; #X obj 182 156 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 132 258 change; @@ -25,7 +25,6 @@ #X floatatom 128 174 5 0 0 0 - - -; #X obj 44 177 depth 1; #X obj 44 576 circle; -#X obj 182 176 t b b; #X text 184 7 geometry shader; #X text 48 28 The geometry shader is useful to create new geometry ; @@ -85,6 +84,9 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 336 264 pd gemwin; +#X msg 233 206 set -1; +#X obj 182 176 t b b b b; +#X obj 444 13 declare -lib Gem; #X connect 0 0 3 0; #X connect 1 0 3 2; #X connect 3 0 6 0; @@ -93,31 +95,31 @@ #X connect 6 0 2 0; #X connect 6 0 14 0; #X connect 7 0 8 0; -#X connect 7 1 18 0; +#X connect 7 1 17 0; #X connect 8 0 14 0; -#X connect 8 1 19 0; +#X connect 8 1 18 0; #X connect 9 0 7 0; -#X connect 9 1 17 0; -#X connect 10 0 23 0; -#X connect 11 0 20 1; -#X connect 12 0 20 2; -#X connect 13 0 20 3; -#X connect 14 0 20 0; -#X connect 15 0 19 0; -#X connect 16 0 25 0; -#X connect 17 0 1 0; -#X connect 18 0 4 0; -#X connect 19 0 0 0; -#X connect 20 0 24 0; -#X connect 21 0 9 0; -#X connect 22 0 21 2; -#X connect 23 0 21 0; -#X connect 25 0 15 0; -#X connect 25 1 32 0; -#X connect 25 1 30 0; -#X connect 25 1 31 0; -#X connect 30 0 9 0; -#X connect 31 0 7 0; -#X connect 32 0 8 0; -#X connect 33 0 16 0; -#X connect 35 0 36 0; +#X connect 9 1 16 0; +#X connect 10 0 22 0; +#X connect 11 0 19 1; +#X connect 12 0 19 2; +#X connect 13 0 19 3; +#X connect 14 0 19 0; +#X connect 15 0 36 0; +#X connect 16 0 1 0; +#X connect 17 0 4 0; +#X connect 18 0 0 0; +#X connect 19 0 23 0; +#X connect 20 0 9 0; +#X connect 21 0 20 2; +#X connect 22 0 20 0; +#X connect 28 0 9 0; +#X connect 29 0 7 0; +#X connect 30 0 8 0; +#X connect 31 0 15 0; +#X connect 33 0 34 0; +#X connect 35 0 18 0; +#X connect 36 0 30 0; +#X connect 36 1 28 0; +#X connect 36 2 29 0; +#X connect 36 3 35 0; diff -Nru gem-0.94~pre1/examples/10.glsl/12.tri2fan.pd gem-0.94/examples/10.glsl/12.tri2fan.pd --- gem-0.94~pre1/examples/10.glsl/12.tri2fan.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/12.tri2fan.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 1775 56 785 745 10; +#N canvas 17 61 785 745 10; +#X declare -lib Gem; #X floatatom 286 440 9 0 0 0 ID - -; #X floatatom 249 264 9 0 0 0 ID - -; #X obj 296 500 print linking; @@ -12,7 +13,7 @@ #X floatatom 289 579 5 0 0 0 - - -; #X obj 161 526 glsl_program; #X obj 42 117 t b b b b; -#X msg 42 147 -1; +#X msg 286 157 -1; #X obj 42 98 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 249 242 change; @@ -39,7 +40,7 @@ #X msg 460 180 perspec -0.1 0.1 -0.1 0.1 1 110; #X obj 422 229 gemwin; #X obj 460 159 loadbang; -#N canvas 0 0 877 520 light 0; +#N canvas 5 51 877 520 light 0; #X obj 225 45 gemhead 10; #X floatatom 258 78 5 0 0 0 - - -; #X floatatom 299 77 5 0 0 0 - - -; @@ -82,8 +83,8 @@ #X restore 421 253 pd light; #X obj 161 595 rotateXYZ -55 20 0; #X floatatom 298 537 5 0 0 0 - - -; -#X text 235 13 replace triangle with 3 triangles the orientations of which -depend on the normal of the original primitive; +#X text 235 13 replace triangle with 3 triangles the orientations of +which depend on the normal of the original primitive; #X obj 161 554 scaleXYZ 0.2 0.2 0.2; #X msg 172 129 auto 1; #X obj 172 108 loadbang; @@ -96,6 +97,7 @@ #X obj 552 635 pack f f; #X obj 520 611 t f f; #X msg 552 655 force \$1 \$2 0.3; +#X obj 674 13 declare -lib Gem; #X connect 0 0 3 0; #X connect 1 0 3 2; #X connect 3 0 6 0; @@ -108,10 +110,10 @@ #X connect 9 0 38 2; #X connect 10 0 38 3; #X connect 11 0 41 0; -#X connect 12 0 13 0; -#X connect 12 1 46 0; -#X connect 12 2 45 0; -#X connect 12 3 44 0; +#X connect 12 0 46 0; +#X connect 12 1 45 0; +#X connect 12 2 44 0; +#X connect 12 3 13 0; #X connect 13 0 17 0; #X connect 14 0 12 0; #X connect 15 0 1 0; diff -Nru gem-0.94~pre1/examples/10.glsl/13.panoramique.pd gem-0.94/examples/10.glsl/13.panoramique.pd --- gem-0.94~pre1/examples/10.glsl/13.panoramique.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/13.panoramique.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,10 +1,11 @@ -#N canvas 189 90 1107 660 10; -#X msg 17 91 create \, 1; -#X msg 30 114 0 \, destroy; -#X obj 160 405 pix_texture; -#X obj 169 165 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +#N canvas 189 90 1107 668 10; +#X declare -lib Gem; +#X msg 17 131 create \, 1; +#X msg 30 154 0 \, destroy; +#X obj 160 445 pix_texture; +#X obj 169 205 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; -#N canvas 1338 29 792 790 glsl 0; +#N canvas 38 51 792 790 glsl 0; #X obj 78 339 glsl_vertex; #X msg 32 338 print; #X obj 78 626 glsl_program; @@ -65,23 +66,23 @@ #X connect 24 0 29 0; #X connect 25 0 24 0; #X connect 26 0 21 0; -#X connect 27 0 26 0; -#X connect 27 1 10 0; -#X connect 27 2 28 0; +#X connect 27 0 10 0; +#X connect 27 1 28 0; +#X connect 27 2 26 0; #X connect 28 0 0 0; #X connect 29 0 9 0; -#X restore 160 182 pd glsl; -#X obj 175 245 loadbang; -#X obj 160 288 pix_image; -#X msg 174 379 rectangle 1; -#X obj 174 358 loadbang; -#X obj 160 317 pix_info 0 0 0; -#X msg 238 148 sizeX \$1; -#X msg 253 169 sizeY \$1; -#X obj 353 406 pix_texture; -#X obj 362 166 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +#X restore 160 222 pd glsl; +#X obj 175 285 loadbang; +#X obj 160 328 pix_image; +#X msg 174 419 rectangle 1; +#X obj 174 398 loadbang; +#X obj 160 357 pix_info 0 0 0; +#X msg 238 188 sizeX \$1; +#X msg 253 209 sizeY \$1; +#X obj 353 446 pix_texture; +#X obj 362 206 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; -#N canvas 1338 29 792 790 glsl 0; +#N canvas 38 51 792 790 glsl 0; #X obj 78 339 glsl_vertex; #X msg 32 338 print; #X obj 78 626 glsl_program; @@ -142,23 +143,23 @@ #X connect 24 0 29 0; #X connect 25 0 24 0; #X connect 26 0 21 0; -#X connect 27 0 26 0; -#X connect 27 1 10 0; -#X connect 27 2 28 0; +#X connect 27 0 10 0; +#X connect 27 1 28 0; +#X connect 27 2 26 0; #X connect 28 0 0 0; #X connect 29 0 9 0; -#X restore 353 183 pd glsl; -#X obj 368 246 loadbang; -#X obj 353 289 pix_image; -#X msg 367 378 rectangle 1; -#X obj 367 359 loadbang; -#X obj 353 318 pix_info 0 0 0; -#X msg 431 144 sizeX \$1; -#X msg 446 170 sizeY \$1; -#X obj 552 407 pix_texture; -#X obj 561 167 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +#X restore 353 223 pd glsl; +#X obj 368 286 loadbang; +#X obj 353 329 pix_image; +#X msg 367 418 rectangle 1; +#X obj 367 399 loadbang; +#X obj 353 358 pix_info 0 0 0; +#X msg 431 184 sizeX \$1; +#X msg 446 210 sizeY \$1; +#X obj 552 447 pix_texture; +#X obj 561 207 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; -#N canvas 1338 29 792 790 glsl 0; +#N canvas 38 51 792 790 glsl 0; #X obj 78 339 glsl_vertex; #X msg 32 338 print; #X obj 78 626 glsl_program; @@ -219,26 +220,26 @@ #X connect 24 0 29 0; #X connect 25 0 24 0; #X connect 26 0 21 0; -#X connect 27 0 26 0; -#X connect 27 1 10 0; -#X connect 27 2 28 0; +#X connect 27 0 10 0; +#X connect 27 1 28 0; +#X connect 27 2 26 0; #X connect 28 0 0 0; #X connect 29 0 9 0; -#X restore 552 184 pd glsl; -#X obj 567 247 loadbang; -#X obj 552 290 pix_image; -#X msg 566 379 rectangle 1; -#X obj 566 360 loadbang; -#X obj 552 319 pix_info 0 0 0; -#X msg 614 148 sizeX \$1; -#X msg 633 166 sizeY \$1; -#X obj 160 427 translateXYZ -3 0 0; -#X obj 352 426 translateXYZ -1 0 0; -#X obj 551 427 translateXYZ 1 0 0; -#X obj 747 408 pix_texture; -#X obj 756 168 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +#X restore 552 224 pd glsl; +#X obj 567 287 loadbang; +#X obj 552 330 pix_image; +#X msg 566 419 rectangle 1; +#X obj 566 400 loadbang; +#X obj 552 359 pix_info 0 0 0; +#X msg 614 188 sizeX \$1; +#X msg 633 206 sizeY \$1; +#X obj 160 467 translateXYZ -3 0 0; +#X obj 352 466 translateXYZ -1 0 0; +#X obj 551 467 translateXYZ 1 0 0; +#X obj 747 448 pix_texture; +#X obj 756 208 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; -#N canvas 1338 29 792 790 glsl 0; +#N canvas 38 51 792 790 glsl 0; #X obj 78 339 glsl_vertex; #X msg 32 338 print; #X obj 78 626 glsl_program; @@ -299,111 +300,112 @@ #X connect 24 0 29 0; #X connect 25 0 24 0; #X connect 26 0 21 0; -#X connect 27 0 26 0; -#X connect 27 1 10 0; -#X connect 27 2 28 0; +#X connect 27 0 10 0; +#X connect 27 1 28 0; +#X connect 27 2 26 0; #X connect 28 0 0 0; #X connect 29 0 9 0; -#X restore 747 185 pd glsl; -#X obj 762 248 loadbang; -#X obj 747 291 pix_image; -#X msg 761 380 rectangle 1; -#X obj 761 361 loadbang; -#X obj 747 320 pix_info 0 0 0; -#X msg 825 146 sizeX \$1; -#X msg 840 172 sizeY \$1; -#X obj 746 428 translateXYZ 3 0 0; -#X floatatom 199 68 5 0 0 0 - - -; -#X msg 199 87 dZ \$1; -#X obj 17 430 s shaders; -#X obj 206 205 s init_shader; -#X obj 399 204 s init_shader; -#X obj 600 204 s init_shader; -#X obj 794 206 s init_shader; -#X obj 399 124 r shaders; -#X obj 598 126 r shaders; -#X obj 793 127 r shaders; -#X obj 160 506 rectangle 1 0.75; -#X obj 352 507 rectangle 1 0.75; -#X obj 551 508 rectangle 1 0.75; -#X obj 746 509 rectangle 1 0.75; -#X obj 160 463 translateXYZ 0 0 0; -#X obj 201 446 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +#X restore 747 225 pd glsl; +#X obj 762 288 loadbang; +#X obj 747 331 pix_image; +#X msg 761 420 rectangle 1; +#X obj 761 401 loadbang; +#X obj 747 360 pix_info 0 0 0; +#X msg 825 186 sizeX \$1; +#X msg 840 212 sizeY \$1; +#X obj 746 468 translateXYZ 3 0 0; +#X floatatom 199 108 5 0 0 0 - - -; +#X msg 199 127 dZ \$1; +#X obj 17 470 s shaders; +#X obj 206 245 s init_shader; +#X obj 399 244 s init_shader; +#X obj 600 244 s init_shader; +#X obj 794 246 s init_shader; +#X obj 399 164 r shaders; +#X obj 598 166 r shaders; +#X obj 793 167 r shaders; +#X obj 160 546 rectangle 1 0.75; +#X obj 352 547 rectangle 1 0.75; +#X obj 551 548 rectangle 1 0.75; +#X obj 746 549 rectangle 1 0.75; +#X obj 160 503 translateXYZ 0 0 0; +#X obj 201 486 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 -1 -1 0.12 256; -#X obj 259 446 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +#X obj 259 486 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 -1 -1 -0.06 256; -#X obj 352 465 translateXYZ 0 0 0; -#X obj 393 448 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +#X obj 352 505 translateXYZ 0 0 0; +#X obj 393 488 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 -1 -1 0 256; -#X obj 451 448 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +#X obj 451 488 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 -1 -1 0 256; -#X obj 551 466 translateXYZ 0 0 0; -#X obj 592 449 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +#X obj 551 506 translateXYZ 0 0 0; +#X obj 592 489 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 -1 -1 -0.11 256; -#X obj 650 449 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +#X obj 650 489 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 -1 -1 -0.03 256; -#X obj 746 465 translateXYZ 0 0 0; -#X obj 787 448 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +#X obj 746 505 translateXYZ 0 0 0; +#X obj 787 488 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 -1 -1 -0.18 256; -#X obj 845 448 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +#X obj 845 488 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 -1 -1 -0.05 256; -#X obj 160 -30 gemhead 10; -#X obj 353 -29 gemhead 20; -#X obj 552 -28 gemhead 30; -#X obj 747 -27 gemhead 40; -#X obj 160 104 alpha; -#X obj 353 103 alpha; -#X obj 552 99 alpha; -#X obj 747 102 alpha; -#X msg 256 113 ShadeL \$1; -#X obj 199 25 r init_shader; -#X obj 256 92 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +#X obj 160 10 gemhead 10; +#X obj 353 11 gemhead 20; +#X obj 552 12 gemhead 30; +#X obj 747 13 gemhead 40; +#X obj 160 144 alpha; +#X obj 353 143 alpha; +#X obj 552 139 alpha; +#X obj 747 142 alpha; +#X msg 256 153 ShadeL \$1; +#X obj 199 65 r init_shader; +#X obj 256 132 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 -1 -1 0 256; -#X msg 447 93 ShadeL \$1; -#X obj 447 72 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +#X msg 447 133 ShadeL \$1; +#X obj 447 112 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 -1 -1 39 256; -#X msg 634 95 ShadeL \$1; -#X obj 634 74 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +#X msg 634 135 ShadeL \$1; +#X obj 634 114 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 -1 -1 35 256; -#X msg 831 93 ShadeL \$1; -#X obj 831 72 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +#X msg 831 133 ShadeL \$1; +#X obj 831 112 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 -1 -1 23 256; -#X msg 212 486 -1; -#X msg 269 485 -0.75; -#X text 163 486 invert; -#X msg 406 485 -1; -#X msg 463 484 -0.75; -#X text 357 485 invert; -#X msg 605 488 -1; -#X msg 662 487 -0.75; -#X text 556 488 invert; -#X msg 800 489 -1; -#X msg 857 488 -0.75; -#X text 751 489 invert; -#X obj 17 218 gemwin; -#X obj 37 168 loadbang; -#X obj 160 -8 scaleXYZ 4 4 1; -#X obj 353 -8 scaleXYZ 4 4 1; -#X obj 552 -4 scaleXYZ 4 4 1; -#X obj 747 -5 scaleXYZ 4 4 1; -#X text 21 548 This patch allow multiples images to be assembled in +#X msg 212 526 -1; +#X msg 269 525 -0.75; +#X text 163 526 invert; +#X msg 406 525 -1; +#X msg 463 524 -0.75; +#X text 357 525 invert; +#X msg 605 528 -1; +#X msg 662 527 -0.75; +#X text 556 528 invert; +#X msg 800 529 -1; +#X msg 857 528 -0.75; +#X text 751 529 invert; +#X obj 17 258 gemwin; +#X obj 37 208 loadbang; +#X obj 160 32 scaleXYZ 4 4 1; +#X obj 353 32 scaleXYZ 4 4 1; +#X obj 552 36 scaleXYZ 4 4 1; +#X obj 747 35 scaleXYZ 4 4 1; +#X text 21 588 This patch allow multiples images to be assembled in order to create a panoramic image.; -#X text 20 575 A shader distord the image to correct distance distortion +#X text 20 615 A shader distord the image to correct distance distortion \, and allow a fade between 2 images; -#X text 17 602 "dz" depend on the angles between images.; -#X text 462 579 copyright cyrille Henry and iem.; -#X text 463 596 This development was supported by the COMEDIA project +#X text 17 642 "dz" depend on the angles between images.; +#X text 462 619 copyright cyrille Henry and iem.; +#X text 463 636 This development was supported by the COMEDIA project ; -#X floatatom 18 354 5 0 0 0 - - -; -#X msg 18 373 dZ \$1; -#X obj 18 311 r init_shader; -#X msg 18 333 1.62; -#X msg 199 47 1.38; -#X msg 37 192 dimen 1024 256; -#X msg 177 264 thread 0 \, open cam1.jpg; -#X msg 370 265 thread 0 \, open cam2.jpg; -#X msg 569 266 thread 0 \, open cam3.jpg; -#X msg 764 267 thread 0 \, open cam4.jpg; +#X floatatom 18 394 5 0 0 0 - - -; +#X msg 18 413 dZ \$1; +#X obj 18 351 r init_shader; +#X msg 18 373 1.62; +#X msg 199 87 1.38; +#X msg 37 232 dimen 1024 256; +#X msg 177 304 thread 0 \, open cam1.jpg; +#X msg 370 305 thread 0 \, open cam2.jpg; +#X msg 569 306 thread 0 \, open cam3.jpg; +#X msg 764 307 thread 0 \, open cam4.jpg; +#X obj 964 623 declare -lib Gem; #X connect 0 0 101 0; #X connect 1 0 101 0; #X connect 2 0 32 0; diff -Nru gem-0.94~pre1/examples/10.glsl/14.blur.pd gem-0.94/examples/10.glsl/14.blur.pd --- gem-0.94~pre1/examples/10.glsl/14.blur.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/14.blur.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 481 142 778 497 10; +#X declare -lib Gem; #X obj 16 74 gemhead; #X obj 16 130 gemframebuffer; #X obj 129 13 loadbang; @@ -47,7 +48,7 @@ #X msg 344 358 quality 1 \, rectangle 0; #X obj 344 337 loadbang; #X obj 327 309 gemhead 99; -#N canvas 1070 136 503 739 14_pass_blur 0; +#N canvas 70 136 503 739 14_pass_blur 0; #X obj 87 102 inlet; #X obj 87 527 outlet; #X obj 87 173 single_blur 76 0 64; @@ -135,6 +136,7 @@ #X text 556 67 motion blur; #X obj 557 226 * 1; #X text 640 129 angle (radian); +#X obj 663 7 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 3 0; #X connect 1 1 28 0; diff -Nru gem-0.94~pre1/examples/10.glsl/15.bicubic_image_interpolation.pd gem-0.94/examples/10.glsl/15.bicubic_image_interpolation.pd --- gem-0.94~pre1/examples/10.glsl/15.bicubic_image_interpolation.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/15.bicubic_image_interpolation.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 722 145 681 529 10; +#N canvas 22 145 681 529 10; +#X declare -lib Gem; #X obj 232 189 gemhead; #X obj 232 356 pix_noise 5 5; #X obj 232 446 pix_texture; @@ -21,7 +22,7 @@ #X obj 358 389 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1; #X obj 33 246 vradio 15 1 1 3 empty empty empty 0 -8 0 10 -262144 -1 --1 0; +-1 1; #X text 53 246 bicubic interpolation; #X text 53 264 bilinear interpolation; #X text 55 276 no interpolation; @@ -36,6 +37,7 @@ image interpolation. Bicubic interpolation offer a smoother surface than obtain with bilinear interpolation. But since it need 16 sample to compute the interpolation \, it is quite slow.; +#X obj 563 7 declare -lib Gem; #X connect 0 0 15 0; #X connect 1 0 2 0; #X connect 2 0 3 0; diff -Nru gem-0.94~pre1/examples/10.glsl/16.vertexbuffer_attributes.pd gem-0.94/examples/10.glsl/16.vertexbuffer_attributes.pd --- gem-0.94~pre1/examples/10.glsl/16.vertexbuffer_attributes.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/16.vertexbuffer_attributes.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 375 67 983 713 10; +#N canvas 375 67 860 713 10; +#X declare -lib Gem; #N canvas 1 89 450 300 fps 0; #X obj 46 -61 gemhead; #X obj 46 -21 realtime; @@ -17,7 +18,7 @@ #X connect 6 0 7 0; #X connect 7 0 5 0; #X restore 806 149 pd fps; -#X floatatom 806 172 5 0 0 1 fps - -, f 5; +#X floatatom 806 172 5 0 0 1 fps - -; #N canvas 5 76 450 300 gemwin 0; #X obj 132 246 gemwin; #X obj 67 89 outlet; @@ -54,7 +55,7 @@ #X connect 13 1 12 0; #X connect 14 0 15 0; #X restore 577 115 pd gemwin; -#X msg 577 96 destroy; +#X msg 577 96 create; #X text 573 75 Create window:; #X msg 184 350 link \$1 \$2; #X obj 154 264 glsl_vertex; @@ -96,7 +97,7 @@ #X obj 358 431 print linking; #X obj 184 372 t a a; #N canvas 359 182 450 300 tables 0; -#N canvas 816 49 460 613 load_tables 0; +#N canvas 81 49 460 613 load_tables 0; #X obj 39 17 loadbang; #X msg 39 106 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0.5 0.5 1 0.5 0.5 1 0.5 0.5 1 0.5 0.5 0 0.5 0.6 0 0.5 0.6 0 0.5 0.6 0 0.5 0.6 1 1 1 1 1 1 1 1 1 @@ -190,6 +191,7 @@ #X connect 6 0 4 0; #X restore 184 330 pd modulelist; #X msg 272 416 bang; +#X obj 753 7 declare -lib Gem; #X connect 0 0 1 0; #X connect 2 0 3 0; #X connect 3 0 2 0; diff -Nru gem-0.94~pre1/examples/10.glsl/_glsl.pd gem-0.94/examples/10.glsl/_glsl.pd --- gem-0.94~pre1/examples/10.glsl/_glsl.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/10.glsl/_glsl.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,4 @@ -#N canvas 652 79 668 661 10; +#N canvas 52 79 668 661 10; #X obj 78 339 glsl_vertex; #X msg 32 338 print; #X obj 78 626 glsl_program; @@ -29,7 +29,7 @@ #X obj 90 426 symbol; #X obj 90 401 t b; #X msg 287 598 0; -#X obj 15 65 t b b b; +#X obj 15 65 t b b b, f 29; #X obj 140 199 symbol \$1; #X text 270 193 This abstraction can be useful to load shader. Shader location is relative to this abstraction path.; @@ -67,7 +67,7 @@ #X connect 27 0 16 0; #X connect 28 0 27 0; #X connect 29 0 23 0; -#X connect 30 0 29 0; -#X connect 30 1 10 0; -#X connect 30 2 31 0; +#X connect 30 0 10 0; +#X connect 30 1 31 0; +#X connect 30 2 29 0; #X connect 31 0 26 0; diff -Nru gem-0.94~pre1/examples/11.obj-exporter/obj_cube.pd gem-0.94/examples/11.obj-exporter/obj_cube.pd --- gem-0.94~pre1/examples/11.obj-exporter/obj_cube.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/11.obj-exporter/obj_cube.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,4 @@ -#N canvas 511 83 666 689 12; +#N canvas 511 83 713 781 12; #X obj 18 14 inlet; #X obj 18 35 t a a; #X obj 50 98 spigot 0; diff -Nru gem-0.94~pre1/examples/11.obj-exporter/obj_exporter-help.pd gem-0.94/examples/11.obj-exporter/obj_exporter-help.pd --- gem-0.94~pre1/examples/11.obj-exporter/obj_exporter-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/11.obj-exporter/obj_exporter-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 58 106 645 381 12; +#X declare -lib Gem; #X obj 35 90 gemhead; #X obj 35 175 translateXYZ 0 0 0.1; #X obj 35 153 rotateXYZ 1 5 9; @@ -55,8 +56,9 @@ #X obj 241 303 rotateXYZ 30 30 30; #X obj 241 282 translateXYZ 2 1 2; #X obj 35 59 gemwin; -#X text 236 16 Here is a way to create obj file in Gem.; +#X text 216 16 Here is a way to create obj file in Gem.; #X obj 307 64 model; +#X obj 516 15 declare -lib Gem; #X connect 0 0 7 0; #X connect 1 0 3 0; #X connect 2 0 1 0; diff -Nru gem-0.94~pre1/examples/11.obj-exporter/obj_exporter.pd gem-0.94/examples/11.obj-exporter/obj_exporter.pd --- gem-0.94~pre1/examples/11.obj-exporter/obj_exporter.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/11.obj-exporter/obj_exporter.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,4 @@ -#N canvas 166 167 375 605 12; +#N canvas 166 167 419 624 12; #X obj 90 9 inlet; #X obj 51 108 gemhead; #X obj 51 150 delay 0; diff -Nru gem-0.94~pre1/examples/12.multi_screen_projection/01.flat_projection-help.pd gem-0.94/examples/12.multi_screen_projection/01.flat_projection-help.pd --- gem-0.94~pre1/examples/12.multi_screen_projection/01.flat_projection-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/12.multi_screen_projection/01.flat_projection-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 365 180 996 500 10; +#X declare -lib Gem; #X obj 39 307 r render; #X obj 39 437 pix_texture; #X obj 110 353 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 @@ -20,6 +21,7 @@ create a single image.; #X text 305 159 geometry screen and geometry computer can be different \, but should define the same number of screen.; +#X obj 878 16 declare -lib Gem; #X connect 0 0 10 0; #X connect 1 0 5 0; #X connect 2 0 3 0; diff -Nru gem-0.94~pre1/examples/12.multi_screen_projection/02.nfp-help.pd gem-0.94/examples/12.multi_screen_projection/02.nfp-help.pd --- gem-0.94~pre1/examples/12.multi_screen_projection/02.nfp-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/12.multi_screen_projection/02.nfp-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 321 188 996 584 10; +#X declare -lib Gem; #X obj 27 231 gemhead; #X obj 27 298 gemframebuffer; #X obj 27 348 translateXYZ 0 0 -4; @@ -27,6 +28,7 @@ #X obj 703 44 nfp_curved_wall 3; #X text 52 43 load; #X text 104 42 save; +#X obj 842 6 declare -lib Gem; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 16 0; diff -Nru gem-0.94~pre1/examples/13.recursion/01.repetition_is_futile.pd gem-0.94/examples/13.recursion/01.repetition_is_futile.pd --- gem-0.94~pre1/examples/13.recursion/01.repetition_is_futile.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/13.recursion/01.repetition_is_futile.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 602 516 10; +#N canvas 6 61 542 516 10; +#X declare -lib Gem; #X obj 14 66 gemwin; #X obj 14 9 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; @@ -36,6 +37,7 @@ wanted more the duplication would be painfully tedious.; #X text 170 177 There is a powerful way to avoid this pain \, however \, using recursion.; +#X obj 430 9 declare -lib Gem; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 3 0 0 0; diff -Nru gem-0.94~pre1/examples/13.recursion/02.iteration_is_insufficient.pd gem-0.94/examples/13.recursion/02.iteration_is_insufficient.pd --- gem-0.94~pre1/examples/13.recursion/02.iteration_is_insufficient.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/13.recursion/02.iteration_is_insufficient.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 602 259 10; +#N canvas 6 61 602 259 10; +#X declare -lib Gem; #X obj 14 66 gemwin; #X obj 14 9 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; @@ -22,6 +23,7 @@ only to present us with another: what if we want a branching structure? ; #X text 170 187 Recursion is an elegant solution to this problem.; +#X obj 470 9 declare -lib Gem; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 3 0 0 0; diff -Nru gem-0.94~pre1/examples/13.recursion/03.recursive_spiral.pd gem-0.94/examples/13.recursion/03.recursive_spiral.pd --- gem-0.94~pre1/examples/13.recursion/03.recursive_spiral.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/13.recursion/03.recursive_spiral.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 3 2 602 516 10; +#N canvas 6 61 602 516 10; +#X declare -lib Gem; #X obj 14 66 gemwin; #X obj 14 9 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; @@ -44,6 +45,7 @@ less elegant than the iterative solution with [repeat] \, and it is -- for non-branching structures. The power of recursion comes from the ease with which branching structures can be created.; +#X obj 497 15 declare -lib Gem; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 3 0 0 0; diff -Nru gem-0.94~pre1/examples/13.recursion/04.binary_tree.pd gem-0.94/examples/13.recursion/04.binary_tree.pd --- gem-0.94~pre1/examples/13.recursion/04.binary_tree.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/13.recursion/04.binary_tree.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 3 2 602 516 10; +#N canvas 6 61 602 516 10; +#X declare -lib Gem; #X obj 14 66 gemwin; #X obj 14 9 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; @@ -53,6 +54,7 @@ #X text 170 137 Be careful not to increase the max-depth too much: the splitting at each recursion leads to an exponential increase in the number of circles to be drawn.; +#X obj 497 15 declare -lib Gem; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 3 0 0 0; diff -Nru gem-0.94~pre1/examples/13.recursion/05.n-ary_tree.pd gem-0.94/examples/13.recursion/05.n-ary_tree.pd --- gem-0.94~pre1/examples/13.recursion/05.n-ary_tree.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/13.recursion/05.n-ary_tree.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 3 2 600 605 10; +#N canvas 6 61 600 605 10; +#X declare -lib Gem; #X obj 14 66 gemwin; #X obj 14 9 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; @@ -43,6 +44,7 @@ \, because the [repeat] is retriggered before the counter has finished \, which messes up the counter's internal state. [nrepeat] is a "repeat with a built in counter" \, which is re-entrancy safe.; +#X obj 440 9 declare -lib Gem; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 3 0 0 0; diff -Nru gem-0.94~pre1/examples/13.recursion/06.breaking_symmetry.pd gem-0.94/examples/13.recursion/06.breaking_symmetry.pd --- gem-0.94~pre1/examples/13.recursion/06.breaking_symmetry.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/13.recursion/06.breaking_symmetry.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 4 2 673 560 10; +#N canvas 6 61 673 560 10; +#X declare -lib Gem; #X obj 14 66 gemwin; #X obj 14 9 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; @@ -354,6 +355,7 @@ for each transformation means we can create non-symmetric structures with some sort of self-similarity.; #X msg 48 13 create; +#X obj 560 9 declare -lib Gem; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 3 0 25 0; diff -Nru gem-0.94~pre1/examples/14.multiple_windows/01.basic_example.pd gem-0.94/examples/14.multiple_windows/01.basic_example.pd --- gem-0.94~pre1/examples/14.multiple_windows/01.basic_example.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/14.multiple_windows/01.basic_example.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 602 711 828 296 10; +#N canvas 60 711 828 296 10; +#X declare -lib Gem; #X obj 88 241 gemwin 20 a; #X obj 295 79 square; #X obj 295 49 color 1 0 0 1; @@ -7,23 +8,24 @@ #X obj 94 25 gemhead a; #X msg 88 199 title a \, create \, 1; #X msg 268 199 title b \, create \, 1; -#X obj 223 158 b; #X obj 223 138 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X text 240 136 create window; -#X text 405 85 You can have multiple window and display different -things on each.; +#X text 405 85 You can have multiple window and display different things +on each.; #X obj 268 241 gemwin 20 b; #X text 405 119 Basically \, use [gemwin fps context_name] to create a named context then use [gemhead context_name] to render to this context only.; #X obj 295 27 gemhead b; +#X obj 710 6 declare -lib Gem; +#X obj 223 158 t b b; #X connect 2 0 1 0; #X connect 4 0 3 0; #X connect 5 0 4 0; #X connect 6 0 0 0; -#X connect 7 0 12 0; -#X connect 8 0 6 0; -#X connect 8 0 7 0; -#X connect 9 0 8 0; -#X connect 14 0 2 0; +#X connect 7 0 11 0; +#X connect 8 0 15 0; +#X connect 13 0 2 0; +#X connect 15 0 6 0; +#X connect 15 1 7 0; diff -Nru gem-0.94~pre1/examples/14.multiple_windows/02.switch_context.pd gem-0.94/examples/14.multiple_windows/02.switch_context.pd --- gem-0.94~pre1/examples/14.multiple_windows/02.switch_context.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/14.multiple_windows/02.switch_context.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 625 735 655 237 10; +#N canvas 62 735 655 237 10; +#X declare -lib Gem; #X obj 33 129 gemwin 20 a; #X obj 396 181 square; #X obj 396 159 color 0 0 1 1; @@ -13,8 +14,9 @@ #X text 185 24 1 create windows; #X text 411 24 2 switch between rendering context; #X msg 475 106 set \$1; -#X floatatom 475 88 5 0 0 0 - - -, f 5; +#X floatatom 475 88 5 0 0 0 - - -; #X msg 168 87 title b \, create \, 1 \, view 1 1 6; +#X obj 40 206 declare -lib Gem; #X connect 2 0 1 0; #X connect 3 0 0 0; #X connect 4 0 3 0; diff -Nru gem-0.94~pre1/examples/14.multiple_windows/03.texture_sharing.pd gem-0.94/examples/14.multiple_windows/03.texture_sharing.pd --- gem-0.94~pre1/examples/14.multiple_windows/03.texture_sharing.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/examples/14.multiple_windows/03.texture_sharing.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,38 +1,45 @@ #N canvas 224 736 1147 233 10; +#X declare -lib Gem; #X obj 33 169 gemwin 20 a; #X obj 396 181 square; -#X msg 33 87 title a \, create \, 1; -#X obj 168 46 b; -#X obj 168 26 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +#X obj 141 26 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 396 37 gemhead a; -#X text 185 24 1 create windows; +#X text 158 24 1 create windows; #X obj 396 104 pix_texture; #X obj 596 181 square; #X obj 596 155 pix_texture; #X obj 396 72 pix_image ../data/fractal.JPG; #X obj 596 59 translateXYZ 2 0 0; #X obj 596 37 gemhead b; -#X msg 168 87 title b \, create \, 1; #X obj 168 169 gemwin 20 b; #X msg 596 4 context a; #X msg 669 4 context b; -#X msg 90 118 destroy; -#X text 729 90 on Linux \, this is only supported by [gemglxwindow] -and [gemglutwindow].; -#X connect 2 0 0 0; -#X connect 3 0 2 0; -#X connect 3 0 13 0; -#X connect 4 0 3 0; -#X connect 5 0 10 0; -#X connect 7 0 1 0; -#X connect 7 1 9 1; -#X connect 9 0 8 0; -#X connect 10 0 7 0; -#X connect 11 0 9 0; -#X connect 12 0 11 0; -#X connect 13 0 14 0; -#X connect 15 0 12 0; -#X connect 16 0 12 0; -#X connect 17 0 14 0; +#X msg 80 118 destroy; +#X text 731 150 on Linux \, this is only supported by [gemglutwindow]. +; +#X text 730 98 support for texture sharing is limited by Operating +System \, ggraphics hardware \, openGL implementation and the windowing +backend.; +#X msg 33 87 title a \, create \, 1; +#X msg 168 117 title b \, create \, 1; +#X obj 1030 16 declare -lib Gem; +#X obj 141 46 t b b; +#X obj 80 141 t a a; +#X connect 2 0 20 0; +#X connect 3 0 8 0; +#X connect 5 0 1 0; +#X connect 5 1 7 1; +#X connect 7 0 6 0; +#X connect 8 0 5 0; +#X connect 9 0 7 0; +#X connect 10 0 9 0; +#X connect 12 0 10 0; +#X connect 13 0 10 0; +#X connect 14 0 21 0; #X connect 17 0 0 0; +#X connect 18 0 11 0; +#X connect 20 0 17 0; +#X connect 20 1 18 0; +#X connect 21 0 0 0; +#X connect 21 1 11 0; diff -Nru gem-0.94~pre1/extra/pix_artoolkit/pix_artoolkit-help.pd gem-0.94/extra/pix_artoolkit/pix_artoolkit-help.pd --- gem-0.94~pre1/extra/pix_artoolkit/pix_artoolkit-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/extra/pix_artoolkit/pix_artoolkit-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 609 22 704 694 12; +#N canvas 609 61 704 694 12; +#X declare -lib Gem; #N canvas 0 22 450 300 gemwin 0; #X obj 67 89 outlet; #X obj 67 10 inlet; @@ -18,7 +19,7 @@ #X connect 6 1 5 0; #X connect 6 1 4 0; #X restore 60 88 pd gemwin; -#X msg 60 66 destroy; +#X msg 60 66 create; #X obj 454 53 gemhead; #X msg 483 124 dimen 64 64; #X msg 522 271 enumerate; @@ -76,14 +77,13 @@ #X obj 426 525 print; #X obj 481 525 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; -#X text 49 9 trying to make it works on linux / pd / gem; #X text 95 180 1 -; #X text 95 205 2 -; #X obj 513 505 route 1; #X obj 453 460 pix_rgba; #X obj 132 132 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; -#N canvas 834 213 510 585 draw_cube 1; +#N canvas 834 213 510 585 draw_cube 0; #X obj 96 276 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 198 358 r trsZ2; @@ -189,6 +189,8 @@ #X restore 513 532 pd draw_cube; #X msg 142 180 loadcpara camera_para.dat; #X msg 131 205 loadmarker 1 patt.hiro; +#X obj 80 643 declare -lib Gem; +#X text 49 9 trying to make it work on linux / Pd / Gem; #X connect 0 0 1 0; #X connect 1 0 0 0; #X connect 2 0 7 0; @@ -196,7 +198,7 @@ #X connect 4 0 7 0; #X connect 5 0 7 0; #X connect 6 0 7 0; -#X connect 7 0 34 0; +#X connect 7 0 33 0; #X connect 8 0 7 0; #X connect 9 0 7 0; #X connect 10 0 7 0; @@ -205,7 +207,7 @@ #X connect 13 0 15 0; #X connect 13 1 28 0; #X connect 13 1 29 0; -#X connect 13 1 33 0; +#X connect 13 1 32 0; #X connect 15 0 14 0; #X connect 16 0 13 0; #X connect 17 0 13 0; @@ -216,7 +218,7 @@ #X connect 22 0 13 0; #X connect 23 0 22 0; #X connect 27 0 13 0; -#X connect 33 0 36 0; -#X connect 34 0 13 0; +#X connect 32 0 35 0; +#X connect 33 0 13 0; +#X connect 36 0 13 0; #X connect 37 0 13 0; -#X connect 38 0 13 0; diff -Nru gem-0.94~pre1/extra/pix_drum/pix_drum.cpp gem-0.94/extra/pix_drum/pix_drum.cpp --- gem-0.94~pre1/extra/pix_drum/pix_drum.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/extra/pix_drum/pix_drum.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -17,7 +17,7 @@ // Silent Percussion Project // // GEM - Graphics Environment for Multimedia -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // Copyright (c) 1997-1998 Mark Danks. diff -Nru gem-0.94~pre1/extra/pix_drum/pix_drum.h gem-0.94/extra/pix_drum/pix_drum.h --- gem-0.94~pre1/extra/pix_drum/pix_drum.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/extra/pix_drum/pix_drum.h 2019-02-12 13:10:01.000000000 +0000 @@ -6,7 +6,7 @@ Copyright (c) 1997-1998 Mark Danks. mark@danks.org Copyright (c) Günther Geiger. geiger@epy.co.at -Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at +Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.at Copyright (c) 2002 James Tittle & Chris Clepper For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "LICENSE.txt" in this distribution. diff -Nru gem-0.94~pre1/extra/pix_drum/pix_drum-help.pd gem-0.94/extra/pix_drum/pix_drum-help.pd --- gem-0.94~pre1/extra/pix_drum/pix_drum-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/extra/pix_drum/pix_drum-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 496 25 656 859 10; +#N canvas 496 61 656 859 10; +#X declare -lib Gem; #X obj 7 360 pix_drum; #X obj 7 424 pix_texture; #N canvas 593 327 562 332 inlet1 0; @@ -110,21 +111,7 @@ #X obj 7 297 gemhead 1; #X obj 7 318 pix_video; #X obj 7 339 pix_grey; -#N canvas 716 528 225 177 gemwin 0; -#X obj 61 138 gemwin; -#X msg 46 83 create \, 1; -#X msg 142 99 0 \, destroy; -#X obj 24 12 loadbang; -#X obj 24 38 t b b b; -#X msg 126 65 dimen 320 240; -#X connect 1 0 0 0; -#X connect 2 0 0 0; -#X connect 3 0 4 0; -#X connect 4 1 1 0; -#X connect 4 2 5 0; -#X connect 5 0 0 0; -#X restore 407 29 pd gemwin; -#N canvas 730 589 294 136 presets 0; +#N canvas 730 619 294 136 presets 0; #X obj 21 54 r refresh; #X msg 21 73 \; ver-dim 240 \; hor-dim 320 \; dimen 320 240 \;; #X obj 39 14 loadbang; @@ -227,10 +214,52 @@ #X text 12 756 This object was programmed as part of the Silent Percussion Project \, for use in the Silent Drum Controller. For more information: http://www.jaimeoliver.pe/drum; +#X obj 538 828 declare -lib Gem; +#N canvas 716 528 356 251 gemwin 0; +#X obj 181 178 gemwin; +#X msg 166 123 create \, 1; +#X msg 262 139 0 \, destroy; +#X obj 234 22 loadbang; +#X msg 246 105 dimen 320 240; +#X obj 100 101 tgl 18 0 \$0-win \$0-win empty 17 7 0 10 -262144 -1 +-1 0 1; +#X obj 11 23 inlet; +#X obj 11 46 t a a; +#X obj 11 69 route create destroy; +#X obj 11 92 t b; +#X obj 11 115 f 1; +#X obj 11 138 t f; +#X msg 11 161 set \$1; +#X obj 41 92 t b; +#X obj 41 115 f 0; +#X obj 156 23 r \$0-win; +#X obj 156 46 route float; +#X obj 156 69 select 1 0; +#X connect 1 0 0 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 4 0 0 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 7 1 0 0; +#X connect 8 0 9 0; +#X connect 8 1 13 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 11 0 12 0; +#X connect 12 0 5 0; +#X connect 13 0 14 0; +#X connect 14 0 11 0; +#X connect 15 0 16 0; +#X connect 16 0 17 0; +#X connect 17 0 1 0; +#X connect 17 1 2 0; +#X coords 0 -1 1 1 85 20 1 100 100; +#X restore 406 21 pd gemwin; #X connect 0 0 1 0; -#X connect 0 1 29 0; -#X connect 0 2 30 0; -#X connect 1 0 41 0; +#X connect 0 1 28 0; +#X connect 0 2 29 0; +#X connect 1 0 40 0; #X connect 2 0 0 1; #X connect 3 0 0 2; #X connect 4 0 5 0; diff -Nru gem-0.94~pre1/extra/pix_fiducialtrack/pix_fiducialtrack.cpp gem-0.94/extra/pix_fiducialtrack/pix_fiducialtrack.cpp --- gem-0.94~pre1/extra/pix_fiducialtrack/pix_fiducialtrack.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/extra/pix_fiducialtrack/pix_fiducialtrack.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/extra/pix_fiducialtrack/pix_fiducialtrack.h gem-0.94/extra/pix_fiducialtrack/pix_fiducialtrack.h --- gem-0.94~pre1/extra/pix_fiducialtrack/pix_fiducialtrack.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/extra/pix_fiducialtrack/pix_fiducialtrack.h 2019-02-12 13:10:01.000000000 +0000 @@ -6,7 +6,7 @@ Copyright (c) 1997-1998 Mark Danks. mark@danks.org Copyright (c) Günther Geiger. geiger@epy.co.at -Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at +Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.at Copyright (c) 2002 James Tittle & Chris Clepper For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. diff -Nru gem-0.94~pre1/extra/pix_fiducialtrack/pix_fiducialtrack-help.pd gem-0.94/extra/pix_fiducialtrack/pix_fiducialtrack-help.pd --- gem-0.94~pre1/extra/pix_fiducialtrack/pix_fiducialtrack-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/extra/pix_fiducialtrack/pix_fiducialtrack-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ #N canvas 23 75 787 476 10; -#X text 452 8 GEM object; +#X declare -lib Gem; +#X text 599 8 GEM object; #X obj 9 317 cnv 15 430 100 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 40 319 Inlets:; @@ -81,6 +82,7 @@ #X obj 451 107 pix_threshold_bernsen 16 16; #X msg 520 64 dimen 256 256; #X obj 451 222 pix_fiducialtrack all.trees; +#X obj 667 9 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 24 0; diff -Nru gem-0.94~pre1/extra/pix_hit/pix_hit.cpp gem-0.94/extra/pix_hit/pix_hit.cpp --- gem-0.94~pre1/extra/pix_hit/pix_hit.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/extra/pix_hit/pix_hit.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -53,21 +53,21 @@ outlet_free(m_hits); } -unsigned char pix_hit :: getGreyValue(GLenum format, unsigned char *data) +unsigned char pix_hit :: getGreyValue(unsigned int format, unsigned char *data) { // is this a gray8 or RGBA? switch(format) { // Gray scale - case(GL_LUMINANCE): + case(GEM_GRAY): return data[chGray]; break; // YUV - case(GL_YCBCR_422_GEM): + case(GEM_YUV): return data[chY0]; break; // RGB, RGBA - case(GL_RGB): case (GL_RGBA): case (GL_BGRA_EXT): + case(GEM_RGB): case (GEM_RGBA): return (data[chRed]*RGB2GRAY_RED+data[chGreen]*RGB2GRAY_GREEN+data[chBlue]*RGB2GRAY_BLUE)>>8; break; default : diff -Nru gem-0.94~pre1/extra/pix_hit/pix_hit.h gem-0.94/extra/pix_hit/pix_hit.h --- gem-0.94~pre1/extra/pix_hit/pix_hit.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/extra/pix_hit/pix_hit.h 2019-02-12 13:10:01.000000000 +0000 @@ -83,7 +83,7 @@ void createLine(int n, float x1, float y1, float x2, float y2); void move(int n, float x, float y, float w, float h); void del(int n); - unsigned char getGreyValue(GLenum format, unsigned char *data); + unsigned char getGreyValue(unsigned int format, unsigned char *data); t_hitarea hit_areas[NUM_hit_areas]; diff -Nru gem-0.94~pre1/extra/pix_hit/pix_hit-help.pd gem-0.94/extra/pix_hit/pix_hit-help.pd --- gem-0.94~pre1/extra/pix_hit/pix_hit-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/extra/pix_hit/pix_hit-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 1494 239 690 594 10; +#N canvas 95 168 690 594 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 9 173 cnv 15 430 345 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -110,6 +111,7 @@ #X msg 510 236 circle 1 0.2 0.2 0.15; #X obj 535 280 route 0 1 2; #X msg 510 254 line 2 0.7 0.1 0.8 0.9; +#X obj 548 8 declare -lib Gem; #X connect 13 0 14 0; #X connect 14 0 13 0; #X connect 17 0 19 0; diff -Nru gem-0.94~pre1/extra/pix_mano/pix_mano.cpp gem-0.94/extra/pix_mano/pix_mano.cpp --- gem-0.94~pre1/extra/pix_mano/pix_mano.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/extra/pix_mano/pix_mano.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -18,7 +18,7 @@ // Silent Percussion Project // // GEM - Graphics Environment for Multimedia -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // Copyright (c) 1997-1998 Mark Danks. diff -Nru gem-0.94~pre1/extra/pix_mano/pix_mano.h gem-0.94/extra/pix_mano/pix_mano.h --- gem-0.94~pre1/extra/pix_mano/pix_mano.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/extra/pix_mano/pix_mano.h 2019-02-12 13:10:01.000000000 +0000 @@ -13,7 +13,7 @@ // Silent Percussion Project // // GEM - Graphics Environment for Multimedia -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // Copyright (c) 1997-1998 Mark Danks. diff -Nru gem-0.94~pre1/extra/pix_mano/pix_mano-help.pd gem-0.94/extra/pix_mano/pix_mano-help.pd --- gem-0.94~pre1/extra/pix_mano/pix_mano-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/extra/pix_mano/pix_mano-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,33 +1,34 @@ -#N canvas 326 0 854 742 10; -#X obj 556 -8 bng 15 250 50 0 refresh_var empty load-presets 17 7 0 +#N canvas 265 116 854 813 10; +#X declare -lib Gem; +#X obj 556 62 bng 15 250 50 0 refresh_var empty load-presets 17 7 0 10 -257985 -1 -1; -#X obj 161 116 pix_grey; -#X floatatom 117 -50 5 0 0 1 bottom bottom -; -#X floatatom 152 -33 5 0 0 1 top top -; -#X obj 161 156 pix_texture; -#X obj 152 19 t b f; -#X floatatom 194 -14 5 0 0 1 right right -; -#X obj 194 19 t b f; -#X floatatom 235 1 5 0 0 1 left left -; -#X obj 235 19 t b f; -#X obj 35 16 t b f; -#X obj 15 43 pack f f f; -#X obj 73 16 t b f; -#X floatatom 35 -17 5 0 0 1 thresh thresh -; -#X obj 304 19 t b f; -#X obj 345 19 t b f; -#X floatatom 15 -33 5 0 0 1 mode mode -; -#X floatatom 73 -2 5 0 0 1 tip_scalar tip_scalar -; -#X floatatom 273 -58 5 0 0 1 pix_avg pix_avg -; -#X floatatom 304 -42 5 0 0 1 pix_tip pix_tip -; -#X floatatom 345 -27 5 0 0 1 min_entry_size min_entry_size -; -#X obj 384 20 t b f; -#X floatatom 384 -12 5 0 0 1 min_perim min_perim -; -#X floatatom 424 3 5 0 0 1 pix_samp pix_samp -; -#X obj 424 20 t b f; -#X obj 273 47 pack f f f f f; -#X obj 161 76 gemhead 1; -#X obj 161 96 pix_video; +#X obj 161 186 pix_grey; +#X floatatom 117 20 5 0 0 1 bottom bottom -; +#X floatatom 152 37 5 0 0 1 top top -; +#X obj 161 226 pix_texture; +#X obj 152 89 t b f; +#X floatatom 194 56 5 0 0 1 right right -; +#X obj 194 89 t b f; +#X floatatom 235 71 5 0 0 1 left left -; +#X obj 235 89 t b f; +#X obj 35 86 t b f; +#X obj 15 113 pack f f f; +#X obj 73 86 t b f; +#X floatatom 35 53 5 0 0 1 thresh thresh -; +#X obj 304 89 t b f; +#X obj 345 89 t b f; +#X floatatom 15 37 5 0 0 1 mode mode -; +#X floatatom 73 68 5 0 0 1 tip_scalar tip_scalar -; +#X floatatom 273 12 5 0 0 1 pix_avg pix_avg -; +#X floatatom 304 28 5 0 0 1 pix_tip pix_tip -; +#X floatatom 345 43 5 0 0 1 min_entry_size min_entry_size -; +#X obj 384 90 t b f; +#X floatatom 384 58 5 0 0 1 min_perim min_perim -; +#X floatatom 424 73 5 0 0 1 pix_samp pix_samp -; +#X obj 424 90 t b f; +#X obj 273 117 pack f f f f f; +#X obj 161 146 gemhead 1; +#X obj 161 166 pix_video; #N canvas 0 0 450 300 print 0; #X obj 131 36 inlet; #X obj 131 57 spigot; @@ -43,7 +44,7 @@ #X connect 4 0 5 0; #X connect 5 0 1 1; #X coords 0 -1 1 1 60 23 2 100 100; -#X restore 32 204 pd print; +#X restore 32 274 pd print; #N canvas 0 0 450 300 print 0; #X obj 131 36 inlet; #X obj 131 57 spigot; @@ -59,7 +60,7 @@ #X connect 4 0 5 0; #X connect 5 0 1 1; #X coords 0 -1 1 1 60 23 2 100 100; -#X restore 100 204 pd print; +#X restore 100 274 pd print; #N canvas 0 0 450 300 print 0; #X obj 131 36 inlet; #X obj 131 57 spigot; @@ -75,7 +76,7 @@ #X connect 4 0 5 0; #X connect 5 0 1 1; #X coords 0 -1 1 1 60 23 2 100 100; -#X restore 167 204 pd print; +#X restore 167 274 pd print; #N canvas 0 0 450 300 print 0; #X obj 131 36 inlet; #X obj 131 57 spigot; @@ -91,7 +92,7 @@ #X connect 4 0 5 0; #X connect 5 0 1 1; #X coords 0 -1 1 1 60 23 2 100 100; -#X restore 235 204 pd print; +#X restore 235 274 pd print; #N canvas 0 0 450 300 print 0; #X obj 131 36 inlet; #X obj 131 57 spigot; @@ -107,7 +108,7 @@ #X connect 4 0 5 0; #X connect 5 0 1 1; #X coords 0 -1 1 1 60 23 2 100 100; -#X restore 301 204 pd print; +#X restore 301 274 pd print; #N canvas 0 0 450 300 print 0; #X obj 131 36 inlet; #X obj 131 57 spigot; @@ -123,21 +124,48 @@ #X connect 4 0 5 0; #X connect 5 0 1 1; #X coords 0 -1 1 1 60 23 2 100 100; -#X restore 369 204 pd print; -#N canvas 716 528 225 177 gemwin 0; -#X obj 61 138 gemwin; -#X msg 46 83 create \, 1; -#X msg 142 99 0 \, destroy; -#X obj 24 12 loadbang; -#X obj 24 38 t b b b; -#X msg 126 65 dimen 320 240; +#X restore 369 274 pd print; +#N canvas 716 528 356 251 gemwin 0; +#X obj 181 178 gemwin; +#X msg 166 123 create \, 1; +#X msg 262 139 0 \, destroy; +#X obj 234 22 loadbang; +#X msg 246 105 dimen 320 240; +#X obj 100 101 tgl 18 0 \$0-win \$0-win empty 17 7 0 10 -262144 -1 +-1 0 1; +#X obj 11 23 inlet; +#X obj 11 46 t a a; +#X obj 11 69 route create destroy; +#X obj 11 92 t b; +#X obj 11 115 f 1; +#X obj 11 138 t f; +#X msg 11 161 set \$1; +#X obj 41 92 t b; +#X obj 41 115 f 0; +#X obj 156 23 r \$0-win; +#X obj 156 46 route float; +#X obj 156 69 select 1 0; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 3 0 4 0; -#X connect 4 1 1 0; -#X connect 4 2 5 0; -#X connect 5 0 0 0; -#X restore 556 -49 pd gemwin; +#X connect 4 0 0 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 7 1 0 0; +#X connect 8 0 9 0; +#X connect 8 1 13 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 11 0 12 0; +#X connect 12 0 5 0; +#X connect 13 0 14 0; +#X connect 14 0 11 0; +#X connect 15 0 16 0; +#X connect 16 0 17 0; +#X connect 17 0 1 0; +#X connect 17 1 2 0; +#X coords 0 -1 1 1 85 20 1 100 100; +#X restore 556 21 pd gemwin; #N canvas 621 151 306 719 graphs-outlet2 0; #N canvas 0 22 450 300 (subpatch) 0; #X array x 150 float 1; @@ -222,7 +250,7 @@ #X connect 19 0 8 1; #X connect 20 0 9 1; #X connect 21 0 10 0; -#X restore 100 265 pd graphs-outlet2; +#X restore 100 335 pd graphs-outlet2; #N canvas 0 0 450 300 print 0; #X obj 131 36 inlet; #X obj 131 57 spigot; @@ -238,7 +266,7 @@ #X connect 3 0 4 0; #X connect 4 0 1 1; #X coords 0 -1 1 1 60 23 2 100 100; -#X restore 100 238 pd print; +#X restore 100 308 pd print; #N canvas 178 290 743 248 presets 0; #X text 280 16 head; #X text 229 16 bottom; @@ -306,77 +334,78 @@ #X connect 31 0 13 0; #X connect 31 0 12 0; #X connect 34 0 27 0; -#X restore 556 -30 pd presets; -#X text 456 52 inlet 1; -#X text 458 71 mode 0: regular function (others used for debugging) +#X restore 556 40 pd presets; +#X text 456 122 inlet 1; +#X text 458 141 mode 0: regular function (others used for debugging) ; -#X text 457 83 thresh: threshold for contrast step; -#X text 459 200 pix_avg: number of pixels to average the contour; -#X text 458 234 min_entry_size: minimum entry size to be considered +#X text 457 153 thresh: threshold for contrast step; +#X text 459 270 pix_avg: number of pixels to average the contour; +#X text 458 304 min_entry_size: minimum entry size to be considered as a hand; -#X text 458 256 min_perim: minimum perimeter to be considered a hand +#X text 458 326 min_perim: minimum perimeter to be considered a hand ; -#X text 459 308 OUTLETS; -#X text 459 374 outlet 2: elements in the smoothed contour; -#X text 460 408 outlet 3: peaks found in the contour; -#X text 460 449 outlet 4: valleys found in the contour; -#X text 460 491 outlet 5: contours found; -#X text 461 542 outlet 6: end of algorithm report; -#X text 457 148 inlet 2: defines the bounds of the area of analysis +#X text 459 378 OUTLETS; +#X text 459 444 outlet 2: elements in the smoothed contour; +#X text 460 478 outlet 3: peaks found in the contour; +#X text 460 519 outlet 4: valleys found in the contour; +#X text 460 561 outlet 5: contours found; +#X text 461 612 outlet 6: end of algorithm report; +#X text 457 218 inlet 2: defines the bounds of the area of analysis ; -#X text 484 160 bottom \, top \, right \, left; -#X text 457 181 inlet 3: parameters of contour analysis; -#X text 458 212 pix_tip: number of contiguous pixels higher than tip_scalar +#X text 484 230 bottom \, top \, right \, left; +#X text 457 251 inlet 3: parameters of contour analysis; +#X text 458 282 pix_tip: number of contiguous pixels higher than tip_scalar to consider something a peak or valley; -#X text 482 118 mode \, thresh \, tip_scalar; -#X text 457 94 tip scalar: scalar of maximum angle to consider something +#X text 482 188 mode \, thresh \, tip_scalar; +#X text 457 164 tip scalar: scalar of maximum angle to consider something a peak or valley; -#X text 458 267 pix_samp: period of sampling of the averaged contour +#X text 458 337 pix_samp: period of sampling of the averaged contour ; -#X text 483 281 pix_avg \, pix_tip \, min_entry_size \, min_perim \, +#X text 483 351 pix_avg \, pix_tip \, min_entry_size \, min_perim \, pix_samp; -#X text 460 592 order of outlets: 1 2 5 3 4 6; -#X text 460 340 outlet 1: elements in the raw contour (only in mode +#X text 460 662 order of outlets: 1 2 5 3 4 6; +#X text 460 410 outlet 1: elements in the raw contour (only in mode 2); -#X text 60 301 pix_mano is an object that tracks light reflecting objects +#X text 60 371 pix_mano is an object that tracks light reflecting objects (eg. hands) over a light absorbing background (eg. black cloth). Light reflecting objects need to enter the video frame from one of the sides to be recognized. For example \, a white circle in the center will not be recognized as there is no entry point in the borders of the frame.; -#X text 58 426 Roughly \, the object works by setting a threshold to +#X text 58 496 Roughly \, the object works by setting a threshold to discriminate between black and white pixels. shapes formed of white pixels are analyzed in the order of largest entry section.; -#X text 581 628 support information in www.jaimeoliver.pe; -#X text 59 483 For each object an analysis of its contour is achieved. +#X text 581 698 support information in www.jaimeoliver.pe; +#X text 59 553 For each object an analysis of its contour is achieved. (see graph option in outlet two while entering your hand into the frame). The contours formed by a hand are averaged for smoothing and sampled \, and then are plotted as x \, y coordinates and variation in angle with respect to the previous sampled point. An analysis of this contour provides tips (positive peaks) and valleys (negative peaks); -#X text 76 576 This object was programmed as part of the Silent Percussion +#X text 76 646 This object was programmed as part of the Silent Percussion Project \, for use in the MANO Controller. For more information: http://www.jaimeoliver.pe ; -#X obj 117 47 pack f f f f; -#X text 695 642 jaime.oliver@gmail.com; -#X text 715 657 joliverl-2010 v0.01; -#X obj 161 136 pix_mano; -#X text 460 326 outlet 0: the analyzed video image; -#X obj 161 176 rectangle 5.33 4; -#X text 60 383 Although this version is fully functional \, there are +#X obj 117 117 pack f f f f; +#X text 695 712 jaime.oliver@gmail.com; +#X text 715 727 joliverl-2010 v0.01; +#X obj 161 206 pix_mano; +#X text 460 396 outlet 0: the analyzed video image; +#X obj 161 246 rectangle 5.33 4; +#X text 60 453 Although this version is fully functional \, there are still a few bugs to work on and optimizations to be achieved. It is still in an experimental level; -#X text 476 353 [index \, x coordinate \, y coordinate \, angle]; -#X text 475 387 [index \, x coordinate \, y coordinate \, angle]; -#X text 476 421 [index of contour \, index of tip \, position (x \, +#X text 476 423 [index \, x coordinate \, y coordinate \, angle]; +#X text 475 457 [index \, x coordinate \, y coordinate \, angle]; +#X text 476 491 [index of contour \, index of tip \, position (x \, y) \, magnitude \, angle \, position in contour]; -#X text 476 462 [index of contour \, index of tip \, position (x \, +#X text 476 532 [index of contour \, index of tip \, position (x \, y) \, magnitude \, angle \, position in contour]; -#X text 476 504 [index of contour \, entry_point (x \, y) \, area \, +#X text 476 574 [index of contour \, entry_point (x \, y) \, area \, direction \, center (x \, y) \, perimeter \, entr_size \, bounds: right (x \, y) \, left (x \, y) \, top (x \, y) \, bottom (x \, y).]; -#X text 477 555 if there were any contours = 1; -#X text 477 565 if there were no contours = 0; +#X text 477 625 if there were any contours = 1; +#X text 477 635 if there were no contours = 0; +#X obj 538 768 declare -lib Gem; #X connect 1 0 68 0; #X connect 2 0 65 0; #X connect 3 0 5 0; diff -Nru gem-0.94~pre1/help/accumrotate-help.pd gem-0.94/help/accumrotate-help.pd --- gem-0.94~pre1/help/accumrotate-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/accumrotate-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 57 47 634 374 10; +#N canvas 57 61 634 374 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X text 50 12 Synopsis: [accumrotate]; #X obj 8 197 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577 @@ -65,6 +66,7 @@ #X text 34 335 see also:; #X obj 143 337 rotateXYZ; #X obj 95 337 rotate; +#X obj 520 8 declare -lib Gem; #X connect 21 0 22 0; #X connect 22 0 21 0; #X connect 26 0 31 0; diff -Nru gem-0.94~pre1/help/alpha-help.pd gem-0.94/help/alpha-help.pd --- gem-0.94~pre1/help/alpha-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/alpha-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 50 237 711 539 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 196 cnv 15 430 330 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -40,7 +41,8 @@ #X obj 451 197 cnv 15 80 60 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 579 186 color 1 0 0 0.5; -#X text 60 219 Inlet 1: float: turn alpha blending on/off (default:1); +#X text 60 219 Inlet 1: float: turn alpha blending on/off (default:1) +; #X text 50 12 Synopsis: [alpha]; #X text 29 77 Description: enable alpha blending; #X obj 458 310 square; @@ -91,6 +93,7 @@ #X obj 477 210 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X floatatom 501 210 2 0 19 0 - - -; +#X obj 588 8 declare -lib Gem; #X connect 11 0 12 0; #X connect 12 0 11 0; #X connect 16 0 27 0; diff -Nru gem-0.94~pre1/help/ambient-help.pd gem-0.94/help/ambient-help.pd --- gem-0.94~pre1/help/ambient-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/ambient-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 260 145 639 369 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 196 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -58,6 +59,7 @@ #X floatatom 549 193 5 0 0 0 - - -; #X obj 84 332 ambientRGB; #X text 21 332 see also:; +#X obj 519 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 27 0; diff -Nru gem-0.94~pre1/help/ambientRGB-help.pd gem-0.94/help/ambientRGB-help.pd --- gem-0.94~pre1/help/ambientRGB-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/ambientRGB-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 4 49 641 366 10; +#N canvas 6 61 641 366 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 196 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -64,6 +65,7 @@ #X obj 500 211 rotate 70 1 0 0; #X text 20 333 see also:; #X obj 93 332 ambient; +#X obj 518 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 30 0; diff -Nru gem-0.94~pre1/help/camera-help.pd gem-0.94/help/camera-help.pd --- gem-0.94~pre1/help/camera-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/camera-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 22 630 494 10; +#N canvas 6 61 630 494 10; +#X declare -lib Gem; #X obj 179 157 camera; #X obj 179 45 gemhead; #X obj 162 82 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 @@ -53,6 +54,7 @@ #X restore 175 344 pd gemwin; #X msg 175 325 create; #X text 171 304 Create window:; +#X obj 488 18 declare -lib Gem; #X connect 1 0 0 0; #X connect 2 0 14 0; #X connect 3 0 13 0; diff -Nru gem-0.94~pre1/help/circle-help.pd gem-0.94/help/circle-help.pd --- gem-0.94~pre1/help/circle-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/circle-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 291 154 710 345 10; +#X declare -lib Gem; #X text 33 14 Synopsis: [circle]; #X text 54 30 Class: geometric object; #X text 525 29 Example:; @@ -56,6 +57,7 @@ #X floatatom 626 130 5 0 0 2 size - -; #X text 64 191 default:1; #X text 27 247 Inlet 1: message: draw [line|fill|point|default]; +#X obj 588 8 declare -lib Gem; #X connect 18 0 19 0; #X connect 19 0 18 0; #X connect 23 0 22 0; diff -Nru gem-0.94~pre1/help/color-help.pd gem-0.94/help/color-help.pd --- gem-0.94~pre1/help/color-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/color-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 48 102 639 342 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 196 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -55,6 +56,7 @@ #X text 29 67 Description: colouring; #X text 449 272 see also:; #X obj 452 301 colorRGB; +#X obj 519 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 21 0; diff -Nru gem-0.94~pre1/help/colorRGB-help.pd gem-0.94/help/colorRGB-help.pd --- gem-0.94~pre1/help/colorRGB-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/colorRGB-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 42 24 639 342 10; +#N canvas 42 61 639 342 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 196 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -61,6 +62,7 @@ alpha-blending; #X text 447 272 see also:; #X obj 449 297 color; +#X obj 518 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 30 0; diff -Nru gem-0.94~pre1/help/colorSquare-help.pd gem-0.94/help/colorSquare-help.pd --- gem-0.94~pre1/help/colorSquare-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/colorSquare-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 130 41 696 468 10; +#N canvas 130 61 696 468 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X obj 479 107 cnv 15 200 250 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -69,6 +70,7 @@ position. The size of the square can be changed via the second inlet. The colors of the 4 corners can be specified separately and are drawn as gradients.; +#X obj 578 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 21 0 28 0; diff -Nru gem-0.94~pre1/help/cone-help.pd gem-0.94/help/cone-help.pd --- gem-0.94~pre1/help/cone-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/cone-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,6 +1,7 @@ #N canvas 290 157 710 345 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; -#X obj 479 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 479 47 cnv 15 180 250 empty empty empty 20 12 0 14 -228992 -66577 0; #X obj 544 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; @@ -58,6 +59,7 @@ #X text 64 180 defaults: 1 10; #X text 63 162 size of the cone \, number of segments; #X text 27 247 Inlet 1: message: draw [line|fill|point|default]; +#X obj 548 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 21 0 29 0; diff -Nru gem-0.94~pre1/help/cube-help.pd gem-0.94/help/cube-help.pd --- gem-0.94~pre1/help/cube-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/cube-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 289 160 710 345 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -55,6 +56,7 @@ #X obj 593 159 cube; #X msg 525 106 draw line; #X msg 525 85 draw default; +#X obj 588 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 23 0 27 0; diff -Nru gem-0.94~pre1/help/cuboid-help.pd gem-0.94/help/cuboid-help.pd --- gem-0.94~pre1/help/cuboid-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/cuboid-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 289 160 710 363 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -62,6 +63,7 @@ #X text 27 275 Inlet 3: float: height (dimY); #X text 27 289 Inlet 4: float: depth (dimZ); #X text 65 181 default: 1 1 0; +#X obj 588 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 18 0 23 0; diff -Nru gem-0.94~pre1/help/curve3d-help.pd gem-0.94/help/curve3d-help.pd --- gem-0.94~pre1/help/curve3d-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/curve3d-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 362 96 968 580 10; +#X declare -lib Gem; #X text 145 42 Class: geometric object; #X obj 13 64 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -1611,8 +1612,9 @@ #X text 21 447 examples :; #X text 29 87 The curve3d object renders a curve at the current position with current color or texture. The shape of the curve is controlled -from a matrix. Note that control points are not necessarily part of the -curve.; +from a matrix. Note that control points are not necessarily part of +the curve.; +#X obj 848 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 18 0 45 0; diff -Nru gem-0.94~pre1/help/curve-help.pd gem-0.94/help/curve-help.pd --- gem-0.94~pre1/help/curve-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/curve-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 65 18 762 461 10; +#N canvas 65 61 682 456 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X text 475 39 Example:; #X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 @@ -84,6 +85,7 @@ #X floatatom 600 274 5 0 100 0 - - -; #X msg 600 291 res \$1; #X msg 605 213 \$1 \$1 \$1; +#X obj 569 8 declare -lib Gem; #X connect 13 0 14 0; #X connect 14 0 13 0; #X connect 30 0 47 0; diff -Nru gem-0.94~pre1/help/cylinder-help.pd gem-0.94/help/cylinder-help.pd --- gem-0.94~pre1/help/cylinder-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/cylinder-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,6 +1,7 @@ -#N canvas 291 154 710 345 10; +#N canvas 291 154 674 345 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; -#X obj 479 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 479 47 cnv 15 180 250 empty empty empty 20 12 0 14 -228992 -66577 0; #X obj 544 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; @@ -59,6 +60,7 @@ #X text 63 167 size of the cylinder \, segments; #X text 63 182 defaults: 1 \, 10; #X text 27 247 Inlet 1: message: draw [line|fill|point|default]; +#X obj 558 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 18 0 27 0; diff -Nru gem-0.94~pre1/help/depth-help.pd gem-0.94/help/depth-help.pd --- gem-0.94~pre1/help/depth-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/depth-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 15 24 724 431 10; +#N canvas 15 61 724 431 10; +#X declare -lib Gem; #X obj 17 299 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 28 302 Inlets:; @@ -72,6 +73,7 @@ #X obj 607 252 s \$0-gemwin; #X text 630 210 lighting; #X text 516 113 turn depth test on/off; +#X obj 608 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 16 0 17 0; diff -Nru gem-0.94~pre1/help/diffuse-help.pd gem-0.94/help/diffuse-help.pd --- gem-0.94~pre1/help/diffuse-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/diffuse-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 61 22 630 385 10; -#X text 452 8 GEM object; +#N canvas 61 61 630 385 10; +#X declare -lib Gem; +#X text 432 8 GEM object; #X obj 8 196 cnv 15 430 180 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 34 198 Inlets:; @@ -58,6 +59,7 @@ #X obj 451 156 diffuse 0 1 0; #X obj 451 355 diffuseRGB; #X text 448 332 see also:; +#X obj 508 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 30 0; diff -Nru gem-0.94~pre1/help/diffuseRGB-help.pd gem-0.94/help/diffuseRGB-help.pd --- gem-0.94~pre1/help/diffuseRGB-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/diffuseRGB-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 61 22 632 388 10; -#X text 452 8 GEM object; +#N canvas 61 61 632 388 10; +#X declare -lib Gem; +#X text 432 8 GEM object; #X obj 8 196 cnv 15 430 180 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 198 Inlets:; @@ -63,6 +64,7 @@ #X obj 500 211 rotate 63 1 0 0; #X text 447 331 see also:; #X obj 449 353 diffuse; +#X obj 508 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 33 0; diff -Nru gem-0.94~pre1/help/disk-help.pd gem-0.94/help/disk-help.pd --- gem-0.94~pre1/help/disk-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/disk-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 291 154 710 345 10; +#N canvas 291 154 667 345 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X obj 479 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -38,7 +39,7 @@ #X text 27 233 Inlet 1: gemlist; #X text 9 307 Outlets:; #X text 21 320 Outlet 1: gemlist; -#X obj 481 81 cnv 15 160 140 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 481 81 cnv 15 165 140 empty empty empty 20 12 0 14 -24198 -66577 0; #X msg 485 95 draw line; #X msg 485 116 draw fill; @@ -61,6 +62,7 @@ radius); #X text 29 191 defaults: 1 \, 10 \, 0; #X text 27 247 Inlet 1: message: draw [line|fill|point|default]; +#X obj 548 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 17 0 29 0; diff -Nru gem-0.94~pre1/help/emission-help.pd gem-0.94/help/emission-help.pd --- gem-0.94~pre1/help/emission-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/emission-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 61 22 639 342 10; +#N canvas 61 61 639 342 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 196 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -59,6 +60,7 @@ see any effects.; #X text 448 285 see also:; #X obj 450 308 emissionRGB; +#X obj 518 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 24 0; diff -Nru gem-0.94~pre1/help/emissionRGB-help.pd gem-0.94/help/emissionRGB-help.pd --- gem-0.94~pre1/help/emissionRGB-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/emissionRGB-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 61 22 639 342 10; +#N canvas 61 61 639 342 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 196 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -60,6 +61,7 @@ see any effects.; #X text 449 284 see also:; #X obj 451 307 emission; +#X obj 518 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 28 0; diff -Nru gem-0.94~pre1/help/fragment_program-help.pd gem-0.94/help/fragment_program-help.pd --- gem-0.94~pre1/help/fragment_program-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/fragment_program-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 35 199 694 458 10; +#N canvas 35 199 651 458 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 335 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -77,6 +78,7 @@ #X text 443 406 see also; #X obj 508 406 vertex_program; #X obj 451 226 fragment_program random.fp; +#X obj 538 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 33 0; diff -Nru gem-0.94~pre1/help/gemcocoawindow-help.pd gem-0.94/help/gemcocoawindow-help.pd --- gem-0.94~pre1/help/gemcocoawindow-help.pd 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/help/gemcocoawindow-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,212 @@ +#N canvas 55 51 885 613 10; +#X declare -lib Gem; +#X text 465 17 standard messages; +#X text 47 51 [gemcocoawindow]; +#X text 18 79 part of Gem; +#X obj 441 515 print unknown.message; +#X obj 367 515 route bang; +#X obj 367 558 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144 +-4034 -1; +#X obj 648 560 print info; +#X obj 424 537 s \$0-info; +#X text 485 537 feedback about the window; +#X obj 648 514 r \$0-info; +#X obj 648 537 spigot; +#X obj 695 539 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 407 45 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 75 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 105 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 135 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 165 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 195 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 225 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 255 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 285 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 315 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 367 386 t a; +#X obj 407 345 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X msg 411 48 create; +#X msg 411 78 bang; +#X msg 411 108 destroy; +#X text 515 79 clear window \, activate openGL-context \, and send +render-bang; +#X text 515 110 destroy the window; +#X text 515 49 create the window; +#X text 515 139 single-buffered(1) or double-buffered(2) rendering +; +#X msg 411 138 buffer 2; +#X msg 411 168 FSAA \$1; +#X text 515 169 Full Screen Antia Aliasing mode; +#X msg 411 198 title foo; +#X text 515 199 title of the window; +#X msg 411 228 dimen 640 460; +#X text 515 229 change dimension of the window; +#X msg 411 258 offset 100 100; +#X text 515 259 change position of the window; +#X text 515 319 turn on/off window borders; +#X text 515 349 (don't) show cursor when it's on the window; +#X obj 407 395 cnv 15 470 25 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X msg 421 399 blurb; +#X text 515 400 some random unknown message; +#X obj 407 425 cnv 15 470 25 empty empty empty 20 12 0 14 -257985 -66577 +0; +#X obj 38 553 declare -lib Gem; +#X text 24 529 last updated for Gem-0.94; +#X msg 411 348 cursor \$1; +#X obj 490 350 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 411 318 border \$1; +#X obj 490 320 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 501 290 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 515 289 switch fullscreen mode on/off; +#X msg 411 288 fullscreen \$1; +#X obj 235 348 metro 100; +#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 43 209 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#N canvas 348 141 312 657 keyboard 0; +#X obj 54 265 r \$0-info; +#X obj 54 286 route keyboard; +#X obj 54 307 list split 1; +#X obj 54 328 list trim; +#X obj 54 349 route keyname key; +#X obj 54 400 unpack s f; +#X symbolatom 54 421 10 0 0 0 - - -; +#X floatatom 116 421 5 0 0 0 - - -; +#X floatatom 187 421 5 0 0 0 - - -; +#X obj 154 400 unpack; +#X floatatom 154 421 5 0 0 0 - - -; +#X msg 54 582; +#X obj 18 127 cnv 15 100 100 empty empty empty 20 12 0 14 -154295 -66577 +0; +#X obj 128 127 cnv 15 100 100 empty empty empty 20 12 0 14 -155048 +-66577 0; +#X obj 238 127 cnv 15 40 100 empty empty empty 20 12 0 14 -223782 -66577 +0; +#X text 38 129 keystroke; +#X text 146 129 keyname; +#X text 247 128 key; +#X text 34 153 ; +#X text 34 171 ; +#X text 34 189 ; +#X text 34 207 <ä>; +#X msg 154 189 A; +#X text 17 139 ===========================================; +#X text 17 23 While Gem tries to provide a consistent platform-independent +interface \, the values returned by [gemkeyboard] and [gemkeyname] +might depend on the actual window toolkit., f 43; +#X text 125 264 <- from [gem*window]; +#N canvas 5 51 450 300 record 0; +#X obj 244 15 r \$0-info; +#X obj 244 66 route keyboard; +#X obj 244 87 list split 1; +#X obj 244 108 list trim; +#X msg 244 221 add2 \$1; +#X msg 300 221 set; +#X obj 300 200 loadbang; +#X text 315 14 <- from [gem*window]; +#X obj 244 129 route keyname; +#X obj 244 152 unpack s f; +#X obj 244 200 spigot; +#X obj 301 179 == 0; +#X obj 244 244 t a; +#X obj 244 267 outlet; +#X obj 100 100 f; +#X obj 185 117 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 100 118 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 244 40 spigot; +#X connect 0 0 17 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 8 0; +#X connect 4 0 12 0; +#X connect 5 0 12 0; +#X connect 6 0 5 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 9 1 11 0; +#X connect 10 0 4 0; +#X connect 11 0 10 1; +#X connect 12 0 13 0; +#X connect 15 0 5 0; +#X connect 16 0 17 1; +#X connect 17 0 1 0; +#X coords 0 -1 1 1 100 33 1 100 100; +#X restore 54 543 pd record keyup; +#X text 10 102 values returned by [gemcocoawindow]; +#X msg 154 153 a; +#X msg 154 171 Shift_L; +#X msg 154 207 ä; +#X text 244 153 0!; +#X text 244 189 0!; +#X text 244 171 56; +#X text 244 207 39; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 4 1 9 0; +#X connect 5 0 6 0; +#X connect 5 1 7 0; +#X connect 9 0 10 0; +#X connect 9 1 8 0; +#X connect 26 0 11 0; +#X restore 58 224 pd keyboard; +#X obj 363 459 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#N canvas 60 208 572 395 specific 0; +#X obj 88 303 outlet; +#X obj 88 231 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 88 254 menubar \$1; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X restore 421 429 pd specific messages; +#X obj 367 472 gemcocoawindow; +#X text 13 144 [gemcocoawindow] uses Cocoa to create windows (only +on OSX).; +#X connect 4 0 5 0; +#X connect 4 1 7 0; +#X connect 9 0 10 0; +#X connect 10 0 6 0; +#X connect 11 0 10 1; +#X connect 22 0 61 0; +#X connect 24 0 22 0; +#X connect 25 0 22 0; +#X connect 26 0 22 0; +#X connect 31 0 22 0; +#X connect 32 0 22 0; +#X connect 34 0 22 0; +#X connect 36 0 22 0; +#X connect 38 0 22 0; +#X connect 43 0 61 0; +#X connect 48 0 22 0; +#X connect 49 0 48 0; +#X connect 50 0 22 0; +#X connect 51 0 50 0; +#X connect 52 0 54 0; +#X connect 54 0 22 0; +#X connect 55 0 22 0; +#X connect 56 0 55 0; +#X connect 60 0 61 0; +#X connect 61 0 4 0; +#X connect 61 1 3 0; diff -Nru gem-0.94~pre1/help/gemcubeframebuffer-help.pd gem-0.94/help/gemcubeframebuffer-help.pd --- gem-0.94~pre1/help/gemcubeframebuffer-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/gemcubeframebuffer-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 584 161 745 692 10; +#X declare -lib Gem; #X obj 482 415 cnv 15 90 40 empty empty empty 20 12 0 14 -257985 -66577 0; #X obj 175 337 cnv 15 90 60 empty empty empty 20 12 0 14 -257985 -66577 @@ -48,7 +49,7 @@ #X connect 14 0 4 0; #X connect 15 0 16 0; #X restore 32 131 pd gemwin; -#X msg 32 109 destroy; +#X msg 32 109 create; #X obj 174 225 cnv 15 180 30 empty empty empty 20 12 0 14 -4034 -66577 0; #X obj 184 24 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 @@ -114,10 +115,10 @@ #X obj 81 47 inlet num_face; #X obj 50 9 inlet head; #X obj 50 304 outlet head; -#X floatatom 163 186 5 0 0 0 - - -, f 5; -#X floatatom 89 245 5 0 0 0 - - -, f 5; -#X floatatom 148 250 5 0 0 0 - - -, f 5; -#X floatatom 57 253 5 0 0 0 - - -, f 5; +#X floatatom 163 186 5 0 0 0 - - -; +#X floatatom 89 245 5 0 0 0 - - -; +#X floatatom 148 250 5 0 0 0 - - -; +#X floatatom 57 253 5 0 0 0 - - -; #X obj 50 216 rotateXYZ 0 90 0; #X obj 50 280 rotateXYZ -90 0 90; #X connect 0 0 15 1; @@ -155,8 +156,8 @@ #X obj 156 300 change; #X obj 138 191 change; #X msg 138 409 link \$1 \$2; -#X floatatom 156 324 2 0 0 0 ID - -, f 2; -#X floatatom 138 214 2 0 0 0 ID - -, f 2; +#X floatatom 156 324 2 0 0 0 ID - -; +#X floatatom 138 214 2 0 0 0 ID - -; #X obj 120 60 tgl 15 0 \$0-shadOn-snd \$0-shadOn-rcv on/off 17 7 0 10 -262144 -1 -1 1 1; #X obj 21 59 inlet gemlist; @@ -276,7 +277,7 @@ #X obj 390 386 + 1; #X obj 418 387 * -1; #X obj 418 414 + 1; -#X floatatom 320 341 5 0 0 0 - - -, f 5; +#X floatatom 320 341 5 0 0 0 - - -; #X obj 63 218 color 0.8 0.2 0.2; #X obj 243 218 color 0.2 0.8 0.2; #X obj 242 385 color 0.8 0.8 0.2; @@ -284,7 +285,7 @@ #X obj 402 16 loadbang; #X obj 402 40 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1; -#X floatatom 156 320 5 0 0 0 - - -, f 5; +#X floatatom 156 320 5 0 0 0 - - -; #X obj 185 34 inlet; #X obj 185 88 rotateXYZ 0 0 0; #X obj 488 187 separator; @@ -372,8 +373,8 @@ #X obj 156 300 change; #X obj 138 191 change; #X msg 138 409 link \$1 \$2; -#X floatatom 156 324 2 0 0 0 ID - -, f 2; -#X floatatom 138 214 2 0 0 0 ID - -, f 2; +#X floatatom 156 324 2 0 0 0 ID - -; +#X floatatom 138 214 2 0 0 0 ID - -; #X obj 120 60 tgl 15 0 \$0-shadOn-snd \$0-shadOn-rcv on/off 17 7 0 10 -262144 -1 -1 1 1; #X obj 21 59 inlet gemlist; @@ -453,6 +454,7 @@ #X msg 420 499 -4; #X obj 184 46 gemhead; #X text 55 245 mapped to cube; +#X obj 608 8 declare -lib Gem; #X connect 6 0 7 0; #X connect 7 0 6 0; #X connect 9 0 74 0; diff -Nru gem-0.94~pre1/help/gemframebuffer-help.pd gem-0.94/help/gemframebuffer-help.pd --- gem-0.94~pre1/help/gemframebuffer-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/gemframebuffer-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,41 +1,42 @@ -#N canvas 125 98 893 604 10; -#X obj 465 9 cnv 15 420 570 empty empty empty 20 12 0 14 -228992 -66577 -0; -#X obj 472 293 cnv 15 300 60 empty empty empty 20 12 0 14 -191407 -66577 -0; -#X obj 474 18 cnv 15 400 250 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 477 41 gemhead 20; -#X obj 664 306 gemhead; -#X msg 615 106 dimen 320 240; -#X obj 477 468 rotateXYZ; -#X floatatom 794 427 5 0 0 0 - - -; -#X msg 762 114 color 0 0 1 0; -#X msg 602 87 dimen 1024 1024; -#X msg 751 74 color 0 0 0 0; -#X obj 477 422 t a b; -#X floatatom 717 469 5 0 0 0 - - -; -#X msg 549 232 rectangle \$1; -#X obj 549 214 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +#N canvas 125 98 896 632 10; +#X declare -lib Gem; +#X obj 465 39 cnv 15 420 570 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 472 323 cnv 15 300 60 empty empty empty 20 12 0 14 -191407 -66577 +0; +#X obj 474 48 cnv 15 400 250 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 477 71 gemhead 20; +#X obj 664 336 gemhead; +#X msg 615 136 dimen 320 240; +#X obj 477 498 rotateXYZ; +#X floatatom 794 457 5 0 0 0 - - -; +#X msg 762 144 color 0 0 1 0; +#X msg 602 117 dimen 1024 1024; +#X msg 751 104 color 0 0 0 0; +#X obj 477 452 t a b; +#X floatatom 717 499 5 0 0 0 - - -; +#X msg 549 262 rectangle \$1; +#X obj 549 244 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; -#X msg 509 101 type FLOAT; -#X obj 664 274 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +#X msg 509 131 type FLOAT; +#X obj 664 304 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; -#X obj 477 382 translateXYZ 0 0 -4; -#X obj 477 298 gemframebuffer; -#X obj 664 331 pix_texture; -#X obj 664 358 t a b; -#X msg 531 187 texunit \$1; -#X msg 495 62 type BYTE; -#X msg 503 82 type INT; -#X msg 658 179 format YUV; -#X msg 649 158 format RGB; -#X msg 668 200 format RGBA; -#X msg 680 220 format RGB32; -#X obj 664 487 square 2; -#X obj 664 449 rotateXYZ -40 0 200; -#X floatatom 707 429 5 0 0 0 - - -; -#X obj 477 487 pqtorusknots; +#X obj 477 412 translateXYZ 0 0 -4; +#X obj 477 328 gemframebuffer; +#X obj 664 361 pix_texture; +#X obj 664 388 t a b; +#X msg 531 217 texunit \$1; +#X msg 495 92 type BYTE; +#X msg 503 112 type INT; +#X msg 658 209 format YUV; +#X msg 649 188 format RGB; +#X msg 668 230 format RGBA; +#X msg 680 250 format RGB32; +#X obj 664 517 square 2; +#X obj 664 479 rotateXYZ -40 0 200; +#X floatatom 707 459 5 0 0 0 - - -; +#X obj 477 517 pqtorusknots; #N canvas 0 50 450 300 rotation 0; #X obj 33 19 inlet; #X obj 33 110 % 360; @@ -65,8 +66,8 @@ #X connect 9 0 12 0; #X connect 11 0 5 0; #X connect 12 0 8 0; -#X restore 509 443 pd rotation; -#X floatatom 531 167 5 0 0 0 - - -; +#X restore 509 473 pd rotation; +#X floatatom 531 197 5 0 0 0 - - -; #N canvas 125 50 450 300 rotation 0; #X obj 112 29 inlet; #X obj 112 105 % 360; @@ -78,23 +79,23 @@ #X connect 1 0 3 0; #X connect 2 0 4 0; #X connect 4 0 1 0; -#X restore 794 402 pd rotation; -#X obj 762 93 loadbang; -#X obj 477 402 color 1 0 0; -#X obj 649 245 t a; -#X obj 585 124 t a; -#X obj 751 135 t a; -#X obj 495 130 t a; -#X floatatom 563 361 5 0 0 0 - - -; -#X floatatom 607 362 5 0 0 0 - - -; -#X floatatom 520 361 5 0 0 0 - - -; -#X obj 495 154 t a; -#X obj 470 514 cnv 15 410 60 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X msg 757 544 color 0 0 0 0; -#X msg 746 522 color 0 1 1 0; -#X msg 637 525 lighting \$1; -#X obj 615 526 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +#X restore 794 432 pd rotation; +#X obj 762 123 loadbang; +#X obj 477 432 color 1 0 0; +#X obj 649 275 t a; +#X obj 585 154 t a; +#X obj 751 165 t a; +#X obj 495 160 t a; +#X floatatom 563 391 5 0 0 0 - - -; +#X floatatom 607 392 5 0 0 0 - - -; +#X floatatom 520 391 5 0 0 0 - - -; +#X obj 495 184 t a; +#X obj 470 544 cnv 15 410 60 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X msg 757 574 color 0 0 0 0; +#X msg 746 552 color 0 1 1 0; +#X msg 637 555 lighting \$1; +#X obj 615 556 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #N canvas 0 50 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -118,64 +119,65 @@ #X connect 7 1 5 0; #X connect 7 2 0 0; #X connect 8 0 9 0; -#X restore 473 554 pd gemwin; -#X msg 473 529 destroy; -#X text 471 513 Create window:; -#X obj 637 552 t a; -#X text 476 22 Example:; -#X text 379 -10 GEM object; -#X obj 7 41 cnv 15 450 130 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 7 208 cnv 15 450 370 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 10 214 Inlets:; -#X obj 7 175 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 14 174 Arguments:; -#X text 28 233 Inlet 1: gemlist; -#X text 15 523 Outlets:; -#X text 31 539 Outlet 1: gemlist; -#X text 60 187 ; -#X text 102 -1 Synopsis: [gemframebuffer]; -#X text 122 15 Class: framebuffer object; -#X text 12 50 Description: Renders a scene in a texture \, for later +#X restore 473 584 pd gemwin; +#X msg 473 559 destroy; +#X text 471 543 Create window:; +#X obj 637 582 t a; +#X text 476 52 Example:; +#X text 699 10 GEM object; +#X obj 7 71 cnv 15 450 130 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 7 238 cnv 15 450 370 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 10 244 Inlets:; +#X obj 7 205 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 14 204 Arguments:; +#X text 28 263 Inlet 1: gemlist; +#X text 15 553 Outlets:; +#X text 31 569 Outlet 1: gemlist; +#X text 60 217 ; +#X text 102 29 Synopsis: [gemframebuffer]; +#X text 122 45 Class: framebuffer object; +#X text 12 80 Description: Renders a scene in a texture \, for later use.; -#X text 12 68 this example renders a scene (pqtorusknots) into a framebuffer +#X text 12 98 this example renders a scene (pqtorusknots) into a framebuffer \, which is then used as a texture onto a square.; -#X text 13 98 you need framebuffer support (and its driver) on your +#X text 13 128 you need framebuffer support (and its driver) on your gfx-card; -#X text 28 247 Inlet 1: message: type [BYTE | INT | FLOAT]; -#X text 27 315 Inlet 1: message: dimen ; -#X text 27 349 Inlet 1: message: color ; -#X text 26 430 Inlet 1: message: texunit ; -#X text 27 280 Inlet 1: message: format [RGB|RGBA|RGB32|YUV]; -#X text 26 385 Inlet 1: message: rectangle [0|1]; -#X text 103 262 (type of the framebuffer data); -#X text 102 330 (dimension of the framebuffer texture); -#X text 106 465 (useful only with shader); -#X text 106 448 (change texunit of the texture); -#X text 104 402 (texturing mode \; rectangle (1) or normalized (0)) +#X text 28 277 Inlet 1: message: type [BYTE | INT | FLOAT]; +#X text 27 345 Inlet 1: message: dimen ; +#X text 27 379 Inlet 1: message: color ; +#X text 26 460 Inlet 1: message: texunit ; +#X text 27 310 Inlet 1: message: format [RGB|RGBA|RGB32|YUV]; +#X text 26 415 Inlet 1: message: rectangle [0|1]; +#X text 103 292 (type of the framebuffer data); +#X text 102 360 (dimension of the framebuffer texture); +#X text 106 495 (useful only with shader); +#X text 106 478 (change texunit of the texture); +#X text 104 432 (texturing mode \; rectangle (1) or normalized (0)) ; -#X text 100 296 (color format of the framebuffer); -#X text 102 365 (background color of the framebuffer); -#X obj 556 41 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +#X text 100 326 (color format of the framebuffer); +#X text 102 395 (background color of the framebuffer); +#X obj 556 71 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; -#X floatatom 493 323 5 0 0 0 - - -; -#X obj 477 342 scaleXYZ; -#X floatatom 563 326 5 0 0 0 - - -; -#X floatatom 528 325 5 0 0 0 - - -; -#X msg 585 30 perspec -1 1 -1 1 1 20; -#X msg 593 56 perspec -1 1 -1 1 3 75; -#X text 98 497 (frustum of the framebuffer); -#X text 752 29 default; -#X text 11 130 NOTE: the default view-point of [gemframebuffer] is +#X floatatom 493 353 5 0 0 0 - - -; +#X obj 477 372 scaleXYZ; +#X floatatom 563 356 5 0 0 0 - - -; +#X floatatom 528 355 5 0 0 0 - - -; +#X msg 585 60 perspec -1 1 -1 1 1 20; +#X msg 593 86 perspec -1 1 -1 1 3 75; +#X text 98 527 (frustum of the framebuffer); +#X text 752 59 default; +#X text 11 160 NOTE: the default view-point of [gemframebuffer] is at the origin 0/0/0 \, unlike [gemwin] where it is at 0/0/4. You might want to manually insert a [translateXYZ 0 0 -4].; -#X text 23 482 Inlet 1: message: perspec +#X text 23 512 Inlet 1: message: perspec ; -#X text 428 482 ; -#X text 31 557 Outlet 2: texture info : +#X text 428 512 ; +#X text 31 587 Outlet 2: texture info : <0.>; +#X obj 778 8 declare -lib Gem; #X connect 3 0 18 0; #X connect 4 0 19 0; #X connect 5 0 38 0; diff -Nru gem-0.94~pre1/help/gemglfw2window-help.pd gem-0.94/help/gemglfw2window-help.pd --- gem-0.94~pre1/help/gemglfw2window-help.pd 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/help/gemglfw2window-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,222 @@ +#N canvas 55 51 885 613 10; +#X declare -lib Gem; +#X text 465 17 standard messages; +#X text 47 51 [gemglfw2window]; +#X text 18 79 part of Gem; +#X text 13 145 [gemglfw2window] uses GLFW (version2) to create windows. +; +#X obj 441 515 print unknown.message; +#X obj 367 515 route bang; +#X obj 367 558 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144 +-4034 -1; +#X obj 648 560 print info; +#X obj 424 537 s \$0-info; +#X text 485 537 feedback about the window; +#X obj 648 514 r \$0-info; +#X obj 648 537 spigot; +#X obj 695 539 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 407 45 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 75 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 105 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 135 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 165 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 195 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 225 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 255 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 285 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 315 cnv 15 470 25 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 367 386 t a; +#X obj 407 345 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X msg 411 48 create; +#X msg 411 78 bang; +#X msg 411 108 destroy; +#X text 515 79 clear window \, activate openGL-context \, and send +render-bang; +#X text 515 110 destroy the window; +#X text 515 49 create the window; +#X text 515 139 single-buffered(1) or double-buffered(2) rendering +; +#X msg 411 138 buffer 2; +#X msg 411 168 FSAA \$1; +#X text 515 169 Full Screen Antia Aliasing mode; +#X msg 411 198 title foo; +#X text 515 199 title of the window; +#X msg 411 228 dimen 640 460; +#X text 515 229 change dimension of the window; +#X msg 411 258 offset 100 100; +#X text 515 259 change position of the window; +#X text 515 319 turn on/off window borders; +#X text 515 349 (don't) show cursor when it's on the window; +#X obj 407 395 cnv 15 470 25 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X msg 421 399 blurb; +#X text 515 400 some random unknown message; +#X obj 407 425 cnv 15 470 25 empty empty empty 20 12 0 14 -257985 -66577 +0; +#X obj 38 553 declare -lib Gem; +#X text 24 529 last updated for Gem-0.94; +#X msg 411 348 cursor \$1; +#X obj 500 350 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 411 318 border \$1; +#X obj 500 320 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 500 290 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 515 289 switch fullscreen mode on/off; +#X msg 411 288 fullscreen \$1; +#X obj 235 348 metro 100; +#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 43 209 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#N canvas 348 141 312 657 keyboard 0; +#X obj 54 265 r \$0-info; +#X obj 54 286 route keyboard; +#X obj 54 307 list split 1; +#X obj 54 328 list trim; +#X obj 54 349 route keyname key; +#X obj 54 400 unpack s f; +#X symbolatom 54 421 10 0 0 0 - - -; +#X floatatom 116 421 5 0 0 0 - - -; +#X floatatom 187 421 5 0 0 0 - - -; +#X obj 154 400 unpack; +#X floatatom 154 421 5 0 0 0 - - -; +#X msg 54 582; +#X obj 18 127 cnv 15 100 100 empty empty empty 20 12 0 14 -154295 -66577 +0; +#X obj 128 127 cnv 15 100 100 empty empty empty 20 12 0 14 -155048 +-66577 0; +#X obj 238 127 cnv 15 40 100 empty empty empty 20 12 0 14 -223782 -66577 +0; +#X text 38 129 keystroke; +#X text 146 129 keyname; +#X text 247 128 key; +#X text 34 153 ; +#X text 34 171 ; +#X text 34 189 ; +#X text 34 207 <ä>; +#X msg 154 153 A; +#X msg 154 171 ; +#X msg 154 207 Þ; +#X msg 154 189 A; +#X text 244 153 65; +#X text 244 189 65; +#X text 244 171 16; +#X text 244 207 222; +#X text 17 139 ===========================================; +#X text 17 23 While Gem tries to provide a consistent platform-independent +interface \, the values returned by [gemkeyboard] and [gemkeyname] +might depend on the actual window toolkit., f 43; +#X text 125 264 <- from [gem*window]; +#N canvas 5 51 450 300 record 0; +#X obj 244 15 r \$0-info; +#X obj 244 66 route keyboard; +#X obj 244 87 list split 1; +#X obj 244 108 list trim; +#X msg 244 221 add2 \$1; +#X msg 300 221 set; +#X obj 300 200 loadbang; +#X text 315 14 <- from [gem*window]; +#X obj 244 129 route keyname; +#X obj 244 152 unpack s f; +#X obj 244 200 spigot; +#X obj 301 179 == 0; +#X obj 244 244 t a; +#X obj 244 267 outlet; +#X obj 100 100 f; +#X obj 185 117 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 100 118 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 244 40 spigot; +#X connect 0 0 17 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 8 0; +#X connect 4 0 12 0; +#X connect 5 0 12 0; +#X connect 6 0 5 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 9 1 11 0; +#X connect 10 0 4 0; +#X connect 11 0 10 1; +#X connect 12 0 13 0; +#X connect 15 0 5 0; +#X connect 16 0 17 1; +#X connect 17 0 1 0; +#X coords 0 -1 1 1 100 33 1 100 100; +#X restore 54 543 pd record keyup; +#X text 65 6 FIXXME; +#X text 10 102 values returned by [gemglfw2window]; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 4 1 9 0; +#X connect 5 0 6 0; +#X connect 5 1 7 0; +#X connect 9 0 10 0; +#X connect 9 1 8 0; +#X connect 33 0 11 0; +#X restore 58 224 pd keyboard; +#X obj 363 459 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#N canvas 60 208 572 395 specific 0; +#X obj 88 303 outlet; +#X msg 88 40 offset \$1 \$1; +#X floatatom 88 21 5 0 0 0 - - -; +#X floatatom 128 61 5 0 0 0 - - -; +#X msg 128 80 dimen \$1 \$1; +#X text 201 46 change window dimension/position on the fly; +#X msg 173 272 glprofile 2 1; +#X text 271 267 switch to openGL-profile ( ) for newly +created windows; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 4 0; +#X connect 4 0 0 0; +#X connect 6 0 0 0; +#X restore 421 429 pd specific messages; +#X obj 367 472 gemglfw2window; +#X text 765 319 (NOT IMPLEMENTED); +#X connect 5 0 6 0; +#X connect 5 1 8 0; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 12 0 11 1; +#X connect 23 0 62 0; +#X connect 25 0 23 0; +#X connect 26 0 23 0; +#X connect 27 0 23 0; +#X connect 32 0 23 0; +#X connect 33 0 23 0; +#X connect 35 0 23 0; +#X connect 37 0 23 0; +#X connect 39 0 23 0; +#X connect 44 0 62 0; +#X connect 49 0 23 0; +#X connect 50 0 49 0; +#X connect 51 0 23 0; +#X connect 52 0 51 0; +#X connect 53 0 55 0; +#X connect 55 0 23 0; +#X connect 56 0 23 0; +#X connect 57 0 56 0; +#X connect 61 0 62 0; +#X connect 62 0 5 0; +#X connect 62 1 4 0; diff -Nru gem-0.94~pre1/help/gemglfw3window-help.pd gem-0.94/help/gemglfw3window-help.pd --- gem-0.94~pre1/help/gemglfw3window-help.pd 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/help/gemglfw3window-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,227 @@ +#N canvas 55 51 885 613 10; +#X declare -lib Gem; +#X text 13 145 [gemglfw3window] uses GLFW (version3) to create windows. +; +#X obj 441 515 print unknown.message; +#X obj 367 515 route bang; +#X obj 367 558 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144 +-4034 -1; +#X obj 648 560 print info; +#X obj 424 537 s \$0-info; +#X text 485 537 feedback about the window; +#X obj 648 514 r \$0-info; +#X obj 648 537 spigot; +#X obj 695 539 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 407 45 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 75 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 105 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 135 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 165 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 195 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 225 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 255 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 285 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 315 cnv 15 470 25 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 367 386 t a; +#X obj 407 345 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X msg 411 48 create; +#X msg 411 78 bang; +#X msg 411 108 destroy; +#X text 515 79 clear window \, activate openGL-context \, and send +render-bang; +#X text 515 110 destroy the window; +#X text 515 49 create the window; +#X text 515 139 single-buffered(1) or double-buffered(2) rendering +; +#X msg 411 138 buffer 2; +#X msg 411 168 FSAA \$1; +#X text 515 169 Full Screen Antia Aliasing mode; +#X msg 411 198 title foo; +#X text 515 199 title of the window; +#X msg 411 228 dimen 640 460; +#X text 515 229 change dimension of the window; +#X msg 411 258 offset 100 100; +#X text 515 259 change position of the window; +#X text 515 319 turn on/off window borders; +#X text 515 349 (don't) show cursor when it's on the window; +#X obj 407 395 cnv 15 470 25 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X text 465 17 standard messages; +#X msg 421 399 blurb; +#X text 515 400 some random unknown message; +#X obj 407 425 cnv 15 470 25 empty empty empty 20 12 0 14 -257985 -66577 +0; +#X text 47 51 [gemglfw3window]; +#X text 18 79 part of Gem; +#X obj 38 553 declare -lib Gem; +#X text 24 529 last updated for Gem-0.94; +#X msg 411 348 cursor \$1; +#X obj 500 350 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 411 318 border \$1; +#X obj 500 320 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 500 290 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 515 289 switch fullscreen mode on/off; +#X msg 411 288 fullscreen \$1; +#X obj 235 348 metro 100; +#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 43 209 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#N canvas 348 141 312 657 keyboard 0; +#X obj 54 265 r \$0-info; +#X obj 54 286 route keyboard; +#X obj 54 307 list split 1; +#X obj 54 328 list trim; +#X obj 54 349 route keyname key; +#X obj 54 400 unpack s f; +#X symbolatom 54 421 10 0 0 0 - - -; +#X floatatom 116 421 5 0 0 0 - - -; +#X floatatom 187 421 5 0 0 0 - - -; +#X obj 154 400 unpack; +#X floatatom 154 421 5 0 0 0 - - -; +#X msg 54 582; +#X obj 18 127 cnv 15 100 100 empty empty empty 20 12 0 14 -154295 -66577 +0; +#X obj 128 127 cnv 15 100 100 empty empty empty 20 12 0 14 -155048 +-66577 0; +#X obj 238 127 cnv 15 40 100 empty empty empty 20 12 0 14 -223782 -66577 +0; +#X text 38 129 keystroke; +#X text 146 129 keyname; +#X text 247 128 key; +#X text 34 153 ; +#X text 34 171 ; +#X text 34 189 ; +#X text 34 207 <ä>; +#X msg 154 153 A; +#X msg 154 171 ; +#X msg 154 207 Þ; +#X msg 154 189 A; +#X text 244 153 65; +#X text 244 189 65; +#X text 244 171 16; +#X text 244 207 222; +#X text 17 139 ===========================================; +#X text 17 23 While Gem tries to provide a consistent platform-independent +interface \, the values returned by [gemkeyboard] and [gemkeyname] +might depend on the actual window toolkit., f 43; +#X text 125 264 <- from [gem*window]; +#N canvas 5 51 450 300 record 0; +#X obj 244 15 r \$0-info; +#X obj 244 66 route keyboard; +#X obj 244 87 list split 1; +#X obj 244 108 list trim; +#X msg 244 221 add2 \$1; +#X msg 300 221 set; +#X obj 300 200 loadbang; +#X text 315 14 <- from [gem*window]; +#X obj 244 129 route keyname; +#X obj 244 152 unpack s f; +#X obj 244 200 spigot; +#X obj 301 179 == 0; +#X obj 244 244 t a; +#X obj 244 267 outlet; +#X obj 100 100 f; +#X obj 185 117 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 100 118 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 244 40 spigot; +#X connect 0 0 17 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 8 0; +#X connect 4 0 12 0; +#X connect 5 0 12 0; +#X connect 6 0 5 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 9 1 11 0; +#X connect 10 0 4 0; +#X connect 11 0 10 1; +#X connect 12 0 13 0; +#X connect 15 0 5 0; +#X connect 16 0 17 1; +#X connect 17 0 1 0; +#X coords 0 -1 1 1 100 33 1 100 100; +#X restore 54 543 pd record keyup; +#X text 10 102 values returned by [gemglfw3window]; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 4 1 9 0; +#X connect 5 0 6 0; +#X connect 5 1 7 0; +#X connect 9 0 10 0; +#X connect 9 1 8 0; +#X connect 33 0 11 0; +#X restore 58 224 pd keyboard; +#X obj 363 459 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 367 472 gemglfw3window; +#X text 765 319 (NOT IMPLEMENTED); +#N canvas 60 208 572 395 specific 0; +#X obj 88 303 outlet; +#X msg 88 40 offset \$1 \$1; +#X floatatom 88 21 5 0 0 0 - - -; +#X floatatom 128 61 5 0 0 0 - - -; +#X msg 128 80 dimen \$1 \$1; +#X text 201 46 change window dimension/position on the fly; +#X obj 173 203 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 173 222 gles \$1; +#X text 233 226 switch to openGL-ES (for newly created windows); +#X msg 173 272 glprofile 2 1; +#X text 271 267 switch to openGL-profile ( ) for newly +created windows; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 4 0; +#X connect 4 0 0 0; +#X connect 6 0 7 0; +#X connect 7 0 0 0; +#X connect 9 0 0 0; +#X restore 421 429 pd specific messages; +#X connect 2 0 3 0; +#X connect 2 1 5 0; +#X connect 7 0 8 0; +#X connect 8 0 4 0; +#X connect 9 0 8 1; +#X connect 20 0 61 0; +#X connect 22 0 20 0; +#X connect 23 0 20 0; +#X connect 24 0 20 0; +#X connect 29 0 20 0; +#X connect 30 0 20 0; +#X connect 32 0 20 0; +#X connect 34 0 20 0; +#X connect 36 0 20 0; +#X connect 42 0 61 0; +#X connect 49 0 20 0; +#X connect 50 0 49 0; +#X connect 51 0 20 0; +#X connect 52 0 51 0; +#X connect 53 0 55 0; +#X connect 55 0 20 0; +#X connect 56 0 20 0; +#X connect 57 0 56 0; +#X connect 61 0 2 0; +#X connect 61 1 1 0; +#X connect 63 0 61 0; diff -Nru gem-0.94~pre1/help/gemglutwindow-help.pd gem-0.94/help/gemglutwindow-help.pd --- gem-0.94~pre1/help/gemglutwindow-help.pd 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/help/gemglutwindow-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,240 @@ +#N canvas 55 51 885 613 10; +#X declare -lib Gem; +#X text 13 145 [gemglutwindow] uses GLUT (the openGL Utility Toolkit) +to create windows.; +#X obj 441 515 print unknown.message; +#X obj 367 515 route bang; +#X obj 367 558 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144 +-4034 -1; +#X obj 648 560 print info; +#X obj 424 537 s \$0-info; +#X text 485 537 feedback about the window; +#X obj 648 514 r \$0-info; +#X obj 648 537 spigot; +#X obj 695 539 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 407 45 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 75 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 105 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 135 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 165 cnv 15 470 25 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 407 195 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 225 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 255 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 285 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 315 cnv 15 470 25 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 367 386 t a; +#X obj 407 345 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X msg 411 48 create; +#X msg 411 78 bang; +#X msg 411 108 destroy; +#X text 515 79 clear window \, activate openGL-context \, and send +render-bang; +#X text 515 110 destroy the window; +#X text 515 49 create the window; +#X text 515 139 single-buffered(1) or double-buffered(2) rendering +; +#X msg 411 138 buffer 2; +#X msg 411 168 FSAA \$1; +#X text 515 169 Full Screen Antia Aliasing mode; +#X msg 411 198 title foo; +#X text 515 199 title of the window; +#X msg 411 228 dimen 640 460; +#X text 515 229 change dimension of the window; +#X msg 411 258 offset 100 100; +#X text 515 259 change position of the window; +#X text 515 319 turn on/off window borders; +#X text 515 349 (don't) show cursor when it's on the window; +#X obj 407 395 cnv 15 470 25 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X text 465 17 standard messages; +#X msg 421 399 blurb; +#X text 515 400 some random unknown message; +#X obj 407 425 cnv 15 470 25 empty empty empty 20 12 0 14 -257985 -66577 +0; +#X text 47 51 [gemglutwindow]; +#X text 18 79 part of Gem; +#X obj 38 553 declare -lib Gem; +#X text 24 529 last updated for Gem-0.94; +#X msg 411 348 cursor \$1; +#X obj 500 350 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 411 318 border \$1; +#X obj 500 320 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 500 290 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 515 289 switch fullscreen mode on/off; +#X msg 411 288 fullscreen \$1; +#X obj 235 348 metro 100; +#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 43 209 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#N canvas 348 141 312 657 keyboard 0; +#X obj 54 265 r \$0-info; +#X obj 54 286 route keyboard; +#X obj 54 307 list split 1; +#X obj 54 328 list trim; +#X obj 54 349 route keyname key; +#X obj 54 400 unpack s f; +#X symbolatom 54 421 10 0 0 0 - - -; +#X floatatom 116 421 5 0 0 0 - - -; +#X floatatom 187 421 5 0 0 0 - - -; +#X obj 154 400 unpack; +#X floatatom 154 421 5 0 0 0 - - -; +#X msg 54 582; +#X obj 18 127 cnv 15 100 100 empty empty empty 20 12 0 14 -154295 -66577 +0; +#X obj 128 127 cnv 15 100 100 empty empty empty 20 12 0 14 -155048 +-66577 0; +#X obj 238 127 cnv 15 40 100 empty empty empty 20 12 0 14 -223782 -66577 +0; +#X text 38 129 keystroke; +#X text 146 129 keyname; +#X text 247 128 key; +#X text 34 153 ; +#X text 34 171 ; +#X text 34 189 ; +#X text 34 207 <ä>; +#X msg 154 189 A; +#X text 244 189 65; +#X text 17 139 ===========================================; +#X text 17 23 While Gem tries to provide a consistent platform-independent +interface \, the values returned by [gemkeyboard] and [gemkeyname] +might depend on the actual window toolkit., f 43; +#X text 125 264 <- from [gem*window]; +#N canvas 5 51 450 300 record 0; +#X obj 244 15 r \$0-info; +#X obj 244 66 route keyboard; +#X obj 244 87 list split 1; +#X obj 244 108 list trim; +#X msg 244 221 add2 \$1; +#X msg 300 221 set; +#X obj 300 200 loadbang; +#X text 315 14 <- from [gem*window]; +#X obj 244 129 route keyname; +#X obj 244 152 unpack s f; +#X obj 244 200 spigot; +#X obj 301 179 == 0; +#X obj 244 244 t a; +#X obj 244 267 outlet; +#X obj 100 100 f; +#X obj 185 117 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 100 118 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 244 40 spigot; +#X connect 0 0 17 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 8 0; +#X connect 4 0 12 0; +#X connect 5 0 12 0; +#X connect 6 0 5 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 9 1 11 0; +#X connect 10 0 4 0; +#X connect 11 0 10 1; +#X connect 12 0 13 0; +#X connect 15 0 5 0; +#X connect 16 0 17 1; +#X connect 17 0 1 0; +#X coords 0 -1 1 1 100 33 1 100 100; +#X restore 54 543 pd record keyup; +#X msg 154 153 a; +#X msg 154 207 ä; +#X msg 154 171 ; +#X text 244 153 97; +#X text 244 171 112; +#X text 244 207 228; +#X text 10 102 values returned by [gemglutwindow]; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 4 1 9 0; +#X connect 5 0 6 0; +#X connect 5 1 7 0; +#X connect 9 0 10 0; +#X connect 9 1 8 0; +#X connect 27 0 11 0; +#X restore 58 224 pd keyboard; +#X obj 363 459 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 367 472 gemglutwindow; +#X text 765 319 (NOT IMPLEMENTED); +#X text 765 169 (NOT IMPLEMENTED); +#N canvas 60 208 572 395 specific 0; +#X obj 88 303 outlet; +#X msg 88 40 offset \$1 \$1; +#X floatatom 88 21 5 0 0 0 - - -; +#X floatatom 128 61 5 0 0 0 - - -; +#X msg 128 80 dimen \$1 \$1; +#X text 201 46 change window dimension/position on the fly; +#X msg 288 97 menu; +#X obj 289 127 r \$0-info; +#X obj 289 150 route menu; +#X floatatom 289 243 5 0 0 0 - - -; +#X obj 289 264 i; +#X msg 289 290 addMenu \$1 File 0 \, addMenu \$1 Gem 2 \, addMenu \$1 +Quit 1; +#X obj 289 176 route new float; +#X floatatom 416 212 5 0 0 1 menu - -; +#X text 326 242 ID of the newly created menu; +#X text 320 271 add entries to the new menu, f 62; +#X text 625 290 addMenu <value>; +#X text 510 212 <- selected menu; +#X text 336 96 <- create a new right-click menu; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 4 0; +#X connect 4 0 0 0; +#X connect 6 0 0 0; +#X connect 7 0 8 0; +#X connect 8 0 12 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 11 0 0 0; +#X connect 12 0 9 0; +#X connect 12 1 13 0; +#X restore 421 429 pd specific messages; +#X connect 2 0 3 0; +#X connect 2 1 5 0; +#X connect 7 0 8 0; +#X connect 8 0 4 0; +#X connect 9 0 8 1; +#X connect 20 0 61 0; +#X connect 22 0 20 0; +#X connect 23 0 20 0; +#X connect 24 0 20 0; +#X connect 29 0 20 0; +#X connect 30 0 20 0; +#X connect 32 0 20 0; +#X connect 34 0 20 0; +#X connect 36 0 20 0; +#X connect 42 0 61 0; +#X connect 49 0 20 0; +#X connect 50 0 49 0; +#X connect 51 0 20 0; +#X connect 52 0 51 0; +#X connect 53 0 55 0; +#X connect 55 0 20 0; +#X connect 56 0 20 0; +#X connect 57 0 56 0; +#X connect 61 0 2 0; +#X connect 61 1 1 0; +#X connect 64 0 61 0; diff -Nru gem-0.94~pre1/help/gemglxwindow-help.pd gem-0.94/help/gemglxwindow-help.pd --- gem-0.94~pre1/help/gemglxwindow-help.pd 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/help/gemglxwindow-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,213 @@ +#N canvas 55 51 885 613 10; +#X declare -lib Gem; +#X text 13 145 [gemglxwindow] uses the X-window system directly (via +GLX) to create windows (mostly on linux).; +#X obj 441 515 print unknown.message; +#X obj 367 515 route bang; +#X obj 367 558 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144 +-4034 -1; +#X obj 648 560 print info; +#X obj 424 537 s \$0-info; +#X text 485 537 feedback about the window; +#X obj 648 514 r \$0-info; +#X obj 648 537 spigot; +#X obj 695 539 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 407 45 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 75 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 105 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 135 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 165 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 195 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 225 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 255 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 285 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 315 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 367 386 t a; +#X obj 407 345 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X msg 411 48 create; +#X msg 411 78 bang; +#X msg 411 108 destroy; +#X text 515 79 clear window \, activate openGL-context \, and send +render-bang; +#X text 515 110 destroy the window; +#X text 515 49 create the window; +#X text 515 139 single-buffered(1) or double-buffered(2) rendering +; +#X msg 411 138 buffer 2; +#X msg 411 168 FSAA \$1; +#X text 515 169 Full Screen Antia Aliasing mode; +#X msg 411 198 title foo; +#X text 515 199 title of the window; +#X msg 411 228 dimen 640 460; +#X text 515 229 change dimension of the window; +#X msg 411 258 offset 100 100; +#X text 515 259 change position of the window; +#X text 515 319 turn on/off window borders; +#X text 515 349 (don't) show cursor when it's on the window; +#X obj 407 395 cnv 15 470 25 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X text 465 17 standard messages; +#X msg 421 399 blurb; +#X text 515 400 some random unknown message; +#X obj 407 425 cnv 15 470 25 empty empty empty 20 12 0 14 -257985 -66577 +0; +#X text 47 51 [gemglxwindow]; +#X text 18 79 part of Gem; +#X obj 38 553 declare -lib Gem; +#X text 24 529 last updated for Gem-0.94; +#X msg 411 348 cursor \$1; +#X obj 500 350 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 411 318 border \$1; +#X obj 500 320 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 500 290 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 515 289 switch fullscreen mode on/off; +#X msg 411 288 fullscreen \$1; +#X obj 235 348 metro 100; +#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 43 209 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#N canvas 348 141 312 657 keyboard 0; +#X obj 54 265 r \$0-info; +#X obj 54 286 route keyboard; +#X obj 54 307 list split 1; +#X obj 54 328 list trim; +#X obj 54 349 route keyname key; +#X obj 54 400 unpack s f; +#X symbolatom 54 421 10 0 0 0 - - -; +#X floatatom 116 421 5 0 0 0 - - -; +#X floatatom 187 421 5 0 0 0 - - -; +#X obj 154 400 unpack; +#X floatatom 154 421 5 0 0 0 - - -; +#X msg 54 582; +#X obj 18 127 cnv 15 100 100 empty empty empty 20 12 0 14 -154295 -66577 +0; +#X obj 128 127 cnv 15 100 100 empty empty empty 20 12 0 14 -155048 +-66577 0; +#X obj 238 127 cnv 15 40 100 empty empty empty 20 12 0 14 -223782 -66577 +0; +#X text 38 129 keystroke; +#X text 146 129 keyname; +#X text 247 128 key; +#X text 34 153 <a>; +#X text 34 171 <LeftShift>; +#X text 34 189 <A>; +#X text 34 207 <ä>; +#X msg 154 189 A; +#X text 17 139 ===========================================; +#X text 17 23 While Gem tries to provide a consistent platform-independent +interface \, the values returned by [gemkeyboard] and [gemkeyname] +might depend on the actual window toolkit., f 43; +#X text 125 264 <- from [gem*window]; +#N canvas 5 51 450 300 record 0; +#X obj 244 15 r \$0-info; +#X obj 244 66 route keyboard; +#X obj 244 87 list split 1; +#X obj 244 108 list trim; +#X msg 244 221 add2 \$1; +#X msg 300 221 set; +#X obj 300 200 loadbang; +#X text 315 14 <- from [gem*window]; +#X obj 244 129 route keyname; +#X obj 244 152 unpack s f; +#X obj 244 200 spigot; +#X obj 301 179 == 0; +#X obj 244 244 t a; +#X obj 244 267 outlet; +#X obj 100 100 f; +#X obj 185 117 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 100 118 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 244 40 spigot; +#X connect 0 0 17 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 8 0; +#X connect 4 0 12 0; +#X connect 5 0 12 0; +#X connect 6 0 5 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 9 1 11 0; +#X connect 10 0 4 0; +#X connect 11 0 10 1; +#X connect 12 0 13 0; +#X connect 15 0 5 0; +#X connect 16 0 17 1; +#X connect 17 0 1 0; +#X coords 0 -1 1 1 100 33 1 100 100; +#X restore 54 543 pd record keyup; +#X msg 154 153 a; +#X msg 154 171 Shift_L; +#X msg 154 207 ä; +#X text 244 153 38; +#X text 244 171 50; +#X text 244 189 38; +#X text 244 207 48; +#X text 10 102 values returned by [gemglxwindow]; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 4 1 9 0; +#X connect 5 0 6 0; +#X connect 5 1 7 0; +#X connect 9 0 10 0; +#X connect 9 1 8 0; +#X connect 26 0 11 0; +#X restore 58 224 pd keyboard; +#X obj 363 459 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 367 472 gemglxwindow; +#N canvas 60 208 572 395 specific 0; +#X obj 88 303 outlet; +#X text 182 261 allow the window to become transparent; +#X obj 88 238 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 88 260 transparent \$1; +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X restore 421 429 pd specific messages; +#X connect 2 0 3 0; +#X connect 2 1 5 0; +#X connect 7 0 8 0; +#X connect 8 0 4 0; +#X connect 9 0 8 1; +#X connect 20 0 61 0; +#X connect 22 0 20 0; +#X connect 23 0 20 0; +#X connect 24 0 20 0; +#X connect 29 0 20 0; +#X connect 30 0 20 0; +#X connect 32 0 20 0; +#X connect 34 0 20 0; +#X connect 36 0 20 0; +#X connect 42 0 61 0; +#X connect 49 0 20 0; +#X connect 50 0 49 0; +#X connect 51 0 20 0; +#X connect 52 0 51 0; +#X connect 53 0 55 0; +#X connect 55 0 20 0; +#X connect 56 0 20 0; +#X connect 57 0 56 0; +#X connect 61 0 2 0; +#X connect 61 1 1 0; +#X connect 62 0 61 0; diff -Nru gem-0.94~pre1/help/gemhead-help.pd gem-0.94/help/gemhead-help.pd --- gem-0.94~pre1/help/gemhead-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/gemhead-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ #N canvas 30 89 960 649 10; -#X text 452 8 GEM object; +#X declare -lib Gem; +#X text 742 8 GEM object; #X obj 8 438 cnv 15 430 150 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 18 440 Inlets:; @@ -97,6 +98,7 @@ #X obj 791 183 translateXYZ 2 0 0; #X text 42 520 Inlet 1: context <name> : change rendering context (for multiple windows).; +#X obj 818 8 declare -lib Gem; #X connect 12 0 14 0; #X connect 14 0 12 0; #X connect 26 0 30 0; diff -Nru gem-0.94~pre1/help/gemkeyboard-help.pd gem-0.94/help/gemkeyboard-help.pd --- gem-0.94~pre1/help/gemkeyboard-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/gemkeyboard-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 64 27 679 445 10; +#N canvas 64 61 679 445 10; +#X declare -lib Gem; #X obj 27 85 cnv 15 450 170 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 28 303 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 @@ -9,7 +10,7 @@ #X text 37 264 Arguments:; #X text 472 28 GEM object; #X text 29 337 Outlets:; -#X text 495 49 Example:; +#X text 485 69 Example:; #X text 74 50 Class: control object; #X obj 486 84 cnv 15 170 180 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -57,6 +58,7 @@ #X floatatom 508 153 5 0 0 1 keyCode - -; #X text 488 274 see also:; #X obj 489 299 gemkeyname; +#X obj 556 30 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 24 0 25 0; diff -Nru gem-0.94~pre1/help/gemkeyname-help.pd gem-0.94/help/gemkeyname-help.pd --- gem-0.94~pre1/help/gemkeyname-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/gemkeyname-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 64 27 679 445 10; +#N canvas 64 61 679 445 10; +#X declare -lib Gem; #X obj 27 85 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 27 325 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 @@ -9,7 +10,7 @@ #X text 36 291 Arguments:; #X text 472 28 GEM object; #X text 35 361 Outlets:; -#X text 495 49 Example:; +#X text 495 69 Example:; #X text 74 50 Class: control object; #X obj 486 84 cnv 15 170 180 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -62,6 +63,7 @@ #X floatatom 508 160 2 0 0 1 state - -; #X symbolatom 565 134 10 0 0 0 keyName - -; #X obj 508 115 gemkeyname; +#X obj 558 28 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 29 0 27 0; diff -Nru gem-0.94~pre1/help/gemlist-help.pd gem-0.94/help/gemlist-help.pd --- gem-0.94~pre1/help/gemlist-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/gemlist-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 443 181 661 405 10; +#X declare -lib Gem; #X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 216 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 @@ -58,6 +59,7 @@ #X obj 498 107 route gem_state; #X obj 498 127 route float; #X obj 498 86 t a a; +#X obj 538 8 declare -lib Gem; #X connect 20 0 21 0; #X connect 21 0 20 0; #X connect 23 0 33 0; diff -Nru gem-0.94~pre1/help/gemlist_info-help.pd gem-0.94/help/gemlist_info-help.pd --- gem-0.94~pre1/help/gemlist_info-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/gemlist_info-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 594 117 688 676 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 206 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -40,7 +41,8 @@ #X text 10 414 Create window:; #X text 50 12 Synopsis: [gemlist_info]; #X text 71 31 Class: information object; -#X text 29 77 Description: get current transformation of a gemlist; +#X text 29 77 Description: get current transformation of a gemlist +; #X text 42 94 [gemlist_info] accepts a gemList decompost the transformation matrix in basic transformation (translation \, scale \, shear \, rotation) ; @@ -260,6 +262,7 @@ #X text 76 349 <- more about gemlist_info; #X text 18 375 see also :; #X obj 100 375 gemlist_matrix; +#X obj 548 8 declare -lib Gem; #X connect 11 0 12 0; #X connect 12 0 11 0; #X connect 27 0 56 0; diff -Nru gem-0.94~pre1/help/gemlist_matrix-help.pd gem-0.94/help/gemlist_matrix-help.pd --- gem-0.94~pre1/help/gemlist_matrix-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/gemlist_matrix-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 594 117 675 520 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 206 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -95,6 +96,7 @@ #X text 42 94 [gemlist_matrix] accepts a gemList and output the transformation matrix.; #X text 62 265 Outlet 2: transformation matrix (16 floats); +#X obj 538 8 declare -lib Gem; #X connect 11 0 12 0; #X connect 12 0 11 0; #X connect 19 0 32 0; diff -Nru gem-0.94~pre1/help/gemmacoswindow-help.pd gem-0.94/help/gemmacoswindow-help.pd --- gem-0.94~pre1/help/gemmacoswindow-help.pd 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/help/gemmacoswindow-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,216 @@ +#N canvas 55 51 885 613 10; +#X declare -lib Gem; +#X text 13 145 [gemmacoswindow] uses Cocoa to create windows (only on OSX).; +#X text 20 172 it's supposed to be the default window on modern macOS. +; +#X obj 441 515 print unknown.message; +#X obj 367 515 route bang; +#X obj 367 558 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144 +-4034 -1; +#X obj 648 560 print info; +#X obj 424 537 s \$0-info; +#X text 485 537 feedback about the window; +#X obj 648 514 r \$0-info; +#X obj 648 537 spigot; +#X obj 695 539 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 407 45 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 75 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 105 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 135 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 165 cnv 15 470 25 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 407 195 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 225 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 255 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 285 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 315 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 367 386 t a; +#X obj 407 345 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X msg 411 48 create; +#X msg 411 78 bang; +#X msg 411 108 destroy; +#X text 515 79 clear window \, activate openGL-context \, and send +render-bang; +#X text 515 110 destroy the window; +#X text 515 49 create the window; +#X text 515 139 single-buffered(1) or double-buffered(2) rendering +; +#X msg 411 138 buffer 2; +#X msg 411 168 FSAA \$1; +#X text 515 169 Full Screen Antia Aliasing mode; +#X msg 411 198 title foo; +#X text 515 199 title of the window; +#X msg 411 228 dimen 640 460; +#X text 515 229 change dimension of the window; +#X msg 411 258 offset 100 100; +#X text 515 259 change position of the window; +#X text 515 319 turn on/off window borders; +#X text 515 349 (don't) show cursor when it's on the window; +#X obj 407 395 cnv 15 470 25 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X text 465 17 standard messages; +#X msg 421 399 blurb; +#X text 515 400 some random unknown message; +#X obj 407 425 cnv 15 470 25 empty empty empty 20 12 0 14 -257985 -66577 +0; +#X text 47 51 [gemmacoswindow]; +#X text 18 79 part of Gem; +#X obj 38 553 declare -lib Gem; +#X text 24 529 last updated for Gem-0.94; +#X msg 411 348 cursor \$1; +#X obj 500 350 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 411 318 border \$1; +#X obj 500 320 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 500 290 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 515 289 switch fullscreen mode on/off; +#X msg 411 288 fullscreen \$1; +#X obj 235 348 metro 100; +#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 43 209 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#N canvas 348 141 312 657 keyboard 0; +#X obj 54 265 r \$0-info; +#X obj 54 286 route keyboard; +#X obj 54 307 list split 1; +#X obj 54 328 list trim; +#X obj 54 349 route keyname key; +#X obj 54 400 unpack s f; +#X symbolatom 54 421 10 0 0 0 - - -; +#X floatatom 116 421 5 0 0 0 - - -; +#X floatatom 187 421 5 0 0 0 - - -; +#X obj 154 400 unpack; +#X floatatom 154 421 5 0 0 0 - - -; +#X msg 54 582; +#X obj 18 127 cnv 15 100 100 empty empty empty 20 12 0 14 -154295 -66577 +0; +#X obj 128 127 cnv 15 100 100 empty empty empty 20 12 0 14 -155048 +-66577 0; +#X obj 238 127 cnv 15 40 100 empty empty empty 20 12 0 14 -223782 -66577 +0; +#X text 38 129 keystroke; +#X text 146 129 keyname; +#X text 247 128 key; +#X text 34 153 <a>; +#X text 34 171 <LeftShift>; +#X text 34 189 <A>; +#X text 34 207 <ä>; +#X msg 154 153 A; +#X msg 154 171 ; +#X msg 154 207 Þ; +#X msg 154 189 A; +#X text 244 153 65; +#X text 244 189 65; +#X text 244 171 16; +#X text 244 207 222; +#X text 17 139 ===========================================; +#X text 17 23 While Gem tries to provide a consistent platform-independent +interface \, the values returned by [gemkeyboard] and [gemkeyname] +might depend on the actual window toolkit., f 43; +#X text 125 264 <- from [gem*window]; +#N canvas 5 51 450 300 record 0; +#X obj 244 15 r \$0-info; +#X obj 244 66 route keyboard; +#X obj 244 87 list split 1; +#X obj 244 108 list trim; +#X msg 244 221 add2 \$1; +#X msg 300 221 set; +#X obj 300 200 loadbang; +#X text 315 14 <- from [gem*window]; +#X obj 244 129 route keyname; +#X obj 244 152 unpack s f; +#X obj 244 200 spigot; +#X obj 301 179 == 0; +#X obj 244 244 t a; +#X obj 244 267 outlet; +#X obj 100 100 f; +#X obj 185 117 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 100 118 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 244 40 spigot; +#X connect 0 0 17 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 8 0; +#X connect 4 0 12 0; +#X connect 5 0 12 0; +#X connect 6 0 5 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 9 1 11 0; +#X connect 10 0 4 0; +#X connect 11 0 10 1; +#X connect 12 0 13 0; +#X connect 15 0 5 0; +#X connect 16 0 17 1; +#X connect 17 0 1 0; +#X coords 0 -1 1 1 100 33 1 100 100; +#X restore 54 543 pd record keyup; +#X text 50 7 FIXXME; +#X text 10 102 values returned by [gemmacoswindow]; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 4 1 9 0; +#X connect 5 0 6 0; +#X connect 5 1 7 0; +#X connect 9 0 10 0; +#X connect 9 1 8 0; +#X connect 33 0 11 0; +#X restore 58 224 pd keyboard; +#X obj 363 459 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 367 472 gemmacoswindow; +#X text 765 169 (NOT IMPLEMENTED); +#N canvas 60 208 572 395 specific 0; +#X obj 88 303 outlet; +#X obj 88 153 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 88 176 menubar \$1; +#X text 173 178 show/hide the macOS menubar; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X restore 421 429 pd specific messages; +#X connect 3 0 4 0; +#X connect 3 1 6 0; +#X connect 8 0 9 0; +#X connect 9 0 5 0; +#X connect 10 0 9 1; +#X connect 21 0 62 0; +#X connect 23 0 21 0; +#X connect 24 0 21 0; +#X connect 25 0 21 0; +#X connect 30 0 21 0; +#X connect 31 0 21 0; +#X connect 33 0 21 0; +#X connect 35 0 21 0; +#X connect 37 0 21 0; +#X connect 43 0 62 0; +#X connect 50 0 21 0; +#X connect 51 0 50 0; +#X connect 52 0 21 0; +#X connect 53 0 52 0; +#X connect 54 0 56 0; +#X connect 56 0 21 0; +#X connect 57 0 21 0; +#X connect 58 0 57 0; +#X connect 62 0 3 0; +#X connect 62 1 2 0; +#X connect 64 0 62 0; diff -Nru gem-0.94~pre1/help/gemmacwindow-help.pd gem-0.94/help/gemmacwindow-help.pd --- gem-0.94~pre1/help/gemmacwindow-help.pd 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/help/gemmacwindow-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,240 @@ +#N canvas 55 51 885 613 10; +#X declare -lib Gem; +#X text 13 145 [gemmacwindow] uses Carbon to create windows. (only on OSX).; +#X obj 441 515 print unknown.message; +#X obj 367 515 route bang; +#X obj 367 558 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144 +-4034 -1; +#X obj 648 560 print info; +#X obj 424 537 s \$0-info; +#X text 485 537 feedback about the window; +#X obj 648 514 r \$0-info; +#X obj 648 537 spigot; +#X obj 695 539 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 407 45 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 75 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 105 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 135 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 165 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 195 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 225 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 255 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 285 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 315 cnv 15 470 25 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 367 386 t a; +#X obj 407 345 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X msg 411 48 create; +#X msg 411 78 bang; +#X msg 411 108 destroy; +#X text 515 79 clear window \, activate openGL-context \, and send +render-bang; +#X text 515 110 destroy the window; +#X text 515 49 create the window; +#X text 515 139 single-buffered(1) or double-buffered(2) rendering +; +#X msg 411 138 buffer 2; +#X msg 411 168 FSAA \$1; +#X text 515 169 Full Screen Antia Aliasing mode; +#X msg 411 198 title foo; +#X text 515 199 title of the window; +#X msg 411 228 dimen 640 460; +#X text 515 229 change dimension of the window; +#X msg 411 258 offset 100 100; +#X text 515 259 change position of the window; +#X text 515 319 turn on/off window borders; +#X text 515 349 (don't) show cursor when it's on the window; +#X obj 407 395 cnv 15 470 25 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X text 465 17 standard messages; +#X msg 421 399 blurb; +#X text 515 400 some random unknown message; +#X obj 407 425 cnv 15 470 25 empty empty empty 20 12 0 14 -257985 -66577 +0; +#X text 47 51 [gemmacwindow]; +#X text 18 79 part of Gem; +#X obj 38 553 declare -lib Gem; +#X text 24 529 last updated for Gem-0.94; +#X msg 411 348 cursor \$1; +#X obj 500 350 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 411 318 border \$1; +#X obj 500 320 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 500 290 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 515 289 switch fullscreen mode on/off; +#X msg 411 288 fullscreen \$1; +#X obj 235 348 metro 100; +#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 43 209 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#N canvas 348 141 312 657 keyboard 0; +#X obj 54 265 r \$0-info; +#X obj 54 286 route keyboard; +#X obj 54 307 list split 1; +#X obj 54 328 list trim; +#X obj 54 349 route keyname key; +#X obj 54 400 unpack s f; +#X symbolatom 54 421 10 0 0 0 - - -; +#X floatatom 116 421 5 0 0 0 - - -; +#X floatatom 187 421 5 0 0 0 - - -; +#X obj 154 400 unpack; +#X floatatom 154 421 5 0 0 0 - - -; +#X msg 54 582; +#X obj 18 127 cnv 15 100 100 empty empty empty 20 12 0 14 -154295 -66577 +0; +#X obj 128 127 cnv 15 100 100 empty empty empty 20 12 0 14 -155048 +-66577 0; +#X obj 238 127 cnv 15 40 100 empty empty empty 20 12 0 14 -223782 -66577 +0; +#X text 38 129 keystroke; +#X text 146 129 keyname; +#X text 247 128 key; +#X text 34 153 <a>; +#X text 34 171 <LeftShift>; +#X text 34 189 <A>; +#X text 34 207 <ä>; +#X msg 154 153 A; +#X msg 154 171 ; +#X msg 154 207 Þ; +#X msg 154 189 A; +#X text 244 153 65; +#X text 244 189 65; +#X text 244 171 16; +#X text 244 207 222; +#X text 17 139 ===========================================; +#X text 17 23 While Gem tries to provide a consistent platform-independent +interface \, the values returned by [gemkeyboard] and [gemkeyname] +might depend on the actual window toolkit., f 43; +#X text 125 264 <- from [gem*window]; +#N canvas 5 51 450 300 record 0; +#X obj 244 15 r \$0-info; +#X obj 244 66 route keyboard; +#X obj 244 87 list split 1; +#X obj 244 108 list trim; +#X msg 244 221 add2 \$1; +#X msg 300 221 set; +#X obj 300 200 loadbang; +#X text 315 14 <- from [gem*window]; +#X obj 244 129 route keyname; +#X obj 244 152 unpack s f; +#X obj 244 200 spigot; +#X obj 301 179 == 0; +#X obj 244 244 t a; +#X obj 244 267 outlet; +#X obj 100 100 f; +#X obj 185 117 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 100 118 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 244 40 spigot; +#X connect 0 0 17 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 8 0; +#X connect 4 0 12 0; +#X connect 5 0 12 0; +#X connect 6 0 5 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 9 1 11 0; +#X connect 10 0 4 0; +#X connect 11 0 10 1; +#X connect 12 0 13 0; +#X connect 15 0 5 0; +#X connect 16 0 17 1; +#X connect 17 0 1 0; +#X coords 0 -1 1 1 100 33 1 100 100; +#X restore 54 543 pd record keyup; +#X text 50 7 FIXXME; +#X text 10 102 values returned by [gemmacwindow]; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 4 1 9 0; +#X connect 5 0 6 0; +#X connect 5 1 7 0; +#X connect 9 0 10 0; +#X connect 9 1 8 0; +#X connect 33 0 11 0; +#X restore 58 224 pd keyboard; +#X obj 363 459 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 367 472 gemmacwindow; +#X text 765 319 (NOT IMPLEMENTED); +#N canvas 60 208 572 395 specific 0; +#X obj 88 303 outlet; +#X msg 88 40 offset \$1 \$1; +#X floatatom 88 21 5 0 0 0 - - -; +#X floatatom 128 61 5 0 0 0 - - -; +#X msg 128 80 dimen \$1 \$1; +#X text 201 46 change window dimension/position on the fly; +#X msg 288 97 menu; +#X obj 289 127 r \$0-info; +#X obj 289 150 route menu; +#X floatatom 289 243 5 0 0 0 - - -; +#X obj 289 264 i; +#X msg 289 290 addMenu \$1 File 0 \, addMenu \$1 Gem 2 \, addMenu \$1 +Quit 1; +#X obj 289 176 route new float; +#X floatatom 416 212 5 0 0 1 menu - -; +#X text 326 242 ID of the newly created menu; +#X text 320 271 add entries to the new menu, f 62; +#X text 625 290 addMenu <menuid> <title> <value>; +#X text 510 212 <- selected menu; +#X text 336 96 <- create a new right-click menu; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 4 0; +#X connect 4 0 0 0; +#X connect 6 0 0 0; +#X connect 7 0 8 0; +#X connect 8 0 12 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 11 0 0 0; +#X connect 12 0 9 0; +#X connect 12 1 13 0; +#X restore 421 429 pd specific messages; +#X text 16 171 this is a legacy window \, that probably only works on OSX<=10.6. you should use [gemmacoswindow] instead.; +#X connect 2 0 3 0; +#X connect 2 1 5 0; +#X connect 7 0 8 0; +#X connect 8 0 4 0; +#X connect 9 0 8 1; +#X connect 20 0 61 0; +#X connect 22 0 20 0; +#X connect 23 0 20 0; +#X connect 24 0 20 0; +#X connect 29 0 20 0; +#X connect 30 0 20 0; +#X connect 32 0 20 0; +#X connect 34 0 20 0; +#X connect 36 0 20 0; +#X connect 42 0 61 0; +#X connect 49 0 20 0; +#X connect 50 0 49 0; +#X connect 51 0 20 0; +#X connect 52 0 51 0; +#X connect 53 0 55 0; +#X connect 55 0 20 0; +#X connect 56 0 20 0; +#X connect 57 0 56 0; +#X connect 61 0 2 0; +#X connect 61 1 1 0; +#X connect 63 0 61 0; diff -Nru gem-0.94~pre1/help/gemmanager-help.pd gem-0.94/help/gemmanager-help.pd --- gem-0.94~pre1/help/gemmanager-help.pd 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/help/gemmanager-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,21 @@ +#N canvas 6 61 467 618 10; +#X declare -lib Gem; +#X text 335 8 GEM object; +#X obj 8 438 cnv 15 430 150 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 8 76 cnv 15 430 310 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 71 31 Class: control object; +#X text 50 12 Synopsis: [gemmanager]; +#X text 18 440 Messages:; +#X text 34 462 dimen <w> <h>: set global window-dimensions; +#X text 29 77 Description: interact with the global GemState; +#X text 14 111 this is an internal helper-object to interact with the +global GemState.; +#X text 16 148 e.g. it allows to set Gem's knowledge of the current +window-dimensions (important for a few objects like [ortho] or [pix_snap2tex]) +; +#X text 15 195 This is object is probably of little use for the end-user +(e.g.: you); +#X obj 63 401 gemmanager; +#X obj 338 28 declare -lib Gem; diff -Nru gem-0.94~pre1/help/gemmouse-help.pd gem-0.94/help/gemmouse-help.pd --- gem-0.94~pre1/help/gemmouse-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/gemmouse-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 179 30 929 414 10; +#N canvas 179 61 929 414 10; +#X declare -lib Gem; #X obj 7 65 cnv 15 450 170 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 283 cnv 15 450 120 empty empty empty 20 12 0 14 -233017 -66577 @@ -7,7 +8,7 @@ #X obj 8 245 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 17 244 Arguments:; -#X text 452 8 GEM object; +#X text 712 8 GEM object; #X text 9 317 Outlets:; #X text 475 29 Example:; #X text 54 30 Class: control object; @@ -101,6 +102,7 @@ #X connect 12 0 13 0; #X connect 13 0 11 0; #X restore 656 209 pd follow_mouse; +#X obj 788 8 declare -lib Gem; #X connect 11 0 12 0; #X connect 12 0 11 0; #X connect 29 0 30 0; diff -Nru gem-0.94~pre1/help/gemorb-help.pd gem-0.94/help/gemorb-help.pd --- gem-0.94~pre1/help/gemorb-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/gemorb-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ #N canvas 293 148 600 556 10; -#X text 135 37 part of GEM; +#X declare -lib Gem; +#X text 375 7 part of GEM; #X obj 157 187 gemorb 1; #X text 69 93 respond to events of a SpaceOrb on a specified comport. ; @@ -24,6 +25,7 @@ ; #X text 67 503 You can set the pause between the polls of the SpaceOrb with the "timer" message.; +#X obj 458 8 declare -lib Gem; #X connect 1 0 3 0; #X connect 1 1 4 0; #X connect 1 2 5 0; diff -Nru gem-0.94~pre1/help/gemreceive-help.pd gem-0.94/help/gemreceive-help.pd --- gem-0.94~pre1/help/gemreceive-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/gemreceive-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 4 52 570 713 10; +#N canvas 6 61 570 713 10; +#X declare -lib Gem; #X obj 96 51 gemreceive; #X text 169 51 ordered receive; #X obj 72 227 gemreceive foo -1; @@ -38,6 +39,7 @@ #X msg 72 173 bang; #X obj 235 359 s fou; #X msg 107 331 symbol fou; +#X obj 448 18 declare -lib Gem; #X connect 2 0 3 0; #X connect 4 0 5 0; #X connect 6 0 7 0; diff -Nru gem-0.94~pre1/help/gemsdl2window-help.pd gem-0.94/help/gemsdl2window-help.pd --- gem-0.94~pre1/help/gemsdl2window-help.pd 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/help/gemsdl2window-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,247 @@ +#N canvas 674 73 885 613 10; +#X declare -lib Gem; +#X text 13 145 [gemsdl2window] uses the SDL2 toolkit (Simple DirectMedia +Layer) to create windows.; +#X obj 441 515 print unknown.message; +#X obj 367 515 route bang; +#X obj 367 558 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144 +-4034 -1; +#X obj 648 560 print info; +#X obj 424 537 s \$0-info; +#X text 485 537 feedback about the window; +#X obj 648 514 r \$0-info; +#X obj 648 537 spigot; +#X obj 695 539 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 407 45 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 75 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 105 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 135 cnv 15 470 25 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 407 165 cnv 15 470 25 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 407 195 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 225 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 255 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 285 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 315 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 367 386 t a; +#X obj 407 345 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X msg 411 48 create; +#X msg 411 78 bang; +#X msg 411 108 destroy; +#X text 515 79 clear window \, activate openGL-context \, and send +render-bang; +#X text 515 110 destroy the window; +#X text 515 49 create the window; +#X text 515 139 single-buffered(1) or double-buffered(2) rendering +; +#X msg 411 138 buffer 2; +#X msg 411 168 FSAA \$1; +#X text 515 169 Full Screen Antia Aliasing mode; +#X msg 411 198 title foo; +#X text 515 199 title of the window; +#X msg 411 228 dimen 640 460; +#X text 515 229 change dimension of the window; +#X msg 411 258 offset 100 100; +#X text 515 259 change position of the window; +#X text 515 319 turn on/off window borders; +#X text 515 349 (don't) show cursor when it's on the window; +#X obj 407 395 cnv 15 470 25 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X text 465 17 standard messages; +#X msg 421 399 blurb; +#X text 515 400 some random unknown message; +#X obj 407 425 cnv 15 470 25 empty empty empty 20 12 0 14 -257985 -66577 +0; +#X text 47 51 [gemsdl2window]; +#X text 18 79 part of Gem; +#X obj 38 553 declare -lib Gem; +#X text 24 529 last updated for Gem-0.94; +#X msg 411 348 cursor \$1; +#X obj 500 350 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 411 318 border \$1; +#X obj 500 320 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 500 290 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 515 289 switch fullscreen mode on/off; +#X msg 411 288 fullscreen \$1; +#X obj 235 348 metro 100; +#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 43 209 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#N canvas 348 171 312 657 keyboard 0; +#X obj 54 265 r \$0-info; +#X obj 54 286 route keyboard; +#X obj 54 307 list split 1; +#X obj 54 328 list trim; +#X obj 54 349 route keyname key; +#X obj 54 400 unpack s f; +#X symbolatom 54 421 10 0 0 0 - - -; +#X floatatom 116 421 5 0 0 0 - - -; +#X floatatom 187 421 5 0 0 0 - - -; +#X obj 154 400 unpack; +#X floatatom 154 421 5 0 0 0 - - -; +#X msg 54 582; +#X obj 18 127 cnv 15 100 100 empty empty empty 20 12 0 14 -154295 -66577 +0; +#X obj 128 127 cnv 15 100 100 empty empty empty 20 12 0 14 -155048 +-66577 0; +#X obj 238 127 cnv 15 40 100 empty empty empty 20 12 0 14 -223782 -66577 +0; +#X text 38 129 keystroke; +#X text 146 129 keyname; +#X text 247 128 key; +#X text 34 153 <a>; +#X text 34 171 <LeftShift>; +#X text 34 189 <A>; +#X text 34 207 <ä>; +#X text 17 139 ===========================================; +#X text 17 23 While Gem tries to provide a consistent platform-independent +interface \, the values returned by [gemkeyboard] and [gemkeyname] +might depend on the actual window toolkit., f 43; +#X text 125 264 <- from [gem*window]; +#N canvas 5 51 450 300 record 0; +#X obj 244 15 r \$0-info; +#X obj 244 66 route keyboard; +#X obj 244 87 list split 1; +#X obj 244 108 list trim; +#X msg 244 221 add2 \$1; +#X msg 300 221 set; +#X obj 300 200 loadbang; +#X text 315 14 <- from [gem*window]; +#X obj 244 129 route keyname; +#X obj 244 152 unpack s f; +#X obj 244 200 spigot; +#X obj 301 179 == 0; +#X obj 244 244 t a; +#X obj 244 267 outlet; +#X obj 100 100 f; +#X obj 185 117 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 100 118 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X obj 244 40 spigot; +#X connect 0 0 17 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 8 0; +#X connect 4 0 12 0; +#X connect 5 0 12 0; +#X connect 6 0 5 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 9 1 11 0; +#X connect 10 0 4 0; +#X connect 11 0 10 1; +#X connect 12 0 13 0; +#X connect 15 0 5 0; +#X connect 16 0 17 1; +#X connect 17 0 1 0; +#X coords 0 -1 1 1 100 33 1 100 100; +#X restore 54 543 pd record keyup; +#X msg 154 153 a; +#X msg 154 171 Shift_L; +#X msg 154 189 a; +#X msg 154 207 ä; +#X text 10 102 values returned by [gemsdl2window]; +#X text 244 153 4; +#X text 244 171 255; +#X text 244 189 4; +#X text 244 207 52; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 4 1 9 0; +#X connect 5 0 6 0; +#X connect 5 1 7 0; +#X connect 9 0 10 0; +#X connect 9 1 8 0; +#X connect 25 0 11 0; +#X restore 58 224 pd keyboard; +#X obj 363 459 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 367 472 gemsdl2window; +#X text 765 169 (NOT IMPLEMENTED); +#N canvas 61 86 537 808 specific 0; +#X obj 85 463 outlet; +#X obj 85 422 t a; +#X text 92 88 most window settings (dimen \, offset \, title \, fullscreen +\, border \, ...) can also be applied after creating the window.; +#X obj 85 156 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 85 179 topmost \$1; +#X text 161 177 bring window to front; +#X obj 125 206 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 125 229 grabmouse \$1; +#X obj 151 341 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 0 1; +#X floatatom 148 361 5 0 0 0 - - -; +#X msg 148 383 opacity \$1; +#X text 227 387 make window transparent (if your OS supports it); +#X obj 135 266 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 223 229 confine the mouse to within the window; +#X msg 135 289 relativemouse \$1; +#X text 249 292 lock mouse into the window, f 33; +#X text 61 558 drag-n-drop support:; +#X text 63 587 you can drop a file (or text) onto the Gem-window \, +and it will be reported as a "drop" event (eventually surrounded by +"begin" and "end" messages); +#X obj 134 650 r \$0-info; +#X obj 134 673 route drop; +#X obj 134 696 print \$0:dropped; +#X connect 1 0 0 0; +#X connect 3 0 4 0; +#X connect 4 0 1 0; +#X connect 6 0 7 0; +#X connect 7 0 1 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 10 0 1 0; +#X connect 12 0 14 0; +#X connect 14 0 1 0; +#X connect 18 0 19 0; +#X connect 19 0 20 0; +#X restore 421 429 pd specific messages; +#X connect 2 0 3 0; +#X connect 2 1 5 0; +#X connect 7 0 8 0; +#X connect 8 0 4 0; +#X connect 9 0 8 1; +#X connect 20 0 61 0; +#X connect 22 0 20 0; +#X connect 23 0 20 0; +#X connect 24 0 20 0; +#X connect 29 0 20 0; +#X connect 30 0 20 0; +#X connect 32 0 20 0; +#X connect 34 0 20 0; +#X connect 36 0 20 0; +#X connect 42 0 61 0; +#X connect 49 0 20 0; +#X connect 50 0 49 0; +#X connect 51 0 20 0; +#X connect 52 0 51 0; +#X connect 53 0 55 0; +#X connect 55 0 20 0; +#X connect 56 0 20 0; +#X connect 57 0 56 0; +#X connect 61 0 2 0; +#X connect 61 1 1 0; +#X connect 63 0 61 0; diff -Nru gem-0.94~pre1/help/gemsdlwindow-help.pd gem-0.94/help/gemsdlwindow-help.pd --- gem-0.94~pre1/help/gemsdlwindow-help.pd 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/help/gemsdlwindow-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,208 @@ +#N canvas 55 51 885 613 10; +#X declare -lib Gem; +#X text 13 145 [gemsdlwindow] uses the SDL toolkit (Simple DirectMedia Layer) to create windows.; +#X obj 441 515 print unknown.message; +#X obj 367 515 route bang; +#X obj 367 558 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144 +-4034 -1; +#X obj 648 560 print info; +#X obj 424 537 s \$0-info; +#X text 485 537 feedback about the window; +#X obj 648 514 r \$0-info; +#X obj 648 537 spigot; +#X obj 695 539 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 407 45 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 75 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 105 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 135 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 165 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 195 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 225 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 255 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 285 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 315 cnv 15 470 25 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 367 386 t a; +#X obj 407 345 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X msg 411 48 create; +#X msg 411 78 bang; +#X msg 411 108 destroy; +#X text 515 79 clear window \, activate openGL-context \, and send +render-bang; +#X text 515 110 destroy the window; +#X text 515 49 create the window; +#X text 515 139 single-buffered(1) or double-buffered(2) rendering +; +#X msg 411 138 buffer 2; +#X msg 411 168 FSAA \$1; +#X text 515 169 Full Screen Antia Aliasing mode; +#X msg 411 198 title foo; +#X text 515 199 title of the window; +#X msg 411 228 dimen 640 460; +#X text 515 229 change dimension of the window; +#X msg 411 258 offset 100 100; +#X text 515 259 change position of the window; +#X text 515 319 turn on/off window borders; +#X text 515 349 (don't) show cursor when it's on the window; +#X obj 407 395 cnv 15 470 25 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X text 465 17 standard messages; +#X msg 421 399 blurb; +#X text 515 400 some random unknown message; +#X obj 407 425 cnv 15 470 25 empty empty empty 20 12 0 14 -257985 -66577 +0; +#X text 47 51 [gemsdlwindow]; +#X text 18 79 part of Gem; +#X obj 38 553 declare -lib Gem; +#X text 24 529 last updated for Gem-0.94; +#X msg 411 348 cursor \$1; +#X obj 500 350 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 411 318 border \$1; +#X obj 500 320 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 500 290 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 515 289 switch fullscreen mode on/off; +#X msg 411 288 fullscreen \$1; +#X obj 235 348 metro 100; +#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 43 209 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#N canvas 348 141 312 657 keyboard 0; +#X obj 54 265 r \$0-info; +#X obj 54 286 route keyboard; +#X obj 54 307 list split 1; +#X obj 54 328 list trim; +#X obj 54 349 route keyname key; +#X obj 54 400 unpack s f; +#X symbolatom 54 421 10 0 0 0 - - -; +#X floatatom 116 421 5 0 0 0 - - -; +#X floatatom 187 421 5 0 0 0 - - -; +#X obj 154 400 unpack; +#X floatatom 154 421 5 0 0 0 - - -; +#X msg 54 582; +#X obj 18 127 cnv 15 100 100 empty empty empty 20 12 0 14 -154295 -66577 +0; +#X obj 128 127 cnv 15 100 100 empty empty empty 20 12 0 14 -155048 +-66577 0; +#X obj 238 127 cnv 15 40 100 empty empty empty 20 12 0 14 -223782 -66577 +0; +#X text 38 129 keystroke; +#X text 146 129 keyname; +#X text 247 128 key; +#X text 34 153 <a>; +#X text 34 171 <LeftShift>; +#X text 34 189 <A>; +#X text 34 207 <ä>; +#X text 17 139 ===========================================; +#X text 17 23 While Gem tries to provide a consistent platform-independent +interface \, the values returned by [gemkeyboard] and [gemkeyname] +might depend on the actual window toolkit., f 43; +#X text 125 264 <- from [gem*window]; +#N canvas 5 51 450 300 record 0; +#X obj 244 15 r \$0-info; +#X obj 244 66 route keyboard; +#X obj 244 87 list split 1; +#X obj 244 108 list trim; +#X msg 244 221 add2 \$1; +#X msg 300 221 set; +#X obj 300 200 loadbang; +#X text 315 14 <- from [gem*window]; +#X obj 244 129 route keyname; +#X obj 244 152 unpack s f; +#X obj 244 200 spigot; +#X obj 301 179 == 0; +#X obj 244 244 t a; +#X obj 244 267 outlet; +#X obj 100 100 f; +#X obj 185 117 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 100 118 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 244 40 spigot; +#X connect 0 0 17 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 8 0; +#X connect 4 0 12 0; +#X connect 5 0 12 0; +#X connect 6 0 5 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 9 1 11 0; +#X connect 10 0 4 0; +#X connect 11 0 10 1; +#X connect 12 0 13 0; +#X connect 15 0 5 0; +#X connect 16 0 17 1; +#X connect 17 0 1 0; +#X coords 0 -1 1 1 100 33 1 100 100; +#X restore 54 543 pd record keyup; +#X msg 154 153 a; +#X msg 154 171 Shift_L; +#X msg 154 189 a; +#X msg 154 207 ä; +#X text 244 153 38; +#X text 244 171 50; +#X text 244 189 38; +#X text 244 207 48; +#X text 10 102 values returned by [gemsdlwindow]; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 4 1 9 0; +#X connect 5 0 6 0; +#X connect 5 1 7 0; +#X connect 9 0 10 0; +#X connect 9 1 8 0; +#X connect 25 0 11 0; +#X restore 58 224 pd keyboard; +#X obj 363 459 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 367 472 gemsdlwindow; +#X text 765 319 (NOT IMPLEMENTED); +#N canvas 60 208 572 395 specific 0; +#X obj 88 303 outlet; +#X text 90 88 no special messages; +#X restore 421 429 pd specific messages; +#X connect 2 0 3 0; +#X connect 2 1 5 0; +#X connect 7 0 8 0; +#X connect 8 0 4 0; +#X connect 9 0 8 1; +#X connect 20 0 61 0; +#X connect 22 0 20 0; +#X connect 23 0 20 0; +#X connect 24 0 20 0; +#X connect 29 0 20 0; +#X connect 30 0 20 0; +#X connect 32 0 20 0; +#X connect 34 0 20 0; +#X connect 36 0 20 0; +#X connect 42 0 61 0; +#X connect 49 0 20 0; +#X connect 50 0 49 0; +#X connect 51 0 20 0; +#X connect 52 0 51 0; +#X connect 53 0 55 0; +#X connect 55 0 20 0; +#X connect 56 0 20 0; +#X connect 57 0 56 0; +#X connect 61 0 2 0; +#X connect 61 1 1 0; +#X connect 63 0 61 0; diff -Nru gem-0.94~pre1/help/gemtablet-help.pd gem-0.94/help/gemtablet-help.pd --- gem-0.94~pre1/help/gemtablet-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/gemtablet-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ #N canvas 293 148 600 385 10; -#X text 135 37 part of GEM; +#X declare -lib Gem; +#X text 365 7 part of GEM; #X text 152 70 [gemtablet]; #X text 69 93 respond to events of a graph-tablet; #X obj 110 118 gemtablet ........; @@ -14,6 +15,7 @@ #X floatatom 200 178 1 0 0 1 Left_Button - -; #X floatatom 215 160 1 0 0 1 Middle_Button - -; #X floatatom 231 140 1 0 0 1 Right_Button - -; +#X obj 438 8 declare -lib Gem; #X connect 3 0 5 0; #X connect 3 1 6 0; #X connect 3 2 7 0; diff -Nru gem-0.94~pre1/help/gemvertexbuffer-help.pd gem-0.94/help/gemvertexbuffer-help.pd --- gem-0.94~pre1/help/gemvertexbuffer-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/gemvertexbuffer-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 152 51 983 713 10; +#N canvas 152 61 983 713 10; +#X declare -lib Gem; #N canvas 1 89 450 300 fps 0; #X obj 46 -61 gemhead; #X obj 46 -21 realtime; @@ -17,7 +18,7 @@ #X connect 6 0 7 0; #X connect 7 0 5 0; #X restore 466 149 pd fps; -#X floatatom 466 172 5 0 0 1 fps - -, f 5; +#X floatatom 466 172 5 0 0 1 fps - -; #X obj 6 76 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 7 236 cnv 15 450 375 empty empty empty 20 12 0 14 -233017 -66577 @@ -119,7 +120,7 @@ 1; #X text 577 14 Example:; #X msg 816 658 resize 128; -#X floatatom 636 96 5 0 0 0 - - -, f 5; +#X floatatom 636 96 5 0 0 0 - - -; #X obj 579 95 scale 3; #X msg 593 271 position blablax blablay blablaz; #X msg 604 290 color colorr colorg colorb colora; @@ -130,12 +131,12 @@ #X obj 841 56 cnv 15 120 160 empty empty empty 20 12 0 14 -233017 -66577 0; #N canvas 615 145 657 666 lorenz 0; -#X floatatom 82 248 5 0 0 0 - - -, f 5; -#X floatatom 124 248 5 0 0 0 - - -, f 5; -#X floatatom 83 201 5 0 0 0 - - -, f 5; -#X floatatom 125 201 5 0 0 0 - - -, f 5; -#X floatatom 81 156 5 0 0 0 - - -, f 5; -#X floatatom 124 156 5 0 0 0 - - -, f 5; +#X floatatom 82 248 5 0 0 0 - - -; +#X floatatom 124 248 5 0 0 0 - - -; +#X floatatom 83 201 5 0 0 0 - - -; +#X floatatom 125 201 5 0 0 0 - - -; +#X floatatom 81 156 5 0 0 0 - - -; +#X floatatom 124 156 5 0 0 0 - - -; #N canvas 145 116 1131 666 table 0; #X obj 266 31 loadbang; #X msg 266 53 dsp 1; @@ -152,15 +153,15 @@ #X obj 392 275 v pr; #X obj 523 276 v r; #X obj 449 277 v b; -#X floatatom 392 246 5 0 0 0 - - -, f 5; -#X floatatom 523 248 5 0 0 0 - - -, f 5; +#X floatatom 392 246 5 0 0 0 - - -; +#X floatatom 523 248 5 0 0 0 - - -; #X msg 393 221 10; #X obj 447 218 expr 8./3; #X msg 344 344 set 1.2 2.3 4.4; -#X floatatom 449 247 7 0 0 0 - - -, f 7; +#X floatatom 449 247 7 0 0 0 - - -; #X msg 321 308 stop; #X msg 291 275 start; -#X floatatom 615 248 5 0 0 0 - - -, f 5; +#X floatatom 615 248 5 0 0 0 - - -; #X obj 615 277 v dt; #X msg 526 220 18; #X msg 611 221 0.01; @@ -250,7 +251,7 @@ #X obj 38 136 alpha; #X msg 118 577 draw line; #X msg 184 575 draw points; -#X floatatom 147 288 5 0 0 0 - - -, f 5; +#X floatatom 147 288 5 0 0 0 - - -; #X msg 82 449 color_enable \$1; #X obj 82 430 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; @@ -322,15 +323,15 @@ #X obj 849 80 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #N canvas 285 255 805 628 wave 0; -#X floatatom 87 237 5 0 0 0 - - -, f 5; -#X floatatom 129 237 5 0 0 0 - - -, f 5; -#X floatatom 172 237 5 0 0 0 - - -, f 5; -#X floatatom 88 190 5 0 0 0 - - -, f 5; -#X floatatom 130 190 5 0 0 0 - - -, f 5; -#X floatatom 173 190 5 0 0 0 - - -, f 5; -#X floatatom 86 145 5 0 0 0 - - -, f 5; -#X floatatom 129 145 5 0 0 0 - - -, f 5; -#X floatatom 173 145 5 0 0 0 - - -, f 5; +#X floatatom 87 237 5 0 0 0 - - -; +#X floatatom 129 237 5 0 0 0 - - -; +#X floatatom 172 237 5 0 0 0 - - -; +#X floatatom 88 190 5 0 0 0 - - -; +#X floatatom 130 190 5 0 0 0 - - -; +#X floatatom 173 190 5 0 0 0 - - -; +#X floatatom 86 145 5 0 0 0 - - -; +#X floatatom 129 145 5 0 0 0 - - -; +#X floatatom 173 145 5 0 0 0 - - -; #X obj 43 592 gemvertexbuffer; #N canvas 145 161 1131 747 table 0; #X obj 36 59 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 @@ -460,7 +461,7 @@ #X obj 341 72 t b b; #X obj 349 318 f; #X obj 440 380 +; -#X floatatom 903 395 5 0 0 0 - - -, f 5; +#X floatatom 903 395 5 0 0 0 - - -; #X obj 583 71 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 87 310 sig~ 0.3; @@ -695,12 +696,12 @@ #X obj 118 231 table \$0phasor 8192; #X obj 79 306 i \$0; #X msg 79 342 posX \$1phasor \, posY \$1sound; -#X floatatom 155 34 5 0 0 0 - - -, f 5; +#X floatatom 155 34 5 0 0 0 - - -; #X obj 15 157 scale 1; -#X floatatom 52 115 5 0 0 0 - - -, f 5; +#X floatatom 52 115 5 0 0 0 - - -; #X msg 227 395 draw points; #X msg 298 73 8192; -#X floatatom 298 95 5 0 0 0 - - -, f 5; +#X floatatom 298 95 5 0 0 0 - - -; #X obj 298 234 /; #X obj 298 118 t f b f f; #X msg 414 154 resize \$1; @@ -855,8 +856,8 @@ #X obj 579 675 gemvertexbuffer; #X msg 728 569 draw_range \$1 \$2; #X obj 728 549 pack 0 0; -#X floatatom 728 507 5 0 0 0 - - -, f 5; -#X floatatom 774 507 5 0 0 0 - - -, f 5; +#X floatatom 728 507 5 0 0 0 - - -; +#X floatatom 774 507 5 0 0 0 - - -; #X obj 774 526 t b f; #X text 27 452 Inlet 1: message: draw_range float float : set the range for partial draw.; @@ -865,8 +866,8 @@ #X text 668 458 as soon as they are updated; #X text 598 443 default : all VBO are disabled \, but they are enabled ; -#X floatatom 699 135 5 1 64 0 - - -, f 5; -#X floatatom 719 113 5 0 0 0 - - -, f 5; +#X floatatom 699 135 5 1 64 0 - - -; +#X floatatom 719 113 5 0 0 0 - - -; #X text 27 479 Inlet 1: message: program float : set the id for glsl program.; #X text 27 409 Inlet 1: message: position_enable float \, color_enable @@ -883,6 +884,7 @@ #X text 15 661 use attribute tables with the vertex buffer.; #X text 57 190 number of vertices to be used. if this is a power of two (2^n) \, you might have some performance gain.; +#X obj 868 8 declare -lib Gem; #X connect 0 0 1 0; #X connect 9 0 10 0; #X connect 10 0 9 0; diff -Nru gem-0.94~pre1/help/gemw32window-help.pd gem-0.94/help/gemw32window-help.pd --- gem-0.94~pre1/help/gemw32window-help.pd 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/help/gemw32window-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,223 @@ +#N canvas 55 51 885 613 10; +#X declare -lib Gem; +#X obj 441 515 print unknown.message; +#X obj 367 515 route bang; +#X obj 367 558 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144 +-4034 -1; +#X obj 648 560 print info; +#X obj 424 537 s \$0-info; +#X text 485 537 feedback about the window; +#X obj 648 514 r \$0-info; +#X obj 648 537 spigot; +#X obj 695 539 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 407 45 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 75 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 105 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 135 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 165 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 195 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 225 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 255 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 285 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 407 315 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 367 386 t a; +#X obj 407 345 cnv 15 470 25 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X msg 411 48 create; +#X msg 411 78 bang; +#X msg 411 108 destroy; +#X text 515 79 clear window \, activate openGL-context \, and send +render-bang; +#X text 515 110 destroy the window; +#X text 515 49 create the window; +#X text 515 139 single-buffered(1) or double-buffered(2) rendering +; +#X msg 411 138 buffer 2; +#X msg 411 168 FSAA \$1; +#X text 515 169 Full Screen Antia Aliasing mode; +#X msg 411 198 title foo; +#X text 515 199 title of the window; +#X msg 411 228 dimen 640 460; +#X text 515 229 change dimension of the window; +#X msg 411 258 offset 100 100; +#X text 515 259 change position of the window; +#X text 515 319 turn on/off window borders; +#X text 515 349 (don't) show cursor when it's on the window; +#X obj 407 395 cnv 15 470 25 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X text 455 17 standard messages; +#X msg 421 399 blurb; +#X text 515 400 some random unknown message; +#X obj 407 425 cnv 15 470 25 empty empty empty 20 12 0 14 -257985 -66577 +0; +#N canvas 60 208 572 395 specific 0; +#X obj 88 303 outlet; +#X msg 88 40 offset \$1 \$1; +#X floatatom 88 21 5 0 0 0 - - -; +#X floatatom 128 61 5 0 0 0 - - -; +#X msg 128 80 dimen \$1 \$1; +#X text 201 46 change window dimension/position on the fly; +#X msg 152 173 topmost \$1; +#X obj 152 151 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 231 156 make sure the Gem-window is in front of all others +; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 4 0; +#X connect 4 0 0 0; +#X connect 6 0 0 0; +#X connect 7 0 6 0; +#X restore 421 429 pd specific messages; +#X text 47 51 [gemw32window]; +#X text 18 79 part of Gem; +#X obj 38 553 declare -lib Gem; +#X text 24 529 last updated for Gem-0.94; +#X msg 411 348 cursor \$1; +#X obj 490 350 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 411 318 border \$1; +#X obj 490 320 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 501 290 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 515 289 switch fullscreen mode on/off; +#X msg 411 288 fullscreen \$1; +#X obj 235 348 metro 100; +#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 13 145 [gemw32window] uses the native Microsoft Windows toolkit +to create windows (only on MS-Windows systems).; +#X obj 43 209 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#N canvas 348 141 312 657 keyboard 0; +#X obj 54 265 r \$0-info; +#X obj 54 286 route keyboard; +#X obj 54 307 list split 1; +#X obj 54 328 list trim; +#X obj 54 349 route keyname key; +#X obj 54 400 unpack s f; +#X symbolatom 54 421 10 0 0 0 - - -; +#X floatatom 116 421 5 0 0 0 - - -; +#X floatatom 187 421 5 0 0 0 - - -; +#X obj 154 400 unpack; +#X floatatom 154 421 5 0 0 0 - - -; +#X msg 54 582; +#X obj 18 127 cnv 15 100 100 empty empty empty 20 12 0 14 -154295 -66577 +0; +#X obj 128 127 cnv 15 100 100 empty empty empty 20 12 0 14 -155048 +-66577 0; +#X obj 238 127 cnv 15 40 100 empty empty empty 20 12 0 14 -223782 -66577 +0; +#X text 38 129 keystroke; +#X text 146 129 keyname; +#X text 247 128 key; +#X text 34 153 <a>; +#X text 34 171 <LeftShift>; +#X text 34 189 <A>; +#X text 34 207 <ä>; +#X msg 154 153 A; +#X msg 154 171 ; +#X msg 154 207 Þ; +#X msg 154 189 A; +#X text 244 153 65; +#X text 244 189 65; +#X text 244 171 16; +#X text 244 207 222; +#X text 17 139 ===========================================; +#X text 17 23 While Gem tries to provide a consistent platform-independent +interface \, the values returned by [gemkeyboard] and [gemkeyname] +might depend on the actual window toolkit., f 43; +#X text 125 264 <- from [gem*window]; +#N canvas 5 51 450 300 record 0; +#X obj 244 15 r \$0-info; +#X obj 244 66 route keyboard; +#X obj 244 87 list split 1; +#X obj 244 108 list trim; +#X msg 244 221 add2 \$1; +#X msg 300 221 set; +#X obj 300 200 loadbang; +#X text 315 14 <- from [gem*window]; +#X obj 244 129 route keyname; +#X obj 244 152 unpack s f; +#X obj 244 200 spigot; +#X obj 301 179 == 0; +#X obj 244 244 t a; +#X obj 244 267 outlet; +#X obj 100 100 f; +#X obj 185 117 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 100 118 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 244 40 spigot; +#X connect 0 0 17 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 8 0; +#X connect 4 0 12 0; +#X connect 5 0 12 0; +#X connect 6 0 5 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 9 1 11 0; +#X connect 10 0 4 0; +#X connect 11 0 10 1; +#X connect 12 0 13 0; +#X connect 15 0 5 0; +#X connect 16 0 17 1; +#X connect 17 0 1 0; +#X coords 0 -1 1 1 100 33 1 100 100; +#X restore 54 543 pd record keyup; +#X text 10 102 values returned by [gemw32window]; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 1 3 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 4 1 9 0; +#X connect 5 0 6 0; +#X connect 5 1 7 0; +#X connect 9 0 10 0; +#X connect 9 1 8 0; +#X connect 33 0 11 0; +#X restore 58 224 pd keyboard; +#X obj 363 459 cnv 15 100 50 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 367 472 gemw32window; +#X connect 1 0 2 0; +#X connect 1 1 4 0; +#X connect 6 0 7 0; +#X connect 7 0 3 0; +#X connect 8 0 7 1; +#X connect 19 0 62 0; +#X connect 21 0 19 0; +#X connect 22 0 19 0; +#X connect 23 0 19 0; +#X connect 28 0 19 0; +#X connect 29 0 19 0; +#X connect 31 0 19 0; +#X connect 33 0 19 0; +#X connect 35 0 19 0; +#X connect 41 0 62 0; +#X connect 44 0 62 0; +#X connect 49 0 19 0; +#X connect 50 0 49 0; +#X connect 51 0 19 0; +#X connect 52 0 51 0; +#X connect 53 0 55 0; +#X connect 55 0 19 0; +#X connect 56 0 19 0; +#X connect 57 0 56 0; +#X connect 62 0 1 0; +#X connect 62 1 0 0; diff -Nru gem-0.94~pre1/help/gemwin-help.pd gem-0.94/help/gemwin-help.pd --- gem-0.94~pre1/help/gemwin-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/gemwin-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 126 111 676 689 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 7 193 cnv 15 430 480 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -73,7 +74,7 @@ #X text -86 -130 FULLSCREEN SUPPORT; #X obj -85 -1 vradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 -1 -1 0; -#X floatatom -85 50 5 0 0 0 - - -, f 5; +#X floatatom -85 50 5 0 0 0 - - -; #X msg -85 71 reset \, fullscreen \$1 \, create \, 1; #X text -63 -4 deactivate fullscreen; #X text -64 13 fullscreen on screen 1; @@ -104,8 +105,8 @@ #X connect 9 0 12 0; #X connect 11 0 9 0; #X restore 356 288 pd fullscreen; -#X text 57 253 the x and y dimensions of the window. (default: 500 500) -; +#X text 57 253 the x and y dimensions of the window. (default: 500 +500); #X text 29 508 frame <number> : number of frames per second (default 20); #X text 30 268 FSAA <number> : anti aliasing (default:0); @@ -452,11 +453,11 @@ #X text 105 158 set stereo-mode; #X text 54 61 off; #X msg 48 210 stereoSep \$1; -#X floatatom 48 188 5 0 0 0 - - -, f 5; +#X floatatom 48 188 5 0 0 0 - - -; #X text 137 209 set the stereo-separation (default:-15); #X msg 66 258 stereoFoc \$1; #X text 150 259 set the stereo-focal; -#X floatatom 66 234 5 0 0 0 - - -, f 5; +#X floatatom 66 234 5 0 0 0 - - -; #X obj 80 283 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X text 174 297 turn the separation-line between the 2 screens in stereo-mode @@ -484,8 +485,8 @@ 0); #X text 30 238 dimen <x> <y>:; #X text 30 333 offset <x> <y>:; -#X text 29 593 view <x> <y> <z> : translate the camera (default: 0 0 -4); +#X text 29 593 view <x> <y> <z> : translate the camera (default: 0 +0 4); #N canvas 124 233 762 647 more 0; #X text 43 11 messages to [gemwin] regarding the view-point ("camera") ; @@ -530,9 +531,9 @@ #X msg 90 389 set perspec \$1 \$2 \$3 \$4 \$5 \$6 \, bang; #X msg 172 453 set perspec \, adddollar 1 \, adddollar 2 \, adddollar 3 \, adddollar 4 \, adddollar 5 \, adddollar 6; -#X floatatom 103 117 5 0.1 5 1 x_wideness - -, f 5; -#X floatatom 103 134 5 0.1 5 1 y_wideness - -, f 5; -#X floatatom 103 151 5 0 0 1 z_depth - -, f 5; +#X floatatom 103 117 5 0.1 5 1 x_wideness - -; +#X floatatom 103 134 5 0.1 5 1 y_wideness - -; +#X floatatom 103 151 5 0 0 1 z_depth - -; #X obj 360 196 select 1; #X obj 405 219 t b f f; #X obj 249 226 t b f f; @@ -591,10 +592,10 @@ #X text 292 554 the default camera has a very wide angle. this message allows to narrow it.; #N canvas 506 305 612 484 view 0; -#X floatatom 112 114 5 0 0 0 x - -, f 5; -#X floatatom 158 114 5 0 0 0 y - -, f 5; -#X floatatom 201 114 5 0 0 0 z - -, f 5; -#X floatatom 236 114 5 0 0 2 azimuth - -, f 5; +#X floatatom 112 114 5 0 0 0 x - -; +#X floatatom 158 114 5 0 0 0 y - -; +#X floatatom 201 114 5 0 0 0 z - -; +#X floatatom 236 114 5 0 0 2 azimuth - -; #X obj 369 109 loadbang; #X obj 140 335 outlet; #X obj 201 226 t b f; @@ -626,10 +627,10 @@ #X coords 0 -1 1 1 180 30 1 100 100; #X restore 42 156 pd view; #N canvas 508 299 612 484 view 0; -#X floatatom 112 114 5 0 0 0 x - -, f 5; -#X floatatom 158 114 5 0 0 0 y - -, f 5; -#X floatatom 201 114 5 0 0 0 z - -, f 5; -#X floatatom 236 114 5 0 0 2 azimuth - -, f 5; +#X floatatom 112 114 5 0 0 0 x - -; +#X floatatom 158 114 5 0 0 0 y - -; +#X floatatom 201 114 5 0 0 0 z - -; +#X floatatom 236 114 5 0 0 2 azimuth - -; #X obj 369 109 loadbang; #X obj 140 335 outlet; #X obj 201 226 t b f; @@ -639,7 +640,7 @@ #X msg 398 196 set 4; #X msg 140 296 set view \$1 \$2 \$3 \$4 \$5 \, bang; #X obj 140 274 pack 0 0 4 0 0; -#X floatatom 286 114 5 0 0 2 elevate - -, f 5; +#X floatatom 286 114 5 0 0 2 elevate - -; #X obj 291 226 t b f; #X msg 213 342 set view \, adddollar 1 \, adddollar 2 \, adddollar 3 \, adddollar 4 \, adddollar 5; @@ -666,9 +667,9 @@ #X coords 0 -1 1 1 230 30 1 100 100; #X restore 49 216 pd view; #N canvas 509 296 612 484 view 0; -#X floatatom 112 114 5 0 0 0 x - -, f 5; -#X floatatom 158 114 5 0 0 0 y - -, f 5; -#X floatatom 201 114 5 0 0 0 z - -, f 5; +#X floatatom 112 114 5 0 0 0 x - -; +#X floatatom 158 114 5 0 0 0 y - -; +#X floatatom 201 114 5 0 0 0 z - -; #X obj 369 109 loadbang; #X obj 140 335 outlet; #X obj 201 226 t b f; @@ -696,23 +697,23 @@ #X coords 0 -1 1 1 140 30 1 100 100; #X restore 25 65 pd view; #N canvas 380 50 612 484 view 0; -#X floatatom 214 114 5 0 0 2 X - -, f 5; +#X floatatom 214 114 5 0 0 2 X - -; #X obj 166 22 loadbang; #X obj 139 335 outlet; #X obj 174 177 t b f; #X obj 139 177 t b f; #X obj 214 177 t b f; #X msg 174 79 set 4; -#X floatatom 249 114 5 0 0 2 Y - -, f 5; +#X floatatom 249 114 5 0 0 2 Y - -; #X obj 249 177 t b f; #X obj 139 274 pack 0 0 4 0 0 0 0 1 0; -#X floatatom 284 114 5 0 0 2 Z - -, f 5; -#X floatatom 104 114 5 0 0 2 x - -, f 5; -#X floatatom 139 114 5 0 0 2 y - -, f 5; -#X floatatom 174 114 5 0 0 2 z - -, f 5; -#X floatatom 324 114 5 0 0 2 upX - -, f 5; -#X floatatom 359 114 5 0 0 2 upY - -, f 5; -#X floatatom 394 114 5 0 0 2 upZ - -, f 5; +#X floatatom 284 114 5 0 0 2 Z - -; +#X floatatom 104 114 5 0 0 2 x - -; +#X floatatom 139 114 5 0 0 2 y - -; +#X floatatom 174 114 5 0 0 2 z - -; +#X floatatom 324 114 5 0 0 2 upX - -; +#X floatatom 359 114 5 0 0 2 upY - -; +#X floatatom 394 114 5 0 0 2 upZ - -; #X obj 284 177 t b f; #X obj 324 177 t b f; #X obj 359 177 t b f; @@ -800,6 +801,7 @@ #X text 30 177 2d argument : context name; #X text 443 457 see also examples/14.multiple_windows; #X msg 490 260 color \$1 \$1 \$1 \$1; +#X obj 558 8 declare -lib Gem; #X connect 11 0 10 0; #X connect 12 0 10 0; #X connect 21 0 10 0; diff -Nru gem-0.94~pre1/help/GLdefine-help.pd gem-0.94/help/GLdefine-help.pd --- gem-0.94~pre1/help/GLdefine-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/GLdefine-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 78 37 701 310 10; +#N canvas 78 61 701 310 10; +#X declare -lib Gem; #X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; #X obj 584 234 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 @@ -56,6 +57,7 @@ #X msg 542 98 GL_LINES; #X obj 534 142 GLdefine GL_ADD; #X msg 553 119 symbol GL_ACCUM; +#X obj 588 8 declare -lib Gem; #X connect 2 0 3 0; #X connect 3 0 2 0; #X connect 14 0 27 0; diff -Nru gem-0.94~pre1/help/glsl_fragment-help.pd gem-0.94/help/glsl_fragment-help.pd --- gem-0.94~pre1/help/glsl_fragment-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/glsl_fragment-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 90 26 633 413 10; +#N canvas 90 61 633 413 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 257 cnv 15 430 140 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -81,6 +82,7 @@ #X restore 470 116 pd open; #X msg 470 136 open Toon.frag; #X obj 453 382 glsl_geometry; +#X obj 518 8 declare -lib Gem; #X connect 18 1 17 0; #X connect 28 0 18 0; #X connect 29 0 18 0; diff -Nru gem-0.94~pre1/help/glsl_geometry-help.pd gem-0.94/help/glsl_geometry-help.pd --- gem-0.94~pre1/help/glsl_geometry-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/glsl_geometry-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 40 32 633 413 10; +#N canvas 40 61 638 426 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 257 cnv 15 430 140 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -81,6 +82,7 @@ #X text 14 157 IMPORTANT NOTE: your openGL-implementation (gfx-card driver \, ...) has to support the GLSL-standard (which is part of openGL-2.1) in order to make use of this object.; +#X obj 518 8 declare -lib Gem; #X connect 16 1 15 0; #X connect 26 0 16 0; #X connect 27 0 16 0; diff -Nru gem-0.94~pre1/help/glsl_program-help.pd gem-0.94/help/glsl_program-help.pd --- gem-0.94~pre1/help/glsl_program-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/glsl_program-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,6 +1,7 @@ #N canvas 23 79 651 581 10; +#X declare -lib Gem; #X text 452 8 GEM object; -#X obj 8 307 cnv 15 430 260 empty empty empty 20 12 0 14 -233017 -66577 +#X obj 8 307 cnv 15 430 270 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 11 308 Inlets:; #X text 10 524 Outlets:; @@ -101,6 +102,7 @@ ; #X restore 29 503 pd geometry shaders; #X obj 453 402 glsl_geometry; +#X obj 518 8 declare -lib Gem; #X connect 16 0 17 0; #X connect 16 1 31 0; #X connect 32 0 16 0; diff -Nru gem-0.94~pre1/help/glsl_vertex-help.pd gem-0.94/help/glsl_vertex-help.pd --- gem-0.94~pre1/help/glsl_vertex-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/glsl_vertex-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 40 32 633 413 10; +#N canvas 40 61 633 413 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 257 cnv 15 430 140 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -80,6 +81,7 @@ #X restore 473 119 pd open; #X msg 473 139 open Toon.vert; #X obj 453 382 glsl_geometry; +#X obj 518 8 declare -lib Gem; #X connect 17 1 16 0; #X connect 27 0 17 0; #X connect 28 0 17 0; diff -Nru gem-0.94~pre1/help/imageVert-help.pd gem-0.94/help/imageVert-help.pd --- gem-0.94~pre1/help/imageVert-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/imageVert-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 344 47 655 397 10; +#N canvas 344 61 655 397 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 216 cnv 15 430 70 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -78,6 +79,7 @@ #X text 71 31 Class: geometric object; #X obj 451 165 rotateXYZ; #X floatatom 476 144 5 0 0 0 - - -; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 16 0; diff -Nru gem-0.94~pre1/help/light-help.pd gem-0.94/help/light-help.pd --- gem-0.94~pre1/help/light-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/light-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 124 217 710 507 10; +#X declare -lib Gem; #X text 475 49 Example:; #X obj 7 64 cnv 15 450 220 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -66,10 +67,10 @@ #X obj 483 96 rotateXYZ 0 -120 0; #X obj 472 274 gemhead 40; #X floatatom 523 121 5 1 4 0 - - -; -#X obj 549 261 cnv 15 85 50 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 549 266 cnv 15 85 50 empty empty empty 20 12 0 14 -24198 -66577 0; -#X msg 551 288 lighting \$1; -#X obj 551 266 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +#X msg 551 293 lighting \$1; +#X obj 551 271 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X text 17 155 You can place the light with [rotate] and [translate]. If you are lost use "debug" to display the light source as a small @@ -81,6 +82,7 @@ #X obj 492 175 tgl 20 0 empty \$0-onoff empty 17 7 0 10 -262144 -1 -1 0 1; #X text 27 362 Inlet 1: float: turn light on/off (default:1); +#X obj 538 9 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 16 0 31 0; diff -Nru gem-0.94~pre1/help/linear_path-help.pd gem-0.94/help/linear_path-help.pd --- gem-0.94~pre1/help/linear_path-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/linear_path-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 37 45 711 482 10; -#X text 458 11 GEM object; +#N canvas 37 61 711 482 10; +#X declare -lib Gem; +#X text 498 8 GEM object; #X text 41 430 see also:; #X obj 115 429 linear_path; #X text 54 22 Synopsis: [linear_path]; @@ -59,6 +60,7 @@ #X text 50 240 name of the table; #X obj 516 168 linear_path 3 array; #X msg 543 140 open array; +#X obj 568 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 12 1 14 0; #X connect 12 2 15 0; diff -Nru gem-0.94~pre1/help/Makefile.am gem-0.94/help/Makefile.am --- gem-0.94~pre1/help/Makefile.am 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/Makefile.am 2019-02-12 13:10:01.000000000 +0000 @@ -1,6 +1,6 @@ AUTOMAKE_OPTIONS = foreign -SUFFIXES = .pd +.SUFFIXES = .pd gemhelpdir=$(pkglibdir) @@ -44,6 +44,15 @@ gemtablet-help.pd \ gemvertexbuffer-help.pd \ gemwin-help.pd \ + gemcocoawindow-help.pd \ + gemglfw2window-help.pd \ + gemglfw3window-help.pd \ + gemglutwindow-help.pd \ + gemglxwindow-help.pd \ + gemmacoswindow-help.pd \ + gemmacwindow-help.pd \ + gemsdlwindow-help.pd \ + gemw32window-help.pd \ GLdefine-help.pd \ glsl_fragment-help.pd \ glsl_geometry-help.pd \ @@ -175,7 +184,6 @@ pix_threshold_bernsen-help.pd \ pix_threshold-help.pd \ pix_tIIR-help.pd \ - pix_videoDS-help.pd \ pix_video-help.pd \ pix_write-help.pd \ pix_writer-help.pd \ diff -Nru gem-0.94~pre1/help/mesh_line-help.pd gem-0.94/help/mesh_line-help.pd --- gem-0.94~pre1/help/mesh_line-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/mesh_line-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 379 171 706 465 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X obj 470 65 cnv 15 230 390 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -34,7 +35,7 @@ 0; #X text 17 175 Arguments:; #X text 27 277 Inlet 2: float: size; -#X text 468 21 GEM object; +#X text 508 8 GEM object; #X text 27 233 Inlet 1: gemlist; #X text 9 321 Outlets:; #X text 21 334 Outlet 1: gemlist; @@ -63,6 +64,7 @@ ; #X text 63 186 resolution of the line mesh; #X text 575 107 (draw line); +#X obj 578 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 18 0 27 0; diff -Nru gem-0.94~pre1/help/mesh_square-help.pd gem-0.94/help/mesh_square-help.pd --- gem-0.94~pre1/help/mesh_square-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/mesh_square-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 91 105 706 465 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X obj 470 65 cnv 15 230 390 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -34,7 +35,7 @@ 0; #X text 17 175 Arguments:; #X text 27 302 Inlet 2: float: size; -#X text 468 21 GEM object; +#X text 508 11 GEM object; #X text 27 233 Inlet 1: gemlist; #X text 9 321 Outlets:; #X text 21 334 Outlet 1: gemlist; @@ -70,6 +71,7 @@ the current position with current color. The size of the square can be changed via the second inlet. This object is useful when working with vertex_shader; +#X obj 578 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 18 0 33 0; diff -Nru gem-0.94~pre1/help/model-help.pd gem-0.94/help/model-help.pd --- gem-0.94~pre1/help/model-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/model-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 426 119 793 647 10; +#N canvas 426 119 673 647 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X obj 464 77 cnv 15 200 480 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -135,6 +136,7 @@ #X connect 9 0 0 0; #X connect 11 0 0 0; #X restore 533 478 pd properties; +#X obj 558 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 22 0 23 0; diff -Nru gem-0.94~pre1/help/multimodel-help.pd gem-0.94/help/multimodel-help.pd --- gem-0.94~pre1/help/multimodel-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/multimodel-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 368 22 710 565 10; +#N canvas 368 61 710 490 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X obj 464 77 cnv 15 200 180 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -62,6 +63,7 @@ #X text 7 69 Description: load multiple an Alias/Wavefront-Model and renders one of them; #X text 18 386 for other messages to [multimodel] see [model]; +#X obj 558 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 18 0 19 0; diff -Nru gem-0.94~pre1/help/newWave-help.pd gem-0.94/help/newWave-help.pd --- gem-0.94~pre1/help/newWave-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/newWave-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 402 236 760 620 10; +#X declare -lib Gem; #X text 54 27 Class: geometric object; #X obj 479 47 cnv 15 250 550 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -38,7 +39,7 @@ 0; #X text 17 142 Arguments:; #X text 26 347 Inlet 1: message: draw [line|fill|point]; -#X text 452 8 GEM object; +#X text 552 8 GEM object; #X text 27 210 Inlet 1: gemlist; #X text 9 420 Outlets:; #X text 20 433 Outlet 1: gemlist; @@ -112,12 +113,13 @@ #X msg 502 146 texture 0; #X msg 591 389 force 15 5 -0.5; #X obj 494 115 rotateXYZ 135 0 0; -#X text 24 290 Inlet 1: message: force (X Y val): apply a force of value -"val" onto the wave at position (X Y); +#X text 24 290 Inlet 1: message: force (X Y val): apply a force of +value "val" onto the wave at position (X Y); #X text 63 159 1 : X grid-resolution \, default : 3; #X text 63 171 2 : Y grid resolution \, default : X value; #X text 26 362 Inlet 1 : message texture [1|2] : change texturing mode ; +#X obj 628 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 18 0 77 0; diff -Nru gem-0.94~pre1/help/ortho-help.pd gem-0.94/help/ortho-help.pd --- gem-0.94~pre1/help/ortho-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/ortho-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 397 92 629 343 10; +#N canvas 397 92 628 342 10; +#X declare -lib Gem; #X obj 462 275 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 22 450 300 gemwin 0; @@ -22,7 +23,7 @@ #X restore 467 314 pd gemwin; #X msg 467 295 create; #X text 463 274 Create window:; -#X text 485 29 Example:; +#X text 465 49 Example:; #X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 216 cnv 15 450 120 empty empty empty 20 12 0 14 -233017 -66577 @@ -31,7 +32,7 @@ #X obj 8 176 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 17 175 Arguments:; -#X text 452 8 GEM object; +#X text 432 8 GEM object; #X text 27 233 Inlet 1: gemlist; #X text 9 304 Outlets:; #X text 21 316 Outlet 1: gemlist; @@ -51,20 +52,21 @@ 0; #X obj 466 157 cnv 15 150 80 empty empty empty 20 12 0 14 -24198 -66577 0; -#X obj 490 68 gemhead; +#X obj 490 72 gemhead; #X obj 490 246 cylinder; -#X obj 490 89 t a b; -#X obj 520 108 i; +#X obj 490 93 t a b; +#X obj 520 112 i; #X obj 490 200 ortho; #X obj 470 183 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1; -#X obj 565 87 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +#X obj 565 91 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; -#X obj 549 108 + 0; -#X obj 490 129 rotateXYZ 45 45 0; +#X obj 549 112 + 0; +#X obj 490 133 rotateXYZ 45 45 0; #X msg 521 180 compat \$1; #X obj 521 160 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1; +#X obj 508 8 declare -lib Gem; #X connect 1 0 2 0; #X connect 2 0 1 0; #X connect 23 0 25 0; diff -Nru gem-0.94~pre1/help/part_color-help.pd gem-0.94/help/part_color-help.pd --- gem-0.94~pre1/help/part_color-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_color-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas -64 430 759 378 10; +#N canvas 6 430 759 378 10; +#X declare -lib Gem; #X obj 525 177 part_color; #X text 98 142 sets the color(s) of a particle-system. You can set 2 different colors \, particles will have either the one or the other. @@ -43,6 +44,7 @@ #X text 38 41 inlet 1: gemlist (with part_head); #X obj 524 17 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; +#X obj 648 8 declare -lib Gem; #X connect 0 0 11 0; #X connect 2 0 3 0; #X connect 3 0 2 0; diff -Nru gem-0.94~pre1/help/part_damp-help.pd gem-0.94/help/part_damp-help.pd --- gem-0.94~pre1/help/part_damp-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_damp-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas -48 0 754 404 10; +#N canvas 6 61 754 404 10; +#X declare -lib Gem; #X text 540 156 This is the damping vector; #X text 541 176 To slow particles down; #X text 99 206 keep all of the values less than one; @@ -37,10 +38,11 @@ #X text 519 316 Create window:; #X floatatom 663 192 5 0 0 0 - - -; #X msg 663 211 \$1 1 1; -#X obj 521 10 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +#X obj 521 10 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; #X obj 521 80 part_source 5; #X obj 521 237 part_damp 0.1 0.1 0.1; +#X obj 628 8 declare -lib Gem; #X connect 9 0 10 0; #X connect 10 0 19 0; #X connect 11 0 20 0; diff -Nru gem-0.94~pre1/help/part_draw-help.pd gem-0.94/help/part_draw-help.pd --- gem-0.94~pre1/help/part_draw-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_draw-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 539 315 813 403 10; +#X declare -lib Gem; #X msg 631 212 draw point; #X text 536 159 This is the drawing mode: line/point; #X text 98 109 [part_draw] finally draws a particle system that was @@ -41,6 +42,7 @@ #X text 38 41 inlet 1: gemlist (with part_head) \, draw [line|point|<nr>] ; #X text 31 14 Synopsis: [part_draw]; +#X obj 688 8 declare -lib Gem; #X connect 0 0 11 0; #X connect 7 0 8 0; #X connect 8 0 10 0; diff -Nru gem-0.94~pre1/help/part_follow-help.pd gem-0.94/help/part_follow-help.pd --- gem-0.94~pre1/help/part_follow-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_follow-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 22 325 802 373 10; +#X declare -lib Gem; #X text 583 138 particle acceleration; #X text 97 112 [part_follow] lets the particles follow each other. ; @@ -38,6 +39,7 @@ #X obj 521 75 part_source 5; #X obj 521 51 part_head; #X obj 521 243 part_draw; +#X obj 678 8 declare -lib Gem; #X connect 6 0 16 0; #X connect 7 0 6 0; #X connect 8 0 9 0; diff -Nru gem-0.94~pre1/help/part_gravity-help.pd gem-0.94/help/part_gravity-help.pd --- gem-0.94~pre1/help/part_gravity-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_gravity-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 23 236 644 359 10; +#X declare -lib Gem; #X msg 139 109 gemList; #X text 176 62 GEM object; #X msg 242 151 x y z; @@ -8,5 +9,6 @@ #X text 43 257 [part_gravity] sets the gravity-vector of the particle-system. No matter in which direction particles are emitted (pE. via [part_velsphere]) in the end \, they have to follow the gravity.; +#X obj 528 8 declare -lib Gem; #X connect 0 0 3 0; #X connect 2 0 3 1; diff -Nru gem-0.94~pre1/help/part_head-help.pd gem-0.94/help/part_head-help.pd --- gem-0.94~pre1/help/part_head-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_head-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 174 110 664 498 10; +#X declare -lib Gem; #X msg 180 101 gemList; #X text 176 62 GEM object; #X msg 180 195 gemList; @@ -17,6 +18,7 @@ #X text 53 424 if your particles do not die (e.g.: because the are killed with [part_killold]) \, your particle source will stop emitting particles after some time.; +#X obj 548 8 declare -lib Gem; #X connect 0 0 3 0; #X connect 3 0 2 0; #X connect 6 0 3 0; diff -Nru gem-0.94~pre1/help/part_info-help.pd gem-0.94/help/part_info-help.pd --- gem-0.94~pre1/help/part_info-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_info-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 162 181 644 454 10; +#X declare -lib Gem; #X msg 139 99 gemList; #X text 176 62 GEM object; #X msg 139 294 gemList; @@ -15,6 +16,7 @@ #X msg 151 272 ID; #X text 36 379 If your system contains 15 particles \, then you will get the information on the outlets 15 times per rendering circle.; +#X obj 538 8 declare -lib Gem; #X connect 0 0 4 0; #X connect 4 0 2 0; #X connect 4 1 11 0; diff -Nru gem-0.94~pre1/help/part_killold-help.pd gem-0.94/help/part_killold-help.pd --- gem-0.94~pre1/help/part_killold-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_killold-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 309 237 664 366 10; +#X declare -lib Gem; #X msg 199 131 gemList; #X text 176 62 GEM object; #X obj 199 182 part_killold; @@ -8,6 +9,7 @@ #X text 91 291 kill all particles which are older than the kill time. The default time is 10 Make the number longer for particles to live longer and shorter to remove them quicker.; +#X obj 548 8 declare -lib Gem; #X connect 0 0 2 0; #X connect 2 0 5 0; #X connect 3 0 2 1; diff -Nru gem-0.94~pre1/help/part_killslow-help.pd gem-0.94/help/part_killslow-help.pd --- gem-0.94~pre1/help/part_killslow-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_killslow-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 853 285 600 500 10; +#X declare -lib Gem; #X msg 199 131 gemList; #X text 176 62 GEM object; #X obj 199 229 part_killslow; @@ -6,5 +7,6 @@ #X msg 285 182 speed; #X text 90 291 kill all particles which are slower than the kill speed. The default speed is 0.01; +#X obj 478 8 declare -lib Gem; #X connect 0 0 2 0; #X connect 4 0 2 1; diff -Nru gem-0.94~pre1/help/part_orbitpoint-help.pd gem-0.94/help/part_orbitpoint-help.pd --- gem-0.94~pre1/help/part_orbitpoint-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_orbitpoint-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 214 154 600 327 10; +#X declare -lib Gem; #X msg 110 93 gemList; #X text 121 50 GEM object; #X obj 110 190 part_orbitpoint; @@ -8,6 +9,7 @@ #X text 65 253 [part_orbitpoint] will make the particles orbit about the position x \, y \, z. The gravity is how attracted the particles are to the point. The default gravity is 1; +#X obj 488 8 declare -lib Gem; #X connect 0 0 2 0; #X connect 3 0 2 1; #X connect 4 0 2 2; diff -Nru gem-0.94~pre1/help/part_render-help.pd gem-0.94/help/part_render-help.pd --- gem-0.94~pre1/help/part_render-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_render-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 162 181 644 454 10; +#X declare -lib Gem; #X msg 139 99 gemList; #X text 176 62 GEM object; #X obj 139 207 part_render; @@ -13,6 +14,7 @@ ; #X text 39 381 you can turn on/off sizing of paticles (via [part_size]) ; +#X obj 538 8 declare -lib Gem; #X connect 0 0 2 0; #X connect 2 0 3 0; #X connect 5 0 2 0; diff -Nru gem-0.94~pre1/help/part_sink-help.pd gem-0.94/help/part_sink-help.pd --- gem-0.94~pre1/help/part_sink-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_sink-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 142 0 627 488 10; +#N canvas 142 61 627 488 10; +#X declare -lib Gem; #X msg 110 73 gemList; #X text 121 50 GEM object; #X msg 110 219 gemList; @@ -22,6 +23,7 @@ #X obj 269 199 part_sink <domain> [<arguments>...]; #X text 56 297 you can turn on/off the killing of particles (default:off) ; +#X obj 508 8 declare -lib Gem; #X connect 0 0 9 0; #X connect 5 0 9 1; #X connect 7 0 9 2; diff -Nru gem-0.94~pre1/help/part_size-help.pd gem-0.94/help/part_size-help.pd --- gem-0.94~pre1/help/part_size-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_size-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 309 237 664 366 10; +#X declare -lib Gem; #X msg 180 86 gemList; #X text 176 62 GEM object; #X msg 180 195 gemList; @@ -11,6 +12,7 @@ #X text 52 254 change the size of the particles of a particle-system. You can also give an initial value.; #X text 52 295 the particle-size defaults to 1.0f; +#X obj 548 8 declare -lib Gem; #X connect 0 0 4 0; #X connect 4 0 2 0; #X connect 5 0 4 1; diff -Nru gem-0.94~pre1/help/part_source-help.pd gem-0.94/help/part_source-help.pd --- gem-0.94~pre1/help/part_source-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_source-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 203 0 664 575 10; +#N canvas 203 61 664 575 10; +#X declare -lib Gem; #X msg 180 86 gemList; #X text 176 62 GEM object; #X msg 180 195 gemList; @@ -21,6 +22,7 @@ domain (like "x y z" for "point" \, "x1 y1 z1 x2 y2 z2" for "line" \, "x y z r" for "sphere" \, ...). The meaning of the arguments depends -of course- on the domain.; +#X obj 548 8 declare -lib Gem; #X connect 0 0 5 0; #X connect 5 0 2 0; #X connect 9 0 5 1; diff -Nru gem-0.94~pre1/help/part_targetcolor-help.pd gem-0.94/help/part_targetcolor-help.pd --- gem-0.94~pre1/help/part_targetcolor-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_targetcolor-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 853 285 600 500 10; +#X declare -lib Gem; #X msg 199 131 gemList; #X text 176 62 GEM object; #X text 185 27 part_targetcolor; @@ -8,6 +9,7 @@ #X text 89 291 part_targetcolor changes the color of the particles by a scale factor every frame. The target color can be an RGB or RGBA vector. The scale value defaults to 0.05; +#X obj 488 8 declare -lib Gem; #X connect 0 0 3 0; #X connect 4 0 3 1; #X connect 5 0 3 2; diff -Nru gem-0.94~pre1/help/part_targetsize-help.pd gem-0.94/help/part_targetsize-help.pd --- gem-0.94~pre1/help/part_targetsize-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_targetsize-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 853 285 600 500 10; +#X declare -lib Gem; #X msg 199 131 gemList; #X text 176 62 GEM object; #X msg 299 178 scale; @@ -9,6 +10,7 @@ a scale factor every frame. The default size is 1 The scale value defaults to 0.05; #X obj 198 277 part_targetsize 3 0.01; +#X obj 488 8 declare -lib Gem; #X connect 0 0 4 0; #X connect 2 0 4 2; #X connect 5 0 4 1; diff -Nru gem-0.94~pre1/help/part_velcone-help.pd gem-0.94/help/part_velcone-help.pd --- gem-0.94~pre1/help/part_velcone-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_velcone-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 109 126 635 466 10; +#X declare -lib Gem; #X msg 110 93 gemList; #X text 121 50 GEM object; #X msg 170 151 x y z; @@ -14,6 +15,7 @@ the system.; #X msg 465 326 x y z height; #X obj 239 360 part_velocity cone <x> <z> <z> <height>; +#X obj 518 8 declare -lib Gem; #X connect 0 0 8 0; #X connect 2 0 8 1; #X connect 8 0 3 0; diff -Nru gem-0.94~pre1/help/part_velocity-help.pd gem-0.94/help/part_velocity-help.pd --- gem-0.94~pre1/help/part_velocity-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_velocity-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 142 -38 627 488 10; +#N canvas 142 61 627 488 10; +#X declare -lib Gem; #X msg 110 93 gemList; #X text 121 50 GEM object; #X msg 110 219 gemList; @@ -18,6 +19,7 @@ domain (like "x y z" for "point" \, "x1 y1 z1 x2 y2 z2" for "line" \, "x y z r" for "sphere" \, ...). The meaning of the arguments depends -of course- on the domain.; +#X obj 508 8 declare -lib Gem; #X connect 0 0 5 0; #X connect 5 0 2 0; #X connect 7 0 5 1; diff -Nru gem-0.94~pre1/help/part_velsphere-help.pd gem-0.94/help/part_velsphere-help.pd --- gem-0.94~pre1/help/part_velsphere-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_velsphere-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 109 126 635 466 10; +#X declare -lib Gem; #X msg 110 93 gemList; #X text 121 50 GEM object; #X msg 170 151 x y z; @@ -14,6 +15,7 @@ #X text 41 361 this is obsolete \, use; #X obj 239 360 part_velocity sphere <x> <z> <z> <radius>; #X msg 465 326 x y z radius; +#X obj 518 8 declare -lib Gem; #X connect 0 0 4 0; #X connect 2 0 4 1; #X connect 4 0 5 0; diff -Nru gem-0.94~pre1/help/part_vertex-help.pd gem-0.94/help/part_vertex-help.pd --- gem-0.94~pre1/help/part_vertex-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/part_vertex-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 318 36 664 366 10; +#N canvas 318 61 664 366 10; +#X declare -lib Gem; #X msg 180 86 gemList; #X text 176 62 GEM object; #X msg 180 195 gemList; @@ -10,6 +11,7 @@ #X text 51 252 add a particle at the specified offset. You will need this if you want any particles in your particle-system \, especially with moving particle sources.; +#X obj 548 8 declare -lib Gem; #X connect 0 0 5 0; #X connect 5 0 2 0; #X connect 7 0 5 1; diff -Nru gem-0.94~pre1/help/pix_2grey-help.pd gem-0.94/help/pix_2grey-help.pd --- gem-0.94~pre1/help/pix_2grey-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_2grey-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 404 365 654 372 10; -#X text 452 8 GEM object; +#N canvas 404 365 632 342 10; +#X declare -lib Gem; +#X text 442 8 GEM object; #X obj 8 245 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 252 Inlets:; @@ -69,6 +70,7 @@ #X text 17 97 Assuming that you have an image in the gemList (for instance \, loaded in with pix_image) \, [pix_2grey] will convert the image into a greyscale \, without changing the actual colorspace.; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_a_2grey-help.pd gem-0.94/help/pix_a_2grey-help.pd --- gem-0.94~pre1/help/pix_a_2grey-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_a_2grey-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 654 372 10; +#N canvas 6 61 626 372 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 275 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -78,6 +79,7 @@ #X msg 523 171 0.5; #X msg 479 170 -0.5; #X obj 451 137 pix_coloralpha; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_add-help.pd gem-0.94/help/pix_add-help.pd --- gem-0.94~pre1/help/pix_add-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_add-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 270 306 683 381 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 226 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -9,10 +10,10 @@ #X text 17 185 Arguments:; #X obj 8 66 cnv 15 430 110 empty empty empty 20 12 0 14 -233017 -66577 0; -#X obj 449 77 cnv 15 170 280 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 449 67 cnv 15 170 300 empty empty empty 20 12 0 14 -228992 -66577 0; -#X text 453 60 Example:; -#X obj 514 290 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X text 453 50 Example:; +#X obj 514 303 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -32,13 +33,13 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 519 329 pd gemwin; -#X msg 519 310 create; -#X text 515 289 Create window:; -#X obj 451 168 cnv 15 160 80 empty empty empty 20 12 0 14 -24198 -66577 +#X restore 519 342 pd gemwin; +#X msg 519 323 create; +#X text 515 302 Create window:; +#X obj 451 188 cnv 15 160 80 empty empty empty 20 12 0 14 -24198 -66577 0; -#X obj 451 119 gemhead; -#X obj 502 102 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X obj 451 139 gemhead; +#X obj 496 122 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #N canvas 0 0 587 366 image 0; #X obj 77 48 inlet; @@ -52,14 +53,14 @@ #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; -#X restore 451 138 pd image; -#X obj 451 263 pix_texture; +#X restore 451 158 pd image; +#X obj 451 276 pix_texture; #X text 63 196 <none>; #X text 47 318 Outlet 1: gemlist; #X text 53 262 Inlet 1: gemlist; -#X obj 451 285 square 3; +#X obj 451 298 square 3; #X text 503 88 (JPEG \, TIFF \, ..); -#X obj 541 122 gemhead; +#X obj 541 142 gemhead; #N canvas 0 0 587 366 image 0; #X obj 77 48 inlet; #X obj 77 344 outlet; @@ -72,19 +73,20 @@ #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; -#X restore 541 141 pd image; -#X obj 592 103 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X restore 541 161 pd image; +#X obj 586 123 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #X text 53 291 Inlet 2: gemlist; -#X text 449 77 open two different images; +#X text 449 67 open two different images; #X text 50 12 Synopsis: [pix_add]; #X text 71 31 Class: pix mix object; #X text 29 67 Description: add 2 images; #X text 29 91 [pix_add] simply adds two pixes together. It clamps the images so that they remain in the range of the image. (In other words \, it is easy to get a white out).; -#X obj 451 198 pix_add; +#X obj 451 218 pix_add; #X text 33 137 The 2 images have to be of the same size.; +#X obj 527 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 16 0; diff -Nru gem-0.94~pre1/help/pix_aging-help.pd gem-0.94/help/pix_aging-help.pd --- gem-0.94~pre1/help/pix_aging-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_aging-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 654 490 10; +#N canvas 6 61 654 446 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 140 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -90,7 +91,7 @@ 1; #X msg 580 199 pits \$1; #X msg 480 197 coloraging \$1; -#X obj 481 179 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +#X obj 481 179 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X floatatom 525 143 5 0 0 0 - - -; #X msg 525 161 scratch \$1; @@ -99,6 +100,7 @@ #X text 63 324 Inlet 1: scratch <int> : add a maximum of # scratches ; #X text 63 306 Inlet 1: coloraging 0|1: color-bleaching; +#X obj 538 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_alpha-help.pd gem-0.94/help/pix_alpha-help.pd --- gem-0.94~pre1/help/pix_alpha-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_alpha-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 42 278 695 523 10; +#N canvas 42 278 631 490 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 345 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -12,7 +13,7 @@ #X obj 449 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; #X text 453 60 Example:; -#X obj 574 341 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 514 421 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -32,9 +33,9 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 579 380 pd gemwin; -#X msg 579 361 create; -#X text 575 340 Create window:; +#X restore 519 460 pd gemwin; +#X msg 519 441 create; +#X text 515 420 Create window:; #X obj 450 158 cnv 15 160 120 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 84 gemhead; @@ -90,6 +91,7 @@ #X text 63 388 Inlet 3: <float>: ALPHA-value if not passed; #X text 63 400 Inlet 4: <list>: high-threshold (RGB); #X text 63 413 Inlet 4: <list>: low-threshold (RGB); +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 30 0; diff -Nru gem-0.94~pre1/help/pix_background-help.pd gem-0.94/help/pix_background-help.pd --- gem-0.94~pre1/help/pix_background-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_background-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 436 51 655 473 10; +#N canvas 436 61 655 437 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 256 cnv 15 430 170 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -94,6 +95,7 @@ #X restore 451 113 pd film; #X text 516 105 open an movie; #X text 509 118 (AVI \, MPEG \, MOV); +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 35 0; diff -Nru gem-0.94~pre1/help/pix_backlight-help.pd gem-0.94/help/pix_backlight-help.pd --- gem-0.94~pre1/help/pix_backlight-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_backlight-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 651 393 10; +#N canvas 6 61 651 356 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 216 cnv 15 430 125 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -77,6 +78,7 @@ #X obj 469 172 / 100; #X text 516 105 open an image; #X text 509 118 (JPEG \, TIFF \, ..); +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_biquad-help.pd gem-0.94/help/pix_biquad-help.pd --- gem-0.94~pre1/help/pix_biquad-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_biquad-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 288 289 775 405 10; +#N canvas 288 289 658 405 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 9 265 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -145,6 +146,7 @@ #X obj 457 209 pack 1 0 0 1 0 0; #X text 22 327 Inlet 1: <list> : the filter-coefficients "fb0 fb1 fb2 ff1 ff2 ff3"; +#X obj 548 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 20 0; diff -Nru gem-0.94~pre1/help/pix_bitmask-help.pd gem-0.94/help/pix_bitmask-help.pd --- gem-0.94~pre1/help/pix_bitmask-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_bitmask-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 43 367 654 479 10; +#N canvas 43 367 654 380 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -79,6 +80,7 @@ ; #X text 13 295 Inlet 3: list: 3 (RGB) or 4 (RGBA) mask-values in INTeger (0..255); +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_blob-help.pd gem-0.94/help/pix_blob-help.pd --- gem-0.94~pre1/help/pix_blob-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_blob-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,15 +1,16 @@ -#N canvas 0 0 634 679 10; +#N canvas 6 61 489 679 10; +#X declare -lib Gem; #X msg 142 104 gemList; #X msg 142 307 gemList; #X text 169 16 part of GEM; -#X floatatom 186 256 3 0 0; -#X floatatom 164 281 3 0 0; +#X floatatom 186 256 3 0 0 0 - - -; +#X floatatom 164 281 3 0 0 0 - - -; #X obj 142 207 pix_blob; #X text 176 43 [pix_blob]; #X text 93 73 get the "center of gravity" of an image; #X msg 175 133 <mode>; #X msg 209 173 <color-weights>; -#X floatatom 209 232 3 0 0; +#X floatatom 209 232 3 0 0 0 - - -; #X text 250 231 size; #X text 232 261 Y; #X text 210 282 X; @@ -29,6 +30,7 @@ ; #X text 56 617 Specifying only one single color-weight <w> \, is the same as "<w> <w> <w> 0"; +#X obj 378 8 declare -lib Gem; #X connect 0 0 5 0; #X connect 5 0 1 0; #X connect 5 1 4 0; diff -Nru gem-0.94~pre1/help/pix_buffer-help.pd gem-0.94/help/pix_buffer-help.pd --- gem-0.94~pre1/help/pix_buffer-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_buffer-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,6 +1,7 @@ -#N canvas 350 148 784 564 10; +#N canvas 350 148 668 535 10; +#X declare -lib Gem; #X text 452 8 GEM object; -#X obj 9 263 cnv 15 430 170 empty empty empty 20 12 0 14 -233017 -66577 +#X obj 9 263 cnv 15 430 250 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 40 265 Inlets:; #X obj 9 227 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577 @@ -65,6 +66,7 @@ slot <src> to slot <target>; #X text 23 444 Inlet 1: message: save <filename> <index>: save image in given slot to harddisk.; +#X obj 548 8 declare -lib Gem; #X connect 16 0 23 0; #X connect 18 0 23 0; #X connect 23 0 17 0; diff -Nru gem-0.94~pre1/help/pix_buffer_read-help.pd gem-0.94/help/pix_buffer_read-help.pd --- gem-0.94~pre1/help/pix_buffer_read-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_buffer_read-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 48 174 691 473 10; +#N canvas 48 174 691 406 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 9 265 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -63,6 +64,7 @@ ; #X msg 464 138 set depot3; #X obj 508 362 pix_buffer depot3 1; +#X obj 548 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 25 0; diff -Nru gem-0.94~pre1/help/pix_buffer_write-help.pd gem-0.94/help/pix_buffer_write-help.pd --- gem-0.94~pre1/help/pix_buffer_write-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_buffer_write-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 19 20 691 473 10; +#N canvas 19 61 654 413 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 9 265 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -83,6 +84,7 @@ #X text 29 57 Description: write images to a [pix_buffer]; #X obj 451 272 translate 2 0 1 0; #X obj 451 292 square 1.9; +#X obj 548 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 18 0; diff -Nru gem-0.94~pre1/help/pix_buf-help.pd gem-0.94/help/pix_buf-help.pd --- gem-0.94~pre1/help/pix_buf-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_buf-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 404 68 654 486 10; +#N canvas 404 68 627 477 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 325 cnv 15 430 140 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -82,6 +83,7 @@ force all subsequent [pix_]-objects to process.; #X text 22 391 Inlet 1: auto 1|0: force image-processing in subsequent objects each render-cycle (default:0); +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_chroma_key-help.pd gem-0.94/help/pix_chroma_key-help.pd --- gem-0.94~pre1/help/pix_chroma_key-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_chroma_key-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 280 22 628 495 10; -#X text 452 8 GEM object; +#N canvas 280 61 632 502 10; +#X declare -lib Gem; +#X text 442 8 GEM object; #X obj 8 277 cnv 15 430 210 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 277 Inlets:; @@ -124,6 +125,7 @@ #X restore 546 139 pd image; #X text 37 215 RGB values are 0-1 \, YUV values are 16/255-239/255 ; +#X obj 508 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 41 0; diff -Nru gem-0.94~pre1/help/pix_clearblock-help.pd gem-0.94/help/pix_clearblock-help.pd --- gem-0.94~pre1/help/pix_clearblock-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_clearblock-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 159 184 656 313 10; +#X declare -lib Gem; #X msg 164 109 gemList; #X msg 164 227 gemList; #X text 155 10 part of GEM; @@ -7,5 +8,6 @@ #X text 60 78 clear an image without destroying the texture; #X text 58 255 all texture information/setup will be stored \, whereas the image itself will be deleted; +#X obj 538 8 declare -lib Gem; #X connect 0 0 3 0; #X connect 3 0 1 0; diff -Nru gem-0.94~pre1/help/pix_coloralpha-help.pd gem-0.94/help/pix_coloralpha-help.pd --- gem-0.94~pre1/help/pix_coloralpha-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_coloralpha-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 75 13 690 372 10; +#N canvas 75 61 633 341 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -12,7 +13,7 @@ #X obj 449 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; #X text 453 60 Example:; -#X obj 520 218 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 520 218 cnv 15 90 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -34,7 +35,7 @@ #X connect 7 0 0 0; #X restore 525 257 pd gemwin; #X msg 525 238 create; -#X text 521 217 Create window:; +#X text 521 218 Create window:; #X obj 450 138 cnv 15 160 50 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 84 gemhead; @@ -76,6 +77,7 @@ #X text 63 275 Inlet 1: 1|0 : turn on/off (default:1); #X obj 467 142 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_colorclassify-help.pd gem-0.94/help/pix_colorclassify-help.pd --- gem-0.94~pre1/help/pix_colorclassify-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_colorclassify-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 117 177 850 516 10; +#N canvas 117 177 635 396 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 196 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -71,7 +72,7 @@ representatives for each pixel: red [1 0 0] \, green [0 1 0] \, blue [0 0 1] \, yellow [1 1 0] \, black [0 0 0] \, white [1 1 1] \, unsure [154/255 \, 115/255 \, 86/255]; -#X obj 451 196 pix_colorclassify; +#X obj 451 180 pix_colorclassify; #X text 16 357 Author: Ricardo Fabbri labmacambira.sf.net rfabbri at gmail; #X text 42 95 [pix_colorclassify] will detect colors in a pixImage @@ -79,6 +80,7 @@ \, black \, white \, or 'uncertain'. It will only detect a color if it is unambiguous.; #X text 50 12 Synopsis: [pix_colorclassify]; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_color-help.pd gem-0.94/help/pix_color-help.pd --- gem-0.94~pre1/help/pix_color-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_color-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 654 372 10; +#N canvas 6 61 630 343 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -73,6 +74,7 @@ can be achieved with the [color] object !; #X text 516 105 open an image; #X text 509 118 (JPEG \, TIFF \, ..); +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_colormatrix-help.pd gem-0.94/help/pix_colormatrix-help.pd --- gem-0.94~pre1/help/pix_colormatrix-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_colormatrix-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 76 273 636 411 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 295 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -78,15 +79,15 @@ #X text 93 204 r g b; #X text 94 221 r g b; #X obj 451 266 pix_colormatrix; -#X floatatom 495 195 3 -1 2 0 - - -; -#X floatatom 518 195 3 -1 2 0 - - -; -#X floatatom 541 195 3 -1 2 0 - - -; -#X floatatom 495 209 3 -1 2 0 - - -; -#X floatatom 518 209 3 -1 2 0 - - -; -#X floatatom 541 209 3 -1 2 0 - - -; -#X floatatom 495 223 3 -1 2 0 - - -; -#X floatatom 518 223 3 -1 2 0 - - -; -#X floatatom 541 223 3 -1 2 0 - - -; +#X floatatom 495 165 3 -1 2 0 - - -; +#X floatatom 518 165 3 -1 2 0 - - -; +#X floatatom 541 165 3 -1 2 0 - - -; +#X floatatom 495 189 3 -1 2 0 - - -; +#X floatatom 518 189 3 -1 2 0 - - -; +#X floatatom 541 189 3 -1 2 0 - - -; +#X floatatom 495 213 3 -1 2 0 - - -; +#X floatatom 518 213 3 -1 2 0 - - -; +#X floatatom 541 213 3 -1 2 0 - - -; #N canvas 0 0 450 300 pack 0; #X obj 69 169 pack 0 0 0 0 0 0 0 0 0; #X obj 69 139 t b f; @@ -136,6 +137,7 @@ #X restore 474 236 pd pack 9 . . .; #X msg 471 164 1; #X obj 471 145 loadbang; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_colorreduce-help.pd gem-0.94/help/pix_colorreduce-help.pd --- gem-0.94~pre1/help/pix_colorreduce-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_colorreduce-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 654 372 10; +#N canvas 6 61 631 342 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 196 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -74,6 +75,7 @@ 1; #X text 516 105 open an image; #X text 509 118 (JPEG \, TIFF \, ..); +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_compare-help.pd gem-0.94/help/pix_compare-help.pd --- gem-0.94~pre1/help/pix_compare-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_compare-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 69 186 667 394 10; +#N canvas 69 186 628 389 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 226 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -37,9 +38,9 @@ #X text 515 278 Create window:; #X obj 451 157 cnv 15 160 80 empty empty empty 20 12 0 14 -24198 -66577 0; -#X obj 451 108 gemhead; +#X obj 451 112 gemhead; #X text 71 31 Class: pix object; -#X obj 502 91 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X obj 496 95 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #N canvas 0 22 587 366 image 0; #X obj 77 48 inlet; @@ -53,14 +54,14 @@ #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; -#X restore 451 127 pd image; +#X restore 451 131 pd image; #X obj 451 252 pix_texture; #X text 63 196 <direction>; #X text 47 308 Outlet 1: gemlist; #X text 53 242 Inlet 1: gemlist; #X obj 451 274 square 3; #X text 503 77 (JPEG \, TIFF \, ..); -#X obj 541 111 gemhead; +#X obj 541 115 gemhead; #N canvas 0 22 587 366 image 0; #X obj 77 48 inlet; #X obj 77 344 outlet; @@ -73,8 +74,8 @@ #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; -#X restore 541 130 pd image; -#X obj 592 92 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X restore 541 134 pd image; +#X obj 586 96 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #X msg 491 185 direction \$1; #X obj 491 167 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 0 @@ -95,6 +96,7 @@ #X text 33 354 see also:; #X obj 99 355 pix_diff; #X obj 159 355 pix_subtract; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_composite-help.pd gem-0.94/help/pix_composite-help.pd --- gem-0.94~pre1/help/pix_composite-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_composite-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 252 683 381 10; +#N canvas 6 252 639 381 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 226 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -37,8 +38,8 @@ #X text 515 289 Create window:; #X obj 451 208 cnv 15 160 40 empty empty empty 20 12 0 14 -24198 -66577 0; -#X obj 451 119 gemhead; -#X obj 502 102 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X obj 451 122 gemhead; +#X obj 496 105 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #N canvas 0 0 587 366 image 0; #X obj 77 48 inlet; @@ -52,14 +53,14 @@ #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; -#X restore 451 138 pd image; +#X restore 451 141 pd image; #X obj 451 263 pix_texture; #X text 63 196 <none>; #X text 47 318 Outlet 1: gemlist; #X text 53 262 Inlet 1: gemlist; #X obj 451 285 square 3; #X text 503 88 (JPEG \, TIFF \, ..); -#X obj 541 122 gemhead; +#X obj 547 122 gemhead; #N canvas 0 0 587 366 image 0; #X obj 77 48 inlet; #X obj 77 344 outlet; @@ -72,8 +73,8 @@ #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; -#X restore 541 141 pd image; -#X obj 592 103 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X restore 547 141 pd image; +#X obj 592 105 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #X text 53 291 Inlet 2: gemlist; #X text 449 77 open two different images; @@ -85,6 +86,7 @@ #X text 13 84 [pix_composite] mixes two pixes together based on the alpha value of the 1st pix.; #X obj 451 166 pix_coloralpha; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 16 0; diff -Nru gem-0.94~pre1/help/pix_contrast-help.pd gem-0.94/help/pix_contrast-help.pd --- gem-0.94~pre1/help/pix_contrast-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_contrast-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 59 276 654 372 10; +#N canvas 59 276 630 345 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 225 cnv 15 430 100 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -73,6 +74,7 @@ image. Both contrast and saturation modifiers must be >=0!; #X text 63 261 Inlet 2: float: contrast (>=0. default:1); #X text 63 274 Inlet 3: float: saturation (>=0. default:1); +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_convert-help.pd gem-0.94/help/pix_convert-help.pd --- gem-0.94~pre1/help/pix_convert-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_convert-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 473 0 654 372 10; +#N canvas 473 61 629 372 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -89,6 +90,7 @@ into a format you can choose.; #X obj 451 233 pix_texture; #X obj 451 256 square 3; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_convolve-help.pd gem-0.94/help/pix_convolve-help.pd --- gem-0.94~pre1/help/pix_convolve-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_convolve-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 105 476 664 410 10; +#N canvas 105 476 635 410 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 295 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -210,6 +211,7 @@ of the matrix-values row after row.; #X text 63 266 <int><int>: matrix dimensions; #X text 28 190 Currently \, only square matrices are supported.; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 21 0 23 0; diff -Nru gem-0.94~pre1/help/pix_coordinate-help.pd gem-0.94/help/pix_coordinate-help.pd --- gem-0.94~pre1/help/pix_coordinate-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_coordinate-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 395 396 694 458 10; +#N canvas 395 396 626 458 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 335 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -69,7 +70,7 @@ #X text 63 367 Inlet 2: list: 8 values (4 (s \, t)-pairs); #X obj 538 144 loadbang; #X msg 461 237 \$1 \$1 0 \$1 0 0 \$1 0; -#X floatatom 461 220 3 0 256 0 - - -, f 3; +#X floatatom 461 220 3 0 256 0 - - -; #X obj 451 136 pix_texture; #X text 14 159 IMPORTANT NOTE-1: [pix_texture] sets the texture-coordinates to "appropriate" values \, so you probably want to use [pix_coordinate] @@ -84,6 +85,7 @@ #X text 14 203 IMPORTANT NOTE-2: if your hardware supports it \, Gem tries to use "rectangle-texturing"\\\, which does not support "repeat" mode. This is an OpenGL limitation; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_crop-help.pd gem-0.94/help/pix_crop-help.pd --- gem-0.94~pre1/help/pix_crop-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_crop-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 651 393 10; +#N canvas 6 61 624 360 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 216 cnv 15 430 125 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -35,7 +36,7 @@ #X restore 519 293 pd gemwin; #X msg 519 274 create; #X text 515 253 Create window:; -#X obj 450 146 cnv 15 160 80 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 450 146 cnv 15 165 80 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 84 gemhead; #X text 71 31 Class: pix object; @@ -75,6 +76,7 @@ and the offset (in pixels) from the lower left corner.; #X text 516 105 open an image; #X text 509 118 (JPEG \, TIFF \, ..); +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_curve-help.pd gem-0.94/help/pix_curve-help.pd --- gem-0.94~pre1/help/pix_curve-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_curve-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 0 321 774 553 10; -#X text 452 8 GEM object; +#N canvas 6 321 733 553 10; +#X declare -lib Gem; +#X text 542 8 GEM object; #X obj 8 386 cnv 15 430 150 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 388 Inlets:; @@ -9,7 +10,7 @@ #X text 47 305 Arguments:; #X obj 7 76 cnv 15 430 220 empty empty empty 20 12 0 14 -233017 -66577 0; -#X obj 449 77 cnv 15 210 250 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 449 77 cnv 15 270 250 empty empty empty 20 12 0 14 -228992 -66577 0; #X text 453 60 Example:; #X obj 514 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 @@ -35,7 +36,7 @@ #X restore 519 293 pd gemwin; #X msg 519 274 create; #X text 515 253 Create window:; -#X obj 450 138 cnv 15 200 100 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 451 138 cnv 15 260 100 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 84 gemhead; #X text 71 31 Class: pix object; @@ -145,6 +146,7 @@ for all channels; #X text 23 461 Inlet 1: set <table1><table2><table3><table4>: separate tables for all channels (incl. Alpha); +#X obj 618 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_data-help.pd gem-0.94/help/pix_data-help.pd --- gem-0.94~pre1/help/pix_data-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_data-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 1413 30 695 382 10; +#N canvas 141 109 695 382 10; +#X declare -lib Gem; #X text 92 6 [pix_data]; #X text 93 25 get pixel-data of an image; #X obj 14 57 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 @@ -72,6 +73,7 @@ #X restore 345 332 pd gemwin; #X msg 345 313 create; #X text 341 292 Create window:; +#X obj 568 8 declare -lib Gem; #X connect 12 1 15 0; #X connect 12 2 14 0; #X connect 13 0 12 0; diff -Nru gem-0.94~pre1/help/pix_deinterlace-help.pd gem-0.94/help/pix_deinterlace-help.pd --- gem-0.94~pre1/help/pix_deinterlace-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_deinterlace-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 392 297 654 372 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 100 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -7,7 +8,7 @@ #X obj 8 204 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 17 203 Arguments:; -#X obj 7 76 cnv 15 430 100 empty empty empty 20 12 0 14 -233017 -66577 +#X obj 7 76 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 449 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -82,6 +83,7 @@ always enforced.; #X text 63 282 Inlet 1: mode <int>: enforce(1) or not(0) (default:1) ; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_delay-help.pd gem-0.94/help/pix_delay-help.pd --- gem-0.94~pre1/help/pix_delay-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_delay-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 230 0 683 377 10; +#N canvas 230 61 629 377 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 9 225 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -77,6 +78,7 @@ You can specify the length of the entire delay-line (==maximum delay) as an argument to the [pix_delay] object. The delay in frames defaults to 0 (route through) and can be changed via the second inlet.; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 23 0; diff -Nru gem-0.94~pre1/help/pix_diff-help.pd gem-0.94/help/pix_diff-help.pd --- gem-0.94~pre1/help/pix_diff-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_diff-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 4 320 683 381 10; +#N canvas 6 320 629 381 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 226 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -37,8 +38,8 @@ #X text 514 278 Create window:; #X obj 450 157 cnv 15 160 80 empty empty empty 20 12 0 14 -24198 -66577 0; -#X obj 450 108 gemhead; -#X obj 501 91 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X obj 450 118 gemhead; +#X obj 495 101 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #N canvas 0 22 587 366 image 0; #X obj 77 48 inlet; @@ -52,14 +53,14 @@ #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; -#X restore 450 127 pd image; +#X restore 450 137 pd image; #X obj 450 252 pix_texture; #X text 63 196 <none>; #X text 42 306 Outlet 1: gemlist; #X text 48 250 Inlet 1: gemlist; #X obj 450 274 square 3; #X text 502 77 (JPEG \, TIFF \, ..); -#X obj 540 111 gemhead; +#X obj 540 118 gemhead; #N canvas 0 22 587 366 image 0; #X obj 77 48 inlet; #X obj 77 344 outlet; @@ -72,8 +73,8 @@ #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; -#X restore 540 130 pd image; -#X obj 591 92 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X restore 540 137 pd image; +#X obj 585 101 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #X text 48 279 Inlet 2: gemlist; #X text 448 66 open two different images; @@ -87,6 +88,7 @@ #X text 32 353 see also:; #X obj 100 353 pix_subtract; #X obj 180 353 pix_compare; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 16 0; diff -Nru gem-0.94~pre1/help/pix_dot-help.pd gem-0.94/help/pix_dot-help.pd --- gem-0.94~pre1/help/pix_dot-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_dot-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 22 658 376 10; +#N canvas 6 61 633 352 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 196 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -40,7 +41,7 @@ #X obj 451 84 gemhead; #X text 50 12 Synopsis: [pix_dot]; #X text 71 31 Class: pix object; -#X obj 451 196 pix_dot; +#X obj 451 180 pix_dot; #X obj 510 85 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 -1 -1; #N canvas 0 22 587 366 image 0; @@ -56,7 +57,7 @@ #X connect 4 0 2 0; #X connect 5 0 4 0; #X restore 451 113 pd image; -#X floatatom 524 184 5 0 100 2 size - -; +#X floatatom 524 181 5 0 100 2 size - -; #X obj 451 233 pix_texture; #X text 57 295 Outlet 1: gemlist; #X text 63 212 Inlet 1: gemlist; @@ -69,6 +70,7 @@ whose size is relative to the luminance of the original segment.; #X obj 451 255 square 3; #X text 63 166 <size>; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 19 0; diff -Nru gem-0.94~pre1/help/pix_draw-help.pd gem-0.94/help/pix_draw-help.pd --- gem-0.94~pre1/help/pix_draw-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_draw-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 106 178 654 400 10; +#N canvas 106 178 626 382 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 295 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -77,6 +78,7 @@ #X floatatom 563 149 5 -4 2 0 - - -; #X text 16 216 [pix_draw] is used in the example patches a lot \, just because it is one object less (compared to [pix_texture]; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_dump-help.pd gem-0.94/help/pix_dump-help.pd --- gem-0.94~pre1/help/pix_dump-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_dump-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 842 262 654 372 10; +#N canvas 207 155 629 372 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 100 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -77,6 +78,7 @@ #X obj 451 267 rectangle 3 3; #X msg 530 186 bytemode \$1; #X text 63 286 Inlet 1: bytemode: set normalization on or off; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_duotone-help.pd gem-0.94/help/pix_duotone-help.pd --- gem-0.94~pre1/help/pix_duotone-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_duotone-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 651 393 10; +#N canvas 6 61 651 353 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 216 cnv 15 430 125 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -78,6 +79,7 @@ #X text 63 245 Inlet 2: list: threshold (RGB); #X text 516 105 open an image; #X text 509 118 (JPEG \, TIFF \, ..); +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_equal-help.pd gem-0.94/help/pix_equal-help.pd --- gem-0.94~pre1/help/pix_equal-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_equal-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 1526 184 639 504 10; +#N canvas 176 166 639 504 10; +#X declare -lib Gem; #X text 462 18 GEM object; #X obj 18 206 cnv 15 430 210 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -88,6 +89,7 @@ #X text 456 373 and having any alpha; #X text 457 342 e.g. marks whatever is within; #X text 456 358 a certain bright yellow range; +#X obj 528 18 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_film-help.pd gem-0.94/help/pix_film-help.pd --- gem-0.94~pre1/help/pix_film-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_film-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 26 86 704 623 10; +#N canvas 163 146 704 623 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 9 272 cnv 15 430 340 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -148,9 +149,6 @@ #X obj 473 305 unpack 0 0 0 0; #X floatatom 581 306 5 0 0 3 fps - -; #X obj 451 281 pix_film; -#X msg 486 212 driver foo; -#X text 17 391 Inlet 1: message : driver <name>: open the film using -only the specified backend(s), f 70; #X msg 489 237 bang; #X text 17 418 Inlet 1: message : bang: (re)send the l/w/h/fps info to the 2nd outlet, f 69; @@ -162,6 +160,10 @@ to zero when the end of the film is reached., f 69; #X text 16 445 Inlet 2: float: <frame#> changes the frame to be decoded on rendering (starting with 0), f 69; +#X msg 486 212 loader foo; +#X text 17 391 Inlet 1: message : loader <name>: open the film using +only the specified backend(s), f 70; +#X obj 578 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 46 0; @@ -181,4 +183,4 @@ #X connect 46 1 44 0; #X connect 46 2 24 0; #X connect 47 0 46 0; -#X connect 49 0 46 0; +#X connect 51 0 46 0; diff -Nru gem-0.94~pre1/help/pix_flip-help.pd gem-0.94/help/pix_flip-help.pd --- gem-0.94~pre1/help/pix_flip-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_flip-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 477 283 654 372 10; +#N canvas 477 283 641 360 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -72,6 +73,7 @@ #X obj 451 226 pix_flip; #X obj 451 253 pix_texture; #X obj 451 274 square; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_freeframe-help.pd gem-0.94/help/pix_freeframe-help.pd --- gem-0.94~pre1/help/pix_freeframe-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_freeframe-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 346 44 665 538 10; +#N canvas 346 61 665 552 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 340 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577 0; @@ -116,6 +117,7 @@ from 1); #X text 22 441 Inlet 1: <name> <value>: set parameter given by <name> ; +#X obj 538 8 declare -lib Gem; #X connect 16 0 17 0; #X connect 17 0 16 0; #X connect 19 0 22 0; diff -Nru gem-0.94~pre1/help/pix_frei0r-help.pd gem-0.94/help/pix_frei0r-help.pd --- gem-0.94~pre1/help/pix_frei0r-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_frei0r-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 19 44 676 544 10; -#X text 452 8 GEM object; +#N canvas 19 61 676 556 10; +#X declare -lib Gem; +#X text 482 18 GEM object; #X obj 7 376 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 11 378 Inlets:; @@ -114,6 +115,7 @@ from 1); #X text 22 441 Inlet 1: <name> <value>: set parameter given by <name> ; +#X obj 548 18 declare -lib Gem; #X connect 22 0 23 0; #X connect 23 0 22 0; #X connect 25 0 28 0; diff -Nru gem-0.94~pre1/help/pix_gain-help.pd gem-0.94/help/pix_gain-help.pd --- gem-0.94~pre1/help/pix_gain-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_gain-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 394 120 654 440 10; +#N canvas 394 120 624 402 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 275 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -77,6 +78,7 @@ #X text 23 305 Inlet 1: <float>: multiplier for all channels; #X text 23 321 Inlet 2: list: 3 (RGB) or 4 (RGBA) values as multipliers for each channels; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_grey-help.pd gem-0.94/help/pix_grey-help.pd --- gem-0.94~pre1/help/pix_grey-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_grey-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 637 82 654 432 10; +#N canvas 637 82 627 432 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -81,6 +82,7 @@ #X obj 24 390 pix_2grey; #X text 97 384 produces similar ("grey") results \, but does NO colourspace-conversion!! ; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_halftone-help.pd gem-0.94/help/pix_halftone-help.pd --- gem-0.94~pre1/help/pix_halftone-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_halftone-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 318 0 654 480 10; +#N canvas 318 61 628 469 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -84,6 +85,7 @@ #X text 111 405 2...diamond dots; #X text 111 418 3...'euclidean' dots; #X text 111 431 4...postscript diamond dots; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 16 0; diff -Nru gem-0.94~pre1/help/pix_histo-help.pd gem-0.94/help/pix_histo-help.pd --- gem-0.94~pre1/help/pix_histo-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_histo-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 230 118 660 604 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 405 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -9,7 +10,7 @@ #X text 17 335 Arguments:; #X obj 7 76 cnv 15 430 250 empty empty empty 20 12 0 14 -233017 -66577 0; -#X obj 449 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 449 77 cnv 15 200 250 empty empty empty 20 12 0 14 -228992 -66577 0; #X text 453 60 Example:; #X obj 514 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 @@ -35,7 +36,7 @@ #X restore 519 293 pd gemwin; #X msg 519 274 create; #X text 515 253 Create window:; -#X obj 450 132 cnv 15 160 90 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 450 143 cnv 15 180 90 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 84 gemhead; #X text 71 31 Class: pix object; @@ -57,7 +58,7 @@ #X text 56 518 Outlet 1: gemlist; #X text 63 422 Inlet 1: gemlist; #X text 50 12 Synopsis: [pix_color]; -#X obj 451 233 pix_draw; +#X obj 451 253 pix_draw; #X text 516 105 open an image; #X text 509 118 (JPEG \, TIFF \, ..); #X text 20 101 [pix_histo] will get the histogram (density function) @@ -76,14 +77,14 @@ #X obj 158 543 table tab-1; #X obj 242 544 table tab-2; #X obj 325 545 table tab-3; -#X msg 461 156 set tab-1 tab-2 tab-3; -#N canvas 0 0 450 300 graph6 0; +#X msg 461 167 set tab-1 tab-2 tab-3; +#N canvas 0 0 450 300 (subpatch) 0; #X array tab-0 100 float 0; #X coords 0 1 99 -1 200 140 1; -#X restore 445 333 graph; -#X obj 451 196 pix_histo tab-0; -#X msg 459 135 set tab-0; -#X msg 457 177 set tab-1 tab-2 tab-3 tab-0; +#X restore 448 363 graph; +#X obj 451 207 pix_histo tab-0; +#X msg 459 146 set tab-0; +#X msg 457 188 set tab-1 tab-2 tab-3 tab-0; #X text 63 346 1 arg:: <tablename> to store grey-histogram; #X text 62 363 3 args: <tablename>s to store RGB-histograms; #X text 62 378 4 args: <tablename>s to store RGBA-histograms; @@ -93,6 +94,7 @@ RGB-histograms; #X text 63 474 Inlet 1: set <table1><table2><table3><table4> : tables to store RGBA-histograms; +#X obj 528 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_hsv2rgb-help.pd gem-0.94/help/pix_hsv2rgb-help.pd --- gem-0.94~pre1/help/pix_hsv2rgb-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_hsv2rgb-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 654 413 10; +#N canvas 6 61 626 365 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -73,6 +74,7 @@ RGBA. The Red-channel is interpreted as Hue-values....; #X text 94 340 see also:; #X obj 187 338 pix_rgb2hsv; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_image-help.pd gem-0.94/help/pix_image-help.pd --- gem-0.94~pre1/help/pix_image-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_image-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 265 101 690 413 10; -#X text 452 8 GEM object; +#N canvas 265 101 690 395 10; +#X declare -lib Gem; +#X text 502 8 GEM object; #X obj 8 295 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 298 Inlets:; @@ -35,7 +36,7 @@ #X restore 519 293 pd gemwin; #X msg 519 274 create; #X text 515 253 Create window:; -#X obj 451 148 cnv 15 160 70 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 451 148 cnv 15 220 100 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 84 gemhead; #X text 56 368 Outlet 1: gemlist; @@ -85,6 +86,7 @@ #X text 15 138 [pix_image] loads in TIFFs \, JPEGs and probably more (depending on your platform and how Gem was compiled); #X obj 451 226 pix_image examples/data/fractal.JPG; +#X obj 578 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 34 0; diff -Nru gem-0.94~pre1/help/pix_imageInPlace-help.pd gem-0.94/help/pix_imageInPlace-help.pd --- gem-0.94~pre1/help/pix_imageInPlace-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_imageInPlace-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 706 507 10; +#N canvas 6 61 629 507 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 335 cnv 15 430 160 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -73,6 +74,7 @@ When you select an image to display with [pix_multiimage] \, it copies over the image data to the pix-buffer \, which is then used by [pix_texture]. ; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 23 0; diff -Nru gem-0.94~pre1/help/pix_indycam-help.pd gem-0.94/help/pix_indycam-help.pd --- gem-0.94~pre1/help/pix_indycam-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_indycam-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 69 65 686 503 10; +#X declare -lib Gem; #X msg 122 72 gemList; #X msg 122 213 gemList; #X text 83 44 get a video signal; @@ -17,5 +18,6 @@ ; #X text 41 264 [pix_indycam] obviously only works with SGI video workstations. The name indicates that it likes SGI-indy's the most.; +#X obj 578 8 declare -lib Gem; #X connect 0 0 10 0; #X connect 10 0 1 0; diff -Nru gem-0.94~pre1/help/pix_info-help.pd gem-0.94/help/pix_info-help.pd --- gem-0.94~pre1/help/pix_info-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_info-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 1474 88 651 488 10; +#N canvas 398 110 651 488 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 236 cnv 15 430 160 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -84,6 +85,7 @@ #X text 57 380 Outlet 8: pointer: image-data; #X text 57 349 Outlet 6: list: <type> <upsidedown> <notowned>; #X text 57 366 Outlet 7: list: <newimage> <newfilm>; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_invert-help.pd gem-0.94/help/pix_invert-help.pd --- gem-0.94~pre1/help/pix_invert-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_invert-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 654 337 10; +#N canvas 6 61 626 337 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -68,6 +69,7 @@ #X text 16 126 [pix_invert] will invert your image. Thus all black pixels will become white and vice-versa.; #X text 50 12 Synopsis: [pix_invert]; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_kaleidoscope-help.pd gem-0.94/help/pix_kaleidoscope-help.pd --- gem-0.94~pre1/help/pix_kaleidoscope-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_kaleidoscope-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 102 92 665 538 10; +#N canvas 102 92 647 538 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 7 206 cnv 15 430 280 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -110,6 +111,7 @@ #X floatatom 547 187 4 0 100 0 - - -; #X obj 495 206 * 0.01; #X obj 547 206 * 0.01; +#X obj 538 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 22 0 24 0; diff -Nru gem-0.94~pre1/help/pix_levels-help.pd gem-0.94/help/pix_levels-help.pd --- gem-0.94~pre1/help/pix_levels-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_levels-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 537 22 651 547 10; +#N canvas 537 61 630 547 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 216 cnv 15 430 300 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -78,7 +79,7 @@ #X msg 520 158 inv \$1; #X msg 461 225 0 1 0.5 0.6; #X obj 451 265 pix_levels; -#X msg 546 216 0.5 0.6 0 1; +#X msg 536 216 0.5 0.6 0 1; #X msg 460 195 uni \$1; #X text 29 77 Description: level adjustment; #X text 33 274 Inlet 1: message: uni [1|0] (choose between uniform @@ -102,9 +103,10 @@ also an auto-mode available; #X text 33 247 Inlet 1: message: auto [1|0] (turns automatic level-correction on/off)(default:0); -#X msg 546 193 0 0.1 1 0.5; +#X msg 536 193 0 0.1 1 0.5; #X text 516 105 open an image; #X text 509 118 (JPEG \, TIFF \, ..); +#X obj 523 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_lumaoffset-help.pd gem-0.94/help/pix_lumaoffset-help.pd --- gem-0.94~pre1/help/pix_lumaoffset-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_lumaoffset-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 651 393 10; +#N canvas 6 61 629 393 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 216 cnv 15 430 125 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -83,6 +84,7 @@ #X text 509 118 (JPEG \, TIFF \, ..); #X text 13 357 NOTE: specifying too high offsets might cause crashes!!! ; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_mask-help.pd gem-0.94/help/pix_mask-help.pd --- gem-0.94~pre1/help/pix_mask-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_mask-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 71 263 665 372 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 226 cnv 15 430 110 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -38,7 +39,7 @@ #X obj 451 166 cnv 15 160 40 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 108 gemhead; -#X obj 502 91 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X obj 496 91 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #N canvas 0 22 587 366 image 0; #X obj 77 48 inlet; @@ -52,7 +53,7 @@ #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; -#X restore 451 127 pd image; +#X restore 451 128 pd image; #X obj 451 242 pix_texture; #X text 63 201 <none>; #X text 41 299 Outlet 1: gemlist; @@ -71,8 +72,8 @@ #X connect 3 0 5 0; #X connect 4 0 3 0; #X connect 5 0 1 0; -#X restore 531 127 pd image; -#X obj 582 89 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X restore 531 128 pd image; +#X obj 576 89 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #X text 47 272 Inlet 2: gemlist; #X text 449 56 open two different images; @@ -91,6 +92,7 @@ #X obj 531 108 gemhead 1; #X text 17 340 see also:; #X obj 82 342 pix_takealpha; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 16 0; diff -Nru gem-0.94~pre1/help/pix_mean_color-help.pd gem-0.94/help/pix_mean_color-help.pd --- gem-0.94~pre1/help/pix_mean_color-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_mean_color-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 473 0 654 372 10; +#N canvas 473 61 654 372 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 185 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -35,7 +36,7 @@ #X restore 459 333 pd gemwin; #X msg 459 314 create; #X text 455 293 Create window:; -#X obj 450 135 cnv 15 160 90 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 450 141 cnv 15 160 65 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 84 gemhead; #X text 71 31 Class: pix object; @@ -85,6 +86,7 @@ #X obj 451 208 translateXYZ 0 2 0; #X text 36 239 Outlet 2: <f:Red> <f:Green> <f:Blue> <f:Alpha>: the mean color of the image; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_metaimage-help.pd gem-0.94/help/pix_metaimage-help.pd --- gem-0.94~pre1/help/pix_metaimage-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_metaimage-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 5 51 654 531 10; +#N canvas 6 61 634 480 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 305 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -92,6 +93,7 @@ images is changed by the 'size' message. If turned on \, then the size doesn't scale linearly \, but is used as if the images were on a plane in 3D space \, and controls the distance from the plane., f 67; +#X obj 518 9 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_mix-help.pd gem-0.94/help/pix_mix-help.pd --- gem-0.94~pre1/help/pix_mix-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_mix-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 124 683 381 10; +#N canvas 6 124 683 381 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 196 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -35,11 +36,11 @@ #X restore 519 329 pd gemwin; #X msg 519 310 create; #X text 515 289 Create window:; -#X obj 451 158 cnv 15 160 100 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 451 161 cnv 15 160 100 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 119 gemhead; #X text 71 31 Class: pix object; -#X obj 502 102 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X obj 496 103 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #N canvas 0 0 587 366 image 0; #X obj 77 48 inlet; @@ -54,10 +55,10 @@ #X connect 4 0 2 0; #X connect 5 0 4 0; #X restore 451 138 pd image; -#X obj 451 263 pix_texture; +#X obj 451 267 pix_texture; #X text 17 295 Outlet 1: gemlist; #X text 23 212 Inlet 1: gemlist; -#X obj 451 285 square 3; +#X obj 451 289 square 3; #X text 503 88 (JPEG \, TIFF \, ..); #X obj 541 122 gemhead; #N canvas 0 0 587 366 image 0; @@ -82,25 +83,26 @@ #X connect 7 0 6 0; #X connect 8 0 7 0; #X restore 541 141 pd image; -#X obj 592 103 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X obj 586 104 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #X text 23 227 Inlet 2: gemlist; #X text 449 77 open two different images; #X text 50 12 Synopsis: [pix_mix]; -#X obj 476 174 hsl 128 15 0 1 0 1 empty empty empty -2 -6 0 8 -262144 +#X obj 476 177 hsl 128 15 0 1 0 1 empty empty empty -2 -6 0 8 -262144 -1 -1 6300 1; -#X floatatom 473 199 5 0 0 0 - - -; -#X msg 530 198 0.7 0.7; +#X floatatom 473 202 5 0 0 0 - - -; +#X msg 530 201 0.7 0.7; #X text 29 67 Description: mix 2 images based on mixing factors; #X text 23 241 Inlet 3: list: weights for left/right image; #X text 63 166 list: [leftGain [rightGain]] (defaults: 0.5 0.5); -#X obj 451 226 pix_mix 0; +#X obj 451 229 pix_mix 0; #X text 14 81 [pix_mix] will mix 2 images just like a video-mixer. You can supply mixing factors A and B \, and the result will be out=in1*A+in2*B. If you supply only one factor A \, the result will be out=in1*(1-A)+in2*A. ; #X text 22 255 Inlet 3: float: weight for left image. right weight will be the reciprocal value (for crossfading); +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_motionblur-help.pd gem-0.94/help/pix_motionblur-help.pd --- gem-0.94~pre1/help/pix_motionblur-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_motionblur-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 230 0 683 377 10; -#X text 452 8 GEM object; +#N canvas 230 61 638 376 10; +#X declare -lib Gem; +#X text 442 8 GEM object; #X obj 9 225 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 40 227 Inlets:; @@ -81,6 +82,7 @@ * 1 - gain) applying a higher blur factor will mix in more of the history image and thus more of the history will be saved resulting in heavier blurring.; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 20 0; diff -Nru gem-0.94~pre1/help/pix_movement2-help.pd gem-0.94/help/pix_movement2-help.pd --- gem-0.94~pre1/help/pix_movement2-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_movement2-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 315 171 666 422 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 9 270 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -91,6 +92,7 @@ #X text 15 78 [pix_movement2] detects movement in a frame with respect to the 2 previous frames and a "background"-image and stores it as a b/w-image (greyscale).; +#X obj 548 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 20 0; diff -Nru gem-0.94~pre1/help/pix_movement-help.pd gem-0.94/help/pix_movement-help.pd --- gem-0.94~pre1/help/pix_movement-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_movement-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 198 683 405 10; +#N canvas 6 198 683 405 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 9 265 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -87,6 +88,7 @@ #X obj 451 172 pix_rgba; #X text 457 370 see also:; #X obj 519 370 pix_movement2; +#X obj 548 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 20 0; diff -Nru gem-0.94~pre1/help/pix_movie-help.pd gem-0.94/help/pix_movie-help.pd --- gem-0.94~pre1/help/pix_movie-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_movie-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,18 +1,19 @@ -#N canvas 469 90 707 633 10; -#X text 452 -2 GEM object; -#X obj 8 305 cnv 15 430 320 empty empty empty 20 12 0 14 -233017 -66577 +#N canvas 469 90 719 552 10; +#X declare -lib Gem; +#X text 502 8 GEM object; +#X obj 8 315 cnv 15 430 220 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 9 327 Inlets:; +#X text 9 397 Outlets:; +#X obj 8 282 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577 0; -#X text 9 307 Inlets:; -#X text 9 377 Outlets:; -#X obj 8 272 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577 +#X text 17 281 Arguments:; +#X obj 8 56 cnv 15 430 180 empty empty empty 20 12 0 14 -233017 -66577 0; -#X text 17 271 Arguments:; -#X obj 8 46 cnv 15 430 180 empty empty empty 20 12 0 14 -233017 -66577 +#X obj 449 57 cnv 15 250 450 empty empty empty 20 12 0 14 -228992 -66577 0; -#X obj 449 47 cnv 15 250 450 empty empty empty 20 12 0 14 -228992 -66577 -0; -#X text 453 30 Example:; -#X obj 594 430 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X text 453 40 Example:; +#X obj 594 440 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 22 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -32,47 +33,47 @@ #X connect 7 0 4 0; #X connect 7 1 6 0; #X connect 7 1 5 0; -#X restore 599 469 pd gemwin; -#X msg 599 450 create; -#X text 595 429 Create window:; -#X obj 451 78 cnv 15 155 200 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 451 53 gemhead; -#X text 17 391 Outlet 1: gemlist; -#X text 23 321 Inlet 1: gemlist; -#X obj 462 83 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +#X restore 599 479 pd gemwin; +#X msg 599 460 create; +#X text 595 439 Create window:; +#X obj 451 88 cnv 15 155 200 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 451 63 gemhead; +#X text 17 411 Outlet 1: gemlist; +#X text 23 341 Inlet 1: gemlist; +#X obj 462 93 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; -#X text 505 47 open a supported; -#X text 506 58 movie-clip; -#X obj 471 367 unpack 0 0 0 0; -#X floatatom 466 390 5 0 0 3 length - -; -#X floatatom 515 390 5 0 0 3 width - -; -#X floatatom 565 390 5 0 0 3 height - -; -#X obj 530 348 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +#X text 505 57 open a supported; +#X text 506 68 movie-clip; +#X obj 471 377 unpack 0 0 0 0; +#X floatatom 466 400 5 0 0 3 length - -; +#X floatatom 515 400 5 0 0 3 width - -; +#X floatatom 565 400 5 0 0 3 height - -; +#X obj 530 358 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 -1 -1; -#X text 71 21 Class: pix object (pix source); -#X text 29 47 Description: load in a movie-file; -#X obj 462 112 openpanel; -#X msg 462 132 open \$1; -#X obj 451 472 rectangle 4 3; -#X text 15 68 [pix_movie] loads in a preproduced digital-video to be +#X text 71 31 Class: pix object (pix source); +#X text 29 57 Description: load in a movie-file; +#X obj 462 122 openpanel; +#X msg 462 142 open \$1; +#X obj 451 482 rectangle 4 3; +#X text 15 78 [pix_movie] loads in a preproduced digital-video to be used as a texture \, bitblit or something else.; -#X text 63 282 symbol: file to load initially; -#X msg 490 189 auto \$1; -#X obj 490 171 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +#X text 63 292 symbol: file to load initially; +#X msg 490 199 auto \$1; +#X obj 490 181 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; -#X msg 501 213 colorspace Grey; -#X obj 8 229 cnv 15 430 40 empty empty empty 20 12 0 14 -260818 -66577 +#X msg 501 223 colorspace Grey; +#X obj 8 239 cnv 15 430 40 empty empty empty 20 12 0 14 -260818 -66577 0; -#X obj 451 331 pix_movie; -#X text 439 575 see also:; -#X obj 516 575 pix_film; -#X text 50 2 Synopsis: [pix_movie]; -#X obj 513 237 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +#X obj 451 341 pix_movie; +#X text 459 515 see also:; +#X obj 536 515 pix_film; +#X text 50 12 Synopsis: [pix_movie]; +#X obj 513 247 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; -#X obj 505 290 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 +#X obj 505 300 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 -1 -1 0 1; -#X floatatom 502 310 5 0 0 1 frame_number - -; +#X floatatom 502 320 5 0 0 1 frame_number - -; #N canvas 830 50 450 300 demo 0; #X obj 23 26 inlet; #X text 126 127 win32:; @@ -91,24 +92,25 @@ #X connect 7 0 3 0; #X connect 8 0 3 0; #X coords 0 -1 1 1 100 17 1 20 50; -#X restore 474 152 pd demo movie; -#X text 22 353 Inlet 2: float: <frame number> sets the frame to output +#X restore 474 162 pd demo movie; +#X text 22 373 Inlet 2: float: <frame number> sets the frame to output ; -#X obj 596 575 pix_texture; -#X text 14 231 You don't need [pix_texture] to texture the image. [pix_movie] +#X obj 616 515 pix_texture; +#X text 14 241 You don't need [pix_texture] to texture the image. [pix_movie] is a combination of [pix_film] and [pix_texture]; -#X text 17 450 Outlet 4: list: the texture id \, same as Outlet 2 of +#X text 17 470 Outlet 4: list: the texture id \, same as Outlet 2 of [pix_texture]; -#X msg 513 256 rectangle \$1; -#X floatatom 615 390 5 0 0 3 fps - -; -#X text 17 107 This object accepts the same set of messages as [pix_film]. +#X msg 513 266 rectangle \$1; +#X floatatom 615 400 5 0 0 3 fps - -; +#X text 17 117 This object accepts the same set of messages as [pix_film]. In addition \, it will immediately download the frames to the gfx-card and make them available as a texture.; -#X text 23 336 Inlet 1: see [pix_film]; -#X text 17 407 Outlet 2: see [pix_film]; -#X text 17 430 Outlet 3: see [pix_film]; -#X text 21 151 Think of this object as a hybrid between [pix_film] +#X text 23 356 Inlet 1: see [pix_film]; +#X text 17 427 Outlet 2: see [pix_film]; +#X text 17 450 Outlet 3: see [pix_film]; +#X text 21 161 Think of this object as a hybrid between [pix_film] and [pix_texture]...; +#X obj 578 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 36 0; diff -Nru gem-0.94~pre1/help/pix_multiblob-help.pd gem-0.94/help/pix_multiblob-help.pd --- gem-0.94~pre1/help/pix_multiblob-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_multiblob-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 93 136 690 540 10; +#N canvas 93 136 663 540 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 9 323 cnv 15 430 145 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -176,7 +177,7 @@ #X text 17 439 Outlet 2: (k \, 9) matrix: describing k detected blobs (with 0<=k<N); #X text 461 464 * angle converted to degrees but is originally in radians -; +, f 30; #X text 18 154 the output is a matrix following the conventions of the mtx-objects from zexy/iemmatrix. each row describes one detected blob as follows: centerX(weighted) \, centerY(weighted) \, size(weighted) @@ -184,6 +185,7 @@ each pixel is weighted by its luminance value during the calculation. "angle" is the (weighted) orientation of the principal axis of the blob in the [-pi/2 \, pi/2] range.; +#X obj 548 8 declare -lib Gem; #X connect 22 0 23 0; #X connect 23 0 22 0; #X connect 26 0 28 0; diff -Nru gem-0.94~pre1/help/pix_multiimage-help.pd gem-0.94/help/pix_multiimage-help.pd --- gem-0.94~pre1/help/pix_multiimage-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_multiimage-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 4 49 632 462 10; +#N canvas 6 61 632 462 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 305 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -66,6 +67,7 @@ #X text 456 336 see also:; #X obj 465 359 pix_buffer; #X obj 465 379 pix_image; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 20 0; diff -Nru gem-0.94~pre1/help/pix_multiply-help.pd gem-0.94/help/pix_multiply-help.pd --- gem-0.94~pre1/help/pix_multiply-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_multiply-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 497 199 683 381 10; -#X text 452 8 GEM object; +#N canvas 497 199 638 381 10; +#X declare -lib Gem; +#X text 442 8 GEM object; #X obj 8 226 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 248 Inlets:; @@ -37,8 +38,8 @@ #X text 515 289 Create window:; #X obj 451 168 cnv 15 160 80 empty empty empty 20 12 0 14 -24198 -66577 0; -#X obj 451 119 gemhead; -#X obj 502 102 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X obj 451 126 gemhead; +#X obj 496 109 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #N canvas 0 22 587 366 image 0; #X obj 77 48 inlet; @@ -52,14 +53,14 @@ #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; -#X restore 451 138 pd image; +#X restore 451 145 pd image; #X obj 451 263 pix_texture; #X text 63 196 <none>; #X text 47 318 Outlet 1: gemlist; #X text 53 262 Inlet 1: gemlist; #X obj 451 285 square 3; #X text 503 88 (JPEG \, TIFF \, ..); -#X obj 541 122 gemhead; +#X obj 541 129 gemhead; #N canvas 0 22 587 366 image 0; #X obj 77 48 inlet; #X obj 77 344 outlet; @@ -72,8 +73,8 @@ #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; -#X restore 541 141 pd image; -#X obj 592 103 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X restore 541 148 pd image; +#X obj 586 110 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #X text 53 291 Inlet 2: gemlist; #X text 449 77 open two different images; @@ -85,6 +86,7 @@ #X text 29 91 [pix_multiply] simply multiplies two pixes together. E.g: where either of the pixels is black \, the resulting image will be black too. Thus it is simple to get black images.; +#X obj 508 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 16 0; diff -Nru gem-0.94~pre1/help/pix_multitexture-help.pd gem-0.94/help/pix_multitexture-help.pd --- gem-0.94~pre1/help/pix_multitexture-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_multitexture-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 656 205 721 650 10; +#N canvas 656 205 633 650 10; +#X declare -lib Gem; #N canvas 87 154 247 179 Gem.init 0; #X obj 118 46 loadbang; #X msg 118 81 reset; @@ -27,7 +28,7 @@ #X text 514 536 Create window:; #X obj 455 442 cnv 15 160 50 empty empty empty 20 12 0 14 -24198 -66577 0; -#X text 452 4 GEM object; +#X text 452 9 GEM object; #X text 453 56 Example:; #X obj 463 88 gemhead; #X obj 489 208 gemhead 11; @@ -138,6 +139,7 @@ #X connect 16 0 0 0; #X coords 0 -1 1 1 85 40 1 100 100; #X restore 522 576 pd gemwin; +#X obj 518 8 declare -lib Gem; #X connect 0 0 39 0; #X connect 15 0 19 0; #X connect 16 0 30 0; diff -Nru gem-0.94~pre1/help/pix_noise-help.pd gem-0.94/help/pix_noise-help.pd --- gem-0.94~pre1/help/pix_noise-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_noise-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 509 51 641 529 10; -#X text 462 20 GEM object; +#N canvas 509 61 641 529 10; +#X declare -lib Gem; +#X text 442 10 GEM object; #X obj 18 324 cnv 15 430 190 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 18 291 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577 @@ -85,6 +86,7 @@ function, f 62; #X text 42 425 set <width> <height> : change size of the image (default : 64*64), f 66; +#X obj 518 8 declare -lib Gem; #X connect 8 0 9 0; #X connect 9 0 8 0; #X connect 12 0 40 0; diff -Nru gem-0.94~pre1/help/pix_normalize-help.pd gem-0.94/help/pix_normalize-help.pd --- gem-0.94~pre1/help/pix_normalize-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_normalize-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 654 335 10; +#N canvas 6 61 654 335 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -76,6 +77,7 @@ #X text 29 123 [pix_normalize] will normalize your image \, so that contrasts will appear sharper.; #X text 50 12 Synopsis: [pix_normalize]; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_offset-help.pd gem-0.94/help/pix_offset-help.pd --- gem-0.94~pre1/help/pix_offset-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_offset-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 654 375 10; +#N canvas 6 61 654 375 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -73,6 +74,7 @@ instead of "1 1 1"); #X text 63 295 Inlet 2: <float> : offset for all channels; #X text 63 311 Inlet 3: list : offset for each channels; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_pix2sig~-help.pd gem-0.94/help/pix_pix2sig~-help.pd --- gem-0.94~pre1/help/pix_pix2sig~-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_pix2sig~-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 330 40 689 418 10; +#N canvas 330 61 689 418 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 150 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -9,7 +10,7 @@ #X text 17 205 Arguments:; #X obj 7 76 cnv 15 430 125 empty empty empty 20 12 0 14 -233017 -66577 0; -#X obj 449 77 cnv 15 170 290 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 449 77 cnv 15 200 290 empty empty empty 20 12 0 14 -228992 -66577 0; #X text 453 60 Example:; #X obj 514 244 cnv 15 100 100 empty empty empty 20 12 0 14 -195568 @@ -35,7 +36,7 @@ #X restore 519 283 pd gemwin; #X msg 519 264 create; #X text 515 243 Create window:; -#X obj 450 135 cnv 15 160 90 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 450 135 cnv 15 180 90 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 84 gemhead; #X text 71 31 Class: pix object; @@ -87,6 +88,7 @@ #X obj 564 171 env~ 65536; #X obj 533 171 env~ 65536; #X obj 502 171 env~ 65536; +#X obj 528 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_posterize-help.pd gem-0.94/help/pix_posterize-help.pd --- gem-0.94~pre1/help/pix_posterize-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_posterize-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 254 651 393 10; +#N canvas 6 254 651 350 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 216 cnv 15 430 125 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -78,6 +79,7 @@ #X text 509 118 (JPEG \, TIFF \, ..); #X text 20 121 currently only YUV images are supported. use [pix_yuv] to make sure that you are in the correct colorspace.; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_puzzle-help.pd gem-0.94/help/pix_puzzle-help.pd --- gem-0.94~pre1/help/pix_puzzle-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_puzzle-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 18 198 654 599 10; +#N canvas 18 198 626 548 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 345 cnv 15 430 150 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -111,6 +112,7 @@ #X connect 7 0 1 0; #X restore 475 176 pd numkeys; #X text 12 285 (i admit this is not very intuitive...); +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_rds-help.pd gem-0.94/help/pix_rds-help.pd --- gem-0.94~pre1/help/pix_rds-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_rds-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 22 29 655 397 10; +#N canvas 22 61 638 358 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 216 cnv 15 430 125 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -79,6 +80,7 @@ #X floatatom 495 139 5 10 100 1 stride - -; #X text 63 245 Inlet 1: method [0|1] (crosseyed|walleyed); #X text 63 259 Inlet 1: stride <int> distance (default:40); +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_record-help.pd gem-0.94/help/pix_record-help.pd --- gem-0.94~pre1/help/pix_record-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_record-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,14 +1,15 @@ -#N canvas 435 49 682 509 10; -#X text 363 9 GEM object; +#N canvas 435 61 682 509 10; +#X declare -lib Gem; +#X text 433 9 GEM object; #X obj 9 375 cnv 15 430 30 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 18 374 Arguments:; #X obj 8 56 cnv 15 430 310 empty empty empty 20 12 0 14 -233017 -66577 0; -#X obj 449 43 cnv 15 170 410 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 449 53 cnv 15 170 410 empty empty empty 20 12 0 14 -228992 -66577 0; -#X text 453 26 Example:; -#X obj 479 419 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X text 453 36 Example:; +#X obj 479 429 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -28,15 +29,15 @@ #X connect 7 0 4 0; #X connect 7 1 6 0; #X connect 7 1 5 0; -#X restore 484 458 pd gemwin; -#X msg 484 439 create; -#X text 480 418 Create window:; -#X obj 451 184 cnv 15 167 230 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 451 49 gemhead; -#X obj 451 118 pix_film; -#X obj 515 118 t f; -#X obj 464 71 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +#X restore 484 468 pd gemwin; +#X msg 484 449 create; +#X text 480 428 Create window:; +#X obj 451 194 cnv 15 167 230 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 451 59 gemhead; +#X obj 451 128 pix_film; +#X obj 515 128 t f; +#X obj 464 81 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #N canvas 0 0 450 300 open 0; #X obj 85 49 inlet; @@ -50,36 +51,36 @@ #X connect 3 0 1 0; #X connect 4 0 1 0; #X connect 5 0 4 0; -#X restore 464 90 pd open; -#X text 485 64 open a supported; -#X text 486 75 movie-clip; +#X restore 464 100 pd open; +#X text 485 74 open a supported; +#X text 486 85 movie-clip; #X text 64 385 <none>; #X text 50 12 Synopsis: [pix_record]; #X text 71 31 Class: pix object (output); #X text 29 57 Description: write a sequence of pixes to a movie file ; -#X obj 451 393 pix_record; -#X obj 451 157 pix_draw; -#X obj 451 138 pix_invert; +#X obj 451 403 pix_record; +#X obj 451 167 pix_draw; +#X obj 451 148 pix_invert; #X text 18 104 You can choose the codec you want to use either via a graphical dialog or by directly sending a "codec" with either the name or the enumeration number of the codec. Use "codeclist" to query the available codecs \, their names and their number.; -#X obj 470 333 cnv 15 145 25 empty empty empty 20 12 0 14 -225271 -66577 +#X obj 470 343 cnv 15 145 25 empty empty empty 20 12 0 14 -225271 -66577 0; -#X msg 480 337 bang; -#X msg 552 337 auto \$1; -#X obj 533 338 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +#X msg 480 347 bang; +#X msg 552 347 auto \$1; +#X obj 533 348 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; -#X obj 470 189 cnv 15 145 65 empty empty empty 20 12 0 14 -225271 -66577 +#X obj 470 199 cnv 15 145 65 empty empty empty 20 12 0 14 -225271 -66577 0; -#X msg 476 214 codeclist; -#X msg 472 193 dialog; -#X obj 472 234 t a; -#X obj 460 261 cnv 15 155 65 empty empty empty 20 12 0 14 -225271 -66577 +#X msg 476 224 codeclist; +#X msg 472 203 dialog; +#X obj 472 244 t a; +#X obj 460 271 cnv 15 155 65 empty empty empty 20 12 0 14 -225271 -66577 0; -#X msg 463 282 file /tmp/mymovie.mov; -#X obj 464 263 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1 +#X msg 463 292 file /tmp/mymovie.mov; +#X obj 464 273 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1 -1; #N canvas 0 0 450 300 savepanel 0; #X obj 114 62 inlet; @@ -92,11 +93,11 @@ #X connect 2 1 1 0; #X connect 3 0 4 0; #X connect 4 0 2 0; -#X restore 484 262 pd savepanel; -#X msg 520 305 record \$1; -#X obj 500 307 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +#X restore 484 272 pd savepanel; +#X msg 520 315 record \$1; +#X obj 500 317 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; -#X obj 463 305 t a; +#X obj 463 315 t a; #X text 14 73 [pix_write] writes a series of pixes into a movie file. You can set the file to write to via the "file" message.; #X text 18 174 When file and codec are specified \, you can open the @@ -108,8 +109,8 @@ #X text 17 269 The recording is finished and the file flushed to disk \, after a "record 0" message is received. You might not be able to access the file for reading before recording has finished.; -#X text 526 140 (do something); -#X text 515 158 (monitoring); +#X text 526 150 (do something); +#X text 515 168 (monitoring); #X text 22 339 NOTE: currently only quicktime MOVies can be recorded. This might change in the future (watch the console!); #X obj 8 414 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577 @@ -142,9 +143,9 @@ #X text 18 123 Inlet 1: dialog: popup a dialog to select the codec (if available); #X restore 83 420 pd MESSAGES; -#X floatatom 527 395 3 0 0 0 - - -; -#X msg 532 234 codec mjpa; -#X msg 552 215 codec 3; +#X floatatom 527 405 3 0 0 0 - - -; +#X msg 532 244 codec mjpa; +#X msg 552 225 codec 3; #N canvas 129 512 599 344 PROPERTIES 0; #N canvas 607 622 561 319 PropertyLogic 0; #X obj 54 6 inlet; @@ -436,9 +437,9 @@ #X connect 12 0 11 0; #X connect 13 0 11 0; #X restore 243 420 pd PROPERTIES; -#X obj 553 376 r \$0-ctl; -#X obj 621 251 s \$0-ctl; -#X obj 620 322 s \$0-ctl; +#X obj 553 386 r \$0-ctl; +#X obj 621 261 s \$0-ctl; +#X obj 620 332 s \$0-ctl; #N canvas 6 49 515 369 print 0; #X obj 102 176 inlet; #X obj 102 198 s \$0-nfo; @@ -450,7 +451,8 @@ out the messages generated from the [pd PROPERTIES] window.; #X connect 0 0 1 0; #X connect 2 0 3 0; -#X restore 553 393 pd print; +#X restore 553 403 pd print; +#X obj 518 8 declare -lib Gem; #X connect 7 0 8 0; #X connect 8 0 7 0; #X connect 11 0 12 0; diff -Nru gem-0.94~pre1/help/pix_rectangle-help.pd gem-0.94/help/pix_rectangle-help.pd --- gem-0.94~pre1/help/pix_rectangle-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_rectangle-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 654 413 10; +#N canvas 6 61 624 377 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -73,6 +74,7 @@ This means that you have to have an image already loaded to render into. Set the position and size with the two corners of the rectangle. ; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_refraction-help.pd gem-0.94/help/pix_refraction-help.pd --- gem-0.94~pre1/help/pix_refraction-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_refraction-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 0 0 654 531 10; -#X text 452 8 GEM object; +#N canvas 6 61 625 531 10; +#X declare -lib Gem; +#X text 447 8 GEM object; #X obj 8 335 cnv 15 430 130 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 338 Inlets:; @@ -73,7 +74,7 @@ #X msg 464 155 width \$1; #X msg 544 155 height \$1; #X obj 451 226 pix_refraction; -#X obj 544 176 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +#X obj 544 176 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X text 29 56 Description: display a pix through glass bricks; #X text 80 158 range = 0.01 to 16 \, default = 2; @@ -95,6 +96,7 @@ #X text 63 421 Inlet 1: refract <float>; #X text 63 392 Inlet 1: height <float>; #X text 49 12 Synopsis: [pix_refraction]; +#X obj 519 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_resize-help.pd gem-0.94/help/pix_resize-help.pd --- gem-0.94~pre1/help/pix_resize-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_resize-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 651 393 10; +#N canvas 6 61 634 347 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 216 cnv 15 430 85 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -71,6 +72,7 @@ power of 2 (eg. 320x240 will be resized to 512x256). You can change the re-size with the "dimen"-message \; a value of "0" defaults to the next power-of-2 of the original image; +#X obj 519 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_rgb2hsv-help.pd gem-0.94/help/pix_rgb2hsv-help.pd --- gem-0.94~pre1/help/pix_rgb2hsv-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_rgb2hsv-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 654 413 10; +#N canvas 6 61 633 364 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -74,6 +75,7 @@ #X text 29 162 On the technical (internal) side \, the image still stays RGBA. The Red-channel is filled with Hue-values....; #X obj 451 186 pix_rgb2hsv; +#X obj 521 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_rgba-help.pd gem-0.94/help/pix_rgba-help.pd --- gem-0.94~pre1/help/pix_rgba-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_rgba-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 4 49 654 372 10; +#N canvas 6 61 631 372 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 245 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -79,6 +80,7 @@ do nothing.; #X text 19 133 Traditionally \, RGBA is the native colour-space of Gem \, although it is quite CPU-consumptive.; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_roi-help.pd gem-0.94/help/pix_roi-help.pd --- gem-0.94~pre1/help/pix_roi-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_roi-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 477 282 799 436 10; +#N canvas 477 282 648 436 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 9 326 cnv 15 430 100 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -8,10 +9,10 @@ #X text 17 285 Arguments:; #X obj 7 56 cnv 15 430 220 empty empty empty 20 12 0 14 -233017 -66577 0; -#X obj 449 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 459 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; -#X text 453 60 Example:; -#X obj 514 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X text 463 60 Example:; +#X obj 524 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 1 98 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -31,23 +32,22 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 519 293 pd gemwin; -#X msg 519 274 destroy; -#X obj 450 114 cnv 15 160 100 empty empty empty 20 12 0 14 -24198 -66577 +#X restore 529 293 pd gemwin; +#X msg 529 274 destroy; +#X obj 460 114 cnv 15 170 100 empty empty empty 20 12 0 14 -24198 -66577 0; #X text 71 31 Class: pix object; #X text 53 342 Inlet 1: gemlist; -#X text 463 398 and example/04.pix/27.bitmap_font.pd; #X text 50 12 Synopsis: [pix_roi]; #X text 63 296 <x1> <y1> <x2> <y2>; #X text 53 355 Inlet 1: roi <x1> <y1> <x2> <y2> : set roi; #X text 38 372 Outlets:; #X text 46 385 Outlet 1: gemlist; -#X text 515 253 Create window:; -#X msg 451 86 gem_list; -#X msg 451 238 gemlist; -#X obj 451 186 pix_roi 0.25 0.25 0.75 0.75; -#X msg 466 151 roi 0 0 0.5 0.5; +#X text 525 253 Create window:; +#X msg 461 86 gem_list; +#X msg 461 238 gemlist; +#X obj 461 186 pix_roi 0.25 0.25 0.75 0.75; +#X msg 476 151 roi 0 0 0.5 0.5; #X text 29 56 Description: set the region-of-interest of an image; #X text 22 109 The arguments set the lower left and upper right corners of the roi.Coordinates must be normalized.; @@ -57,8 +57,10 @@ doing on the so-specified sub-image.; #X text 22 170 (currently only [pix_set] supports ROI \, more will hopefully follow); +#X obj 528 8 declare -lib Gem; +#X text 442 358 see example/04.pix/27.bitmap_font.pd, f 32; #X connect 9 0 10 0; #X connect 10 0 9 0; -#X connect 21 0 23 0; +#X connect 20 0 22 0; +#X connect 22 0 21 0; #X connect 23 0 22 0; -#X connect 24 0 23 0; diff -Nru gem-0.94~pre1/help/pix_roll-help.pd gem-0.94/help/pix_roll-help.pd --- gem-0.94~pre1/help/pix_roll-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_roll-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 651 393 10; +#N canvas 6 61 651 355 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 216 cnv 15 430 125 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -76,6 +77,7 @@ #X text 13 116 [pix_roll] gives an effect similar to vertical and horizontal hold on a television. the offset is user defined and can be incremented using a counter object for a looping roll effect.; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_rtx-help.pd gem-0.94/help/pix_rtx-help.pd --- gem-0.94~pre1/help/pix_rtx-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_rtx-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 20 122 683 405 10; +#N canvas 20 122 661 405 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 9 265 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -80,13 +81,14 @@ #X text 29 68 Description: Relative Time-X transformation; #X msg 551 205 set; #X msg 468 205 mode \$1; -#X obj 468 185 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +#X obj 468 185 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X text 87 240 <none>; #X text 23 299 Inlet 1: set : sets the whole internal buffer to the next incoming frame; #X text 23 329 Inlet 1: mode 1|0 : clamp the discontinuity to the edge or not. (default:1); +#X obj 538 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 20 0; diff -Nru gem-0.94~pre1/help/pix_scanline-help.pd gem-0.94/help/pix_scanline-help.pd --- gem-0.94~pre1/help/pix_scanline-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_scanline-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 0 651 393 10; +#N canvas 6 61 628 355 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 216 cnv 15 430 125 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -75,6 +76,7 @@ draw only); #X text 23 278 Inlet 2: int: the number of lines to duplicate or the to skip between drawing; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_set-help.pd gem-0.94/help/pix_set-help.pd --- gem-0.94~pre1/help/pix_set-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_set-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 285 331 794 585 10; +#N canvas 285 331 650 585 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 9 326 cnv 15 430 240 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -9,10 +10,10 @@ #X text 17 285 Arguments:; #X obj 7 56 cnv 15 430 220 empty empty empty 20 12 0 14 -233017 -66577 0; -#X obj 449 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 449 77 cnv 15 170 300 empty empty empty 20 12 0 14 -228992 -66577 0; #X text 453 60 Example:; -#X obj 514 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 514 354 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 1 98 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -32,18 +33,18 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 519 293 pd gemwin; -#X msg 519 274 create; -#X text 515 253 Create window:; -#X obj 450 114 cnv 15 160 100 empty empty empty 20 12 0 14 -24198 -66577 +#X restore 519 393 pd gemwin; +#X msg 519 374 create; +#X text 515 353 Create window:; +#X obj 450 114 cnv 15 160 150 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 84 gemhead; #X text 71 31 Class: pix object; #X text 46 475 Outlet 1: gemlist; #X text 53 342 Inlet 1: gemlist; #X text 50 12 Synopsis: [pix_set]; -#X obj 451 233 pix_texture; -#X obj 450 255 square; +#X obj 451 323 pix_texture; +#X obj 450 345 square; #X msg 459 160 RGBA; #X msg 458 119 GREY; #X msg 460 140 RGB; @@ -64,19 +65,21 @@ #X text 52 436 Inlet 2: list : interleaved image-data (R1 G1 B1 A1 R2 B2...) or (R1 B1 G1 R2 B2...) or (L1 L2 L3...); #X text 29 56 Description: set the pixel-data of an image; -#X text 460 376 see also; -#X obj 530 377 pix_dump; -#X msg 536 233 quality 0; -#X obj 451 186 pix_set 4 4; -#X obj 536 213 loadbang; -#X msg 512 166 1 0.25 0.5 0.75 1 0 0 0 1 1 1 0 1 0 1 0 1 1; +#X text 460 476 see also; +#X obj 530 477 pix_dump; +#X msg 536 323 quality 0; +#X obj 451 236 pix_set 4 4; +#X obj 536 303 loadbang; +#X msg 512 166 1 0.25 0.5 0.75 1 0 0 0 1 1 1 0 1 0 1 0 1 1, f 12; #X text 53 370 Inlet 1: bang send image (to update texture for example) ; #X text 53 385 Inlet 1: fill : set the whole image with value (value could be G \, RGB or RGBA); #X text 53 411 Inlet 1: set : set the size of the image; #X obj 502 142 r pix_set_in; -#N canvas 447 128 725 362 advanced_features 0; +#X text 447 511 and example/04.pix/27.bitmap_font.pd, f 32; +#X obj 518 8 declare -lib Gem; +#N canvas 447 128 725 362 advanced 0; #X msg 26 210 set 16 16; #X msg 57 238 set 4 4; #X msg 24 93 fill \$1 \, bang; @@ -133,8 +136,7 @@ #X connect 22 0 10 0; #X connect 23 0 22 0; #X connect 26 0 24 0; -#X restore 503 121 pd advanced_features; -#X text 477 411 and example/04.pix/27.bitmap_font.pd; +#X restore 503 121 pd advanced; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 36 0; diff -Nru gem-0.94~pre1/help/pix_share_read-help.pd gem-0.94/help/pix_share_read-help.pd --- gem-0.94~pre1/help/pix_share_read-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_share_read-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 533 119 904 423 10; -#X text 451 8 GEM object; +#N canvas 246 139 904 368 10; +#X declare -lib Gem; +#X text 701 8 GEM object; #X obj 8 270 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 271 Inlets:; @@ -33,9 +34,9 @@ #X connect 6 0 0 0; #X connect 7 0 0 0; #X restore 489 243 pd gemwin; -#X msg 489 224 destroy; +#X msg 489 224 create; #X text 485 203 Create window:; -#X obj 450 84 cnv 15 230 60 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 450 84 cnv 15 400 60 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 64 gemhead; #X text 71 31 Class: pix object; @@ -57,23 +58,24 @@ #X text 29 56 Description: read pixels from a shared memory region ; #X text 50 12 Synopsis: [pix_share_read]; -#X text 446 333 Run the [pix_share_write] help-patch; -#X text 446 347 in a different Pd instance on your; -#X text 447 361 machine to see the effect.; +#X text 446 313 Run the [pix_share_write] help-patch; +#X text 446 327 in a different Pd instance on your; +#X text 447 341 machine to see the effect.; #X obj 519 285 pix_share_write 322 1 1 1; #X text 117 299 set <ID> <width> <height> <colorspace>; #X msg 510 94 set 323 256 256 RGBA; -#X obj 634 182 sel 0; -#X msg 634 204 shmem segment successfully created; -#X msg 670 182 can't create shmem segment error \$1; -#X obj 634 158 route error; -#X obj 634 226 print pix_share_read; +#X obj 624 182 sel 0; +#X msg 624 204 shmem segment successfully created; +#X msg 660 182 can't create shmem segment error \$1; +#X obj 624 158 route error; +#X obj 624 226 print pix_share_read; #X text 56 321 Outlet 1: gemlist; #X text 56 334 Outlet 2: error number \, 0=no error; #X obj 451 119 pix_share_read; -#X text 543 118 arguments are optional; -#X msg 666 93 set memory_name 256 256 RGBA; -#X text 669 74 also work with symbol :; +#X text 543 121 arguments are optional; +#X msg 666 103 set memory_name 256 256 RGBA; +#X text 669 86 also work with symbol :; +#X obj 778 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 39 0; diff -Nru gem-0.94~pre1/help/pix_share_write-help.pd gem-0.94/help/pix_share_write-help.pd --- gem-0.94~pre1/help/pix_share_write-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_share_write-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ #N canvas 547 473 901 407 10; -#X text 451 8 GEM object; +#X declare -lib Gem; +#X text 701 8 GEM object; #X obj 8 270 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 271 Inlets:; @@ -35,7 +36,7 @@ #X restore 489 243 pd gemwin; #X msg 489 224 destroy; #X text 485 203 Create window:; -#X obj 450 140 cnv 15 230 60 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 450 140 cnv 15 370 60 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 84 gemhead; #X text 71 31 Class: pix object; @@ -92,6 +93,7 @@ #X text 548 175 arguments are optional; #X msg 626 148 set memory_name 256 256 RGBA; #X text 643 128 also work with symbol :; +#X obj 778 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_sig2pix~-help.pd gem-0.94/help/pix_sig2pix~-help.pd --- gem-0.94~pre1/help/pix_sig2pix~-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_sig2pix~-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 230 0 683 500 10; +#N canvas 230 61 629 500 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 351 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -81,6 +82,7 @@ or the [dimen( message. If your imagesize is bigger than the blocksize \, the rest will be undefined.; #X text 11 291 Signal values must be between 0 & 1; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 41 0; diff -Nru gem-0.94~pre1/help/pix_snap2tex-help.pd gem-0.94/help/pix_snap2tex-help.pd --- gem-0.94~pre1/help/pix_snap2tex-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_snap2tex-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 16 226 935 395 10; -#X text 452 8 GEM object; +#N canvas 16 226 710 395 10; +#X declare -lib Gem; +#X text 518 8 GEM object; #X obj 8 216 cnv 15 430 160 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 218 Inlets:; @@ -42,9 +43,9 @@ #X text 33 232 Inlet 1: gemlist; #X obj 451 315 square 3; #X obj 451 256 pix_snap2tex; -#X obj 574 133 sphere; +#X obj 568 133 sphere; #X obj 451 74 gemhead 50; -#X obj 574 75 gemhead 49; +#X obj 568 75 gemhead 49; #X obj 571 256 tgl 15 1 empty empty texture_on/off 20 7 0 8 -262144 -1 -1 1 1; #X obj 482 217 spigot; @@ -72,11 +73,11 @@ #X text 63 186 list: [offsetX offsetY [dimX dimY]]; #X floatatom 527 75 5 0 0 0 - - -; #X obj 451 114 rotate 0 1 0 0; -#X obj 574 113 translate -1 0 1 0; +#X obj 568 113 translate -1 0 1 0; #X obj 451 94 translate 1 0 1 0; #X obj 451 197 t a b; #X obj 451 281 color 0.7 0.7 0.7; -#X obj 574 94 rotate 0 1 1 1; +#X obj 568 94 rotate 0 1 1 1; #N canvas 0 0 297 145 count 0; #X obj 116 39 t b; #X obj 116 60 i; @@ -90,13 +91,14 @@ #X connect 2 0 3 0; #X connect 3 0 1 1; #X connect 4 0 0 0; -#X restore 650 74 pd count; +#X restore 644 74 pd count; #X text 624 233 dimension; #X text 598 211 offset; #X text 506 171 drawn but before the square; #X obj 474 164 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X text 504 158 SNAP! after the sphere is; +#X obj 588 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 18 0 43 0; diff -Nru gem-0.94~pre1/help/pix_snap-help.pd gem-0.94/help/pix_snap-help.pd --- gem-0.94~pre1/help/pix_snap-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_snap-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 17 223 935 395 10; -#X text 452 8 GEM object; +#N canvas 17 223 835 395 10; +#X declare -lib Gem; +#X text 522 8 GEM object; #X obj 8 216 cnv 15 430 160 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 218 Inlets:; @@ -96,6 +97,7 @@ #X msg 518 227 0; #X obj 451 256 pix_snap 0 0 500 500; #X msg 570 209 100 100; +#X obj 598 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 19 0 33 0; diff -Nru gem-0.94~pre1/help/pix_subtract-help.pd gem-0.94/help/pix_subtract-help.pd --- gem-0.94~pre1/help/pix_subtract-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_subtract-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 103 127 664 397 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 226 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -35,10 +36,10 @@ #X restore 519 329 pd gemwin; #X msg 519 310 create; #X text 515 289 Create window:; -#X obj 451 168 cnv 15 160 80 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 451 173 cnv 15 160 80 empty empty empty 20 12 0 14 -24198 -66577 0; -#X obj 451 119 gemhead; -#X obj 502 102 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X obj 451 126 gemhead; +#X obj 496 109 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #N canvas 0 22 587 366 image 0; #X obj 77 48 inlet; @@ -52,14 +53,14 @@ #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; -#X restore 451 138 pd image; -#X obj 451 263 pix_texture; +#X restore 451 145 pd image; +#X obj 451 268 pix_texture; #X text 63 196 <none>; #X text 47 318 Outlet 1: gemlist; #X text 53 262 Inlet 1: gemlist; -#X obj 451 285 square 3; +#X obj 451 290 square 3; #X text 503 88 (JPEG \, TIFF \, ..); -#X obj 541 122 gemhead; +#X obj 541 129 gemhead; #N canvas 0 22 587 366 image 0; #X obj 77 48 inlet; #X obj 77 344 outlet; @@ -72,14 +73,14 @@ #X connect 3 0 5 0; #X connect 4 0 3 0; #X connect 5 0 1 0; -#X restore 541 141 pd image; -#X obj 592 103 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X restore 541 148 pd image; +#X obj 586 110 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #X text 53 291 Inlet 2: gemlist; #X text 449 77 open two different images; #X text 71 31 Class: pix mix object; #X text 32 152 The 2 images have to be of the same size.; -#X obj 451 198 pix_subtract; +#X obj 451 203 pix_subtract; #X text 50 12 Synopsis: [pix_subtract]; #X text 29 67 Description: subtract 2 images; #X text 19 89 [pix_subtract] simply subtracts two pixes from each other. @@ -88,6 +89,7 @@ #X text 39 366 see also:; #X obj 101 368 pix_diff; #X obj 164 368 pix_compare; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 16 0; diff -Nru gem-0.94~pre1/help/pix_takealpha-help.pd gem-0.94/help/pix_takealpha-help.pd --- gem-0.94~pre1/help/pix_takealpha-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_takealpha-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 0 273 640 398 10; +#N canvas 6 273 640 398 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 226 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -37,8 +38,8 @@ #X text 515 278 Create window:; #X obj 451 187 cnv 15 160 40 empty empty empty 20 12 0 14 -24198 -66577 0; -#X obj 451 108 gemhead; -#X obj 502 91 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X obj 451 118 gemhead; +#X obj 496 101 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #N canvas 0 22 587 366 image 0; #X obj 77 48 inlet; @@ -52,14 +53,14 @@ #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; -#X restore 451 127 pd image; +#X restore 451 137 pd image; #X obj 451 252 pix_texture; #X text 63 196 <none>; #X text 38 303 Outlet 1: gemlist; #X text 44 247 Inlet 1: gemlist; #X obj 451 274 square 3; #X text 503 77 (JPEG \, TIFF \, ..); -#X obj 519 111 gemhead; +#X obj 519 121 gemhead; #N canvas 0 22 587 366 image 0; #X obj 77 48 inlet; #X obj 77 344 outlet; @@ -72,15 +73,15 @@ #X connect 3 0 5 0; #X connect 4 0 2 0; #X connect 5 0 4 0; -#X restore 519 130 pd image; -#X obj 570 92 bng 15 250 50 0 empty empty pix_load 20 8 0 8 -262144 +#X restore 519 140 pd image; +#X obj 564 102 bng 15 250 50 0 empty empty pix_load -45 8 0 8 -262144 -1 -1; #X text 44 276 Inlet 2: gemlist; #X text 449 66 open two different images; #X text 71 31 Class: pix mix object; #X text 29 158 The 2 images have to be of the same size.; #X obj 451 197 pix_takealpha; -#X obj 519 158 pix_coloralpha; +#X obj 519 161 pix_coloralpha; #X obj 451 232 alpha; #X text 29 67 Description: transfer the alpha-channel; #X text 29 84 [pix_takealpha] takes the alpha-channel of the 2nd image @@ -91,6 +92,7 @@ #X text 50 12 Synopsis: [pix_takealpha]; #X text 31 356 see also:; #X obj 96 358 pix_mask; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 16 0; diff -Nru gem-0.94~pre1/help/pix_texture-help.pd gem-0.94/help/pix_texture-help.pd --- gem-0.94~pre1/help/pix_texture-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_texture-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 43 51 647 715 10; +#N canvas 43 61 647 715 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 392 cnv 15 430 360 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -85,15 +86,15 @@ SGIs) \, there is no speed difference.; #X text 14 233 [pix_texture] is able to texture images of ANY size (even non-power of 2); -#X obj 542 472 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +#X obj 532 472 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; -#X msg 542 491 rectangle \$1; +#X msg 532 491 rectangle \$1; #X obj 469 497 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; -#X obj 542 432 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +#X obj 532 432 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X msg 469 516 client_storage \$1; -#X msg 542 451 repeat \$1; +#X msg 532 451 repeat \$1; #X text 29 453 Inlet 1: repeat 0|1 : CLAMP_TO_EDGE or REPEAT(default) ; #X text 28 470 Inlet 1: rectangle 0|1 : use rectangle-texturing if @@ -144,6 +145,7 @@ #X msg 537 351 pbo \$1; #X text 28 626 Inlet 1: message: yuv : use native YUV-mode if available (default:1), f 69; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_threshold_bernsen-help.pd gem-0.94/help/pix_threshold_bernsen-help.pd --- gem-0.94~pre1/help/pix_threshold_bernsen-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_threshold_bernsen-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 30 21 695 351 10; +#N canvas 30 61 629 346 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 234 cnv 15 430 100 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -79,6 +80,7 @@ #X text 63 196 <w> <h>: number of tiles in x- & y-direction; #X text 123 211 default: 16 16; #X text 482 169 tiles; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_threshold-help.pd gem-0.94/help/pix_threshold-help.pd --- gem-0.94~pre1/help/pix_threshold-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_threshold-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 550 226 695 421 10; +#N canvas 550 226 628 363 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 225 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -12,7 +13,7 @@ #X obj 449 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; #X text 453 60 Example:; -#X obj 465 345 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 515 295 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -32,9 +33,9 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 470 384 pd gemwin; -#X msg 470 365 create; -#X text 466 344 Create window:; +#X restore 520 334 pd gemwin; +#X msg 520 315 create; +#X text 516 294 Create window:; #X obj 450 158 cnv 15 160 120 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 451 84 gemhead; @@ -71,6 +72,7 @@ #X text 63 280 Inlet 3: <list>: threshold (RGB) or (RGBA); #X obj 451 283 pix_draw; #X msg 496 205 0.6 0.1 0.8; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_tIIR-help.pd gem-0.94/help/pix_tIIR-help.pd --- gem-0.94~pre1/help/pix_tIIR-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_tIIR-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 118 22 683 405 10; +#N canvas 118 61 683 405 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 9 265 cnv 15 430 135 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -9,7 +10,7 @@ #X text 18 226 Arguments:; #X obj 8 56 cnv 15 430 165 empty empty empty 20 12 0 14 -233017 -66577 0; -#X obj 449 77 cnv 15 200 280 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 449 77 cnv 15 210 280 empty empty empty 20 12 0 14 -228992 -66577 0; #X text 453 60 Example:; #X obj 514 290 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 @@ -112,7 +113,7 @@ #X connect 14 0 3 0; #X connect 15 0 4 0; #X restore 610 201 pd init; -#X obj 610 184 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +#X obj 610 184 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X msg 477 182 set; #X text 24 294 Inlet 1: message: set: overwrites the filter-buffers @@ -132,6 +133,7 @@ feedforward-section \, the length of each can be specified as arguments. The objects will have an inlet for each feedback-coefficient and an inlet for each feedforward-coefficient.; +#X obj 548 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 20 0; diff -Nru gem-0.94~pre1/help/pix_videoDS-help.pd gem-0.94/help/pix_videoDS-help.pd --- gem-0.94~pre1/help/pix_videoDS-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_videoDS-help.pd 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ -#N canvas 306 199 651 488 10; -#X obj 14 204 gemhead; -#X msg 221 66 open 0; -#X msg 221 41 enumerate; -#X msg 221 92 close; -#X obj 14 401 pix_texture; -#X obj 14 431 rectangle 4 3; -#X obj 220 18 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X msg 224 158 dialog format; -#X msg 224 182 dialog crossbar; -#X msg 224 205 dialog source; -#X msg 224 228 dialog display; -#X msg 224 265 dv res full; -#X msg 224 288 dv res half; -#X msg 225 311 dv res quarter; -#X msg 224 335 dv res dc; -#X text 309 13 enable/disable; -#X text 308 40 list available devices; -#X text 310 67 open device N; -#X text 311 96 close the device; -#X text 354 158 display format dialog; -#X text 356 133 display all configuration dialogs; -#X text 354 182 display crossbar dialog; -#X text 355 208 display source dialog; -#X text 355 231 display display dialog; -#X text 356 267 (DV only) set decode res to full; -#X text 356 288 (DV only) set decode res to half; -#X text 356 310 (DV only) set decode res to quarter; -#X text 355 335 (DV only) set decode res to dc; -#X text 12 -13 pix_videoDS; -#X text 127 -13 Live video capture using DirectShow (Windows only) -; -#X msg 224 132 dialog; -#X obj 21 116 gemwin; -#X msg 21 35 create; -#X obj 123 66 tgl 30 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1 -; -#X msg 37 68 destroy; -#X msg 225 393 colorspace \$1; -#X symbolatom 225 373 6 0 0 0 - - -; -#X text 283 372 RGBA|YUV|Grey; -#X obj 14 371 pix_video; -#X connect 0 0 38 0; -#X connect 1 0 38 0; -#X connect 2 0 38 0; -#X connect 3 0 38 0; -#X connect 4 0 5 0; -#X connect 6 0 38 0; -#X connect 7 0 38 0; -#X connect 8 0 38 0; -#X connect 9 0 38 0; -#X connect 10 0 38 0; -#X connect 11 0 38 0; -#X connect 12 0 38 0; -#X connect 13 0 38 0; -#X connect 14 0 38 0; -#X connect 30 0 38 0; -#X connect 32 0 31 0; -#X connect 33 0 31 0; -#X connect 34 0 31 0; -#X connect 35 0 38 0; -#X connect 36 0 35 0; -#X connect 38 0 4 0; diff -Nru gem-0.94~pre1/help/pix_video-help.pd gem-0.94/help/pix_video-help.pd --- gem-0.94~pre1/help/pix_video-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_video-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,11 +1,12 @@ #N canvas 235 64 871 639 10; -#X text 451 6 GEM object; +#X declare -lib Gem; +#X text 671 9 GEM object; #X obj 8 46 cnv 15 540 100 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 559 47 cnv 15 280 500 empty empty empty 20 12 0 14 -228992 -66577 0; #X text 71 21 Class: pix object (pix source); -#X text 453 27 Example:; +#X text 561 33 Example:; #X text 50 2 Synopsis: [pix_video]; #X text 29 47 Description: open a camera and get input; #X obj 9 182 cnv 15 540 365 empty empty empty 20 12 0 14 -233017 -66577 @@ -60,7 +61,7 @@ #X text 13 66 [pix_video] opens a wide array of cameras \, USB to FireWire to capture cards \, as long as the camera is supported by your operating system.; -#X obj 567 53 gemhead; +#X obj 567 58 gemhead; #X msg 596 124 dimen 64 64; #X msg 586 99 dimen 256 128; #X msg 635 261 enumerate; @@ -567,6 +568,7 @@ #X connect 15 0 4 0; #X coords 0 -1 1 1 170 40 1 100 100; #X restore 156 103 pd backend specific information; +#X obj 738 8 declare -lib Gem; #X connect 17 0 18 0; #X connect 18 0 17 0; #X connect 22 0 21 0; diff -Nru gem-0.94~pre1/help/pix_write-help.pd gem-0.94/help/pix_write-help.pd --- gem-0.94~pre1/help/pix_write-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_write-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 536 123 795 620 10; +#N canvas 536 123 739 620 10; +#X declare -lib Gem; #X obj 17 419 cnv 15 430 190 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 28 422 Inlets:; @@ -16,7 +17,7 @@ 0 0); #X text 52 548 Inlet 3: list: dimenX dimenY (in pixels \; default: window-size); -#X text 466 15 GEM object; +#X text 536 6 GEM object; #X obj 459 77 cnv 15 250 370 empty empty empty 20 12 0 14 -228992 -66577 0; #X text 463 60 Example:; @@ -51,12 +52,12 @@ #X msg 584 265 100 100; #X obj 461 84 gemhead 51; #X msg 470 116 file pix_test 99; -#X text 600 138 type : jpg; -#X text 600 127 name : pix_testXXXXX.jpg; -#X text 600 151 quality : 99; -#X text 600 115 set pix_write to:; -#X msg 490 221 auto \$1; -#X obj 490 202 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +#X text 580 138 type : jpg; +#X text 580 127 name : pix_testXXXXX.jpg; +#X text 580 151 quality : 99; +#X text 580 115 set pix_write to:; +#X msg 490 215 auto \$1; +#X obj 490 196 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 491 245 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; @@ -81,7 +82,7 @@ TIFF-writing can be slow due to the large file size of uncompressed images! JPEG might be faster (but quality will be lower due to compression) ; -#X text 543 221 activate/deactivate auto snapshot; +#X text 543 209 activate/deactivate auto snapshot, f 24; #X text 52 473 Inlet 1: file <quality> : set type/quality (quality=0:TIFF \, quality>0:JPG); #X text 52 498 Inlet 1: file <basefilename> <quality> : set basefilename @@ -97,7 +98,8 @@ in the rendering-buffer \, else you will get a black texture. color_mode let you grab 1 (only red channel) \, 3 (RGB) or 4 (RGBA) byte per pixel. RGBA mode is useful with framebuffer.; -#X msg 480 182 color_format 4; +#X msg 480 162 color_format 4; +#X obj 608 8 declare -lib Gem; #X connect 15 0 16 0; #X connect 16 0 15 0; #X connect 19 0 48 2; diff -Nru gem-0.94~pre1/help/pix_writer-help.pd gem-0.94/help/pix_writer-help.pd --- gem-0.94~pre1/help/pix_writer-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_writer-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 200 49 843 513 10; +#N canvas 200 61 755 513 10; +#X declare -lib Gem; #X obj 17 340 cnv 15 430 150 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 28 342 Inlets:; @@ -14,8 +15,8 @@ type = TIFF; #X text 52 418 Inlet 1: file <basefilename> <type> : set basefilename and type; -#X text 466 15 GEM object; -#X obj 459 77 cnv 15 250 300 empty empty empty 20 12 0 14 -228992 -66577 +#X text 536 17 GEM object; +#X obj 459 77 cnv 15 280 300 empty empty empty 20 12 0 14 -228992 -66577 0; #X text 463 60 Example:; #X obj 604 313 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 @@ -41,20 +42,20 @@ #X restore 609 352 pd gemwin; #X msg 609 333 create; #X text 605 312 Create window:; -#X obj 460 132 cnv 15 240 170 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 460 132 cnv 15 270 170 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 461 84 gemhead 51; -#X msg 539 139 file pix_test 99; -#X text 652 161 type : jpg; -#X text 652 150 name : pix_testXXXXX.jpg; -#X text 652 174 quality : 99; -#X text 652 138 set pix_write to:; -#X msg 540 191 auto \$1; -#X obj 540 172 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +#X msg 469 139 file pix_test 99; +#X text 582 161 type : jpg; +#X text 582 150 name : pix_testXXXXX.jpg; +#X text 582 174 quality : 99; +#X text 582 138 set pix_write to:; +#X msg 470 191 auto \$1; +#X obj 470 172 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; -#X obj 541 215 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +#X obj 471 215 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; -#X text 560 214 WRITE! one file; +#X text 490 214 WRITE! one file; #X text 52 393 Inlet 1: file <type> : set type (type=0 : TIFF \, type>0 : JPG \, type = quality); #X obj 466 450 pix_snap; @@ -76,13 +77,14 @@ #X text 26 99 When banged [pix_writer] save current pix to a file. ; #X text 60 22 Synopsis: [pix_writer]; -#X text 541 263 osx format; -#X msg 540 245 file /Users/username/pix_test 99; +#X msg 500 245 file /Users/username/pix_test 99; #X text 26 239 Supported file-types are TIFF (quality=0) and JPEG (quality>0). TIFF-writing can be slow due to the large file size of uncompressed images! JPEG might be faster (but quality will be lower due to compression) ; -#X text 593 190 activate/deactivate auto snapshot; +#X text 523 190 activate/deactivate auto snapshot; +#X obj 608 18 declare -lib Gem; +#X text 571 263 OSX format; #X connect 14 0 15 0; #X connect 15 0 14 0; #X connect 18 0 38 0; @@ -91,4 +93,4 @@ #X connect 25 0 24 0; #X connect 26 0 35 0; #X connect 38 0 35 0; -#X connect 42 0 35 0; +#X connect 41 0 35 0; diff -Nru gem-0.94~pre1/help/pix_yuv-help.pd gem-0.94/help/pix_yuv-help.pd --- gem-0.94~pre1/help/pix_yuv-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_yuv-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 0 0 654 372 10; -#X text 452 8 GEM object; +#N canvas 6 61 635 372 10; +#X declare -lib Gem; +#X text 442 8 GEM object; #X obj 8 245 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 248 Inlets:; @@ -78,6 +79,7 @@ ; #X obj 451 233 pix_texture; #X obj 451 256 square; +#X obj 514 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 17 0; diff -Nru gem-0.94~pre1/help/pix_zoom-help.pd gem-0.94/help/pix_zoom-help.pd --- gem-0.94~pre1/help/pix_zoom-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pix_zoom-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 3 45 450 300 10; +#N canvas 6 61 450 300 10; +#X declare -lib Gem; #X msg 164 99 gemList; #X msg 164 212 gemList; #X text 169 16 part of GEM; @@ -8,6 +9,7 @@ #X text 151 73 zoom the pixels; #X text 56 239 pix_zoom uses glPixelZoom to magnify/minify the pixels. It is experimental.; +#X obj 328 8 declare -lib Gem; #X connect 0 0 3 0; #X connect 3 0 1 0; #X connect 4 0 3 1; diff -Nru gem-0.94~pre1/help/polygon-help.pd gem-0.94/help/polygon-help.pd --- gem-0.94~pre1/help/polygon-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/polygon-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 27 382 762 461 10; +#N canvas 27 382 680 461 10; +#X declare -lib Gem; #X text 475 39 Example:; #X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -8,7 +9,7 @@ #X obj 8 176 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 17 175 Arguments:; -#X text 452 8 GEM object; +#X text 492 8 GEM object; #X text 27 233 Inlet 1: gemlist; #X text 9 358 Outlets:; #X text 21 371 Outlet 1: gemlist; @@ -75,6 +76,7 @@ #X obj 537 299 polygon 5; #X msg 603 246 width \$1; #X floatatom 619 226 5 0 10 0 - - -; +#X obj 568 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 44 0; diff -Nru gem-0.94~pre1/help/polygon_smooth-help.pd gem-0.94/help/polygon_smooth-help.pd --- gem-0.94~pre1/help/polygon_smooth-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/polygon_smooth-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 288 248 639 408 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 226 cnv 15 430 100 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -60,6 +61,7 @@ #X obj 224 362 gemwin; #X obj 451 111 alpha 1; #X obj 451 240 circle 1 30; +#X obj 518 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 31 0; diff -Nru gem-0.94~pre1/help/pqtorusknots-help.pd gem-0.94/help/pqtorusknots-help.pd --- gem-0.94~pre1/help/pqtorusknots-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/pqtorusknots-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 100 39 710 412 10; +#N canvas 100 61 710 412 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X obj 469 47 cnv 15 235 290 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -34,7 +35,7 @@ #X obj 8 176 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 17 175 Arguments:; -#X text 452 8 GEM object; +#X text 521 8 GEM object; #X text 29 229 Inlet 1: gemlist; #X text 11 356 Outlets:; #X text 23 369 Outlet 1: gemlist; @@ -74,6 +75,7 @@ #X text 29 317 Inlet 1: message: pq <xWinding> <yWinding>; #X text 29 332 Inlet 1: message: ivScale <uScale> <vScale>: for texturing ; +#X obj 588 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 17 0 38 0; diff -Nru gem-0.94~pre1/help/primTri-help.pd gem-0.94/help/primTri-help.pd --- gem-0.94~pre1/help/primTri-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/primTri-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,8 +1,9 @@ -#N canvas 130 41 696 468 10; +#N canvas 130 61 696 468 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X obj 479 107 cnv 15 200 250 empty empty empty 20 12 0 14 -228992 -66577 0; -#X obj 494 284 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 494 294 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -22,9 +23,9 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 499 323 pd gemwin; -#X msg 499 304 create; -#X text 495 283 Create window:; +#X restore 499 333 pd gemwin; +#X msg 499 314 create; +#X text 495 293 Create window:; #X obj 7 65 cnv 15 450 80 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 196 cnv 15 450 220 empty empty empty 20 12 0 14 -233017 -66577 @@ -34,7 +35,7 @@ 0; #X text 17 155 Arguments:; #X text 27 227 Inlet 1: message: draw [line|fill|point]; -#X text 452 8 GEM object; +#X text 512 8 GEM object; #X text 27 213 Inlet 1: gemlist; #X text 9 380 Outlets:; #X text 21 393 Outlet 1: gemlist; @@ -78,6 +79,7 @@ #X text 27 352 Inlet 7: list: 3(RGB) or 4(RGBA) float values (color of 3rd corner); #X obj 543 259 primTri; +#X obj 578 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 19 0 45 0; diff -Nru gem-0.94~pre1/help/rectangle-help.pd gem-0.94/help/rectangle-help.pd --- gem-0.94~pre1/help/rectangle-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/rectangle-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,8 +1,9 @@ #N canvas 35 433 710 345 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; -#X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 499 67 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; -#X obj 584 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 564 244 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -22,9 +23,9 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 589 263 pd gemwin; -#X msg 589 244 create; -#X text 585 223 Create window:; +#X restore 569 283 pd gemwin; +#X msg 569 264 create; +#X text 565 243 Create window:; #X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 216 cnv 15 450 110 empty empty empty 20 12 0 14 -233017 -66577 @@ -34,23 +35,23 @@ 0; #X text 17 175 Arguments:; #X text 27 247 Inlet 1: message: draw [line|fill|point]; -#X text 452 8 GEM object; +#X text 522 8 GEM object; #X text 27 233 Inlet 1: gemlist; #X text 9 290 Outlets:; #X text 21 303 Outlet 1: gemlist; -#X text 525 29 Example:; -#X obj 522 78 cnv 15 150 100 empty empty empty 20 12 0 14 -24198 -66577 +#X text 505 49 Example:; +#X obj 502 98 cnv 15 150 100 empty empty empty 20 12 0 14 -24198 -66577 0; -#X msg 525 85 draw line; -#X msg 525 106 draw fill; -#X msg 525 128 draw point; -#X obj 568 54 gemhead; -#X floatatom 611 98 5 0 0 2 width - -; -#X floatatom 629 129 5 0 0 2 height - -; +#X msg 505 105 draw line; +#X msg 505 126 draw fill; +#X msg 505 148 draw point; +#X obj 548 74 gemhead; +#X floatatom 591 118 5 0 0 2 width - -; +#X floatatom 609 149 5 0 0 2 height - -; #X text 63 186 width & height of the rectangle; #X text 33 14 Synopsis: [rectangle]; #X text 7 69 Description: Renders a rectangle; -#X obj 568 159 rectangle 3 1; +#X obj 548 179 rectangle 3 1; #X text 27 261 Inlet 2: float: width (default to 1); #X text 27 274 Inlet 3: float: height (default to 1); #X text 16 86 The [rectangle] object renders a rectangle at the current @@ -60,6 +61,7 @@ #X text 19 133 note for the nitpickers: the rectangle will span from (-width|-height) to (+width|+height) so the actual size is really double the specified size.; +#X obj 588 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 18 0 27 0; diff -Nru gem-0.94~pre1/help/render_trigger-help.pd gem-0.94/help/render_trigger-help.pd --- gem-0.94~pre1/help/render_trigger-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/render_trigger-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,10 +1,11 @@ -#N canvas 450 81 710 345 10; -#X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 +#N canvas 450 81 684 364 10; +#X declare -lib Gem; +#X obj 499 97 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; -#X obj 529 233 cnv 15 140 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 509 283 cnv 15 140 60 empty empty empty 20 12 0 14 -195568 -66577 0; -#X msg 544 253 create; -#X text 540 232 Create window:; +#X msg 524 303 create; +#X text 520 282 Create window:; #X obj 7 65 cnv 15 450 140 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 256 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 @@ -13,18 +14,18 @@ #X obj 8 216 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 17 215 Arguments:; -#X text 452 8 GEM object; +#X text 482 8 GEM object; #X text 27 273 Inlet 1: gemlist; #X text 9 290 Outlets:; #X text 21 303 Outlet 1: gemlist; -#X text 525 29 Example:; +#X text 505 79 Example:; #X text 33 14 Synopsis: [render_trigger]; -#X obj 522 78 cnv 15 160 120 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 502 128 cnv 15 160 120 empty empty empty 20 12 0 14 -24198 -66577 0; -#X obj 530 52 gemhead; -#X obj 530 87 render_trigger; -#X obj 530 133 t b a b; -#X obj 552 208 square; +#X obj 510 102 gemhead; +#X obj 510 137 render_trigger; +#X obj 510 183 t b a b; +#X obj 532 258 square; #X text 54 30 Class: control object; #X text 7 69 Description: triggers on rendering; #X text 29 85 render_trigger allows you to know when the actual rendering @@ -37,13 +38,13 @@ #X text 21 330 Outlet 2: bang : post-render; #X text 9 172 !THIS IS OBOLETE AS YOU CAN NOW USE THE [trigger] OBJECT FOR THE SAME PURPOSE!; -#X obj 622 108 bng 15 250 50 0 empty empty post 20 8 0 8 -262144 -1 +#X obj 602 158 bng 15 250 50 0 empty empty post 20 8 0 8 -262144 -1 -1; -#X obj 576 108 bng 15 250 50 0 empty empty pre 20 8 0 8 -262144 -1 +#X obj 556 158 bng 15 250 50 0 empty empty pre 20 8 0 8 -262144 -1 -1; -#X obj 530 177 bng 15 250 50 0 empty empty post 20 8 0 8 -262144 -1 +#X obj 510 227 bng 15 250 50 0 empty empty post 20 8 0 8 -262144 -1 -1; -#X obj 574 158 bng 15 250 50 0 empty empty pre 20 8 0 8 -262144 -1 +#X obj 554 208 bng 15 250 50 0 empty empty pre 20 8 0 8 -262144 -1 -1; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -63,7 +64,8 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 544 273 pd gemwin (2fps); +#X restore 524 323 pd gemwin (2fps); +#X obj 558 8 declare -lib Gem; #X connect 2 0 31 0; #X connect 16 0 17 0; #X connect 17 0 18 0; diff -Nru gem-0.94~pre1/help/ripple-help.pd gem-0.94/help/ripple-help.pd --- gem-0.94~pre1/help/ripple-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/ripple-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,8 +1,9 @@ -#N canvas 45 35 710 402 10; +#N canvas 45 61 661 402 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; -#X obj 479 47 cnv 15 170 300 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 479 77 cnv 15 170 300 empty empty empty 20 12 0 14 -228992 -66577 0; -#X obj 544 284 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 544 314 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -22,10 +23,10 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 549 323 pd gemwin; -#X msg 549 304 create; -#X text 545 283 Create window:; -#X text 485 29 Example:; +#X restore 549 353 pd gemwin; +#X msg 549 334 create; +#X text 545 313 Create window:; +#X text 485 59 Example:; #X obj 7 52 cnv 15 450 132 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 244 cnv 15 450 145 empty empty empty 20 12 0 14 -233017 -66577 @@ -35,21 +36,21 @@ 0; #X text 17 189 Arguments:; #X text 27 275 Inlet 1: message: draw [line|fill|point]; -#X text 452 8 GEM object; +#X text 472 8 GEM object; #X text 27 261 Inlet 1: gemlist; #X text 9 358 Outlets:; #X text 20 371 Outlet 1: gemlist; -#X obj 484 141 cnv 15 160 140 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 484 171 cnv 15 160 140 empty empty empty 20 12 0 14 -24198 -66577 0; -#X obj 488 54 gemhead; -#X floatatom 566 59 5 0 0 0 - - -; -#X msg 494 144 draw line; -#X msg 494 164 draw fill; -#X msg 494 184 draw point; -#X obj 488 79 rotateXYZ 135 0 0; -#X obj 574 156 bng 25 250 50 0 empty empty grab 0 -6 0 8 -262144 -1 +#X obj 488 84 gemhead; +#X floatatom 566 89 5 0 0 0 - - -; +#X msg 494 174 draw line; +#X msg 494 194 draw fill; +#X msg 494 214 draw point; +#X obj 488 109 rotateXYZ 135 0 0; +#X obj 574 186 bng 25 250 50 0 empty empty grab 0 -6 0 8 -262144 -1 -1; -#X floatatom 572 192 5 0 0 1 amount - -; +#X floatatom 572 222 5 0 0 1 amount - -; #X text 7 56 Description: Renders and distorts a square.; #X text 27 331 Inlet 4: float: posX (centered); #X text 27 343 Inlet 5: float: posY (centered); @@ -57,21 +58,22 @@ #X text 65 216 default: 32 32; #X text 63 202 segments of the square; #X text 33 14 Synopsis: [ripple]; -#X obj 488 259 ripple 16 16; +#X obj 488 289 ripple 16 16; #X text 16 73 When banged \, ripple will grab the vertex nearest to the specified (ctrX ctrY) position. The vertices will be accelerated towards the selected one for a moment and then gradually fall back to their original position.; -#X obj 575 214 tgl 15 0 empty empty ctrX 18 8 0 8 -262144 -1 -1 0 1 +#X obj 575 244 tgl 15 0 empty empty ctrX 18 8 0 8 -262144 -1 -1 0 1 ; -#X obj 575 234 tgl 15 0 empty empty ctrY 18 8 0 8 -262144 -1 -1 0 1 +#X obj 575 264 tgl 15 0 empty empty ctrY 18 8 0 8 -262144 -1 -1 0 1 ; #X text 27 317 Inlet 3: float: amount; #X text 17 131 The amount of excursion can be specified.; -#X floatatom 510 217 5 0 0 0 - - -; +#X floatatom 510 247 5 0 0 0 - - -; #X text 17 150 note: [ripple] distorts a bit different when texture-mapping is used!; #X text 27 303 Inlet 2: float: size; +#X obj 548 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 18 0 23 0; diff -Nru gem-0.94~pre1/help/rotate-help.pd gem-0.94/help/rotate-help.pd --- gem-0.94~pre1/help/rotate-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/rotate-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 57 47 633 363 10; -#X text 452 8 GEM object; +#N canvas 57 61 633 363 10; +#X declare -lib Gem; +#X text 442 8 GEM object; #X obj 8 206 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 218 Inlets:; @@ -59,6 +60,7 @@ #X text 38 332 see also:; #X obj 101 332 rotateXYZ; #X obj 169 332 accumrotate; +#X obj 508 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 22 0; diff -Nru gem-0.94~pre1/help/rotateXYZ-help.pd gem-0.94/help/rotateXYZ-help.pd --- gem-0.94~pre1/help/rotateXYZ-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/rotateXYZ-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 445 99 639 383 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 226 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -64,6 +65,7 @@ #X text 22 349 see also:; #X obj 85 349 rotate; #X obj 132 349 accumrotate; +#X obj 518 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 22 0; diff -Nru gem-0.94~pre1/help/rubber-help.pd gem-0.94/help/rubber-help.pd --- gem-0.94~pre1/help/rubber-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/rubber-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,8 +1,9 @@ -#N canvas 0 0 710 387 10; +#N canvas 6 61 710 387 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; -#X obj 479 47 cnv 15 170 300 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 479 57 cnv 15 170 300 empty empty empty 20 12 0 14 -228992 -66577 0; -#X obj 544 284 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 544 294 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -22,10 +23,10 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 549 323 pd gemwin; -#X msg 549 304 create; -#X text 545 283 Create window:; -#X text 485 29 Example:; +#X restore 549 333 pd gemwin; +#X msg 549 314 create; +#X text 545 293 Create window:; +#X text 485 39 Example:; #X obj 7 65 cnv 15 450 102 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 226 cnv 15 450 145 empty empty empty 20 12 0 14 -233017 -66577 @@ -35,24 +36,24 @@ 0; #X text 17 170 Arguments:; #X text 27 257 Inlet 1: message: draw [line|fill|point]; -#X text 452 8 GEM object; +#X text 482 8 GEM object; #X text 27 243 Inlet 1: gemlist; #X text 9 340 Outlets:; #X text 20 353 Outlet 1: gemlist; -#X obj 484 141 cnv 15 160 140 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 484 151 cnv 15 160 140 empty empty empty 20 12 0 14 -24198 -66577 0; -#X obj 488 48 gemhead; -#X floatatom 530 67 5 -10 10 0 - - -; -#X msg 494 144 draw line; -#X msg 494 164 draw fill; -#X msg 494 184 draw point; -#X obj 581 156 bng 15 250 50 0 empty empty grab 20 7 0 8 -262144 -1 +#X obj 488 58 gemhead; +#X floatatom 530 77 5 -10 10 0 - - -; +#X msg 494 154 draw line; +#X msg 494 174 draw fill; +#X msg 494 194 draw point; +#X obj 581 166 bng 15 250 50 0 empty empty grab 20 7 0 8 -262144 -1 -1; -#X obj 581 122 select 1; -#X floatatom 573 217 5 0 0 1 ctrX - -; -#X floatatom 573 234 5 0 0 1 ctrY - -; -#X floatatom 582 175 5 0 0 1 size - -; -#X floatatom 582 192 5 0 0 1 height - -; +#X obj 581 132 select 1; +#X floatatom 573 227 5 0 0 1 ctrX - -; +#X floatatom 573 244 5 0 0 1 ctrY - -; +#X floatatom 582 185 5 0 0 1 size - -; +#X floatatom 582 202 5 0 0 1 height - -; #X text 33 14 Synopsis: [rubber]; #X text 7 69 Description: Renders and distorts a square.; #X text 27 313 Inlet 4: float: posX (centered); @@ -65,13 +66,14 @@ #X text 65 197 default: 32 32; #X text 63 183 segments of the square; #X text 480 362 and move the mouse; -#X obj 542 103 gemmouse 1 1; -#X obj 488 259 rubber 8 8; +#X obj 542 113 gemmouse 1 1; +#X obj 488 269 rubber 8 8; #X text 27 270 Inlet 1: bang: grab/release; #X text 27 285 Inlet 2: float: size; #X text 27 298 Inlet 3: float: height; -#X obj 488 84 accumrotate 135 0 0; -#X obj 488 67 t a b; +#X obj 488 94 accumrotate 135 0 0; +#X obj 488 77 t a b; +#X obj 548 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 18 0 43 0; diff -Nru gem-0.94~pre1/help/scale-help.pd gem-0.94/help/scale-help.pd --- gem-0.94~pre1/help/scale-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/scale-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 207 28 639 433 10; +#N canvas 207 61 639 441 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 306 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -66,6 +67,7 @@ #X obj 451 196 scale 0.5; #X text 450 339 see also:; #X obj 452 363 scaleXYZ; +#X obj 518 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 29 0; diff -Nru gem-0.94~pre1/help/scaleXYZ-help.pd gem-0.94/help/scaleXYZ-help.pd --- gem-0.94~pre1/help/scaleXYZ-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/scaleXYZ-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 207 28 639 433 10; +#N canvas 207 61 639 433 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 212 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -59,6 +60,7 @@ transformation matrix by the specified scale; #X text 17 340 see also:; #X obj 83 340 scale; +#X obj 518 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 24 0; diff -Nru gem-0.94~pre1/help/scopeXYZ~-help.pd gem-0.94/help/scopeXYZ~-help.pd --- gem-0.94~pre1/help/scopeXYZ~-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/scopeXYZ~-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 30 348 762 461 10; +#N canvas 30 348 677 461 10; +#X declare -lib Gem; #X text 475 39 Example:; #X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -8,7 +9,7 @@ #X obj 8 172 cnv 15 450 40 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 17 171 Arguments:; -#X text 452 8 GEM object; +#X text 502 8 GEM object; #X text 27 233 Inlet 1: gemlist; #X text 9 398 Outlets:; #X text 21 411 Outlet 1: gemlist; @@ -100,6 +101,7 @@ #X text 28 343 Inlet 2: signal: X-values of the oscillograph; #X text 28 356 Inlet 3: signal: Y-values of the oscillograph; #X text 28 371 Inlet 4: signal: Z-values of the oscillograph; +#X obj 568 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 19 0 38 0; diff -Nru gem-0.94~pre1/help/separator-help.pd gem-0.94/help/separator-help.pd --- gem-0.94~pre1/help/separator-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/separator-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 3 44 880 555 10; -#X text 452 8 GEM object; +#N canvas 6 61 880 555 10; +#X declare -lib Gem; +#X text 692 8 GEM object; #X text 71 31 Class: manipulation object; #X text 50 12 Synopsis: [separator]; #X obj 8 337 cnv 15 430 60 empty empty empty 20 12 0 14 -233017 -66577 @@ -102,6 +103,7 @@ #X text 464 364 With the [separator] \, both objects will by translated \, but the rotation in one branch will not effect the other branch. ; +#X obj 768 8 declare -lib Gem; #X connect 25 0 26 0; #X connect 26 0 25 0; #X connect 30 0 56 0; diff -Nru gem-0.94~pre1/help/shearXY-help.pd gem-0.94/help/shearXY-help.pd --- gem-0.94~pre1/help/shearXY-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/shearXY-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,59 +1,61 @@ -#N canvas 57 47 655 342 10; -#X text 452 8 GEM object; -#X obj 8 226 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 39 233 Inlets:; -#X text 63 246 Inlet 1: gemlist; -#X text 39 276 Outlets:; -#X text 57 289 Outlet 1: gemlist; -#X obj 8 176 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 17 175 Arguments:; -#X obj 8 76 cnv 15 440 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 449 77 cnv 15 170 239 empty empty empty 20 12 0 14 -228992 -66577 -0; -#X text 453 60 Example:; -#X obj 514 249 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 0 450 300 gemwin 0; -#X obj 132 136 gemwin; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 142 68 set create; -#X msg 132 112 create \, 1; -#X msg 198 112 destroy; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 3 0 6 0; -#X connect 3 1 5 0; -#X connect 3 1 7 0; -#X connect 4 0 1 0; -#X connect 5 0 1 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X restore 519 288 pd gemwin; -#X msg 519 269 create; -#X text 515 248 Create window:; -#X text 71 31 Class: manipulation object; -#X obj 450 108 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 451 84 gemhead; -#X floatatom 500 117 3 -4 4 0 - - -; -#X obj 451 138 shearXY 1; -#X text 50 12 Synopsis: [shearXY]; -#X text 29 77 Description: shear; -#X text 41 91 [shearXY] accepts a gemList and changes the current transformation -matrix by the specified shear; -#X text 36 122 the X translation depend on Y position and the shear -factor (float).; -#X text 60 194 1st argument: shear factor (XY); -#X text 63 261 Inlet 2: float: XY shear factor; -#X obj 451 179 cube; -#X connect 12 0 13 0; -#X connect 13 0 12 0; -#X connect 17 0 19 0; -#X connect 18 0 19 1; -#X connect 19 0 26 0; +#N canvas 57 61 625 322 10; +#X declare -lib Gem; +#X text 452 8 GEM object; +#X obj 8 226 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 39 233 Inlets:; +#X text 63 246 Inlet 1: gemlist; +#X text 39 276 Outlets:; +#X text 57 289 Outlet 1: gemlist; +#X obj 8 176 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 17 175 Arguments:; +#X obj 8 76 cnv 15 440 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 449 77 cnv 15 170 239 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X text 453 60 Example:; +#X obj 514 249 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 0 450 300 gemwin 0; +#X obj 132 136 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 142 68 set create; +#X msg 132 112 create \, 1; +#X msg 198 112 destroy; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 6 0; +#X connect 3 1 5 0; +#X connect 3 1 7 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X restore 519 288 pd gemwin; +#X msg 519 269 create; +#X text 515 248 Create window:; +#X text 71 31 Class: manipulation object; +#X obj 450 108 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 451 84 gemhead; +#X floatatom 500 117 3 -4 4 0 - - -; +#X obj 451 138 shearXY 1; +#X text 50 12 Synopsis: [shearXY]; +#X text 29 77 Description: shear; +#X text 41 91 [shearXY] accepts a gemList and changes the current transformation +matrix by the specified shear; +#X text 36 122 the X translation depend on Y position and the shear +factor (float).; +#X text 60 194 1st argument: shear factor (XY); +#X text 63 261 Inlet 2: float: XY shear factor; +#X obj 451 179 cube; +#X obj 518 8 declare -lib Gem; +#X connect 12 0 13 0; +#X connect 13 0 12 0; +#X connect 17 0 19 0; +#X connect 18 0 19 1; +#X connect 19 0 26 0; diff -Nru gem-0.94~pre1/help/shearXZ-help.pd gem-0.94/help/shearXZ-help.pd --- gem-0.94~pre1/help/shearXZ-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/shearXZ-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,59 +1,61 @@ -#N canvas 57 47 659 349 10; -#X text 452 8 GEM object; -#X obj 8 226 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 39 233 Inlets:; -#X text 63 246 Inlet 1: gemlist; -#X text 39 276 Outlets:; -#X text 57 289 Outlet 1: gemlist; -#X obj 8 176 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 17 175 Arguments:; -#X obj 8 76 cnv 15 440 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 453 60 Example:; -#X text 71 31 Class: manipulation object; -#X text 29 77 Description: shear; -#X text 50 12 Synopsis: [shearXZ]; -#X text 41 91 [shearXZ] accepts a gemList and changes the current transformation -matrix by the specified shear; -#X text 60 194 1st argument: shear factor (XZ); -#X text 63 261 Inlet 2: float: XZ shear factor; -#X obj 449 77 cnv 15 170 239 empty empty empty 20 12 0 14 -228992 -66577 -0; -#X obj 514 249 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 0 450 300 gemwin 0; -#X obj 132 136 gemwin; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 142 68 set create; -#X msg 132 112 create \, 1; -#X msg 198 112 destroy; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 3 0 6 0; -#X connect 3 1 5 0; -#X connect 3 1 7 0; -#X connect 4 0 1 0; -#X connect 5 0 1 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X restore 519 288 pd gemwin; -#X msg 519 269 create; -#X text 515 248 Create window:; -#X obj 450 108 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 458 82 gemhead; -#X obj 458 177 square; -#X floatatom 507 115 3 -4 4 0 - - -; -#X obj 458 136 shearXZ 1; -#X text 36 122 the X translation depend on Z position and the shear -factor (float).; -#X connect 18 0 19 0; -#X connect 19 0 18 0; -#X connect 22 0 25 0; -#X connect 24 0 25 1; -#X connect 25 0 23 0; +#N canvas 57 61 625 325 10; +#X declare -lib Gem; +#X text 452 8 GEM object; +#X obj 8 226 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 39 233 Inlets:; +#X text 63 246 Inlet 1: gemlist; +#X text 39 276 Outlets:; +#X text 57 289 Outlet 1: gemlist; +#X obj 8 176 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 17 175 Arguments:; +#X obj 8 76 cnv 15 440 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 453 60 Example:; +#X text 71 31 Class: manipulation object; +#X text 29 77 Description: shear; +#X text 50 12 Synopsis: [shearXZ]; +#X text 41 91 [shearXZ] accepts a gemList and changes the current transformation +matrix by the specified shear; +#X text 60 194 1st argument: shear factor (XZ); +#X text 63 261 Inlet 2: float: XZ shear factor; +#X obj 449 77 cnv 15 170 239 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 514 249 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 0 450 300 gemwin 0; +#X obj 132 136 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 142 68 set create; +#X msg 132 112 create \, 1; +#X msg 198 112 destroy; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 6 0; +#X connect 3 1 5 0; +#X connect 3 1 7 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X restore 519 288 pd gemwin; +#X msg 519 269 create; +#X text 515 248 Create window:; +#X obj 450 108 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 458 82 gemhead; +#X obj 458 177 square; +#X floatatom 507 115 3 -4 4 0 - - -; +#X obj 458 136 shearXZ 1; +#X text 36 122 the X translation depend on Z position and the shear +factor (float).; +#X obj 518 8 declare -lib Gem; +#X connect 18 0 19 0; +#X connect 19 0 18 0; +#X connect 22 0 25 0; +#X connect 24 0 25 1; +#X connect 25 0 23 0; diff -Nru gem-0.94~pre1/help/shearYX-help.pd gem-0.94/help/shearYX-help.pd --- gem-0.94~pre1/help/shearYX-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/shearYX-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,59 +1,61 @@ -#N canvas 335 193 659 340 10; -#X text 452 8 GEM object; -#X obj 8 226 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 39 233 Inlets:; -#X text 63 246 Inlet 1: gemlist; -#X text 39 276 Outlets:; -#X text 57 289 Outlet 1: gemlist; -#X obj 8 176 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 17 175 Arguments:; -#X obj 8 76 cnv 15 440 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 453 60 Example:; -#X text 71 31 Class: manipulation object; -#X text 29 77 Description: shear; -#X text 36 122 the X translation depend on Y position and the shear -factor (float).; -#X text 50 12 Synopsis: [shearYX]; -#X text 41 91 [shearYX] accepts a gemList and changes the current transformation -matrix by the specified shear; -#X text 60 194 1st argument: shear factor (YX); -#X text 63 261 Inlet 2: float: YX shear factor; -#X obj 449 77 cnv 15 170 239 empty empty empty 20 12 0 14 -228992 -66577 -0; -#X obj 514 249 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 0 450 300 gemwin 0; -#X obj 132 136 gemwin; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 142 68 set create; -#X msg 132 112 create \, 1; -#X msg 198 112 destroy; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 3 0 6 0; -#X connect 3 1 5 0; -#X connect 3 1 7 0; -#X connect 4 0 1 0; -#X connect 5 0 1 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X restore 519 288 pd gemwin; -#X msg 519 269 create; -#X text 515 248 Create window:; -#X obj 450 108 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 451 84 gemhead; -#X obj 451 179 square; -#X floatatom 500 117 3 -4 4 0 - - -; -#X obj 451 138 shearYX 1; -#X connect 19 0 20 0; -#X connect 20 0 19 0; -#X connect 23 0 26 0; -#X connect 25 0 26 1; -#X connect 26 0 24 0; +#N canvas 335 193 634 330 10; +#X declare -lib Gem; +#X text 452 8 GEM object; +#X obj 8 226 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 39 233 Inlets:; +#X text 63 246 Inlet 1: gemlist; +#X text 39 276 Outlets:; +#X text 57 289 Outlet 1: gemlist; +#X obj 8 176 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 17 175 Arguments:; +#X obj 8 76 cnv 15 440 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 453 60 Example:; +#X text 71 31 Class: manipulation object; +#X text 29 77 Description: shear; +#X text 36 122 the X translation depend on Y position and the shear +factor (float).; +#X text 50 12 Synopsis: [shearYX]; +#X text 41 91 [shearYX] accepts a gemList and changes the current transformation +matrix by the specified shear; +#X text 60 194 1st argument: shear factor (YX); +#X text 63 261 Inlet 2: float: YX shear factor; +#X obj 449 77 cnv 15 170 239 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 514 249 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 0 450 300 gemwin 0; +#X obj 132 136 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 142 68 set create; +#X msg 132 112 create \, 1; +#X msg 198 112 destroy; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 6 0; +#X connect 3 1 5 0; +#X connect 3 1 7 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X restore 519 288 pd gemwin; +#X msg 519 269 create; +#X text 515 248 Create window:; +#X obj 450 108 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 451 84 gemhead; +#X obj 451 179 square; +#X floatatom 500 117 3 -4 4 0 - - -; +#X obj 451 138 shearYX 1; +#X obj 518 8 declare -lib Gem; +#X connect 19 0 20 0; +#X connect 20 0 19 0; +#X connect 23 0 26 0; +#X connect 25 0 26 1; +#X connect 26 0 24 0; diff -Nru gem-0.94~pre1/help/shearYZ-help.pd gem-0.94/help/shearYZ-help.pd --- gem-0.94~pre1/help/shearYZ-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/shearYZ-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 357 249 667 351 10; +#N canvas 357 249 631 328 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 226 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -53,6 +54,7 @@ factor (float).; #X obj 451 217 cube; #X obj 451 120 rotateXYZ 0 45 0; +#X obj 518 8 declare -lib Gem; #X connect 18 0 19 0; #X connect 19 0 18 0; #X connect 22 0 27 0; diff -Nru gem-0.94~pre1/help/shearZX-help.pd gem-0.94/help/shearZX-help.pd --- gem-0.94~pre1/help/shearZX-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/shearZX-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 356 249 657 340 10; +#N canvas 356 249 630 329 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 226 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -52,6 +53,7 @@ #X text 36 122 the Z translation depend on X position and the shear factor (float).; #X obj 451 179 teapot; +#X obj 518 8 declare -lib Gem; #X connect 18 0 19 0; #X connect 19 0 18 0; #X connect 22 0 24 0; diff -Nru gem-0.94~pre1/help/shearZY-help.pd gem-0.94/help/shearZY-help.pd --- gem-0.94~pre1/help/shearZY-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/shearZY-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,59 +1,61 @@ -#N canvas 57 47 666 355 10; -#X text 452 8 GEM object; -#X obj 8 226 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 39 233 Inlets:; -#X text 63 246 Inlet 1: gemlist; -#X text 39 276 Outlets:; -#X text 57 289 Outlet 1: gemlist; -#X obj 8 176 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 17 175 Arguments:; -#X obj 8 76 cnv 15 440 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 449 77 cnv 15 170 239 empty empty empty 20 12 0 14 -228992 -66577 -0; -#X text 453 60 Example:; -#X obj 514 246 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 0 450 300 gemwin 0; -#X obj 132 136 gemwin; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 142 68 set create; -#X msg 132 112 create \, 1; -#X msg 198 112 destroy; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 3 0 6 0; -#X connect 3 1 5 0; -#X connect 3 1 7 0; -#X connect 4 0 1 0; -#X connect 5 0 1 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X restore 519 285 pd gemwin; -#X msg 519 266 create; -#X text 515 245 Create window:; -#X text 71 31 Class: manipulation object; -#X obj 450 108 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 451 84 gemhead; -#X obj 451 179 square; -#X floatatom 500 117 3 -4 4 0 - - -; -#X text 29 77 Description: shear; -#X text 41 91 [shearYZ] accepts a gemList and changes the current transformation -matrix by the specified shear; -#X text 60 194 1st argument: shear factor (ZY); -#X text 63 261 Inlet 2: float: ZY shear factor; -#X text 50 12 Synopsis: [shearYZ]; -#X obj 451 138 shearZY 1; -#X text 36 122 the Y translation depend on Z position and the shear -factor (float).; -#X connect 12 0 13 0; -#X connect 13 0 12 0; -#X connect 17 0 25 0; -#X connect 19 0 25 1; -#X connect 25 0 18 0; +#N canvas 57 61 628 330 10; +#X declare -lib Gem; +#X text 452 8 GEM object; +#X obj 8 226 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 39 233 Inlets:; +#X text 63 246 Inlet 1: gemlist; +#X text 39 276 Outlets:; +#X text 57 289 Outlet 1: gemlist; +#X obj 8 176 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 17 175 Arguments:; +#X obj 8 76 cnv 15 440 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 449 77 cnv 15 170 239 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X text 453 60 Example:; +#X obj 514 246 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 0 450 300 gemwin 0; +#X obj 132 136 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 142 68 set create; +#X msg 132 112 create \, 1; +#X msg 198 112 destroy; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 6 0; +#X connect 3 1 5 0; +#X connect 3 1 7 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X restore 519 285 pd gemwin; +#X msg 519 266 create; +#X text 515 245 Create window:; +#X text 71 31 Class: manipulation object; +#X obj 450 108 cnv 15 160 60 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 451 84 gemhead; +#X obj 451 179 square; +#X floatatom 500 117 3 -4 4 0 - - -; +#X text 29 77 Description: shear; +#X text 41 91 [shearYZ] accepts a gemList and changes the current transformation +matrix by the specified shear; +#X text 60 194 1st argument: shear factor (ZY); +#X text 63 261 Inlet 2: float: ZY shear factor; +#X text 50 12 Synopsis: [shearYZ]; +#X obj 451 138 shearZY 1; +#X text 36 122 the Y translation depend on Z position and the shear +factor (float).; +#X obj 518 8 declare -lib Gem; +#X connect 12 0 13 0; +#X connect 13 0 12 0; +#X connect 17 0 25 0; +#X connect 19 0 25 1; +#X connect 25 0 18 0; diff -Nru gem-0.94~pre1/help/shininess-help.pd gem-0.94/help/shininess-help.pd --- gem-0.94~pre1/help/shininess-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/shininess-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 61 18 639 342 10; +#N canvas 61 61 639 342 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 216 cnv 15 430 100 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -58,6 +59,7 @@ ; #X obj 451 140 shininess; #X text 60 191 default:0; +#X obj 518 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 30 0; diff -Nru gem-0.94~pre1/help/slideSquares-help.pd gem-0.94/help/slideSquares-help.pd --- gem-0.94~pre1/help/slideSquares-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/slideSquares-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,8 +1,9 @@ -#N canvas 289 160 710 363 10; +#N canvas 289 160 683 363 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; -#X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 499 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; -#X obj 584 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 564 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -22,10 +23,10 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 589 263 pd gemwin; -#X msg 589 244 create; -#X text 585 223 Create window:; -#X text 525 29 Example:; +#X restore 569 293 pd gemwin; +#X msg 569 274 create; +#X text 565 253 Create window:; +#X text 505 59 Example:; #X obj 7 65 cnv 15 450 80 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 216 cnv 15 450 130 empty empty empty 20 12 0 14 -233017 -66577 @@ -35,18 +36,18 @@ 0; #X text 17 155 Arguments:; #X text 27 247 Inlet 1: message: draw [line|fill|point]; -#X text 452 8 GEM object; +#X text 502 8 GEM object; #X text 27 233 Inlet 1: gemlist; #X text 9 310 Outlets:; #X text 21 323 Outlet 1: gemlist; -#X obj 522 82 cnv 15 160 120 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 502 112 cnv 15 160 120 empty empty empty 20 12 0 14 -24198 -66577 0; -#X obj 533 54 gemhead; -#X floatatom 586 104 5 0 0 0 - - -; -#X floatatom 640 135 5 0 0 0 - - -; -#X text 640 119 height; +#X obj 513 84 gemhead; +#X floatatom 566 134 5 0 0 0 - - -; +#X floatatom 620 165 5 0 0 0 - - -; +#X text 620 149 height; #X text 27 275 Inlet 3: float: height (dimY); -#X text 586 88 width; +#X text 566 118 width; #X text 33 14 Synopsis: [slideSquares]; #X text 7 69 Description: Renders sliding rectangles.; #X text 16 86 The slideSquares object renders a number of sliding rectangles @@ -56,7 +57,8 @@ ; #X text 65 181 default: 1 1; #X text 27 260 Inlet 2: float: width (dimX); -#X obj 533 179 slideSquares 1 1; +#X obj 513 209 slideSquares 1 1; +#X obj 568 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 18 0 30 0; diff -Nru gem-0.94~pre1/help/specular-help.pd gem-0.94/help/specular-help.pd --- gem-0.94~pre1/help/specular-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/specular-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 61 22 632 364 10; +#N canvas 61 61 632 364 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 216 cnv 15 430 100 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -58,6 +59,7 @@ see any effects.; #X text 36 323 see also:; #X obj 97 323 specularRGB; +#X obj 518 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 28 0; diff -Nru gem-0.94~pre1/help/specularRGB-help.pd gem-0.94/help/specularRGB-help.pd --- gem-0.94~pre1/help/specularRGB-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/specularRGB-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,6 @@ -#N canvas 61 22 629 372 10; -#X text 452 8 GEM object; +#N canvas 61 61 629 372 10; +#X declare -lib Gem; +#X text 432 8 GEM object; #X obj 8 216 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 39 218 Inlets:; @@ -63,6 +64,7 @@ #X text 62 260 Inlet 3: float: Green-value; #X text 35 341 see also:; #X obj 107 342 specular; +#X obj 508 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 25 0; diff -Nru gem-0.94~pre1/help/sphere3d-help.pd gem-0.94/help/sphere3d-help.pd --- gem-0.94~pre1/help/sphere3d-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/sphere3d-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,6 +1,7 @@ -#N canvas 67 280 825 465 10; +#N canvas 67 280 714 379 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; -#X obj 479 47 cnv 15 170 280 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 479 47 cnv 15 230 280 empty empty empty 20 12 0 14 -228992 -66577 0; #X obj 544 264 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; @@ -25,7 +26,7 @@ #X restore 549 303 pd gemwin; #X msg 549 284 create; #X text 545 263 Create window:; -#X text 485 29 Example:; +#X text 480 31 Example:; #X obj 7 61 cnv 15 450 120 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 226 cnv 15 450 140 empty empty empty 20 12 0 14 -233017 -66577 @@ -36,11 +37,11 @@ #X text 17 185 Arguments:; #X text 27 252 Inlet 1: message: draw [line|fill|point]; #X text 27 307 Inlet 2: float: size; -#X text 452 8 GEM object; +#X text 512 8 GEM object; #X text 27 238 Inlet 1: gemlist; #X text 9 334 Outlets:; #X text 21 347 Outlet 1: gemlist; -#X obj 545 133 cnv 15 100 120 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 534 135 cnv 15 175 120 empty empty empty 20 12 0 14 -24198 -66577 0; #X msg 483 56 draw line; #X msg 483 76 draw fill; @@ -51,10 +52,10 @@ #X text 27 318 Inlet 3: int: number of segments; #X text 33 14 Synopsis: [sphere3d]; #X text 7 65 Description: Renders a sphere3d.; -#X text 14 82 The sphere3d object renders a segmented sphere3d at -the current position with current color. The look of the sphere3d can -be changed with the draw message \, its size can be changed via the -second inlet.; +#X text 14 82 The sphere3d object renders a segmented sphere3d at the +current position with current color. The look of the sphere3d can be +changed with the draw message \, its size can be changed via the second +inlet.; #X text 63 197 size of the sphere3d; #X floatatom 488 150 5 0 0 0 - - -; #X floatatom 486 179 5 0 0 0 - - -; @@ -66,8 +67,8 @@ #X msg 535 151 setCartesian 2 3 \$1 1 0; #X obj 552 114 rotateXYZ; #X floatatom 578 93 5 0 0 0 - - -; -#X text 145 403 see also; -#X obj 215 404 sphere; +#X text 505 333 see also; +#X obj 575 334 sphere; #X msg 548 174 setSpherical 2 3 \$1 45 45; #X obj 481 287 s \$0-s3d; #X msg 481 266 print; @@ -76,6 +77,7 @@ at the sphere via the setCartesian and setSpherical messages (for cartesian and spherical (in deg) coordinates resp.); #X text 27 292 Inlet 1: message: print; +#X obj 578 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 19 0 33 0; diff -Nru gem-0.94~pre1/help/sphere-help.pd gem-0.94/help/sphere-help.pd --- gem-0.94~pre1/help/sphere-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/sphere-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 274 73 707 374 10; +#N canvas 274 73 663 374 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X obj 479 47 cnv 15 170 270 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -53,15 +54,16 @@ #X text 27 272 Inlet 3: int: number of segments; #X text 33 14 Synopsis: [sphere]; #X text 16 69 Description: Renders a sphere.; -#X text 30 85 The sphere object renders a segmented sphere at the -current position with current color. The look of the sphere can be -changed with the draw message \, its size can be changed via the second -inlet.; +#X text 30 85 The sphere object renders a segmented sphere at the current +position with current color. The look of the sphere can be changed +with the draw message \, its size can be changed via the second inlet. +; #X obj 497 222 sphere 1; #X text 35 168 size of the sphere \, segments; #X text 34 184 defaults: 1 \, 10; #X text 33 330 see also:; #X obj 102 331 sphere3d; +#X obj 548 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 19 0 31 0; diff -Nru gem-0.94~pre1/help/spline_path-help.pd gem-0.94/help/spline_path-help.pd --- gem-0.94~pre1/help/spline_path-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/spline_path-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 37 45 711 482 10; +#N canvas 37 61 681 460 10; +#X declare -lib Gem; #X text 458 11 GEM object; #X text 41 430 see also:; #X obj 115 429 linear_path; @@ -59,6 +60,7 @@ #X text 50 240 name of the table; #X obj 516 168 spline_path 3 array; #X msg 543 140 open array; +#X obj 578 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 12 1 14 0; #X connect 12 2 15 0; diff -Nru gem-0.94~pre1/help/spot_light-help.pd gem-0.94/help/spot_light-help.pd --- gem-0.94~pre1/help/spot_light-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/spot_light-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 34 73 724 516 10; +#X declare -lib Gem; #X text 471 28 Example:; #X obj 7 64 cnv 15 450 265 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -147,6 +148,7 @@ #X obj 527 477 world_light; #X obj 485 477 light; #X text 37 401 Inlet 1: float: turn light on/off (default:1); +#X obj 578 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 16 0 43 0; diff -Nru gem-0.94~pre1/help/square-help.pd gem-0.94/help/square-help.pd --- gem-0.94~pre1/help/square-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/square-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,8 +1,9 @@ #N canvas 289 160 710 345 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; -#X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 489 57 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; -#X obj 584 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 554 234 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -22,9 +23,9 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 589 263 pd gemwin; -#X msg 589 244 create; -#X text 585 223 Create window:; +#X restore 559 273 pd gemwin; +#X msg 559 254 create; +#X text 555 233 Create window:; #X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 216 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 @@ -35,26 +36,27 @@ #X text 17 175 Arguments:; #X text 27 247 Inlet 1: message: draw [line|fill|point]; #X text 27 261 Inlet 2: float: size; -#X text 452 8 GEM object; +#X text 502 8 GEM object; #X text 27 233 Inlet 1: gemlist; #X text 9 280 Outlets:; #X text 21 293 Outlet 1: gemlist; -#X text 525 29 Example:; -#X obj 522 78 cnv 15 150 100 empty empty empty 20 12 0 14 -24198 -66577 +#X text 495 39 Example:; +#X obj 492 88 cnv 15 150 100 empty empty empty 20 12 0 14 -24198 -66577 0; -#X msg 525 85 draw line; -#X msg 525 106 draw fill; -#X msg 525 128 draw point; -#X obj 593 54 gemhead; -#X floatatom 624 114 5 0 0 0 - - -; -#X text 624 98 size; -#X obj 593 159 square; +#X msg 495 95 draw line; +#X msg 495 116 draw fill; +#X msg 495 138 draw point; +#X obj 563 64 gemhead; +#X floatatom 594 124 5 0 0 0 - - -; +#X text 594 108 size; +#X obj 563 169 square; #X text 7 69 Description: Renders a square; #X text 33 14 Synopsis: [square]; #X text 63 186 size of the square; #X text 16 86 The [square] object renders a square at the current position with current color. The size of the square can be changed via the second inlet.; +#X obj 578 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 19 0 25 0; diff -Nru gem-0.94~pre1/help/surface3d-help.pd gem-0.94/help/surface3d-help.pd --- gem-0.94~pre1/help/surface3d-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/surface3d-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 41 102 968 681 10; +#X declare -lib Gem; #X text 58 45 Class: geometric object; #X obj 13 64 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -41,7 +42,7 @@ #X connect 10 0 0 0; #X connect 11 0 10 0; #X restore 821 583 pd gemwin; -#X msg 821 564 destroy; +#X msg 821 564 create; #X text 817 543 Create window:; #X obj 796 74 cnv 15 150 150 empty empty empty 20 12 0 14 -24198 -66577 0; @@ -1606,6 +1607,7 @@ #X text 33 146 This object is related to curve3d; #X text 271 4 Create a 3d bicubic curve \, using a matrix of control points; +#X obj 848 8 declare -lib Gem; #X connect 11 0 12 0; #X connect 12 0 11 0; #X connect 17 0 89 0; diff -Nru gem-0.94~pre1/help/teapot-help.pd gem-0.94/help/teapot-help.pd --- gem-0.94~pre1/help/teapot-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/teapot-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,8 +1,9 @@ #N canvas 312 148 709 361 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; -#X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 489 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; -#X obj 584 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 554 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 22 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -22,10 +23,10 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 589 263 pd gemwin; -#X msg 589 244 create; -#X text 585 223 Create window:; -#X text 525 29 Example:; +#X restore 559 293 pd gemwin; +#X msg 559 274 create; +#X text 555 253 Create window:; +#X text 495 59 Example:; #X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 236 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 @@ -35,30 +36,31 @@ 0; #X text 17 175 Arguments:; #X text 29 275 Inlet 2: float: size; -#X text 452 8 GEM object; +#X text 505 8 GEM object; #X text 29 247 Inlet 1: gemlist; #X text 11 304 Outlets:; #X text 23 317 Outlet 1: gemlist; #X text 33 14 Synopsis: [teapot]; #X text 7 69 Description: Renders a teapot.; #X text 63 186 size of the teapot; -#X obj 522 81 cnv 15 150 100 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 492 111 cnv 15 150 100 empty empty empty 20 12 0 14 -24198 -66577 0; -#X msg 525 88 draw line; -#X msg 525 111 draw fill; -#X obj 593 54 gemhead; -#X floatatom 611 99 5 -5 5 2 size - -; -#X floatatom 630 131 5 0 20 2 grid - -; +#X msg 495 118 draw line; +#X msg 495 141 draw fill; +#X obj 563 84 gemhead; +#X floatatom 581 129 5 -5 5 2 size - -; +#X floatatom 600 161 5 0 20 2 grid - -; #X text 29 289 Inlet 3: float: number of slices; #X text 29 261 Inlet 1: message: draw [line|fill|points]; #X text 14 130 You can also specify the "number of slices" via the 3rd inlet.; -#X msg 526 132 draw point; +#X msg 496 162 draw point; #X text 15 88 The teapot object renders a teapot at the current position with current color. The size of the teapot can be changed via the second inlet.; -#X obj 593 159 teapot 2 14; +#X obj 563 189 teapot 2 14; #X text 63 200 number of slices; +#X obj 578 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 21 0 31 0; diff -Nru gem-0.94~pre1/help/text2d-help.pd gem-0.94/help/text2d-help.pd --- gem-0.94~pre1/help/text2d-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/text2d-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 91 80 650 640 10; +#N canvas 91 80 658 640 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X obj 465 65 cnv 15 170 270 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -33,7 +34,7 @@ #X obj 8 295 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 17 294 Arguments:; -#X text 304 2 GEM object; +#X text 462 10 GEM object; #X text 27 352 Inlet 1: gemlist; #X text 9 480 Outlets:; #X text 21 493 Outlet 1: gemlist; @@ -96,7 +97,7 @@ #N canvas 69 240 450 369 disappearing 0; #X obj 43 27 inlet; #X obj 43 266 s \$0-X; -#X obj 43 92 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1 +#X obj 43 92 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; #X obj 43 116 pack 0 1000; #X obj 43 238 line; @@ -125,6 +126,7 @@ #X text 27 454 Inlet 2: float: size (in points) default:20, f 56; #X text 27 425 Inlet 1: message: justify <hor> [<vert>]: horizontal&vertical justification; +#X obj 528 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 17 0 33 0; diff -Nru gem-0.94~pre1/help/text3d-help.pd gem-0.94/help/text3d-help.pd --- gem-0.94~pre1/help/text3d-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/text3d-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,6 +1,7 @@ #N canvas 108 62 650 580 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; -#X obj 465 65 cnv 15 170 270 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 465 65 cnv 15 180 270 empty empty empty 20 12 0 14 -228992 -66577 0; #X obj 467 343 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; @@ -33,12 +34,12 @@ #X obj 8 295 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 17 294 Arguments:; -#X text 303 4 GEM object; +#X text 453 11 GEM object; #X text 27 351 Inlet 1: gemlist; #X text 9 483 Outlets:; #X text 21 496 Outlet 1: gemlist; #X text 471 47 Example:; -#X obj 468 112 cnv 15 150 220 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 468 112 cnv 15 170 220 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 471 70 gemhead; #X floatatom 510 289 5 0 100 1 size - -; @@ -88,6 +89,7 @@ #X obj 541 442 textextruded; #X obj 541 465 textoutline; #X text 27 464 Inlet 2: float: size (in points) (default:20); +#X obj 528 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 17 0 36 0; diff -Nru gem-0.94~pre1/help/textextruded-help.pd gem-0.94/help/textextruded-help.pd --- gem-0.94~pre1/help/textextruded-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/textextruded-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 26 90 733 630 10; +#N canvas 26 90 645 630 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X obj 466 65 cnv 15 170 270 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -91,6 +92,7 @@ #X obj 545 418 text2d; #X obj 592 418 text3d; #X text 27 457 Inlet 2: float: size (in points). (default:20); +#X obj 531 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 17 0 37 0; diff -Nru gem-0.94~pre1/help/textoutline-help.pd gem-0.94/help/textoutline-help.pd --- gem-0.94~pre1/help/textoutline-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/textoutline-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 26 90 653 587 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; #X obj 466 66 cnv 15 170 270 empty empty empty 20 12 0 14 -228992 -66577 0; @@ -33,7 +34,7 @@ #X obj 8 295 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 17 294 Arguments:; -#X text 351 8 GEM object; +#X text 461 8 GEM object; #X text 27 352 Inlet 1: gemlist; #X text 9 465 Outlets:; #X text 21 478 Outlet 1: gemlist; @@ -85,6 +86,7 @@ #X obj 489 441 text2d; #X obj 488 463 text3d; #X text 27 446 Inlet 2: float: size (in points). (default:20); +#X obj 528 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 17 0 37 0; diff -Nru gem-0.94~pre1/help/torus-help.pd gem-0.94/help/torus-help.pd --- gem-0.94~pre1/help/torus-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/torus-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,8 +1,9 @@ -#N canvas 279 150 740 369 10; +#N canvas 279 150 677 369 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; -#X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 489 77 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; -#X obj 584 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 554 254 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -22,10 +23,10 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 589 263 pd gemwin; -#X msg 589 244 create; -#X text 585 223 Create window:; -#X text 525 29 Example:; +#X restore 559 293 pd gemwin; +#X msg 559 274 create; +#X text 555 253 Create window:; +#X text 495 59 Example:; #X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 236 cnv 15 450 120 empty empty empty 20 12 0 14 -233017 -66577 @@ -35,33 +36,34 @@ 0; #X text 17 175 Arguments:; #X text 29 277 Inlet 2: float: size; -#X text 452 8 GEM object; +#X text 482 8 GEM object; #X text 29 249 Inlet 1: gemlist; #X text 11 326 Outlets:; #X text 23 339 Outlet 1: gemlist; -#X obj 522 81 cnv 15 150 100 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 492 111 cnv 15 150 100 empty empty empty 20 12 0 14 -24198 -66577 0; -#X msg 525 88 draw line; -#X msg 525 111 draw fill; -#X obj 593 54 gemhead; -#X floatatom 603 86 5 -5 5 2 size - -; -#X floatatom 613 114 5 0 20 2 slices - -; +#X msg 495 118 draw line; +#X msg 495 141 draw fill; +#X obj 563 84 gemhead; +#X floatatom 573 116 5 -5 5 2 size - -; +#X floatatom 583 144 5 0 20 2 slices - -; #X text 29 291 Inlet 3: float: number of slices; #X text 29 263 Inlet 1: message: draw [line|fill|points]; #X text 14 130 You can also specify the "number of slices" via the 3rd inlet.; -#X msg 526 132 draw point; +#X msg 496 162 draw point; #X text 33 14 Synopsis: [torus]; #X text 63 186 size of the torus; #X text 7 69 Description: Renders a torus.; #X text 15 88 The torus object renders a torus (aka: doughnut) at the current position with current color. The size of the torus can be changed via the second inlet.; -#X floatatom 623 141 5 0 20 2 thickness - -; -#X obj 593 159 torus 1; +#X floatatom 593 171 5 0 20 2 thickness - -; +#X obj 563 189 torus 1; #X text 63 199 # of slices; #X text 62 214 thickness (R-r); #X text 29 307 Inlet 3: float: thickness of the torus (R-r); +#X obj 548 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 18 0 32 0; diff -Nru gem-0.94~pre1/help/translate-help.pd gem-0.94/help/translate-help.pd --- gem-0.94~pre1/help/translate-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/translate-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 22 88 639 383 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 206 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -57,6 +58,7 @@ #X obj 455 175 translate 0.1 1 1 0; #X text 35 332 see also:; #X obj 99 333 translateXYZ; +#X obj 518 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 30 0; diff -Nru gem-0.94~pre1/help/translateXYZ-help.pd gem-0.94/help/translateXYZ-help.pd --- gem-0.94~pre1/help/translateXYZ-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/translateXYZ-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 57 47 639 383 10; +#N canvas 57 61 639 383 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 206 cnv 15 430 120 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -57,6 +58,7 @@ transformation matrix by the specified translation; #X text 23 333 see also:; #X obj 85 334 translate; +#X obj 518 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 17 0 21 0; diff -Nru gem-0.94~pre1/help/trapezoid-help.pd gem-0.94/help/trapezoid-help.pd --- gem-0.94~pre1/help/trapezoid-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/trapezoid-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,8 +1,9 @@ -#N canvas 1 51 751 400 10; +#N canvas 6 61 673 358 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; -#X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 489 87 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; -#X obj 584 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 554 264 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -22,10 +23,10 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 589 263 pd gemwin; -#X msg 589 244 create; -#X text 585 223 Create window:; -#X text 525 29 Example:; +#X restore 559 303 pd gemwin; +#X msg 559 284 create; +#X text 555 263 Create window:; +#X text 495 69 Example:; #X obj 7 65 cnv 15 450 80 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 216 cnv 15 450 130 empty empty empty 20 12 0 14 -233017 -66577 @@ -35,20 +36,20 @@ 0; #X text 17 155 Arguments:; #X text 27 247 Inlet 1: message: draw [line|fill|point]; -#X text 452 8 GEM object; +#X text 472 8 GEM object; #X text 27 233 Inlet 1: gemlist; #X text 9 310 Outlets:; #X text 21 323 Outlet 1: gemlist; -#X obj 522 82 cnv 15 160 120 empty empty empty 20 12 0 14 -24198 -66577 +#X obj 492 122 cnv 15 160 120 empty empty empty 20 12 0 14 -24198 -66577 0; -#X msg 525 95 draw line; -#X msg 525 116 draw fill; -#X msg 525 138 draw point; -#X obj 579 54 gemhead; -#X floatatom 617 134 5 0 0 0 - - -; -#X floatatom 630 162 5 0 0 0 - - -; -#X text 617 118 size; -#X text 630 146 top line; +#X msg 495 135 draw line; +#X msg 495 156 draw fill; +#X msg 495 178 draw point; +#X obj 549 94 gemhead; +#X floatatom 587 174 5 0 0 0 - - -; +#X floatatom 600 202 5 0 0 0 - - -; +#X text 587 158 size; +#X text 600 186 top line; #X text 33 14 Synopsis: [trapezoid]; #X text 7 69 Description: Renders a trapezoid box.; #X text 15 86 The trapezoid object renders a trapezoid (box) at the @@ -59,7 +60,8 @@ #X text 27 260 Inlet 2: float: size; #X text 27 275 Inlet 3: float: length of top line \, relative to the size; -#X obj 579 185 trapezoid 1 0.7; +#X obj 549 225 trapezoid 1 0.7; +#X obj 548 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 18 0 33 0; diff -Nru gem-0.94~pre1/help/triangle-help.pd gem-0.94/help/triangle-help.pd --- gem-0.94~pre1/help/triangle-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/triangle-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,8 +1,9 @@ #N canvas 289 160 710 345 10; +#X declare -lib Gem; #X text 54 30 Class: geometric object; -#X obj 519 47 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 +#X obj 489 57 cnv 15 170 250 empty empty empty 20 12 0 14 -228992 -66577 0; -#X obj 584 224 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +#X obj 554 234 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 0 450 300 gemwin 0; #X obj 132 136 gemwin; @@ -22,9 +23,9 @@ #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; -#X restore 589 263 pd gemwin; -#X msg 589 244 create; -#X text 585 223 Create window:; +#X restore 559 273 pd gemwin; +#X msg 559 254 create; +#X text 555 233 Create window:; #X obj 7 65 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 8 216 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 @@ -35,27 +36,28 @@ #X text 17 175 Arguments:; #X text 27 247 Inlet 1: message: draw [line|fill|point]; #X text 27 261 Inlet 2: float: size; -#X text 452 8 GEM object; +#X text 522 8 GEM object; #X text 27 233 Inlet 1: gemlist; #X text 9 280 Outlets:; #X text 21 293 Outlet 1: gemlist; -#X text 525 29 Example:; -#X obj 522 78 cnv 15 150 100 empty empty empty 20 12 0 14 -24198 -66577 +#X text 495 39 Example:; +#X obj 492 88 cnv 15 150 100 empty empty empty 20 12 0 14 -24198 -66577 0; -#X msg 525 85 draw line; -#X msg 525 106 draw fill; -#X msg 525 128 draw point; -#X obj 593 54 gemhead; -#X floatatom 624 114 5 0 0 0 - - -; -#X text 624 98 size; +#X msg 495 95 draw line; +#X msg 495 116 draw fill; +#X msg 495 138 draw point; +#X obj 563 64 gemhead; +#X floatatom 594 124 5 0 0 0 - - -; +#X text 594 108 size; #X text 63 186 size of the triangle; #X text 33 14 Synopsis: [triangle]; -#X obj 593 158 triangle 2; +#X obj 563 168 triangle 2; #X text 7 69 Description: Renders an isosceles triangle; #X text 16 86 The [triangle] object renders an equal-sided (where the height equals the base) triangle at the current position with current color. The size of the triangle can be changed via the second inlet. ; +#X obj 588 8 declare -lib Gem; #X connect 3 0 4 0; #X connect 4 0 3 0; #X connect 19 0 27 0; diff -Nru gem-0.94~pre1/help/tube-help.pd gem-0.94/help/tube-help.pd --- gem-0.94~pre1/help/tube-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/tube-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 495 235 754 622 10; +#N canvas 56 109 754 622 10; +#X declare -lib Gem; #X text 44 383 default = D1 and D2; #X text 54 27 Class: geometric object; #X obj 479 47 cnv 15 250 550 empty empty empty 20 12 0 14 -228992 -66577 @@ -36,7 +37,7 @@ 0; #X text 18 291 Inlets:; #X text 26 323 Inlet 1: message: draw [line|fill|point]; -#X text 452 8 GEM object; +#X text 552 8 GEM object; #X text 26 308 Inlet 1: gemlist; #X text 8 498 Outlets:; #X text 19 511 Outlet 1: gemlist; @@ -86,6 +87,7 @@ different shapes.; #X text 63 217 4 : number of segments; #X text 63 199 3 : height of the tube; +#X obj 628 8 declare -lib Gem; #X connect 4 0 5 0; #X connect 5 0 4 0; #X connect 17 0 20 0; diff -Nru gem-0.94~pre1/help/vertex_program-help.pd gem-0.94/help/vertex_program-help.pd --- gem-0.94~pre1/help/vertex_program-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/vertex_program-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ -#N canvas 35 199 694 458 10; +#N canvas 35 199 631 458 10; +#X declare -lib Gem; #X text 452 8 GEM object; #X obj 8 335 cnv 15 430 80 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -165,6 +166,7 @@ #X obj 453 422 fragment_program; #X text 451 405 see also:; #X obj 451 206 vertex_program toon.vp; +#X obj 518 8 declare -lib Gem; #X connect 10 0 11 0; #X connect 11 0 10 0; #X connect 14 0 16 0; diff -Nru gem-0.94~pre1/help/world_light-help.pd gem-0.94/help/world_light-help.pd --- gem-0.94~pre1/help/world_light-help.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/help/world_light-help.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,5 @@ #N canvas 265 153 653 455 10; +#X declare -lib Gem; #X text 475 59 Example:; #X obj 7 64 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577 0; @@ -81,6 +82,7 @@ #X obj 145 425 spot_light; #X obj 103 425 light; #X text 44 347 Inlet 1: float: turn light on/off (default:1); +#X obj 528 8 declare -lib Gem; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 16 0 27 0; diff -Nru gem-0.94~pre1/m4/ax_check_glu.m4 gem-0.94/m4/ax_check_glu.m4 --- gem-0.94~pre1/m4/ax_check_glu.m4 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/m4/ax_check_glu.m4 2019-02-12 13:10:01.000000000 +0000 @@ -242,7 +242,7 @@ [ax_check_glu_lib_opengl="yes"], [ax_check_glu_lib_opengl="no"]) _AX_CHECK_GLU_RESTORE_FLAGS() - AC_LANG_PUSH([C]) + AC_LANG_POP([C]) ]) # dnl try to found library (generic case) diff -Nru gem-0.94~pre1/m4/ax_check_glut.m4 gem-0.94/m4/ax_check_glut.m4 --- gem-0.94~pre1/m4/ax_check_glut.m4 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/m4/ax_check_glut.m4 2019-02-12 13:10:01.000000000 +0000 @@ -139,7 +139,7 @@ ], [ax_check_glut_lib_opengl="no"]) _AX_CHECK_GLUT_RESTORE_FLAGS() - AC_LANG_PUSH([C]) + AC_LANG_POP([C]) ]) @@ -163,7 +163,7 @@ [no],[], [GLUT_LIBS="${ac_cv_search_glutMainLoop} ${GLU_LIBS}"]) _AX_CHECK_GLUT_RESTORE_FLAGS() - AC_LANG_PUSH([C]) + AC_LANG_POP([C]) ]) diff -Nru gem-0.94~pre1/m4/ax_compiler_vendor.m4 gem-0.94/m4/ax_compiler_vendor.m4 --- gem-0.94~pre1/m4/ax_compiler_vendor.m4 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/m4/ax_compiler_vendor.m4 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,5 @@ # =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html +# https://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html # =========================================================================== # # SYNOPSIS @@ -29,7 +29,7 @@ # Public License for more details. # # You should have received a copy of the GNU General Public License along -# with this program. If not, see <http://www.gnu.org/licenses/>. +# with this program. If not, see <https://www.gnu.org/licenses/>. # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure @@ -44,23 +44,25 @@ # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. -#serial 12 +#serial 17 AC_DEFUN([AX_COMPILER_VENDOR], [AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor, + dnl Please add if possible support to ax_compiler_version.m4 [# note: don't check for gcc first since some other compilers define __GNUC__ vendors="intel: __ICC,__ECC,__INTEL_COMPILER ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__ pathscale: __PATHCC__,__PATHSCALE__ clang: __clang__ + cray: _CRAYC fujitsu: __FUJITSU + sdcc: SDCC, __SDCC gnu: __GNUC__ sun: __SUNPRO_C,__SUNPRO_CC hp: __HP_cc,__HP_aCC dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER - borland: __BORLANDC__,__TURBOC__ + borland: __BORLANDC__,__CODEGEARC__,__TURBOC__ comeau: __COMO__ - cray: _CRAYC kai: __KCC lcc: __LCC__ sgi: __sgi,sgi @@ -68,6 +70,7 @@ metrowerks: __MWERKS__ watcom: __WATCOMC__ portland: __PGI + tcc: __TINYC__ unknown: UNKNOWN" for ventest in $vendors; do case $ventest in diff -Nru gem-0.94~pre1/m4/ax_pthread.m4 gem-0.94/m4/ax_pthread.m4 --- gem-0.94~pre1/m4/ax_pthread.m4 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/m4/ax_pthread.m4 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,5 @@ # =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_pthread.html +# https://www.gnu.org/software/autoconf-archive/ax_pthread.html # =========================================================================== # # SYNOPSIS @@ -19,10 +19,10 @@ # is necessary on AIX to use the special cc_r compiler alias.) # # NOTE: You are assumed to not only compile your program with these flags, -# but also link it with them as well. e.g. you should link with +# but also to link with them as well. For example, you might link with # $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS # -# If you are only building threads programs, you may wish to use these +# If you are only building threaded programs, you may wish to use these # variables in your default LIBS, CFLAGS, and CC: # # LIBS="$PTHREAD_LIBS $LIBS" @@ -30,8 +30,8 @@ # CC="$PTHREAD_CC" # # In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant -# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name -# (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to +# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). # # Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the # PTHREAD_PRIO_INHERIT symbol is defined when compiling with @@ -67,7 +67,7 @@ # Public License for more details. # # You should have received a copy of the GNU General Public License along -# with this program. If not, see <http://www.gnu.org/licenses/>. +# with this program. If not, see <https://www.gnu.org/licenses/>. # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure @@ -82,35 +82,40 @@ # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. -#serial 21 +#serial 24 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) AC_DEFUN([AX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_PROG_SED]) AC_LANG_PUSH([C]) ax_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h -# requires special compiler flags (e.g. on True64 or Sequent). +# requires special compiler flags (e.g. on Tru64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: -if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then - save_CFLAGS="$CFLAGS" +if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then + ax_pthread_save_CC="$CC" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"]) CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" - AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) - AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes]) + AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS]) + AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes]) AC_MSG_RESULT([$ax_pthread_ok]) - if test x"$ax_pthread_ok" = xno; then + if test "x$ax_pthread_ok" = "xno"; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" + CC="$ax_pthread_save_CC" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" fi # We must check for the threads library under a number of different @@ -123,7 +128,7 @@ # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. -ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" +ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: @@ -132,88 +137,225 @@ # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) -# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) -# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) -# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) -# -pthreads: Solaris/gcc -# -mthreads: Mingw32/gcc, Lynx/gcc +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 +# (Note: HP C rejects this with "bad form for `-t' option") +# -pthreads: Solaris/gcc (Note: HP C also rejects) # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it -# doesn't hurt to check since this sometimes defines pthreads too; -# also defines -D_REENTRANT) -# ... -mt is also the pthreads flag for HP/aCC +# doesn't hurt to check since this sometimes defines pthreads and +# -D_REENTRANT too), HP C (must be checked before -lpthread, which +# is present but should not be used directly; and before -mthreads, +# because the compiler interprets this as "-mt" + "-hreads") +# -mthreads: Mingw32/gcc, Lynx/gcc # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) -case ${host_os} in +case $host_os in + + freebsd*) + + # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) + # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) + + ax_pthread_flags="-kthread lthread $ax_pthread_flags" + ;; + + hpux*) + + # From the cc(1) man page: "[-mt] Sets various -D flags to enable + # multi-threading and also sets -lpthread." + + ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" + ;; + + openedition*) + + # IBM z/OS requires a feature-test macro to be defined in order to + # enable POSIX threads at all, so give the user a hint if this is + # not set. (We don't define these ourselves, as they can affect + # other portions of the system API in unpredictable ways.) + + AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING], + [ +# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) + AX_PTHREAD_ZOS_MISSING +# endif + ], + [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])]) + ;; + solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based - # tests will erroneously succeed. (We need to link with -pthreads/-mt/ - # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather - # a function called by this macro, so we could check for that, but - # who knows whether they'll stub that too in a future libc.) So, - # we'll just look for -pthreads and -lpthread first: + # tests will erroneously succeed. (N.B.: The stubs are missing + # pthread_cleanup_push, or rather a function called by this macro, + # so we could check for that, but who knows whether they'll stub + # that too in a future libc.) So we'll check first for the + # standard Solaris way of linking pthreads (-mt -lpthread). + + ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags" + ;; +esac + +# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) + +AS_IF([test "x$GCC" = "xyes"], + [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"]) - ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" +# The presence of a feature test macro requesting re-entrant function +# definitions is, on some systems, a strong hint that pthreads support is +# correctly enabled + +case $host_os in + darwin* | hpux* | linux* | osf* | solaris*) + ax_pthread_check_macro="_REENTRANT" ;; - darwin*) - ax_pthread_flags="-pthread $ax_pthread_flags" - ;; - - mingw*) - # on mingw, we want to use -lpthread first, - # as "-pthread" will only set the CFLAGS (and leave LIBS untouched) - ax_pthread_flags="pthread $ax_pthread_flags" + aix*) + ax_pthread_check_macro="_THREAD_SAFE" + ;; + + *) + ax_pthread_check_macro="--" ;; esac +AS_IF([test "x$ax_pthread_check_macro" = "x--"], + [ax_pthread_check_cond=0], + [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) + +# Are we compiling with Clang? + +AC_CACHE_CHECK([whether $CC is Clang], + [ax_cv_PTHREAD_CLANG], + [ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], + [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + ], + [ax_cv_PTHREAD_CLANG=yes]) + fi + ]) +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + +ax_pthread_clang_warning=no + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + PTHREAD_CFLAGS="-pthread" + PTHREAD_LIBS= + + ax_pthread_ok=yes + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], + [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown + # Create an alternate version of $ac_link that compiles and + # links in two steps (.c -> .o, .o -> exe) instead of one + # (.c -> exe), because the warning occurs only in the second + # step + ax_pthread_save_ac_link="$ac_link" + ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' + ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"` + ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" + ax_pthread_save_CFLAGS="$CFLAGS" + for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do + AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [ac_link="$ax_pthread_2step_ac_link" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], + [break]) + ]) + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + ]) + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac -# Clang doesn't consider unrecognized options an error unless we specify -# -Werror. We throw in some extra Clang-specific options to ensure that -# this doesn't happen for GCC, which also accepts -Werror. - -AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags]) -save_CFLAGS="$CFLAGS" -ax_pthread_extra_flags="-Werror" -CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument" -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])], - [AC_MSG_RESULT([yes])], - [ax_pthread_extra_flags= - AC_MSG_RESULT([no])]) -CFLAGS="$save_CFLAGS" +fi # $ax_pthread_clang = yes -if test x"$ax_pthread_ok" = xno; then -for flag in $ax_pthread_flags; do +if test "x$ax_pthread_ok" = "xno"; then +for ax_pthread_try_flag in $ax_pthread_flags; do - case $flag in + case $ax_pthread_try_flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; + -mt,pthread) + AC_MSG_CHECKING([whether pthreads work with -mt -lpthread]) + PTHREAD_CFLAGS="-mt" + PTHREAD_LIBS="-lpthread" + ;; + -*) - AC_MSG_CHECKING([whether pthreads work with $flag]) - PTHREAD_CFLAGS="$flag" + AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) + PTHREAD_CFLAGS="$ax_pthread_try_flag" ;; pthread-config) AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) - if test x"$ax_pthread_config" = xno; then continue; fi + AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) - AC_MSG_CHECKING([for the pthreads library -l$flag]) - PTHREAD_LIBS="-l$flag" + AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) + PTHREAD_LIBS="-l$ax_pthread_try_flag" ;; esac - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we @@ -224,7 +366,11 @@ # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h> +# if $ax_pthread_check_cond +# error "$ax_pthread_check_macro must be defined" +# endif static void routine(void *a) { a = 0; } static void *start_routine(void *a) { return a; }], [pthread_t th; pthread_attr_t attr; @@ -233,16 +379,14 @@ pthread_attr_init(&attr); pthread_cleanup_push(routine, 0); pthread_cleanup_pop(0) /* ; */])], - [ax_pthread_ok=yes], - []) + [ax_pthread_ok=yes], + []) - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" AC_MSG_RESULT([$ax_pthread_ok]) - if test "x$ax_pthread_ok" = xyes; then - break; - fi + AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) PTHREAD_LIBS="" PTHREAD_CFLAGS="" @@ -250,71 +394,74 @@ fi # Various other checks: -if test "x$ax_pthread_ok" = xyes; then - save_LIBS="$LIBS" - LIBS="$PTHREAD_LIBS $LIBS" - save_CFLAGS="$CFLAGS" +if test "x$ax_pthread_ok" = "xyes"; then + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. - AC_MSG_CHECKING([for joinable pthread attribute]) - attr_name=unknown - for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>], - [int attr = $attr; return attr /* ; */])], - [attr_name=$attr; break], - []) - done - AC_MSG_RESULT([$attr_name]) - if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then - AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name], - [Define to necessary symbol if this constant - uses a non-standard name on your system.]) - fi - - AC_MSG_CHECKING([if more special flags are required for pthreads]) - flag=no - case ${host_os} in - aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; - osf* | hpux*) flag="-D_REENTRANT";; - solaris*) - if test "$GCC" = "yes"; then - flag="-D_REENTRANT" - else - # TODO: What about Clang on Solaris? - flag="-mt -D_REENTRANT" - fi - ;; - esac - AC_MSG_RESULT([$flag]) - if test "x$flag" != xno; then - PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" - fi + AC_CACHE_CHECK([for joinable pthread attribute], + [ax_cv_PTHREAD_JOINABLE_ATTR], + [ax_cv_PTHREAD_JOINABLE_ATTR=unknown + for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>], + [int attr = $ax_pthread_attr; return attr /* ; */])], + [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break], + []) + done + ]) + AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ + test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ + test "x$ax_pthread_joinable_attr_defined" != "xyes"], + [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], + [$ax_cv_PTHREAD_JOINABLE_ATTR], + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + ax_pthread_joinable_attr_defined=yes + ]) + + AC_CACHE_CHECK([whether more special flags are required for pthreads], + [ax_cv_PTHREAD_SPECIAL_FLAGS], + [ax_cv_PTHREAD_SPECIAL_FLAGS=no + case $host_os in + solaris*) + ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" + ;; + esac + ]) + AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ + test "x$ax_pthread_special_flags_added" != "xyes"], + [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" + ax_pthread_special_flags_added=yes]) AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], - [ax_cv_PTHREAD_PRIO_INHERIT], [ - AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], - [[int i = PTHREAD_PRIO_INHERIT;]])], - [ax_cv_PTHREAD_PRIO_INHERIT=yes], - [ax_cv_PTHREAD_PRIO_INHERIT=no]) + [ax_cv_PTHREAD_PRIO_INHERIT], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], + [[int i = PTHREAD_PRIO_INHERIT;]])], + [ax_cv_PTHREAD_PRIO_INHERIT=yes], + [ax_cv_PTHREAD_PRIO_INHERIT=no]) ]) - AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"], - [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])]) + AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ + test "x$ax_pthread_prio_inherit_defined" != "xyes"], + [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.]) + ax_pthread_prio_inherit_defined=yes + ]) - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" # More AIX lossage: compile with *_r variant - if test "x$GCC" != xyes; then + if test "x$GCC" != "xyes"; then case $host_os in aix*) AS_CASE(["x/$CC"], - [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], - [#handle absolute path differently from PATH based program lookup - AS_CASE(["x$CC"], - [x/*], - [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])], - [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])]) + [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], + [#handle absolute path differently from PATH based program lookup + AS_CASE(["x$CC"], + [x/*], + [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])], + [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])]) ;; esac fi @@ -327,7 +474,7 @@ AC_SUBST([PTHREAD_CC]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: -if test x"$ax_pthread_ok" = xyes; then +if test "x$ax_pthread_ok" = "xyes"; then ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) : else diff -Nru gem-0.94~pre1/m4/pkg.m4 gem-0.94/m4/pkg.m4 --- gem-0.94~pre1/m4/pkg.m4 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/m4/pkg.m4 2019-02-12 13:10:01.000000000 +0000 @@ -1,29 +1,60 @@ -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 1 (pkg-config-0.24) -# -# Copyright © 2004 Scott James Remnant <scott@netsplit.com>. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# PKG_PROG_PKG_CONFIG([MIN-VERSION]) -# ---------------------------------- +dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +dnl serial 11 (pkg-config-0.29) +dnl +dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>. +dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com> +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) @@ -45,18 +76,19 @@ PKG_CONFIG="" fi fi[]dnl -])# PKG_PROG_PKG_CONFIG +])dnl PKG_PROG_PKG_CONFIG -# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -# Check to see whether a particular set of modules exists. Similar -# to PKG_CHECK_MODULES(), but does not set variables or print errors. -# -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -# only at the first occurence in configure.ac, so if the first place -# it's called might be skipped (such as if it is within an "if", you -# have to call PKG_CHECK_EXISTS manually -# -------------------------------------------------------------- +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ @@ -66,8 +98,10 @@ $3])dnl fi]) -# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -# --------------------------------------------- +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" @@ -79,10 +113,11 @@ else pkg_failed=untried fi[]dnl -])# _PKG_CONFIG +])dnl _PKG_CONFIG -# _PKG_SHORT_ERRORS_SUPPORTED -# ----------------------------- +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -90,19 +125,17 @@ else _pkg_short_errors_supported=no fi[]dnl -])# _PKG_SHORT_ERRORS_SUPPORTED +])dnl _PKG_SHORT_ERRORS_SUPPORTED -# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -# [ACTION-IF-NOT-FOUND]) -# -# -# Note that if there is a possibility the first call to -# PKG_CHECK_MODULES might not happen, you should be sure to include an -# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac -# -# -# -------------------------------------------------------------- +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl m4_pattern_allow([$1]) @@ -158,16 +191,40 @@ AC_MSG_RESULT([yes]) $3 fi[]dnl -])# PKG_CHECK_MODULES +])dnl PKG_CHECK_MODULES -# PKG_INSTALLDIR(DIRECTORY) -# ------------------------- -# Substitutes the variable pkgconfigdir as the location where a module -# should install pkg-config .pc files. By default the directory is -# $libdir/pkgconfig, but the default can be changed by passing -# DIRECTORY. The user can override through the --with-pkgconfigdir -# parameter. +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], @@ -178,16 +235,18 @@ AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) -]) dnl PKG_INSTALLDIR +])dnl PKG_INSTALLDIR -# PKG_NOARCH_INSTALLDIR(DIRECTORY) -# ------------------------- -# Substitutes the variable noarch_pkgconfigdir as the location where a -# module should install arch-independent pkg-config .pc files. By -# default the directory is $datadir/pkgconfig, but the default can be -# changed by passing DIRECTORY. The user can override through the -# --with-noarch-pkgconfigdir parameter. +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], @@ -198,13 +257,15 @@ AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) -]) dnl PKG_NOARCH_INSTALLDIR +])dnl PKG_NOARCH_INSTALLDIR -# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, -# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# ------------------------------------------- -# Retrieves the value of the pkg-config variable for the given module. +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl @@ -213,4 +274,4 @@ AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl -])# PKG_CHECK_VAR +])dnl PKG_CHECK_VAR diff -Nru gem-0.94~pre1/plugins/filmAVF/filmAVF.h gem-0.94/plugins/filmAVF/filmAVF.h --- gem-0.94~pre1/plugins/filmAVF/filmAVF.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmAVF/filmAVF.h 2019-02-12 13:10:01.000000000 +0000 @@ -93,15 +93,15 @@ protected: ////////// - // set the pixel format: GL_YCBCR_422_APPLE, GL_RGBA_GEM, or GL_LUMINANCE + // set the pixel format: GEM_YUV, GEM_RGBA or GEM_GRAY // (re)allocates when necessary, returns true if format was changed - bool changeFormat(GLenum format); + bool changeFormat(unsigned int format); // PIMPL pointer to the Obj-C object behind this class AVFMoviePlayer* m_moviePlayer; pixBlock m_image; //< frame storage - GLenum m_wantedFormat; //< requested color space + unsigned int m_wantedFormat; //< requested color space int m_numFrames, m_numTracks; //< num frames & tracks in the stream int m_curFrame, m_curTrack; //< current frame and track double m_fps; //< frame rate diff -Nru gem-0.94~pre1/plugins/filmAVF/filmAVF.mm gem-0.94/plugins/filmAVF/filmAVF.mm --- gem-0.94~pre1/plugins/filmAVF/filmAVF.mm 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmAVF/filmAVF.mm 2019-02-12 13:10:01.000000000 +0000 @@ -27,7 +27,7 @@ REGISTER_FILMFACTORY("AVF", filmAVF); -#define FILMAVF_DEFAULT_PIXELFORMAT GL_YCBCR_422_APPLE +#define FILMAVF_DEFAULT_PIXELFORMAT GEM_YUV ///////////////////////////////////////////////////////// // @@ -65,7 +65,7 @@ } double d; if(props.get("colorspace", d)) { - m_wantedFormat = (GLenum)d; + m_wantedFormat = (unsigned int)d; } // close and reset @@ -154,12 +154,12 @@ CVPixelBufferGetBytesPerRow(imageBuffer); if(src) { switch(m_wantedFormat) { - case GL_YCBCR_422_APPLE: - case GL_RGBA_GEM: + case GEM_YUV: + case GEM_RGBA: // format should be correct, so just pass through memcpy(dest, src, size); break; - case GL_LUMINANCE: { + case GEM_GRAY: { // copy every second byte (Y-channel) for grayscale src = (uint8_t *)CVPixelBufferGetBaseAddressOfPlane(imageBuffer, 0); uint8_t *srcPos = (uint8_t *)src + 1; @@ -242,7 +242,7 @@ { double d; if(props.get("colorspace", d)) { - changeFormat((GLenum)d); + changeFormat((unsigned int)d); } } @@ -280,18 +280,18 @@ // PROTECTED -bool filmAVF::changeFormat(GLenum format) +bool filmAVF::changeFormat(unsigned int format) { bool changed = (m_wantedFormat != format); m_wantedFormat = format; if(m_moviePlayer) { switch(m_wantedFormat) { default: - case GL_YCBCR_422_APPLE: - case GL_LUMINANCE: + case GEM_YUV: + case GEM_GRAY: m_moviePlayer.desiredPixelFormat = kCVPixelFormatType_422YpCbCr8; break; - case GL_RGBA_GEM: + case GEM_RGBA: m_moviePlayer.desiredPixelFormat = kCVPixelFormatType_32ARGB; break; } diff -Nru gem-0.94~pre1/plugins/filmAVI/filmAVI.cpp gem-0.94/plugins/filmAVI/filmAVI.cpp --- gem-0.94~pre1/plugins/filmAVI/filmAVI.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmAVI/filmAVI.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -40,14 +40,14 @@ ///////////////////////////////////////////////////////// filmAVI :: filmAVI(void) : - m_wantedFormat(GL_RGBA), + m_wantedFormat(GEM_RGBA), m_fps(-1.0), m_numFrames(-1), m_curFrame(-1), m_nRawBuffSize(0), m_RawBuffer(NULL), - m_format(GL_BGR_EXT), + m_format(GEM_RGB), /* it's really GL_BGR_EXT */ m_reqFrame(0), m_frame(NULL), m_pbmihRaw(NULL), @@ -151,7 +151,7 @@ *m_pbmihDst = *m_pbmihRaw; m_pbmihDst->biSize = sizeof(BITMAPINFOHEADER); - m_format = GL_LUMINANCE; + m_format = GEM_GRAY; m_pbmihDst->biBitCount = 8; m_pbmihDst->biClrUsed = 256; @@ -167,7 +167,7 @@ m_pbmihDst = (BITMAPINFOHEADER*) new char[sizeof(BITMAPINFOHEADER)]; *m_pbmihDst = *m_pbmihRaw; - m_format = GL_BGR_EXT; + m_format = GEM_RGB; m_pbmihDst->biBitCount = 24; m_pbmihDst->biClrUsed = 0; @@ -193,7 +193,7 @@ filename.c_str()); goto unsupported; } - if (m_format==GL_LUMINANCE) { + if (m_format==GEM_GRAY) { if (ICERR_OK != ICDecompressSetPalette(m_hic, m_pbmihDst)) { verbose(0, "[GEM:filmAVI] Could not set palette: %s", filename.c_str()); } @@ -257,7 +257,7 @@ } switch(m_format) { - case GL_LUMINANCE: + case GEM_GRAY: m_image.image.fromGray(data); break; default: diff -Nru gem-0.94~pre1/plugins/filmAVI/filmAVI.h gem-0.94/plugins/filmAVI/filmAVI.h --- gem-0.94~pre1/plugins/filmAVI/filmAVI.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmAVI/filmAVI.h 2019-02-12 13:10:01.000000000 +0000 @@ -77,7 +77,7 @@ virtual void getProperties(gem::Properties&props); protected: - GLenum m_wantedFormat; // format requested by the user + unsigned int m_wantedFormat; // format requested by the user double m_fps; // the frame-rate int m_numFrames; // number of frames in video int m_curFrame; @@ -86,7 +86,7 @@ // the raw buffer for decoding... int m_nRawBuffSize; unsigned char* m_RawBuffer; - GLint m_format; + int m_format; int m_reqFrame; unsigned char* m_frame; /* this points to a buffer for decompression */ diff -Nru gem-0.94~pre1/plugins/filmAVIPLAY/filmAVIPLAY.cpp gem-0.94/plugins/filmAVIPLAY/filmAVIPLAY.cpp --- gem-0.94~pre1/plugins/filmAVIPLAY/filmAVIPLAY.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmAVIPLAY/filmAVIPLAY.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -39,7 +39,7 @@ ///////////////////////////////////////////////////////// filmAVIPLAY :: filmAVIPLAY(void) : - m_wantedFormat(GL_RGBA), + m_wantedFormat(GEM_RGBA), m_fps(-1.0), m_numFrames(-1), m_numTracks(-1), m_curFrame(-1), m_curTrack(-1), diff -Nru gem-0.94~pre1/plugins/filmAVIPLAY/filmAVIPLAY.h gem-0.94/plugins/filmAVIPLAY/filmAVIPLAY.h --- gem-0.94~pre1/plugins/filmAVIPLAY/filmAVIPLAY.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmAVIPLAY/filmAVIPLAY.h 2019-02-12 13:10:01.000000000 +0000 @@ -101,7 +101,7 @@ virtual void getProperties(gem::Properties&props); protected: - GLenum m_wantedFormat; // format requested by the user + unsigned int m_wantedFormat; // format requested by the user double m_fps; // the frame-rate int m_numFrames, m_numTracks; // number of frames in video int m_curFrame, m_curTrack; diff -Nru gem-0.94~pre1/plugins/filmDarwin/filmDarwin.cpp gem-0.94/plugins/filmDarwin/filmDarwin.cpp --- gem-0.94~pre1/plugins/filmDarwin/filmDarwin.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmDarwin/filmDarwin.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -23,9 +23,31 @@ #include "plugins/PluginFactory.h" #include "Gem/RTE.h" #include "Gem/Properties.h" +#include "Gem/Exception.h" using namespace gem::plugins; +static bool filmQT_initQT(void) +{ + // Initialize QuickTime Media Layer + OSErr err = noErr; + // Initialize QuickTime + if (err = EnterMovies()) { + verbose(0, "[GEM:filmQT]] Could not initialize quicktime: error %d\n", + err); + return false; + } + return true; +} +static bool filmQT_deinitQT(void) +{ + // Deinitialize QuickTime Media Layer + ExitMovies(); + + return true; +} + + REGISTER_FILMFACTORY("Darwin", filmDarwin); ///////////////////////////////////////////////////////// @@ -38,7 +60,7 @@ ///////////////////////////////////////////////////////// filmDarwin :: filmDarwin(void) : - m_wantedFormat(GL_YUV422_GEM), + m_wantedFormat(GEM_YUV), m_auto(false), m_numFrames(-1), m_numTracks(-1), m_curFrame(-1), m_lastFrame(-1), @@ -50,7 +72,11 @@ m_timeScale(0), m_durationf(0.), m_fps(1.) -{} +{ + if(!filmQT_initQT()) { + throw(GemException("unable to initialize QuickTime")); + } +} //////////////////////////////////////////////////////// // Destructor @@ -59,6 +85,7 @@ filmDarwin :: ~filmDarwin(void) { close(); + filmQT_deinitQT(); } void filmDarwin :: close(void) @@ -109,7 +136,7 @@ err = ::OpenMovieFile(&theFSSpec, &refnum, fsRdPerm); if (err) { verbose(0, "[GEM:filmDarwin] Couldn't open the movie file: %#s (%d)", - theFSSpec.name, err); + filename.c_str(), err); if (refnum) { ::CloseMovieFile(refnum); } @@ -127,7 +154,7 @@ } m_lastFrame=-1; m_numTracks = (int)GetMovieTrackCount(m_movie); - verbose(1, "[GEM:filmDarwin] m_numTracks = %d",(int)m_numTracks); + verbose(1, "[GEM:filmDarwin] %d tracks", (int)m_numTracks); // Get the length of the movie long movieDur, movieScale; @@ -135,7 +162,7 @@ movieScale = (long)GetMovieTimeScale(m_movie); verbose(1, - "[GEM:filmDarwin] Movie duration = %d timescale = %d timebase = %d", + "[GEM:filmDarwin] duration = %d timescale = %d timebase = %d", movieDur, movieScale, (long)GetMovieTimeBase(m_movie)); movieTrack = GetMovieIndTrackType(m_movie, @@ -154,7 +181,7 @@ m_fps=30.f; m_durationf=static_cast<double>(movieScale)/m_fps; } - verbose(1, "[GEM:filmDarwin] numFrames= %d...%f", (int)m_numFrames, + verbose(1, "[GEM:filmDarwin] %d frames @ %f", (int)m_numFrames, (float)m_durationf); // Get the bounds for the movie @@ -172,13 +199,13 @@ switch(m_wantedFormat) { case 0: // if no other format is requested, use YUV - case GL_YCBCR_422_APPLE: + case GEM_YUV: m_image.image.format = m_wantedFormat; hints |= hintsHighQuality | hintsDeinterlaceFields; pixelformat=k422YpCbCr8CodecType; break; default: - m_image.image.format = GL_BGRA_EXT; + m_image.image.format = GEM_RGBA; hints |= hintsHighQuality; pixelformat=k32ARGBPixelFormat; break; @@ -186,7 +213,7 @@ m_image.image.setCsizeByFormat(); m_image.image.data = new unsigned - char [m_image.image.xsize*m_image.image.ysize*m_image.image.csize]; + char [m_image.image.xsize*m_image.image.ysize*m_image.image.csize]; m_rowBytes = m_image.image.xsize * m_image.image.csize; SetMoviePlayHints(m_movie, hints, hints); err = QTNewGWorldFromPtr( &m_srcGWorld, diff -Nru gem-0.94~pre1/plugins/filmDarwin/filmDarwin.h gem-0.94/plugins/filmDarwin/filmDarwin.h --- gem-0.94~pre1/plugins/filmDarwin/filmDarwin.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmDarwin/filmDarwin.h 2019-02-12 13:10:01.000000000 +0000 @@ -87,7 +87,7 @@ virtual void getProperties(gem::Properties&props); protected: - GLenum m_wantedFormat; // format requested by the user + unsigned int m_wantedFormat; // format requested by the user bool m_auto; // automatic progression int m_numFrames, m_numTracks; // number of frames in video int m_curFrame, m_lastFrame; diff -Nru gem-0.94~pre1/plugins/filmDS/filmDS.cpp gem-0.94/plugins/filmDS/filmDS.cpp --- gem-0.94~pre1/plugins/filmDS/filmDS.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmDS/filmDS.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -6,9 +6,8 @@ // // Implementation file // -// Copyright (c) 2014 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// based on ofDirectShowPlayer -// Copyright (c) 2014 Theodore Watson +// Copyright © 2014-2019 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +// based on ofDirectShowPlayer, Copyright © 2014 Theodore Watson // For information on usage and redistribution, and for a DISCLAIMER OF ALL // WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. // @@ -22,12 +21,9 @@ #include "Gem/Properties.h" #include "Gem/RTE.h" #include "Utils/wstring.h" - -//------------------------------------------------------------------------- -//------------------------------------------------------------------------- -// DirectShow includes and helper methods -//------------------------------------------------------------------------- -//------------------------------------------------------------------------- +/* C++11 */ +#include <memory> +#include <functional> #if 0 # define MARK_HR(hr) if(hr)printf("%s:%d (%s)\t: 0x%X\n", __FILE__, __LINE__, __FUNCTION__, hr);else printf("%s:%d (%s)\n", __FILE__, __LINE__, __FUNCTION__) @@ -36,13 +32,22 @@ #endif #define MARK() MARK_HR(0) + +#define USE_CALLBACKS 1 +#define USE_AUTO 0 + +//------------------------------------------------------------------------- +//------------------------------------------------------------------------- +// DirectShow includes and helper methods +//------------------------------------------------------------------------- +//------------------------------------------------------------------------- + #include <dshow.h> #pragma include_alias( "dxtrans.h", "qedit.h" ) #define __IDxtCompositor_INTERFACE_DEFINED__ #define __IDxtAlphaSetter_INTERFACE_DEFINED__ #define __IDxtJpeg_INTERFACE_DEFINED__ #define __IDxtKey_INTERFACE_DEFINED__ -#include <uuids.h> #include <aviriff.h> #include <windows.h> @@ -182,6 +187,7 @@ } + // ConnectFilters // Connects two filters HRESULT ConnectFilters( @@ -232,10 +238,11 @@ } -HRESULT SaveGraphFile(IGraphBuilder *pGraph, const WCHAR*wszPath) +HRESULT SaveGraphFile(IGraphBuilder *pGraph, WCHAR *wszPath) { const WCHAR wszStreamName[] = L"ActiveMovieGraph"; - HRESULT hr=0; + HRESULT hr; + IStorage *pStorage = NULL; hr = StgCreateDocfile( wszPath, @@ -266,96 +273,47 @@ pStorage->Release(); return hr; } -HRESULT SaveGraphFile(IGraphBuilder *pGraph, std::string path) -{ - std::wstring filePathW = gem::string::utf8string_to_wstring(path); - const WCHAR*wszPath=filePathW.c_str(); - return SaveGraphFile(pGraph, wszPath); -} + //------------------------------------------------------------------------- //------------------------------------------------------------------------- -// DirectShowVideo - contains a simple directshow video player implementation +// DirectShowVideo - a simple directshow video player implementation //------------------------------------------------------------------------- //------------------------------------------------------------------------- -static int comRefCount = 0; +namespace +{ +int comRefCount = 0; -static void retainCom() +void retainCom() { if( comRefCount == 0 ) { - printf("COM is initialized!\n"); + //printf("com is initialized!\n"); CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); } comRefCount++; } -static void releaseCom() +void releaseCom() { comRefCount--; if( comRefCount == 0 ) { - printf("COM is uninitialized!\n"); + //printf("com is uninitialized!\n"); CoUninitialize(); } } -class gem::plugins::filmDS::DirectShowVideo : public ISampleGrabberCB +void releaseSample(IMediaSample * sample) { -public: - IGraphBuilder *m_pGraph; // Graph Builder interface - IMediaControl *m_pControl; // Media Control interface - IMediaSeeking *m_pSeek; // Media Seeking interface - IMediaPosition*m_pPosition; - ISampleGrabber*m_pGrabber; - IBaseFilter *m_pSourceFile; - IBaseFilter *m_pGrabberF; - IBasicVideo *m_pBasicVideo; - IBaseFilter *m_pNullRenderer; - - REFERENCE_TIME rtNew; // Reference time of movie - - long width, height; - long videoSize; - - double averageTimePerFrame; - - bool bVideoOpened; -#if 0 - bool bNewPixels; -#endif - LONGLONG m_Duration; - long m_numFrames; - - LONGLONG m_lastFrame; - LONGLONG m_wantFrame; + sample->Release(); +} +} - CRITICAL_SECTION critSection; - unsigned char * rawBuffer; - double m_auto; +class gem::plugins::filmDS::DirectShowVideo : public ISampleGrabberCB +{ +public: DirectShowVideo() - : m_pGraph(NULL) - , m_pControl(NULL) - , m_pSeek(NULL) - , m_pPosition(NULL) - , m_pGrabber(NULL) - , m_pSourceFile(NULL) - , m_pGrabberF(NULL) - , m_pBasicVideo(NULL) - , m_pNullRenderer(NULL) - , rtNew(0) - , width(0) - , height(0) - , videoSize(0) - , averageTimePerFrame(1.0/30.0) -#if 0 - , bNewPixels(false) - , bVideoOpened(false) -#endif - , m_lastFrame(-1) - , m_wantFrame(0) - , rawBuffer(NULL) - , m_auto(0.) { retainCom(); clearValues(); @@ -364,13 +322,12 @@ ~DirectShowVideo() { -MARK(); + stop(); tearDown(); -MARK(); + middleSample.reset(); + backSample.reset(); releaseCom(); -MARK(); DeleteCriticalSection(&critSection); -MARK(); } void tearDown() @@ -380,9 +337,15 @@ if(m_pControl) { m_pControl->Release(); } + if(m_pEvent) { + m_pEvent->Release(); + } if(m_pSeek) { m_pSeek->Release(); } + if(m_pAudio) { + m_pAudio->Release(); + } if(m_pBasicVideo) { m_pBasicVideo->Release(); } @@ -404,39 +367,46 @@ if( m_pPosition ) { m_pPosition->Release(); } - - if(rawBuffer) { - delete rawBuffer; - } clearValues(); } void clearValues() { + hr = 0; + m_pGraph = NULL; m_pControl = NULL; + m_pEvent = NULL; m_pSeek = NULL; + m_pAudio = NULL; m_pGrabber = NULL; m_pGrabberF = NULL; m_pBasicVideo = NULL; m_pNullRenderer = NULL; m_pSourceFile = NULL; m_pPosition = NULL; - m_lastFrame=-1; - m_wantFrame=0; - - rawBuffer = NULL; + timeNow = 0; + lPositionInSecs = 0; + lDurationInNanoSecs = 0; + lTotalDuration = 0; rtNew = 0; + lPosition = 0; + lvolume = -1000; + evCode = 0; width = height = 0; - videoSize = 0; - bVideoOpened = false; - // bNewPixels = false; + bLoop = false; + bPaused = false; + bPlaying = false; + bEndReached = false; + bNewPixels = false; + bFrameNew = false; + curMovieTime = -1.; + bNewlyOpened = false; + movieRate = 1.0; averageTimePerFrame = 1.0/30.0; - m_auto = 0.; - } //------------------------------------------------ @@ -461,7 +431,34 @@ //------------------------------------------------ STDMETHODIMP SampleCB(double Time, IMediaSample *pSample) { - return E_NOTIMPL; +MARK(); + BYTE * ptrBuffer = NULL; + HRESULT hr = pSample->GetPointer(&ptrBuffer); + + if(hr == S_OK) { + long latestBufferLength = pSample->GetActualDataLength(); + int currentBufferLength = pix.image.xsize * pix.image.ysize * pix.image.csize; + if(latestBufferLength == currentBufferLength ) { + EnterCriticalSection(&critSection); + pSample->AddRef(); + backSample = + std::unique_ptr<IMediaSample, std::function<void(IMediaSample*)>>(pSample, releaseSample); + bNewPixels = true; + + //this is just so we know if there is a new frame + if(Time != curMovieTime) + bFrameNew = true; + curMovieTime = Time; + + LeaveCriticalSection(&critSection); + } else { + error("[GEM:videoDS] SampleCB() - buffer sizes do not match %d != %d", + latestBufferLength, currentBufferLength); + } + } + +MARK(); + return S_OK; } //This method is meant to have more overhead @@ -470,522 +467,663 @@ return E_NOTIMPL; } - bool loadMovie(std::string path) + bool loadMovie(std::string path, int format) { tearDown(); + pixelFormat = format; // Create the Filter Graph Manager and query for interfaces. - HRESULT hr = CoCreateInstance(CLSID_FilterGraph, NULL, - CLSCTX_INPROC_SERVER, - IID_IGraphBuilder, (void **)&m_pGraph); - if (FAILED(hr) || !m_pGraph) { - verbose(1, "[GEM::filmDS] unable to create Filter Graph Manager: %d", hr); - tearDown(); - return false; - } - - // Use IGraphBuilder::QueryInterface (inherited from IUnknown) to get the IMediaControl interface. - hr = m_pGraph->QueryInterface(IID_IMediaControl, (void **)&m_pControl); - if (FAILED(hr) || !m_pControl) { - verbose(1, "[GEM::filmDS] could not get MediaControl interface: %d", hr); + //printf("step 1\n"); + hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, + IID_IGraphBuilder, (void **)&m_pGraph); + if (FAILED(hr)) { tearDown(); return false; } + //printf("step 2\n"); hr = m_pGraph->QueryInterface(IID_IMediaSeeking, (void**)&m_pSeek); - if (FAILED(hr) || !m_pSeek) { - verbose(1, "[GEM::filmDS] could not get MediaSeeking interface: %d", hr); + if (FAILED(hr)) { tearDown(); return false; } hr = m_pGraph->QueryInterface(IID_IMediaPosition, (LPVOID *)&m_pPosition); - if (FAILED(hr) || !m_pPosition) { - verbose(1, "[GEM::filmDS] could not get MediaPosition interface: %d", hr); - tearDown(); - return false; - } - - //SAMPLE GRABBER (ALLOWS US TO GRAB THE BUFFER)// - // Create the Sample Grabber. - hr = CoCreateInstance(CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER, - IID_IBaseFilter, (void**)&m_pGrabberF); if (FAILED(hr)) { - verbose(1, "[GEM::filmDS] could not create SampleGrabber: %d", hr); tearDown(); return false; } - - hr = m_pGraph->AddFilter(m_pGrabberF, L"Sample Grabber"); +#if 0 + hr = m_pGraph->QueryInterface(IID_IBasicAudio,(void**)&m_pAudio); if (FAILED(hr)) { - verbose(1, "[GEM::filmDS] could not add SampleGrabber filter: %d", hr); tearDown(); return false; } +#endif - hr = m_pGrabberF->QueryInterface(IID_ISampleGrabber, (void**)&m_pGrabber); + // Use IGraphBuilder::QueryInterface (inherited from IUnknown) to get the IMediaControl interface. + //printf("step 4\n"); + hr = m_pGraph->QueryInterface(IID_IMediaControl, (void **)&m_pControl); if (FAILED(hr)) { - verbose(1, "[GEM::filmDS] could not get SampleGrabber interface: %d", hr); tearDown(); return false; } - //MEDIA CONVERSION - //Get video properties from the stream's mediatype and apply to the grabber (otherwise we don't get an RGBA image) - AM_MEDIA_TYPE mt; - ZeroMemory(&mt,sizeof(AM_MEDIA_TYPE)); - - mt.majortype = MEDIATYPE_Video; - mt.subtype = MEDIASUBTYPE_RGB32; - mt.formattype = GUID_NULL;//FORMAT_VideoInfo; - - hr = m_pGrabber->SetMediaType(&mt); + // And get the Media Event interface, too. + //printf("step 5\n"); + hr = m_pGraph->QueryInterface(IID_IMediaEvent, (void **)&m_pEvent); if (FAILED(hr)) { - verbose(1, "[GEM::filmDS] could not set MediaType: %d", hr); tearDown(); return false; } - std::wstring filePathW = gem::string::utf8string_to_wstring(path); - - //this is the more manual way to do it - its a pain though because the audio won't be connected by default - hr = m_pGraph->AddSourceFilter(filePathW.c_str(), L"Source", - &m_pSourceFile); + //SAMPLE GRABBER (ALLOWS US TO GRAB THE BUFFER)// + // Create the Sample Grabber. + hr = CoCreateInstance(CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER, + IID_IBaseFilter, (void**)&m_pGrabberF); if (FAILED(hr)) { - verbose(1, "[GEM::filmDS] could not add Source Filter: %d", hr); tearDown(); return false; } - hr = ConnectFilters(m_pGraph, m_pSourceFile, m_pGrabberF); + hr = m_pGraph->AddFilter(m_pGrabberF, L"Sample Grabber"); if (FAILED(hr)) { -MARK_HR(hr); - verbose(1, - "[GEM::filmDS] unable to ConnectFilters(%p, %p, %p)", m_pGraph, m_pSourceFile, m_pGrabberF); tearDown(); return false; } - if(!SUCCEEDED(hr)) { // can this ever happen after we just checked for FAILED(hr)?? - verbose(1, "[GEM::filmDS] Error occured while playing or pausing or opening the file"); - tearDown(); - return false; - } - - //Set Params - One Shot should be false unless you want to capture just one buffer - hr = m_pGrabber->SetOneShot(FALSE); + hr = m_pGrabberF->QueryInterface(IID_ISampleGrabber, (void**)&m_pGrabber); if (FAILED(hr)) { - verbose(1, "[GEM::filmDS] unable to set one shot"); tearDown(); return false; } - hr = m_pGrabber->SetBufferSamples(TRUE); +#if USE_CALLBACKS + hr = m_pGrabber->SetCallback(this, 0); if (FAILED(hr)) { - verbose(1, "[GEM::filmDS] unable to set buffer samples"); tearDown(); return false; } +#endif + //MEDIA CONVERSION + //Get video properties from the stream's mediatype and apply to the grabber (otherwise we don't get an RGB image) + AM_MEDIA_TYPE mt; + ZeroMemory(&mt,sizeof(AM_MEDIA_TYPE)); - //NULL RENDERER// - //used to give the video stream somewhere to go to. - hr = CoCreateInstance(CLSID_NullRenderer, NULL, CLSCTX_INPROC_SERVER, - IID_IBaseFilter, (void**)(&m_pNullRenderer)); - if (FAILED(hr) || !m_pNullRenderer) { - verbose(1, "[GEM::filmDS] null renderer error"); - tearDown(); - return false; + mt.majortype = MEDIATYPE_Video; + switch (format) { + case GEM_RGB: + mt.subtype = MEDIASUBTYPE_RGB24; + break; + case GEM_RGBA: + mt.subtype = MEDIASUBTYPE_RGB32; + break; + default: + verbose(1, + "[GEM:videoDS] Trying to set unsupported format this is an internal bug, using default RGBA"); + mt.subtype = MEDIASUBTYPE_RGB32; } - hr = m_pGraph->AddFilter(m_pNullRenderer, L"Render"); + mt.formattype = FORMAT_VideoInfo; + //printf("step 5.5\n"); + hr = m_pGrabber->SetMediaType(&mt); if (FAILED(hr)) { - verbose(1, "[GEM::filmDS] unable to add null renderer"); tearDown(); return false; } - hr = ConnectFilters(m_pGraph, m_pGrabberF, m_pNullRenderer); - if (FAILED(hr)) { -MARK_HR(hr); - verbose(1, "[GEM::filmDS] unable to ConnectFilters(%s, %s, %s)", m_pGraph, m_pGrabberF, m_pNullRenderer); - tearDown(); - return false; - } + //printf("step 6\n"); + std::wstring filePathW = std::wstring(path.begin(), path.end()); - // Set the time format to frames - GUID Guid = TIME_FORMAT_FRAME; - bool bFrameTime = true; - hr = m_pSeek->SetTimeFormat(&Guid); + //this is the easier way to connect the graph, but we have to remove the video window manually + hr = m_pGraph->RenderFile(filePathW.c_str(), NULL); - if (FAILED(hr)) { - // If frame time format not available, default to 100 nanosecond increments. - bFrameTime = false; - Guid = TIME_FORMAT_MEDIA_TIME; + //printf("step 7\n"); + if (SUCCEEDED(hr)) { - hr = m_pSeek->SetTimeFormat(&Guid); + //Set Params - One Shot should be false unless you want to capture just one buffer + hr = m_pGrabber->SetOneShot(FALSE); + if (FAILED(hr)) { + verbose(1, "[GEM:videoDS] unable to set one shot"); + tearDown(); + return false; + } + //apparently setting to TRUE causes a small memory leak + hr = m_pGrabber->SetBufferSamples(FALSE); if (FAILED(hr)) { - verbose(1, "[GEM::filmDS] Unable to set video time format %d", hr); + verbose(1, "[GEM:videoDS] unable to set buffer samples"); tearDown(); return false; } - } - // Get the duration of the video. Format will be in previously set time format. This is - // compatible with the value returned from GetCurrentPosition - hr = m_pSeek->GetDuration(&m_Duration); - if (FAILED(hr)) { - verbose(1, "[GEM::filmDS] Unable to get video duration %d", hr); - tearDown(); - return false; - } - // Set the number of frames based on the time format used. - if (bFrameTime) { - m_numFrames = m_Duration; - } else { - LONGLONG OutFormat; - GUID OutGuid = TIME_FORMAT_FRAME; - Guid = TIME_FORMAT_MEDIA_TIME; - //converts from 100 nanosecond format to number of frames - m_pSeek->ConvertTimeFormat(&OutFormat, &OutGuid, m_Duration, &Guid); + //NULL RENDERER// + //used to give the video stream somewhere to go to. + hr = CoCreateInstance(CLSID_NullRenderer, NULL, CLSCTX_INPROC_SERVER, + IID_IBaseFilter, (void**)(&m_pNullRenderer)); + if (FAILED(hr)) { + verbose(1, "[GEM:videoDS] null renderer error"); + tearDown(); + return false; + } - m_numFrames = OutFormat; - } + hr = m_pGraph->AddFilter(m_pNullRenderer, L"Render"); + if (FAILED(hr)) { + verbose(1, "[GEM:videoDS] unable to add null renderer"); + tearDown(); + return false; + } - ZeroMemory(&mt,sizeof(AM_MEDIA_TYPE)); - m_pGrabber->GetConnectedMediaType(&mt); - if (FAILED(hr)) { - verbose(1, "[GEM::filmDS] unable to call GetConnectedMediaType %d", hr); - tearDown(); - return false; - } + AM_MEDIA_TYPE mt; + ZeroMemory(&mt,sizeof(AM_MEDIA_TYPE)); - if(FORMAT_VideoInfo != mt.formattype || !mt.pbFormat) { - verbose(1, "[GEM::filmDS] invalid media type"); - tearDown(); - return false; - } + hr = m_pGrabber->GetConnectedMediaType(&mt); + if (FAILED(hr)) { + verbose(1, "[GEM:videoDS] unable to call GetConnectedMediaType"); + tearDown(); + return false; + } - VIDEOINFOHEADER * infoheader = (VIDEOINFOHEADER*)mt.pbFormat; - width = infoheader->bmiHeader.biWidth; - height = infoheader->bmiHeader.biHeight; - averageTimePerFrame = infoheader->AvgTimePerFrame / 10000000.0; - - //verbose(1, "[GEM::filmDS] video dimensions are %dx%d", width, height); - if( width == 0 || height == 0 ) { - verbose(1, "[GEM::filmDS] illegal frame size %dx%d", width, height); - tearDown(); - return false; - } + VIDEOINFOHEADER * infoheader = (VIDEOINFOHEADER*)mt.pbFormat; + width = infoheader->bmiHeader.biWidth; + height = infoheader->bmiHeader.biHeight; + averageTimePerFrame = infoheader->AvgTimePerFrame / 10000000.0; + pix.image.xsize = width; + pix.image.ysize = height; + pix.image.setCsizeByFormat(pixelFormat); + pix.image.reallocate(); + + //we need to manually change the output from the renderer window to the null renderer + IBaseFilter * m_pVideoRenderer; + IPin* pinIn = 0; + IPin* pinOut = 0; - videoSize = width * height * 4; - rawBuffer = new unsigned char[videoSize]; - if(!rawBuffer) { - verbose(1, "[GEM::filmDS] unable to allocate memory for video buffer"); - tearDown(); - return false; - } - //FreeMediaType(mt); // FIXXME + hr = m_pGraph->FindFilterByName(L"Video Renderer", &m_pVideoRenderer); + if (FAILED(hr)) { + verbose(1, "[GEM:videoDS] failed to find the video renderer"); + tearDown(); + return false; + } - // FIXXME: original code now does some special tricks for DV video + //we disconnect the video renderer window by finding the output pin of the sample grabber + hr = m_pGrabberF->FindPin(L"Out", &pinOut); + if (FAILED(hr)) { + verbose(1, "[GEM:videoDS] failed to find the sample grabber output pin"); + tearDown(); + return false; + } - // Run the graph. + hr = pinOut->Disconnect(); + if (FAILED(hr)) { + verbose(1, "[GEM:videoDS] failed to disconnect grabber output pin"); + tearDown(); + return false; + } - hr = m_pControl->Run(); - if( FAILED(hr) ) { - verbose(1, "[GEM::filmDS] unable to start film", hr); - tearDown(); - return false; - } + //we have to remove it as well otherwise the graph builder will reconnect it + hr = m_pGraph->RemoveFilter(m_pVideoRenderer); + if (FAILED(hr)) { + verbose(1, "[GEM:videoDS] failed to remove the default renderer"); + tearDown(); + return false; + } else { + m_pVideoRenderer->Release(); + } - // Wait for the video to begin playing. - while(true) { - OAFilterState FilterState; - - // Get the state and ensure it's not in an intermediate state - hr = m_pControl->GetState(0, &FilterState); - if (FAILED(hr) && hr != VFW_S_STATE_INTERMEDIATE) { - verbose(1, "[GEM::filmDS] Unable to run film %d", hr); + //now connect the null renderer to the grabber output, if we don't do this not frames will be captured + hr = m_pNullRenderer->FindPin(L"In", &pinIn); + if (FAILED(hr)) { + verbose(1, + "[GEM:videoDS] failed to find the input pin of the null renderer"); tearDown(); return false; } - // Ensure the video is running - if (SUCCEEDED(hr) && State_Running == FilterState) { - break; + hr = pinOut->Connect(pinIn, NULL); + if (FAILED(hr)) { + verbose(1, "[GEM:videoDS] failed to connect the null renderer"); + tearDown(); + return false; } - } - // FIXXME: shall we register the filtergraph? + //printf("step 8\n"); + + + // Run the graph. + + //SaveGraphFile(m_pGraph, L"test2.grf"); + hr = m_pControl->Run(); + //SaveGraphFile(m_pGraph, L"test3.grf"); + + // Now pause the graph. + hr = m_pControl->Stop(); + updatePlayState(); + + if( FAILED(hr) || width == 0 || height == 0 ) { + tearDown(); + verbose(1, + "[GEM:videoDS] Error occured while playing or pausing or opening the file"); + return false; + } + } else { + tearDown(); + verbose(1, + "[GEM:videoDS] Error occured while playing or pausing or opening the file"); + return false; + } bVideoOpened = true; - m_lastFrame=-1; - m_wantFrame=0; + bNewlyOpened = true; return true; } - void processPixels(unsigned char * src, unsigned char * dst, int width, - int height, bool bRGB, bool bFlip) + void update() { -MARK(); - int widthInBytes = width * 4; - int numBytes = widthInBytes * height; - - if(!bRGB) { - - int x = 0; - int y = 0; + if( bVideoOpened ) { + long eventCode = 0; +#ifdef _WIN64 + long long ptrParam1 = 0; + long long ptrParam2 = 0; +#else + long ptrParam1 = 0; + long ptrParam2 = 0; +#endif - if(bFlip) { - for(int y = 0; y < height; y++) { - memcpy(dst + (y * widthInBytes), src + ( (height -y -1) * widthInBytes), - widthInBytes); + while (S_OK == m_pEvent->GetEvent(&eventCode, &ptrParam1, &ptrParam2, 0)) { + if (eventCode == EC_COMPLETE ) { + if(bLoop) { + //printf("Restarting!\n"); + setPosition(0.0); + } else { + bEndReached = true; + //printf("movie end reached!\n"); + stop(); + updatePlayState(); + } } - - } else { - memcpy(dst, src, numBytes); + //printf("Event code: %#04x\n Params: %d, %d\n", eventCode, ptrParam1, ptrParam2); + m_pEvent->FreeEventParams(eventCode, ptrParam1, ptrParam2); } - } else { - if(bFlip) { + } + } - int x = 0; - int y = (height - 1) * widthInBytes; - src += y; - - for(int i = 0; i < numBytes; i+=4) { - if(x >= width) { - x = 0; - src -= widthInBytes*2; - } + bool isLoaded() + { + return bVideoOpened; + } +#if 0 + //volume has to be log corrected/converted + void setVolume(float volPct) + { + if( isLoaded() ) { + if( volPct < 0 ) { + volPct = 0.0; + } + if( volPct > 1 ) { + volPct = 1.0; + } - *dst = *(src+2); - dst++; + long vol = log10(volPct) * 4000.0; + if(vol < -8000) { + vol = -10000; + } + m_pAudio->put_Volume(vol); + } + } - *dst = *(src+1); - dst++; + float getVolume() + { + float volPct = 0.0; + if( isLoaded() ) { + long vol = 0; + m_pAudio->get_Volume(&vol); + volPct = powf(10, (float)vol/4000.0); + } + return volPct; + } +#endif + double getDurationInSeconds() + { + if( isLoaded() ) { + long long lDurationInNanoSecs = 0; + m_pSeek->GetDuration(&lDurationInNanoSecs); + double timeInSeconds = (double)lDurationInNanoSecs/10000000.0; - *dst = *src; - dst++; + return timeInSeconds; + } + return 0.0; + } - *dst = *(src+3); - dst++; + double getCurrentTimeInSeconds() + { + if( isLoaded() ) { + long long lCurrentTimeInNanoSecs = 0; + m_pSeek->GetCurrentPosition(&lCurrentTimeInNanoSecs); + double timeInSeconds = (double)lCurrentTimeInNanoSecs/10000000.0; - src+=4; - x++; - } - } else { - for(int i = 0; i < numBytes; i+=4) { - *dst = *(src+2); - dst++; + return timeInSeconds; + } + return 0.0; + } - *dst = *(src+1); - dst++; + void setPosition(float pct) + { + if( bVideoOpened ) { + if( pct < 0.0 ) { + pct = 0.0; + } + if( pct > 1.0 ) { + pct = 1.0; + } - *dst = *src; - dst++; + long long lDurationInNanoSecs = 0; + m_pSeek->GetDuration(&lDurationInNanoSecs); - *dst = *(src+3); - dst++; + rtNew = ((float)lDurationInNanoSecs * pct); + hr = m_pSeek->SetPositions(&rtNew, AM_SEEKING_AbsolutePositioning,NULL, + AM_SEEKING_NoPositioning); + } + } - src+=4; - } + float getPosition() + { + if( bVideoOpened ) { + float timeDur = getDurationInSeconds(); + if( timeDur > 0.0 ) { + return getCurrentTimeInSeconds() / timeDur; } } + return 0.0; } - double getFramesPerSecond(void) + void setSpeed(float speed) { -MARK(); - return 1. / averageTimePerFrame; + if( bVideoOpened ) { + m_pPosition->put_Rate(speed); + m_pPosition->get_Rate(&movieRate); + } } - //this is the non-callback approach - bool getPixels(unsigned char * dstBuffer) + double getSpeed() { -MARK(); - if(!bVideoOpened) { - return false; - } + return movieRate; + } - long bufferSize = videoSize; - HRESULT hr = m_pGrabber->GetCurrentBuffer(&bufferSize, (long *)rawBuffer); + void play() + { + if( bVideoOpened ) { + m_pControl->Run(); + bEndReached = false; + updatePlayState(); + } + } - if(FAILED(hr)) { - verbose(1, "[GEM::filmDS] ERROR: GetPixels() - Unable to get pixels for device bufferSize = %i", - bufferSize); - return false; + void stop() + { + if( bVideoOpened ) { + if( isPlaying() ) { + setPosition(0.0); + } + m_pControl->Stop(); + updatePlayState(); } + } - if (videoSize != bufferSize) { - verbose(1, "[GEM::filmDS] ERROR: GetPixels() - bufferSizes do not match!"); - return false; + void setPaused(bool bPaused) + { + if( bVideoOpened ) { + if( bPaused ) { + m_pControl->Pause(); + } else { + m_pControl->Run(); + } + updatePlayState(); } - processPixels(rawBuffer, dstBuffer, width, height, true, true); - return true; } - bool getFrame(pixBlock&pb) + + void updatePlayState() { -MARK(); - if(!bVideoOpened) { - return false; + if( bVideoOpened ) { + FILTER_STATE fs; + hr = m_pControl->GetState(4000, (OAFilterState*)&fs); + if(hr==S_OK) { + if( fs == State_Running ) { + bPlaying = true; + bPaused = false; + } else if( fs == State_Paused ) { + bPlaying = false; + bPaused = true; + } else if( fs == State_Stopped ) { + bPlaying = false; + bPaused = false; + } + } } + } - long frameSize = width*height*4; - HRESULT hr; - OAFilterState State; -MARK(); - hr=m_pControl->GetState(0, &State); - if(m_auto > 0.f) { -MARK(); - if(m_wantFrame >= m_numFrames) { - return false; - } - //if the video is paused then start it running again - if (State != State_Running) { - hr = m_pControl->Run(); - hr = m_pControl->GetState(0, &State); - } - - //set the rate of the clip - hr = m_pSeek->SetRate(m_auto); - - if (State == State_Running) { - // Get the current position of the video - LONGLONG CurrentPosition; - hr = m_pSeek->GetCurrentPosition(&CurrentPosition); - if (S_OK == hr) { - // If the current position is >= the duration, reset the position to the - // beginning - if (CurrentPosition >= m_numFrames) { -#if 0 - LONGLONG Current = 0; - // Set the start position to 0, do not change the end position. - hr = m_pSeek->SetPositions( - &Current, AM_SEEKING_AbsolutePositioning | AM_SEEKING_NoFlush, - NULL, AM_SEEKING_NoPositioning); - pb.newimage = true; -#else - hr = m_pControl->Pause(); - return false; -#endif - } - // Indicate the the image has changed. - else if (CurrentPosition != m_lastFrame) { - pb.newimage = true; - } + bool isPlaying() + { + return bPlaying; + } + + bool isPaused() + { + return bPaused; + } + + bool isLooping() + { + return bLoop; + } + + void setLoop(bool loop) + { + bLoop = loop; + } + + bool isMovieDone() + { + return bEndReached; + } + + int getWidth() + { + return width; + } + + int getHeight() + { + return height; + } + + bool isFrameNew() + { + return bFrameNew; + } + + void nextFrame() + { + //we have to do it like this as the frame based approach is not very accurate + if( bVideoOpened && ( isPlaying() || isPaused() ) ) { + int curFrame = getCurrentFrameNo(); + float curFrameF = curFrame; + for(int i = 1; i < 20; i++) { + setApproximateFrameF( curFrameF + 0.3 * (float)i ); + if( getCurrentFrameNo() >= curFrame + 1 ) { + break; } + } + } + } - // If the video image has changed, copy it to the pixBlock buffer. - if (pb.newimage) { - hr = m_pGrabber->GetCurrentBuffer(&frameSize, (long *)rawBuffer); - if(FAILED(hr)) { -MARK_HR(hr); - verbose(1, "[GEM::filmDS] GetCurrentBuffer(auto) failed: state=%d", State); - pb.image.data = NULL; // FIXXME -MARK(); - return false; - } else { - //pb.image.data = rawBuffer; - processPixels(rawBuffer, pb.image.data, width, height, true, true); - } + void preFrame() + { + //we have to do it like this as the frame based approach is not very accurate + if( bVideoOpened && ( isPlaying() || isPaused() ) ) { + int curFrame = getCurrentFrameNo(); + float curFrameF = curFrame; + for(int i = 1; i < 20; i++) { + setApproximateFrameF( curFrameF - 0.3 * (float)i ); + if( getCurrentFrameNo() <= curFrame + 1 ) { + break; } } - } else { // non-auto mode -MARK(); - if(m_wantFrame >= m_numFrames) { - return false; + } + } + + void setApproximateFrameF(float frameF) + { + if( bVideoOpened ) { + float pct = frameF / (float)getApproximateNoFrames(); + if( pct > 1.0 ) { + pct = 1.0; } -#if 0 - if (State == State_Running) { - hr = m_pControl->Pause(); + if( pct < 0.0 ) { + pct = 0.0; } -#endif - - LONGLONG frameSeek; - //check if the playback is 'Paused' and don't keep asking for the same frame - frameSeek = 0; - hr = m_pSeek->GetCurrentPosition(&frameSeek); - verbose(2, "[GEM::filmDS] playing current=%d\twant=%d\tlast=%d", - (int)frameSeek, (int)m_wantFrame, (int)m_lastFrame); - - if (m_wantFrame == m_lastFrame) { - //post("skipping same frame: %d == %d", m_wantFrame, frameSeek); - pb.newimage = false; - return true; - } - - frameSeek = (LONGLONG) m_wantFrame; - hr = m_pSeek->SetPositions( - &frameSeek, AM_SEEKING_AbsolutePositioning, - NULL, AM_SEEKING_NoPositioning); + setPosition(pct); + } + } - if (FAILED(hr)) { -MARK_HR(hr); - verbose(1, "[GEM::filmDS] SetPositions failed"); + void setApproximateFrame(int frame) + { + if( bVideoOpened ) { + float pct = (float)frame / (float)getApproximateNoFrames(); + if( pct > 1.0 ) { + pct = 1.0; } + if( pct < 0.0 ) { + pct = 0.0; + } + setPosition(pct); + } + } - // trigger the actual seek: - m_pControl->Pause(); - -MARK(); - hr = m_pGrabber->GetCurrentBuffer(&frameSize, (long *)rawBuffer); - - if (FAILED(hr)) { -MARK_HR(hr); - pb.image.data = NULL; // FIXXME - verbose(1, "[GEM::filmDS] GetCurrentBuffer failed: state=%d", State); - return false; - } else { - //pb.image.data = rawBuffer; - processPixels(rawBuffer, pb.image.data, width, height, true, true); + int getCurrentFrameNo() + { + if( bVideoOpened ) { + return getPosition() * (float) getApproximateNoFrames(); + } + return 0; + } - pb.newimage = true; - //pb.image.fromBGR(m_frame); - //m_lastFrame = m_wantFrame; - m_lastFrame = frameSeek; - } + int getApproximateNoFrames() + { + if( bVideoOpened && averageTimePerFrame > 0.0 ) { + return getDurationInSeconds() / averageTimePerFrame; } - return true; + return 0; } - void setSpeed(double speed) + double getAverageTimePerFrame() { - m_auto=speed; + return averageTimePerFrame; } - bool seekFrame(int frame) + + + +#ifdef USE_CALLBACKS + pixBlock*getPixels(void) { - m_wantFrame=frame; - if(frame>=m_numFrames || frame<0) { - return false; + if(!bVideoOpened) + return 0; + pix.newfilm = bNewlyOpened; + bNewlyOpened = false; + if(pix.image.xsize != getWidth() || pix.image.ysize != getHeight()) { + pix.image.xsize = getWidth(); + pix.image.ysize = getHeight(); + pix.image.setCsizeByFormat(GEM_RGBA); + pix.image.reallocate(); + pix.newfilm = true; + } + if(bFrameNew) { + pix.newimage = true; + EnterCriticalSection(&critSection); + std::swap(backSample, middleSample); + bNewPixels = false; + bFrameNew = false; + LeaveCriticalSection(&critSection); + BYTE * ptrBuffer = NULL; + HRESULT hr = middleSample->GetPointer(&ptrBuffer); + switch (pixelFormat) { + case GEM_RGB: + pix.image.fromBGR(ptrBuffer); + break; + case GEM_RGBA: + pix.image.fromBGRA(ptrBuffer); + break; + } + pix.image.upsidedown = false; + pix.image.fixUpDown(); } - if(m_pSeek) { - LONGLONG frameSeek = 0; - HRESULT hr = 0; - hr = m_pSeek->GetCurrentPosition(&frameSeek); - verbose(2, "[GEM::filmDS] seeking current=%d\twant=%d\tlast=%d", - (int)frameSeek, (int)m_wantFrame, (int)m_lastFrame); - - frameSeek = (LONGLONG)m_wantFrame; - hr = m_pSeek->SetPositions( - &frameSeek, AM_SEEKING_AbsolutePositioning, - NULL, AM_SEEKING_NoPositioning); - m_pControl->Pause(); - if (FAILED(hr)) - return false; - else - return true; + return &pix; + } + +#else + //this is the non-callback approach + bool getPixels(imageStruct&img){ + if(!bVideoOpened) + return false; + if(isFrameNew()){ + long bufferSize = img.xsize * img.ysize * img.csize; + post("fetching %d bytes into %p", bufferSize, img.data); + HRESULT hr = m_pGrabber->GetCurrentBuffer(&bufferSize, (long *)img.data); + return (S_OK==hr); } return true; } - bool isLoaded(void) - { - return bVideoOpened; - } -}; +#endif + +protected: + + HRESULT hr; // COM return value + IGraphBuilder *m_pGraph; // Graph Builder interface + IMediaControl *m_pControl; // Media Control interface + IMediaEvent *m_pEvent; // Media Event interface + IMediaSeeking *m_pSeek; // Media Seeking interface + IMediaPosition * m_pPosition; + IBasicAudio *m_pAudio; // Audio Settings interface + ISampleGrabber * m_pGrabber; + IBaseFilter * m_pSourceFile; + IBaseFilter * m_pGrabberF; + IBasicVideo * m_pBasicVideo; + IBaseFilter * m_pNullRenderer; + + REFERENCE_TIME + timeNow; // Used for FF & REW of movie, current time + LONGLONG lPositionInSecs; // Time in seconds + LONGLONG lDurationInNanoSecs; // Duration in nanoseconds + LONGLONG lTotalDuration; // Total duration + REFERENCE_TIME rtNew; // Reference time of movie + long lPosition; // Desired position of movie used in FF & REW + long lvolume; // The volume level in 1/100ths dB Valid values range from -10,000 (silence) to 0 (full volume), 0 = 0 dB -10000 = -100 dB + long evCode; // event variable, used to in file to complete wait. + + long width, height; + + double averageTimePerFrame; + bool bFrameNew; + bool bNewPixels; + bool bVideoOpened; + bool bPlaying; + bool bPaused; + bool bLoop; + bool bEndReached; + double movieRate; + double curMovieTime; + bool bNewlyOpened; + CRITICAL_SECTION critSection; + std::unique_ptr<IMediaSample, std::function<void(IMediaSample*)>> + backSample; + std::unique_ptr<IMediaSample, std::function<void(IMediaSample*)>> + middleSample; + pixBlock pix; + int pixelFormat; +}; //------------------------------------------------------------------------- @@ -1008,19 +1146,24 @@ bool filmDS::open(const std::string&path, const gem::Properties&props) { -MARK(); close(); -MARK(); player = new DirectShowVideo(); -MARK(); - bool res=player->loadMovie(path); -MARK_HR(res); + bool res=player->loadMovie(path, GEM_RGBA); if(res) { - player->seekFrame(0); + player->setPosition(0); +#if USE_AUTO double d=0.; if(props.get("auto", d)) { + } + if(d>-1e-8 && d<1e-8) + player->setPaused(true); + else { player->setSpeed(d); + player->play(); } +#else + player->setPaused(true); +#endif } else { close(); } @@ -1030,9 +1173,7 @@ void filmDS::close() { -MARK(); if( player ) { -MARK(); delete player; player = NULL; } @@ -1040,58 +1181,25 @@ pixBlock*filmDS::getFrame(void) { -MARK(); - if(!player) { + if(!(player && player->isLoaded())) { return 0; } -MARK(); -#if 0 - //printf("getting frame...%p\n", player); - if(!player || !player->isLoaded()) { - return NULL; - } - + player->update(); if(player->isMovieDone()) { - return NULL; - } -#endif - m_image.newfilm=false; - m_image.newimage=false; - - int w=player->width; - int h=player->height; - if(w!=m_image.image.xsize || h!=m_image.image.ysize) { - m_image.image.xsize=w; - m_image.image.ysize=h; - m_image.image.setCsizeByFormat(GL_RGBA); - m_image.image.reallocate(); - - m_image.newfilm=true; - //printf("getting new film\n"); - } -MARK(); - bool res=player->getFrame(m_image); -MARK_HR(res); - if(res) { - return &m_image; + return 0; } - return 0; + return player->getPixels(); } film::errCode filmDS::changeImage(int imgNum, int trackNum) { -MARK(); - //post("changeImage(%d,%d)", imgNum, trackNum); - if(!player) { + if(!(player && player->isLoaded())) { return film::FAILURE; } -MARK(); - if(player->seekFrame(imgNum)) { -MARK(); - return film::SUCCESS; - } -MARK(); - return film::FAILURE; + + player->setApproximateFrame(imgNum); + player->update(); + return film::DONTKNOW; } // Property handling bool filmDS::enumProperties(gem::Properties&readable, @@ -1107,17 +1215,26 @@ readable.set("width", value); readable.set("height", value); +#if USE_AUTO writeable.set("auto", value); +#endif return true; } void filmDS::setProperties(gem::Properties&props) { +#if USE_AUTO double d; if(props.get("auto", d)) { if(player) { - player->setSpeed(d); + if(d>-1e-8 && d<1e-8) + player->setPaused(true); + else { + player->setSpeed(d); + player->play(); + } } } +#endif } void filmDS::getProperties(gem::Properties&props) { @@ -1130,22 +1247,22 @@ std::string key=keys[i]; props.erase(key); if("fps"==key) { - d=player->getFramesPerSecond(); + d=1./player->getAverageTimePerFrame(); value=d; props.set(key, value); } if("frames"==key) { - d=player->m_numFrames; + d=player->getApproximateNoFrames(); value=(int)(d+0.5); props.set(key, value); } if("width"==key) { - d=player->width; + d=player->getWidth(); value=d; props.set(key, value); } if("height"==key) { - d=player->height; + d=player->getHeight(); value=d; props.set(key, value); } diff -Nru gem-0.94~pre1/plugins/filmDS/filmDS.h gem-0.94/plugins/filmDS/filmDS.h --- gem-0.94~pre1/plugins/filmDS/filmDS.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmDS/filmDS.h 2019-02-12 13:10:01.000000000 +0000 @@ -80,9 +80,6 @@ protected: class DirectShowVideo; DirectShowVideo * player; - pixBlock m_image; // output image - - int m_reqFrame; }; }; }; diff -Nru gem-0.94~pre1/plugins/filmDSATL/filmDS.cpp gem-0.94/plugins/filmDSATL/filmDS.cpp --- gem-0.94~pre1/plugins/filmDSATL/filmDS.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmDSATL/filmDS.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -43,6 +43,7 @@ #include "Gem/RTE.h" #include "Gem/Properties.h" #include "Gem/Exception.h" +#include "Gem/GemGL.h" using namespace gem::plugins; diff -Nru gem-0.94~pre1/plugins/filmGMERLIN/filmGMERLIN.cpp gem-0.94/plugins/filmGMERLIN/filmGMERLIN.cpp --- gem-0.94~pre1/plugins/filmGMERLIN/filmGMERLIN.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmGMERLIN/filmGMERLIN.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -262,9 +262,9 @@ m_image.image.xsize=gformat->frame_width; m_image.image.ysize=gformat->frame_height; #ifdef __APPLE__ - m_image.image.setCsizeByFormat(GL_YUV422_GEM); + m_image.image.setCsizeByFormat(GEM_YUV); #else - m_image.image.setCsizeByFormat(GL_RGBA); + m_image.image.setCsizeByFormat(GEM_RGBA); #endif m_image.image.notowned=true; m_image.image.upsidedown=true; diff -Nru gem-0.94~pre1/plugins/filmMPEG1/filmMPEG1.cpp gem-0.94/plugins/filmMPEG1/filmMPEG1.cpp --- gem-0.94~pre1/plugins/filmMPEG1/filmMPEG1.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmMPEG1/filmMPEG1.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -37,7 +37,7 @@ ///////////////////////////////////////////////////////// filmMPEG1 :: filmMPEG1(void) : - m_wantedFormat(GL_RGBA), + m_wantedFormat(GEM_RGBA), m_fps(-1.0), m_curFrame(-1), m_newfilm(false), @@ -79,15 +79,15 @@ if (!(m_streamfile = fopen (filename.c_str(), "rb"))) { return false; } - int wantedFormat= (m_wantedFormat)?m_wantedFormat:GL_RGBA; + int wantedFormat= (m_wantedFormat)?m_wantedFormat:GEM_RGBA; switch (wantedFormat) { - case GL_LUMINANCE: + case GEM_GRAY: SetMPEGOption (MPEG_DITHER, GRAY_DITHER); break; default: - wantedFormat=GL_RGBA; - case GL_YCBCR_422_GEM: - case GL_RGBA: + wantedFormat=GEM_RGBA; + case GEM_YUV: + case GEM_RGBA: SetMPEGOption (MPEG_DITHER, FULL_COLOR_DITHER); } if (OpenMPEG (m_streamfile, &m_streamVid)) { /* let's hope it's MPEG */ @@ -106,7 +106,7 @@ m_image.image.reallocate(); int length=m_image.image.xsize*m_image.image.ysize; - length*=((m_image.image.format==GL_LUMINANCE)?1:4)+4; + length*=((m_image.image.format==GEM_GRAY)?1:4)+4; if(m_length<length) { if (m_data) { delete[]m_data; @@ -141,7 +141,7 @@ m_readNext = false; int length=m_image.image.xsize*m_image.image.ysize; - length*=((m_image.image.format==GL_LUMINANCE)?1:4)+4; + length*=((m_image.image.format==GEM_GRAY)?1:4)+4; if(m_length<length) { if (m_data) { delete[]m_data; @@ -150,7 +150,7 @@ m_data=new unsigned char[m_length]; } if (m_reachedEnd=!GetMPEGFrame ((char*)(m_data))) { - if(m_image.image.format==GL_YCBCR_422_GEM) { + if(m_image.image.format==GEM_YUV) { m_image.image.fromRGBA(m_data); } else { m_image.image.data=m_data; @@ -158,7 +158,7 @@ m_curFrame=-1; return &m_image;// was 0; but then we have one non-textured frame in auto-mode } else { - if(m_image.image.format==GL_YCBCR_422_GEM) { + if(m_image.image.format==GEM_YUV) { m_image.image.fromRGBA(m_data); } else { m_image.image.data=m_data; @@ -213,7 +213,7 @@ { double d; if(props.get("colorspace", d)) { - m_wantedFormat=(GLenum)d; + m_wantedFormat=(unsigned int)d; } } diff -Nru gem-0.94~pre1/plugins/filmMPEG1/filmMPEG1.h gem-0.94/plugins/filmMPEG1/filmMPEG1.h --- gem-0.94~pre1/plugins/filmMPEG1/filmMPEG1.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmMPEG1/filmMPEG1.h 2019-02-12 13:10:01.000000000 +0000 @@ -81,7 +81,7 @@ // GROUP: Movie data //----------------------------------- protected: - GLenum m_wantedFormat; // format requested by the user + unsigned int m_wantedFormat; // format requested by the user double m_fps; // the frame-rate int m_curFrame; pixBlock m_image; // output image diff -Nru gem-0.94~pre1/plugins/filmMPEG3/filmMPEG3.cpp gem-0.94/plugins/filmMPEG3/filmMPEG3.cpp --- gem-0.94~pre1/plugins/filmMPEG3/filmMPEG3.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmMPEG3/filmMPEG3.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -45,7 +45,7 @@ ///////////////////////////////////////////////////////// filmMPEG3 :: filmMPEG3(void) : - m_wantedFormat(GL_RGBA), + m_wantedFormat(GEM_RGBA), m_fps(-1.0), m_numFrames(-1), m_numTracks(-1), m_curFrame(-1), m_curTrack(-1), @@ -148,7 +148,7 @@ int datasize=m_image.image.xsize*m_image.image.ysize*m_image.image.csize; m_image.image.reallocate(datasize+4); - if(m_wantedFormat==GL_RGBA) { + if(m_wantedFormat==GEM_RGBA) { // the mpeg3-YUV2RGB decoder works better than ours unsigned char **rows = new unsigned char* [m_image.image.ysize]; unsigned char **dummy=rows; diff -Nru gem-0.94~pre1/plugins/filmMPEG3/filmMPEG3.h gem-0.94/plugins/filmMPEG3/filmMPEG3.h --- gem-0.94~pre1/plugins/filmMPEG3/filmMPEG3.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmMPEG3/filmMPEG3.h 2019-02-12 13:10:01.000000000 +0000 @@ -83,7 +83,7 @@ // GROUP: Movie data //----------------------------------- protected: - GLenum m_wantedFormat; // format requested by the user + unsigned int m_wantedFormat; // format requested by the user double m_fps; // the frame-rate int m_numFrames, m_numTracks; // number of frames in video int m_curFrame, m_curTrack; diff -Nru gem-0.94~pre1/plugins/filmQT/filmQT.cpp gem-0.94/plugins/filmQT/filmQT.cpp --- gem-0.94~pre1/plugins/filmQT/filmQT.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmQT/filmQT.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -22,6 +22,7 @@ #include "Gem/Properties.h" #include "Gem/RTE.h" #include "Gem/Exception.h" +#include "Gem/GemGL.h" #include "Utils/wstring.h" using namespace gem::plugins; @@ -32,10 +33,21 @@ static bool filmQT_initQT(void) { + // Initialize QuickTime Media Layer + OSErr err = noErr; + // Initialize QuickTime + if (err = EnterMovies()) { + verbose(0, "[GEM:filmQT]] Could not initialize quicktime: error %d\n", + err); + return false; + } return true; } static bool filmQT_deinitQT(void) { + // Deinitialize QuickTime Media Layer + ExitMovies(); + return true; } diff -Nru gem-0.94~pre1/plugins/filmQT/filmQT.h gem-0.94/plugins/filmQT/filmQT.h --- gem-0.94~pre1/plugins/filmQT/filmQT.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmQT/filmQT.h 2019-02-12 13:10:01.000000000 +0000 @@ -89,7 +89,7 @@ virtual void getProperties(gem::Properties&props); protected: - GLenum m_wantedFormat; // the requested pixel format (in GL) + unsigned int m_wantedFormat; // the requested pixel format (in GL) double m_fps; // the frame-rate int m_numFrames, m_numTracks; // number of frames in video int m_curFrame, m_curTrack; diff -Nru gem-0.94~pre1/plugins/filmQT4L/filmQT4L.cpp gem-0.94/plugins/filmQT4L/filmQT4L.cpp --- gem-0.94~pre1/plugins/filmQT4L/filmQT4L.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmQT4L/filmQT4L.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -40,7 +40,7 @@ ///////////////////////////////////////////////////////// filmQT4L :: filmQT4L(void) : - m_wantedFormat(GL_RGBA), + m_wantedFormat(GEM_RGBA), m_fps(-1.0), m_numFrames(-1), m_numTracks(-1), m_curFrame(-1), m_curTrack(0), @@ -75,7 +75,7 @@ bool filmQT4L :: open(const std::string&filename, const gem::Properties&wantProps) { - int wantedFormat=GL_RGBA; + int wantedFormat=GEM_RGBA; double d; unsigned int format=0; if(wantProps.get("format", d)) { @@ -84,9 +84,9 @@ switch(format) { default: break; - case GL_RGBA: - case GL_YCBCR_422_GEM: - case GL_LUMINANCE: + case GEM_RGBA: + case GEM_YUV: + case GEM_GRAY: m_wantedFormat=format; break; } @@ -120,11 +120,7 @@ m_qtimage.xsize=m_image.image.xsize; m_qtimage.ysize=m_image.image.ysize; -#ifdef __APPLE__ - m_qtimage.setCsizeByFormat(GL_BGR); -#else - m_qtimage.setCsizeByFormat(GL_RGB); -#endif + m_qtimage.setCsizeByFormat(GEM_RGB); m_qtimage.reallocate(); m_newfilm = true; diff -Nru gem-0.94~pre1/plugins/filmQT4L/filmQT4L.h gem-0.94/plugins/filmQT4L/filmQT4L.h --- gem-0.94~pre1/plugins/filmQT4L/filmQT4L.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmQT4L/filmQT4L.h 2019-02-12 13:10:01.000000000 +0000 @@ -82,7 +82,7 @@ // GROUP: Movie data //----------------------------------- protected: - GLenum m_wantedFormat; // format requested by the user + unsigned int m_wantedFormat; // format requested by the user double m_fps; // the frame-rate int m_numFrames, m_numTracks; // number of frames in video int m_curFrame, m_curTrack; diff -Nru gem-0.94~pre1/plugins/filmTEST/filmTEST.cpp gem-0.94/plugins/filmTEST/filmTEST.cpp --- gem-0.94~pre1/plugins/filmTEST/filmTEST.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/filmTEST/filmTEST.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -40,7 +40,7 @@ : m_fps(20) , m_numFrames(100) { - m_image.image.setCsizeByFormat(GL_RGBA); + m_image.image.setCsizeByFormat(GEM_RGBA); m_image.image.xsize=320; m_image.image.ysize=240; m_image.image.reallocate(); diff -Nru gem-0.94~pre1/plugins/imageIO/imageIO.mm gem-0.94/plugins/imageIO/imageIO.mm --- gem-0.94~pre1/plugins/imageIO/imageIO.mm 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/imageIO/imageIO.mm 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -127,7 +127,7 @@ size_t h = CGImageGetHeight(myImage); result.xsize = w; result.ysize = h; - result.setCsizeByFormat(GL_RGBA_GEM); + result.setCsizeByFormat(GEM_RGBA); result.reallocate(); CGRect rect = {{0,0},{w,h}}; diff -Nru gem-0.94~pre1/plugins/imageJPEG/imageJPEG.cpp gem-0.94/plugins/imageJPEG/imageJPEG.cpp --- gem-0.94~pre1/plugins/imageJPEG/imageJPEG.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/imageJPEG/imageJPEG.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -142,13 +142,13 @@ // do we have an RGB image? if (cinfo.jpeg_color_space == JCS_RGB) { - result.setCsizeByFormat(GL_RGBA); + result.setCsizeByFormat(GEM_RGBA); } else if (cinfo.jpeg_color_space == JCS_GRAYSCALE) { // do we have a gray8 image? - result.setCsizeByFormat(GL_LUMINANCE); + result.setCsizeByFormat(GEM_GRAY); } else { // something else, so decompress as RGB - result.setCsizeByFormat(GL_RGBA); + result.setCsizeByFormat(GEM_RGBA); cinfo.out_color_space = JCS_RGB; } @@ -244,7 +244,7 @@ quality=fquality; } - if(GL_YUV422_GEM==constimage.format) { + if(GEM_YUV==constimage.format) { fprintf(stderr, "[GEM:imageJPEG] don't know how to write YUV-images\n"); return false; } @@ -259,7 +259,7 @@ jpeg_stdio_dest(&cinfo, outfile); imageStruct image; - constimage.convertTo(&image, GL_RGB); + constimage.convertTo(&image, GEM_RGB); // image.fixUpDown(); JSAMPLE *image_buffer = image.data; diff -Nru gem-0.94~pre1/plugins/imageMAGICK/imageMAGICK.cpp gem-0.94/plugins/imageMAGICK/imageMAGICK.cpp --- gem-0.94~pre1/plugins/imageMAGICK/imageMAGICK.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/imageMAGICK/imageMAGICK.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/plugins/imageMAGICK/MagickCore.cpp gem-0.94/plugins/imageMAGICK/MagickCore.cpp --- gem-0.94~pre1/plugins/imageMAGICK/MagickCore.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/imageMAGICK/MagickCore.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -21,6 +21,7 @@ #include "imageMAGICK.h" #include "Gem/RTE.h" +#include "Gem/GemGL.h" #ifdef _MSC_VER # if !defined(_W64) diff -Nru gem-0.94~pre1/plugins/imageMAGICK/MagickPlusPlus.cpp gem-0.94/plugins/imageMAGICK/MagickPlusPlus.cpp --- gem-0.94~pre1/plugins/imageMAGICK/MagickPlusPlus.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/imageMAGICK/MagickPlusPlus.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -18,6 +18,7 @@ #include "imageMAGICK.h" #include "Gem/RTE.h" +#include "Gem/GemGL.h" #include <Magick++.h> diff -Nru gem-0.94~pre1/plugins/imageQT/imageQT.cpp gem-0.94/plugins/imageQT/imageQT.cpp --- gem-0.94~pre1/plugins/imageQT/imageQT.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/imageQT/imageQT.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -267,14 +267,14 @@ #ifdef k8GrayPixelFormat /* from the docs on "depth": what depth is this data (1-32) or ( 33-40 grayscale ) */ if ((*imageDescH)->depth <= 32) { - result.setCsizeByFormat(GL_RGBA_GEM); + result.setCsizeByFormat(GEM_RGBA); pixelformat = IMAGEQT_RGBA_PIXELFORMAT; } else { - result.setCsizeByFormat(GL_LUMINANCE); + result.setCsizeByFormat(GEM_GRAY); pixelformat = k8GrayPixelFormat; } #else - result.setCsizeByFormat(GL_RGBA_GEM); + result.setCsizeByFormat(GEM_RGBA); pixelformat = IMAGEQT_RGBA_PIXELFORMAT; #endif @@ -429,7 +429,7 @@ r.right = constimage.xsize; imageStruct rgbaimg; - rgbaimg.convertFrom(&constimage, GL_RGBA_GEM); + rgbaimg.convertFrom(&constimage, GEM_RGBA); unsigned char *data = NULL; if(!rgbaimg.upsidedown) { // the image is openGL-oriented, not quicktime-oriented! flip it! diff -Nru gem-0.94~pre1/plugins/imageSGI/imageSGI.cpp gem-0.94/plugins/imageSGI/imageSGI.cpp --- gem-0.94~pre1/plugins/imageSGI/imageSGI.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/imageSGI/imageSGI.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -60,9 +60,9 @@ result.ysize=ysize; if (csize == 4 || csize == 3) { - result.setCsizeByFormat(GL_RGBA); + result.setCsizeByFormat(GEM_RGBA); } else if (csize == 1) { - result.setCsizeByFormat(GL_LUMINANCE); + result.setCsizeByFormat(GEM_GRAY); } else { fprintf(stderr, "[GEM:imageSGI] unknown color components in SGI file: %s\n", @@ -79,8 +79,8 @@ } unsigned char *src = reinterpret_cast<unsigned char*>(readData); - unsigned char *dst = &(result.data[0]); const int yStride = result.xsize * result.csize; + unsigned char *dst = &(result.data[0]) + yStride * (result.ysize - 1); // do RGBA data if (csize == 4) { @@ -95,7 +95,7 @@ pixels += 4; src += 4; } - dst += yStride; + dst -= yStride; } } else if (csize == 3) { // do RGB data @@ -110,7 +110,7 @@ pixels += 4; src += 4; } - dst += yStride; + dst -= yStride; } } else { // do grayscale @@ -122,12 +122,11 @@ pixels++; src += 4; } - dst += yStride; + dst -= yStride; } } free(readData); - return true; } @@ -135,7 +134,7 @@ const std::string&mimetype, const gem::Properties&props) { imageStruct img; - image.convertTo(&img, GL_RGBA); + image.convertTo(&img, GEM_RGBA); unsigned int32*data=(unsigned int32*)img.data; std::string name=""; diff -Nru gem-0.94~pre1/plugins/imageSTB/imageSTB.cpp gem-0.94/plugins/imageSTB/imageSTB.cpp --- gem-0.94~pre1/plugins/imageSTB/imageSTB.cpp 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/plugins/imageSTB/imageSTB.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,152 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.at +// +// Implementation file +// +// Copyright (c) 1997-1999 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <string.h> +#include "imageSTB.h" +#include "Gem/RTE.h" +#include "plugins/PluginFactory.h" + +#ifndef HAVE_LIBSTB +# define STB_IMAGE_IMPLEMENTATION +# define STB_IMAGE_WRITE_IMPLEMENTATION +#endif +#ifdef HAVE_STB_STB_IMAGE_H +# include "stb/stb_image.h" +# include "stb/stb_image_write.h" +#else +# include "stb_image.h" +# include "stb_image_write.h" +#endif + +using namespace gem::plugins; + +REGISTER_IMAGELOADERFACTORY("STB", imageSTB); +REGISTER_IMAGESAVERFACTORY ("STB", imageSTB); + +///////////////////////////////////////////////////////// +// +// imageSTB +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +imageSTB :: imageSTB(void) +{ +} +imageSTB :: ~imageSTB(void) +{ +} + +///////////////////////////////////////////////////////// +// really open the file ! (OS dependent) +// +///////////////////////////////////////////////////////// +bool imageSTB :: load(std::string filename, imageStruct&result, + gem::Properties&props) +{ + int xsize, ysize, csize; + unsigned char *data = stbi_load(filename.c_str(), &xsize, &ysize, &csize, 4); + + if(!data) + return(false); + + result.xsize=xsize; + result.ysize=ysize; + result.setCsizeByFormat(GEM_RGBA); + result.reallocate(); + +#ifdef __APPLE__ + result.fromARGB(data); + result.swapRedBlue(); +#else + result.fromRGBA(data); +#endif + + stbi_image_free(data); + return true; +} + +bool imageSTB::save(const imageStruct&image, const std::string&filename, + const std::string&mimetype, const gem::Properties&props) +{ + int err = 0; + imageStruct img; + double fquality=100; + int quality=fquality; + + if(props.get("quality", fquality)) { + quality=fquality; + } + + image.convertTo(&img, GEM_RGBA); +#ifdef __APPLE__ + /* OSX postprocessing to get really RGBA */ + img.fromABGR(img.data); +#endif /* !APPLE */ + + if(!img.upsidedown) + stbi_flip_vertically_on_write(1); + if("image/png" == mimetype) { + err = stbi_write_png(filename.c_str(), img.xsize, img.ysize, img.csize, img.data, img.xsize * img.csize); + } else if ("image/bmp" == mimetype) { + err = stbi_write_bmp(filename.c_str(), img.xsize, img.ysize, img.csize, img.data); + } else if ("image/targa" == mimetype) { + err = stbi_write_tga(filename.c_str(), img.xsize, img.ysize, img.csize, img.data); + } else if ("image/jpeg" == mimetype) { + err = stbi_write_jpg(filename.c_str(), img.xsize, img.ysize, img.csize, img.data, quality); + } + + return (0!=err); +} +float imageSTB::estimateSave(const imageStruct&img, + const std::string&filename, const std::string&mimetype, + const gem::Properties&props) +{ + float result=0; + if("image/png" == mimetype) { + result+=80; + } else if ("image/bmp" == mimetype) { + result+=80; + } else if ("image/targa" == mimetype) { + result+=80; + } else if ("image/jpeg" == mimetype) { + result+=80; + if(gem::Properties::UNSET != props.type("quality")) { + result += 1.; + } + + } + return result; +} +void imageSTB::getWriteCapabilities(std::vector<std::string>&mimetypes, + gem::Properties&props) +{ + mimetypes.clear(); + props.clear(); + mimetypes.push_back("image/png"); + mimetypes.push_back("image/bmp"); + mimetypes.push_back("image/targa"); + mimetypes.push_back("image/jpeg"); + //mimetypes.push_back("image/hdr"); // ??; expects float + gem::any value; + + value=100.f; + props.set("quality", value); +} diff -Nru gem-0.94~pre1/plugins/imageSTB/imageSTB.h gem-0.94/plugins/imageSTB/imageSTB.h --- gem-0.94~pre1/plugins/imageSTB/imageSTB.h 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/plugins/imageSTB/imageSTB.h 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,76 @@ +/*----------------------------------------------------------------- + +GEM - Graphics Environment for Multimedia + +Use Sean T. Barret's single-file header-lib to load images + +Copyright (c) 2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +For information on usage and redistribution, and for a DISCLAIMER OF ALL +WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + + +-----------------------------------------------------------------*/ + +#ifndef _INCLUDE_GEMPLUGIN__IMAGESTB_IMAGESTB_H_ +#define _INCLUDE_GEMPLUGIN__IMAGESTB_IMAGESTB_H_ +#include "plugins/imageloader.h" +#include "plugins/imagesaver.h" +#include <stdio.h> + +/*----------------------------------------------------------------- + ------------------------------------------------------------------- + CLASS + imageSTB + + Loads in a picture + + KEYWORDS + pix + + DESCRIPTION + + -----------------------------------------------------------------*/ +namespace gem +{ +namespace plugins +{ +class GEM_EXPORT imageSTB : public gem::plugins::imageloader, + public gem::plugins::imagesaver +{ +public: + + ////////// + // Constructor + imageSTB(void); + virtual ~imageSTB(void); + + ////////// + // read an image + virtual bool load(std::string filename, imageStruct&result, + gem::Properties&props); + ////////// + // write an image + virtual bool save(const imageStruct&img, + const std::string&filename, const std::string&mimetype, + const gem::Properties&props); + ////////// + // estimate, how well we could save this image + virtual float estimateSave(const imageStruct&img, + const std::string&filename, const std::string&mimetype, + const gem::Properties&props); + + + // this is always threadable + virtual bool isThreadable(void) + { + return true; + } + virtual void getWriteCapabilities(std::vector<std::string>&mimetypes, + gem::Properties&props); + + +}; +}; +}; + +#endif // for header file diff -Nru gem-0.94~pre1/plugins/imageSTB/Makefile.am gem-0.94/plugins/imageSTB/Makefile.am --- gem-0.94~pre1/plugins/imageSTB/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/plugins/imageSTB/Makefile.am 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,41 @@ + +ACLOCAL_AMFLAGS = -I $(top_srcdir)/m4 +AM_CPPFLAGS = -I$(top_srcdir)/src $(GEM_EXTERNAL_CPPFLAGS) + +EXTRA_DIST = +EXTRA_DIST += win-vs2003/imageSTB.sln win-vs2003/imageSTB.vcproj +EXTRA_DIST += win-vs2008/imageSTB.sln win-vs2008/imageSTB.vcproj + +pkglib_LTLIBRARIES= gem_imageSTB.la + +gem_imageSTB_la_CXXFLAGS = +gem_imageSTB_la_LDFLAGS = -module -avoid-version -shared +if WINDOWS +gem_imageSTB_la_LDFLAGS += -no-undefined +endif +gem_imageSTB_la_LIBADD = + +if HAVE_LIB_STB +else +AM_CPPFLAGS += -I$(srcdir)/STB +endif + +# RTE +gem_imageSTB_la_CXXFLAGS += $(GEM_RTE_CFLAGS) $(GEM_ARCH_CXXFLAGS) +gem_imageSTB_la_LDFLAGS += $(GEM_RTE_LIBS) $(GEM_ARCH_LDFLAGS) +# flags for building Gem externals +gem_imageSTB_la_CXXFLAGS += $(GEM_EXTERNAL_CFLAGS) +gem_imageSTB_la_LIBADD += -L$(top_builddir) $(GEM_EXTERNAL_LIBS) +# gem_imageSTB_la @MOREFLAGS@ + +# Dependencies +gem_imageSTB_la_CXXFLAGS += $(GEM_LIB_STB_CFLAGS) +gem_imageSTB_la_LIBADD += $(GEM_LIB_STB_LIBS) + +# convenience symlinks +include $(srcdir)/../symlink_ltlib.mk + + +### SOURCES +gem_imageSTB_la_SOURCES= imageSTB.cpp imageSTB.h + diff -Nru gem-0.94~pre1/plugins/imageSTB/STB/stb_image.h gem-0.94/plugins/imageSTB/STB/stb_image.h --- gem-0.94~pre1/plugins/imageSTB/STB/stb_image.h 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/plugins/imageSTB/STB/stb_image.h 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,7462 @@ +/* stb_image - v2.19 - public domain image loader - http://nothings.org/stb + no warranty implied; use at your own risk + + Do this: + #define STB_IMAGE_IMPLEMENTATION + before you include this file in *one* C or C++ file to create the implementation. + + // i.e. it should look like this: + #include ... + #include ... + #include ... + #define STB_IMAGE_IMPLEMENTATION + #include "stb_image.h" + + You can #define STBI_ASSERT(x) before the #include to avoid using assert.h. + And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free + + + QUICK NOTES: + Primarily of interest to game developers and other people who can + avoid problematic images and only need the trivial interface + + JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib) + PNG 1/2/4/8/16-bit-per-channel + + TGA (not sure what subset, if a subset) + BMP non-1bpp, non-RLE + PSD (composited view only, no extra channels, 8/16 bit-per-channel) + + GIF (*comp always reports as 4-channel) + HDR (radiance rgbE format) + PIC (Softimage PIC) + PNM (PPM and PGM binary only) + + Animated GIF still needs a proper API, but here's one way to do it: + http://gist.github.com/urraka/685d9a6340b26b830d49 + + - decode from memory or through FILE (define STBI_NO_STDIO to remove code) + - decode from arbitrary I/O callbacks + - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON) + + Full documentation under "DOCUMENTATION" below. + + +LICENSE + + See end of file for license information. + +RECENT REVISION HISTORY: + + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) bugfix, 1-bit BMP, 16-bitness query, fix warnings + 2.16 (2017-07-23) all functions have 16-bit variants; optimizations; bugfixes + 2.15 (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-12-04) experimental 16-bit API, only for PNG so far; fixes + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64 + RGB-format JPEG; remove white matting in PSD; + allocate large structures on the stack; + correct channel count for PNG & BMP + 2.10 (2016-01-22) avoid warning introduced in 2.09 + 2.09 (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED + + See end of file for full revision history. + + + ============================ Contributors ========================= + + Image formats Extensions, features + Sean Barrett (jpeg, png, bmp) Jetro Lauha (stbi_info) + Nicolas Schulz (hdr, psd) Martin "SpartanJ" Golini (stbi_info) + Jonathan Dummer (tga) James "moose2000" Brown (iPhone PNG) + Jean-Marc Lienher (gif) Ben "Disch" Wenger (io callbacks) + Tom Seddon (pic) Omar Cornut (1/2/4-bit PNG) + Thatcher Ulrich (psd) Nicolas Guillemot (vertical flip) + Ken Miller (pgm, ppm) Richard Mitton (16-bit PSD) + github:urraka (animated gif) Junggon Kim (PNM comments) + Christopher Forseth (animated gif) Daniel Gibson (16-bit TGA) + socks-the-fox (16-bit PNG) + Jeremy Sawicki (handle all ImageNet JPGs) + Optimizations & bugfixes Mikhail Morozov (1-bit BMP) + Fabian "ryg" Giesen Anael Seghezzi (is-16-bit query) + Arseny Kapoulkine + John-Mark Allen + + Bug & warning fixes + Marc LeBlanc David Woo Guillaume George Martins Mozeiko + Christpher Lloyd Jerry Jansson Joseph Thomson Phil Jordan + Dave Moore Roy Eltham Hayaki Saito Nathan Reed + Won Chun Luke Graham Johan Duparc Nick Verigakis + the Horde3D community Thomas Ruf Ronny Chevalier github:rlyeh + Janez Zemva John Bartholomew Michal Cichon github:romigrou + Jonathan Blow Ken Hamada Tero Hanninen github:svdijk + Laurent Gomila Cort Stratton Sergio Gonzalez github:snagar + Aruelien Pocheville Thibault Reuille Cass Everitt github:Zelex + Ryamond Barbiero Paul Du Bois Engin Manap github:grim210 + Aldo Culquicondor Philipp Wiesemann Dale Weiler github:sammyhw + Oriol Ferrer Mesia Josh Tobin Matthew Gregan github:phprus + Julian Raschke Gregory Mullen Baldur Karlsson github:poppolopoppo + Christian Floisand Kevin Schmidt github:darealshinji + Blazej Dariusz Roszkowski github:Michaelangel007 +*/ + +#ifndef STBI_INCLUDE_STB_IMAGE_H +#define STBI_INCLUDE_STB_IMAGE_H + +// DOCUMENTATION +// +// Limitations: +// - no 12-bit-per-channel JPEG +// - no JPEGs with arithmetic coding +// - GIF always returns *comp=4 +// +// Basic usage (see HDR discussion below for HDR usage): +// int x,y,n; +// unsigned char *data = stbi_load(filename, &x, &y, &n, 0); +// // ... process data if not NULL ... +// // ... x = width, y = height, n = # 8-bit components per pixel ... +// // ... replace '0' with '1'..'4' to force that many components per pixel +// // ... but 'n' will always be the number that it would have been if you said 0 +// stbi_image_free(data) +// +// Standard parameters: +// int *x -- outputs image width in pixels +// int *y -- outputs image height in pixels +// int *channels_in_file -- outputs # of image components in image file +// int desired_channels -- if non-zero, # of image components requested in result +// +// The return value from an image loader is an 'unsigned char *' which points +// to the pixel data, or NULL on an allocation failure or if the image is +// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels, +// with each pixel consisting of N interleaved 8-bit components; the first +// pixel pointed to is top-left-most in the image. There is no padding between +// image scanlines or between pixels, regardless of format. The number of +// components N is 'desired_channels' if desired_channels is non-zero, or +// *channels_in_file otherwise. If desired_channels is non-zero, +// *channels_in_file has the number of components that _would_ have been +// output otherwise. E.g. if you set desired_channels to 4, you will always +// get RGBA output, but you can check *channels_in_file to see if it's trivially +// opaque because e.g. there were only 3 channels in the source image. +// +// An output image with N components has the following components interleaved +// in this order in each pixel: +// +// N=#comp components +// 1 grey +// 2 grey, alpha +// 3 red, green, blue +// 4 red, green, blue, alpha +// +// If image loading fails for any reason, the return value will be NULL, +// and *x, *y, *channels_in_file will be unchanged. The function +// stbi_failure_reason() can be queried for an extremely brief, end-user +// unfriendly explanation of why the load failed. Define STBI_NO_FAILURE_STRINGS +// to avoid compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly +// more user-friendly ones. +// +// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized. +// +// =========================================================================== +// +// Philosophy +// +// stb libraries are designed with the following priorities: +// +// 1. easy to use +// 2. easy to maintain +// 3. good performance +// +// Sometimes I let "good performance" creep up in priority over "easy to maintain", +// and for best performance I may provide less-easy-to-use APIs that give higher +// performance, in addition to the easy to use ones. Nevertheless, it's important +// to keep in mind that from the standpoint of you, a client of this library, +// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all. +// +// Some secondary priorities arise directly from the first two, some of which +// make more explicit reasons why performance can't be emphasized. +// +// - Portable ("ease of use") +// - Small source code footprint ("easy to maintain") +// - No dependencies ("ease of use") +// +// =========================================================================== +// +// I/O callbacks +// +// I/O callbacks allow you to read from arbitrary sources, like packaged +// files or some other source. Data read from callbacks are processed +// through a small internal buffer (currently 128 bytes) to try to reduce +// overhead. +// +// The three functions you must define are "read" (reads some bytes of data), +// "skip" (skips some bytes of data), "eof" (reports if the stream is at the end). +// +// =========================================================================== +// +// SIMD support +// +// The JPEG decoder will try to automatically use SIMD kernels on x86 when +// supported by the compiler. For ARM Neon support, you must explicitly +// request it. +// +// (The old do-it-yourself SIMD API is no longer supported in the current +// code.) +// +// On x86, SSE2 will automatically be used when available based on a run-time +// test; if not, the generic C versions are used as a fall-back. On ARM targets, +// the typical path is to have separate builds for NEON and non-NEON devices +// (at least this is true for iOS and Android). Therefore, the NEON support is +// toggled by a build flag: define STBI_NEON to get NEON loops. +// +// If for some reason you do not want to use any of SIMD code, or if +// you have issues compiling it, you can disable it entirely by +// defining STBI_NO_SIMD. +// +// =========================================================================== +// +// HDR image support (disable by defining STBI_NO_HDR) +// +// stb_image now supports loading HDR images in general, and currently +// the Radiance .HDR file format, although the support is provided +// generically. You can still load any file through the existing interface; +// if you attempt to load an HDR file, it will be automatically remapped to +// LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1; +// both of these constants can be reconfigured through this interface: +// +// stbi_hdr_to_ldr_gamma(2.2f); +// stbi_hdr_to_ldr_scale(1.0f); +// +// (note, do not use _inverse_ constants; stbi_image will invert them +// appropriately). +// +// Additionally, there is a new, parallel interface for loading files as +// (linear) floats to preserve the full dynamic range: +// +// float *data = stbi_loadf(filename, &x, &y, &n, 0); +// +// If you load LDR images through this interface, those images will +// be promoted to floating point values, run through the inverse of +// constants corresponding to the above: +// +// stbi_ldr_to_hdr_scale(1.0f); +// stbi_ldr_to_hdr_gamma(2.2f); +// +// Finally, given a filename (or an open file or memory block--see header +// file for details) containing image data, you can query for the "most +// appropriate" interface to use (that is, whether the image is HDR or +// not), using: +// +// stbi_is_hdr(char *filename); +// +// =========================================================================== +// +// iPhone PNG support: +// +// By default we convert iphone-formatted PNGs back to RGB, even though +// they are internally encoded differently. You can disable this conversion +// by by calling stbi_convert_iphone_png_to_rgb(0), in which case +// you will always just get the native iphone "format" through (which +// is BGR stored in RGB). +// +// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per +// pixel to remove any premultiplied alpha *only* if the image file explicitly +// says there's premultiplied data (currently only happens in iPhone images, +// and only if iPhone convert-to-rgb processing is on). +// +// =========================================================================== +// +// ADDITIONAL CONFIGURATION +// +// - You can suppress implementation of any of the decoders to reduce +// your code footprint by #defining one or more of the following +// symbols before creating the implementation. +// +// STBI_NO_JPEG +// STBI_NO_PNG +// STBI_NO_BMP +// STBI_NO_PSD +// STBI_NO_TGA +// STBI_NO_GIF +// STBI_NO_HDR +// STBI_NO_PIC +// STBI_NO_PNM (.ppm and .pgm) +// +// - You can request *only* certain decoders and suppress all other ones +// (this will be more forward-compatible, as addition of new decoders +// doesn't require you to disable them explicitly): +// +// STBI_ONLY_JPEG +// STBI_ONLY_PNG +// STBI_ONLY_BMP +// STBI_ONLY_PSD +// STBI_ONLY_TGA +// STBI_ONLY_GIF +// STBI_ONLY_HDR +// STBI_ONLY_PIC +// STBI_ONLY_PNM (.ppm and .pgm) +// +// - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still +// want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB +// + + +#ifndef STBI_NO_STDIO +#include <stdio.h> +#endif // STBI_NO_STDIO + +#define STBI_VERSION 1 + +enum +{ + STBI_default = 0, // only used for desired_channels + + STBI_grey = 1, + STBI_grey_alpha = 2, + STBI_rgb = 3, + STBI_rgb_alpha = 4 +}; + +typedef unsigned char stbi_uc; +typedef unsigned short stbi_us; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef STB_IMAGE_STATIC +#define STBIDEF static +#else +#define STBIDEF extern +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// PRIMARY API - works on images of any type +// + +// +// load image by filename, open file, or memory buffer +// + +typedef struct +{ + int (*read) (void *user,char *data,int size); // fill 'data' with 'size' bytes. return number of bytes actually read + void (*skip) (void *user,int n); // skip the next 'n' bytes, or 'unget' the last -n bytes if negative + int (*eof) (void *user); // returns nonzero if we are at end of file/data +} stbi_io_callbacks; + +//////////////////////////////////// +// +// 8-bits-per-channel interface +// + +STBIDEF stbi_uc *stbi_load_from_memory (stbi_uc const *buffer, int len , int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk , void *user, int *x, int *y, int *channels_in_file, int desired_channels); +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +#endif + + +#ifndef STBI_NO_STDIO +STBIDEF stbi_uc *stbi_load (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +// for stbi_load_from_file, file pointer is left pointing immediately after image +#endif + +//////////////////////////////////// +// +// 16-bits-per-channel interface +// + +STBIDEF stbi_us *stbi_load_16_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_us *stbi_load_16 (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +#endif + +//////////////////////////////////// +// +// float-per-channel interface +// +#ifndef STBI_NO_LINEAR + STBIDEF float *stbi_loadf_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_callbacks (stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + + #ifndef STBI_NO_STDIO + STBIDEF float *stbi_loadf (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); + #endif +#endif + +#ifndef STBI_NO_HDR + STBIDEF void stbi_hdr_to_ldr_gamma(float gamma); + STBIDEF void stbi_hdr_to_ldr_scale(float scale); +#endif // STBI_NO_HDR + +#ifndef STBI_NO_LINEAR + STBIDEF void stbi_ldr_to_hdr_gamma(float gamma); + STBIDEF void stbi_ldr_to_hdr_scale(float scale); +#endif // STBI_NO_LINEAR + +// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user); +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len); +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename); +STBIDEF int stbi_is_hdr_from_file(FILE *f); +#endif // STBI_NO_STDIO + + +// get a VERY brief reason for failure +// NOT THREADSAFE +STBIDEF const char *stbi_failure_reason (void); + +// free the loaded image -- this is just free() +STBIDEF void stbi_image_free (void *retval_from_stbi_load); + +// get image dimensions & components without fully decoding +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len); +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user); + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info (char const *filename, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_file (FILE *f, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit (char const *filename); +STBIDEF int stbi_is_16_bit_from_file(FILE *f); +#endif + + + +// for image formats that explicitly notate that they have premultiplied alpha, +// we just return the colors as stored in the file. set this flag to force +// unpremultiplication. results are undefined if the unpremultiply overflow. +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply); + +// indicate whether we should process iphone images back to canonical format, +// or just pass them through "as-is" +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert); + +// flip the image vertically, so the first pixel in the output array is the bottom left +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip); + +// ZLIB client - used by PNG, available for other purposes + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen); +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header); +STBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + +STBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + + +#ifdef __cplusplus +} +#endif + +// +// +//// end header file ///////////////////////////////////////////////////// +#endif // STBI_INCLUDE_STB_IMAGE_H + +#ifdef STB_IMAGE_IMPLEMENTATION + +#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \ + || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \ + || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \ + || defined(STBI_ONLY_ZLIB) + #ifndef STBI_ONLY_JPEG + #define STBI_NO_JPEG + #endif + #ifndef STBI_ONLY_PNG + #define STBI_NO_PNG + #endif + #ifndef STBI_ONLY_BMP + #define STBI_NO_BMP + #endif + #ifndef STBI_ONLY_PSD + #define STBI_NO_PSD + #endif + #ifndef STBI_ONLY_TGA + #define STBI_NO_TGA + #endif + #ifndef STBI_ONLY_GIF + #define STBI_NO_GIF + #endif + #ifndef STBI_ONLY_HDR + #define STBI_NO_HDR + #endif + #ifndef STBI_ONLY_PIC + #define STBI_NO_PIC + #endif + #ifndef STBI_ONLY_PNM + #define STBI_NO_PNM + #endif +#endif + +#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB) +#define STBI_NO_ZLIB +#endif + + +#include <stdarg.h> +#include <stddef.h> // ptrdiff_t on osx +#include <stdlib.h> +#include <string.h> +#include <limits.h> + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +#include <math.h> // ldexp, pow +#endif + +#ifndef STBI_NO_STDIO +#include <stdio.h> +#endif + +#ifndef STBI_ASSERT +#include <assert.h> +#define STBI_ASSERT(x) assert(x) +#endif + + +#ifndef _MSC_VER + #ifdef __cplusplus + #define stbi_inline inline + #else + #define stbi_inline + #endif +#else + #define stbi_inline __forceinline +#endif + + +#ifdef _MSC_VER +typedef unsigned short stbi__uint16; +typedef signed short stbi__int16; +typedef unsigned int stbi__uint32; +typedef signed int stbi__int32; +#else +#include <stdint.h> +typedef uint16_t stbi__uint16; +typedef int16_t stbi__int16; +typedef uint32_t stbi__uint32; +typedef int32_t stbi__int32; +#endif + +// should produce compiler error if size is wrong +typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1]; + +#ifdef _MSC_VER +#define STBI_NOTUSED(v) (void)(v) +#else +#define STBI_NOTUSED(v) (void)sizeof(v) +#endif + +#ifdef _MSC_VER +#define STBI_HAS_LROTL +#endif + +#ifdef STBI_HAS_LROTL + #define stbi_lrot(x,y) _lrotl(x,y) +#else + #define stbi_lrot(x,y) (((x) << (y)) | ((x) >> (32 - (y)))) +#endif + +#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) +// ok +#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." +#endif + +#ifndef STBI_MALLOC +#define STBI_MALLOC(sz) malloc(sz) +#define STBI_REALLOC(p,newsz) realloc(p,newsz) +#define STBI_FREE(p) free(p) +#endif + +#ifndef STBI_REALLOC_SIZED +#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz) +#endif + +// x86/x64 detection +#if defined(__x86_64__) || defined(_M_X64) +#define STBI__X64_TARGET +#elif defined(__i386) || defined(_M_IX86) +#define STBI__X86_TARGET +#endif + +#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) +// gcc doesn't support sse2 intrinsics unless you compile with -msse2, +// which in turn means it gets to use SSE2 everywhere. This is unfortunate, +// but previous attempts to provide the SSE2 functions with runtime +// detection caused numerous issues. The way architecture extensions are +// exposed in GCC/Clang is, sadly, not really suited for one-file libs. +// New behavior: if compiled with -msse2, we use SSE2 without any +// detection; if not, we don't use it at all. +#define STBI_NO_SIMD +#endif + +#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD) +// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET +// +// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the +// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant. +// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not +// simultaneously enabling "-mstackrealign". +// +// See https://github.com/nothings/stb/issues/81 for more information. +// +// So default to no SSE2 on 32-bit MinGW. If you've read this far and added +// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2. +#define STBI_NO_SIMD +#endif + +#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) +#define STBI_SSE2 +#include <emmintrin.h> + +#ifdef _MSC_VER + +#if _MSC_VER >= 1400 // not VC6 +#include <intrin.h> // __cpuid +static int stbi__cpuid3(void) +{ + int info[4]; + __cpuid(info,1); + return info[3]; +} +#else +static int stbi__cpuid3(void) +{ + int res; + __asm { + mov eax,1 + cpuid + mov res,edx + } + return res; +} +#endif + +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name + +static int stbi__sse2_available(void) +{ + int info3 = stbi__cpuid3(); + return ((info3 >> 26) & 1) != 0; +} +#else // assume GCC-style if not VC++ +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) + +static int stbi__sse2_available(void) +{ + // If we're even attempting to compile this on GCC/Clang, that means + // -msse2 is on, which means the compiler is allowed to use SSE2 + // instructions at will, and so are we. + return 1; +} +#endif +#endif + +// ARM NEON +#if defined(STBI_NO_SIMD) && defined(STBI_NEON) +#undef STBI_NEON +#endif + +#ifdef STBI_NEON +#include <arm_neon.h> +// assume GCC or Clang on ARM targets +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) +#endif + +#ifndef STBI_SIMD_ALIGN +#define STBI_SIMD_ALIGN(type, name) type name +#endif + +/////////////////////////////////////////////// +// +// stbi__context struct and start_xxx functions + +// stbi__context structure is our basic context used by all images, so it +// contains all the IO context, plus some basic image information +typedef struct +{ + stbi__uint32 img_x, img_y; + int img_n, img_out_n; + + stbi_io_callbacks io; + void *io_user_data; + + int read_from_callbacks; + int buflen; + stbi_uc buffer_start[128]; + + stbi_uc *img_buffer, *img_buffer_end; + stbi_uc *img_buffer_original, *img_buffer_original_end; +} stbi__context; + + +static void stbi__refill_buffer(stbi__context *s); + +// initialize a memory-decode context +static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len) +{ + s->io.read = NULL; + s->read_from_callbacks = 0; + s->img_buffer = s->img_buffer_original = (stbi_uc *) buffer; + s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *) buffer+len; +} + +// initialize a callback-based context +static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user) +{ + s->io = *c; + s->io_user_data = user; + s->buflen = sizeof(s->buffer_start); + s->read_from_callbacks = 1; + s->img_buffer_original = s->buffer_start; + stbi__refill_buffer(s); + s->img_buffer_original_end = s->img_buffer_end; +} + +#ifndef STBI_NO_STDIO + +static int stbi__stdio_read(void *user, char *data, int size) +{ + return (int) fread(data,1,size,(FILE*) user); +} + +static void stbi__stdio_skip(void *user, int n) +{ + fseek((FILE*) user, n, SEEK_CUR); +} + +static int stbi__stdio_eof(void *user) +{ + return feof((FILE*) user); +} + +static stbi_io_callbacks stbi__stdio_callbacks = +{ + stbi__stdio_read, + stbi__stdio_skip, + stbi__stdio_eof, +}; + +static void stbi__start_file(stbi__context *s, FILE *f) +{ + stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *) f); +} + +//static void stop_file(stbi__context *s) { } + +#endif // !STBI_NO_STDIO + +static void stbi__rewind(stbi__context *s) +{ + // conceptually rewind SHOULD rewind to the beginning of the stream, + // but we just rewind to the beginning of the initial buffer, because + // we only use it after doing 'test', which only ever looks at at most 92 bytes + s->img_buffer = s->img_buffer_original; + s->img_buffer_end = s->img_buffer_original_end; +} + +enum +{ + STBI_ORDER_RGB, + STBI_ORDER_BGR +}; + +typedef struct +{ + int bits_per_channel; + int num_channels; + int channel_order; +} stbi__result_info; + +#ifndef STBI_NO_JPEG +static int stbi__jpeg_test(stbi__context *s); +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNG +static int stbi__png_test(stbi__context *s); +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__png_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_BMP +static int stbi__bmp_test(stbi__context *s); +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_TGA +static int stbi__tga_test(stbi__context *s); +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s); +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc); +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__psd_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_HDR +static int stbi__hdr_test(stbi__context *s); +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_test(stbi__context *s); +static void *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_GIF +static int stbi__gif_test(stbi__context *s); +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNM +static int stbi__pnm_test(stbi__context *s); +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +// this is not threadsafe +static const char *stbi__g_failure_reason; + +STBIDEF const char *stbi_failure_reason(void) +{ + return stbi__g_failure_reason; +} + +static int stbi__err(const char *str) +{ + stbi__g_failure_reason = str; + return 0; +} + +static void *stbi__malloc(size_t size) +{ + return STBI_MALLOC(size); +} + +// stb_image uses ints pervasively, including for offset calculations. +// therefore the largest decoded image size we can support with the +// current code, even on 64-bit targets, is INT_MAX. this is not a +// significant limitation for the intended use case. +// +// we do, however, need to make sure our size calculations don't +// overflow. hence a few helper functions for size calculations that +// multiply integers together, making sure that they're non-negative +// and no overflow occurs. + +// return 1 if the sum is valid, 0 on overflow. +// negative terms are considered invalid. +static int stbi__addsizes_valid(int a, int b) +{ + if (b < 0) return 0; + // now 0 <= b <= INT_MAX, hence also + // 0 <= INT_MAX - b <= INTMAX. + // And "a + b <= INT_MAX" (which might overflow) is the + // same as a <= INT_MAX - b (no overflow) + return a <= INT_MAX - b; +} + +// returns 1 if the product is valid, 0 on overflow. +// negative factors are considered invalid. +static int stbi__mul2sizes_valid(int a, int b) +{ + if (a < 0 || b < 0) return 0; + if (b == 0) return 1; // mul-by-0 is always safe + // portable way to check for no overflows in a*b + return a <= INT_MAX/b; +} + +// returns 1 if "a*b + add" has no negative terms/factors and doesn't overflow +static int stbi__mad2sizes_valid(int a, int b, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a*b, add); +} + +// returns 1 if "a*b*c + add" has no negative terms/factors and doesn't overflow +static int stbi__mad3sizes_valid(int a, int b, int c, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__addsizes_valid(a*b*c, add); +} + +// returns 1 if "a*b*c*d + add" has no negative terms/factors and doesn't overflow +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__mul2sizes_valid(a*b*c, d) && stbi__addsizes_valid(a*b*c*d, add); +} +#endif + +// mallocs with size overflow checking +static void *stbi__malloc_mad2(int a, int b, int add) +{ + if (!stbi__mad2sizes_valid(a, b, add)) return NULL; + return stbi__malloc(a*b + add); +} + +static void *stbi__malloc_mad3(int a, int b, int c, int add) +{ + if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; + return stbi__malloc(a*b*c + add); +} + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +static void *stbi__malloc_mad4(int a, int b, int c, int d, int add) +{ + if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL; + return stbi__malloc(a*b*c*d + add); +} +#endif + +// stbi__err - error +// stbi__errpf - error returning pointer to float +// stbi__errpuc - error returning pointer to unsigned char + +#ifdef STBI_NO_FAILURE_STRINGS + #define stbi__err(x,y) 0 +#elif defined(STBI_FAILURE_USERMSG) + #define stbi__err(x,y) stbi__err(y) +#else + #define stbi__err(x,y) stbi__err(x) +#endif + +#define stbi__errpf(x,y) ((float *)(size_t) (stbi__err(x,y)?NULL:NULL)) +#define stbi__errpuc(x,y) ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL)) + +STBIDEF void stbi_image_free(void *retval_from_stbi_load) +{ + STBI_FREE(retval_from_stbi_load); +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp); +#endif + +#ifndef STBI_NO_HDR +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp); +#endif + +static int stbi__vertically_flip_on_load = 0; + +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load = flag_true_if_should_flip; +} + +static void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields + ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed + ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order + ri->num_channels = 0; + + #ifndef STBI_NO_JPEG + if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PNG + if (stbi__png_test(s)) return stbi__png_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_BMP + if (stbi__bmp_test(s)) return stbi__bmp_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_GIF + if (stbi__gif_test(s)) return stbi__gif_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PSD + if (stbi__psd_test(s)) return stbi__psd_load(s,x,y,comp,req_comp, ri, bpc); + #endif + #ifndef STBI_NO_PIC + if (stbi__pic_test(s)) return stbi__pic_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PNM + if (stbi__pnm_test(s)) return stbi__pnm_load(s,x,y,comp,req_comp, ri); + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + float *hdr = stbi__hdr_load(s, x,y,comp,req_comp, ri); + return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); + } + #endif + + #ifndef STBI_NO_TGA + // test tga last because it's a crappy test! + if (stbi__tga_test(s)) + return stbi__tga_load(s,x,y,comp,req_comp, ri); + #endif + + return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); +} + +static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi_uc *reduced; + + reduced = (stbi_uc *) stbi__malloc(img_len); + if (reduced == NULL) return stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + STBI_FREE(orig); + return reduced; +} + +static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi__uint16 *enlarged; + + enlarged = (stbi__uint16 *) stbi__malloc(img_len*2); + if (enlarged == NULL) return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff + + STBI_FREE(orig); + return enlarged; +} + +static void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel) +{ + int row; + size_t bytes_per_row = (size_t)w * bytes_per_pixel; + stbi_uc temp[2048]; + stbi_uc *bytes = (stbi_uc *)image; + + for (row = 0; row < (h>>1); row++) { + stbi_uc *row0 = bytes + row*bytes_per_row; + stbi_uc *row1 = bytes + (h - row - 1)*bytes_per_row; + // swap row0 with row1 + size_t bytes_left = bytes_per_row; + while (bytes_left) { + size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp); + memcpy(temp, row0, bytes_copy); + memcpy(row0, row1, bytes_copy); + memcpy(row1, temp, bytes_copy); + row0 += bytes_copy; + row1 += bytes_copy; + bytes_left -= bytes_copy; + } + } +} + +static void stbi__vertical_flip_slices(void *image, int w, int h, int z, int bytes_per_pixel) +{ + int slice; + int slice_size = w * h * bytes_per_pixel; + + stbi_uc *bytes = (stbi_uc *)image; + for (slice = 0; slice < z; ++slice) { + stbi__vertical_flip(bytes, w, h, bytes_per_pixel); + bytes += slice_size; + } +} + +static unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); + + if (result == NULL) + return NULL; + + if (ri.bits_per_channel != 8) { + STBI_ASSERT(ri.bits_per_channel == 16); + result = stbi__convert_16_to_8((stbi__uint16 *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 8; + } + + // @TODO: move stbi__convert_format to here + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); + } + + return (unsigned char *) result; +} + +static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); + + if (result == NULL) + return NULL; + + if (ri.bits_per_channel != 16) { + STBI_ASSERT(ri.bits_per_channel == 8); + result = stbi__convert_8_to_16((stbi_uc *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 16; + } + + // @TODO: move stbi__convert_format16 to here + // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16)); + } + + return (stbi__uint16 *) result; +} + +#if !defined(STBI_NO_HDR) || !defined(STBI_NO_LINEAR) +static void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp) +{ + if (stbi__vertically_flip_on_load && result != NULL) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(float)); + } +} +#endif + +#ifndef STBI_NO_STDIO + +static FILE *stbi__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f=0; +#else + f = fopen(filename, mode); +#endif + return f; +} + + +STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) return stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__uint16 *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_16bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + stbi__uint16 *result; + if (!f) return (stbi_us *) stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file_16(f,x,y,comp,req_comp); + fclose(f); + return result; +} + + +#endif //!STBI_NO_STDIO + +STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_mem(&s,buffer,len); + + result = (unsigned char*) stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp); + if (stbi__vertically_flip_on_load) { + stbi__vertical_flip_slices( result, *x, *y, *z, *comp ); + } + + return result; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *data; + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + stbi__result_info ri; + float *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp, &ri); + if (hdr_data) + stbi__float_postprocess(hdr_data,x,y,comp,req_comp); + return hdr_data; + } + #endif + data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp); + if (data) + return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp); + return stbi__errpf("unknown image type", "Image not of any known type, or corrupt"); +} + +STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_STDIO +STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + float *result; + FILE *f = stbi__fopen(filename, "rb"); + if (!f) return stbi__errpf("can't fopen", "Unable to open file"); + result = stbi_loadf_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_file(&s,f); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} +#endif // !STBI_NO_STDIO + +#endif // !STBI_NO_LINEAR + +// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is +// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always +// reports false! + +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(buffer); + STBI_NOTUSED(len); + return 0; + #endif +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result=0; + if (f) { + result = stbi_is_hdr_from_file(f); + fclose(f); + } + return result; +} + +STBIDEF int stbi_is_hdr_from_file(FILE *f) +{ + #ifndef STBI_NO_HDR + long pos = ftell(f); + int res; + stbi__context s; + stbi__start_file(&s,f); + res = stbi__hdr_test(&s); + fseek(f, pos, SEEK_SET); + return res; + #else + STBI_NOTUSED(f); + return 0; + #endif +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(clbk); + STBI_NOTUSED(user); + return 0; + #endif +} + +#ifndef STBI_NO_LINEAR +static float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f; + +STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; } +STBIDEF void stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; } +#endif + +static float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f; + +STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; } +STBIDEF void stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; } + + +////////////////////////////////////////////////////////////////////////////// +// +// Common code used by all image loaders +// + +enum +{ + STBI__SCAN_load=0, + STBI__SCAN_type, + STBI__SCAN_header +}; + +static void stbi__refill_buffer(stbi__context *s) +{ + int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen); + if (n == 0) { + // at end of file, treat same as if from memory, but need to handle case + // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file + s->read_from_callbacks = 0; + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start+1; + *s->img_buffer = 0; + } else { + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + n; + } +} + +stbi_inline static stbi_uc stbi__get8(stbi__context *s) +{ + if (s->img_buffer < s->img_buffer_end) + return *s->img_buffer++; + if (s->read_from_callbacks) { + stbi__refill_buffer(s); + return *s->img_buffer++; + } + return 0; +} + +stbi_inline static int stbi__at_eof(stbi__context *s) +{ + if (s->io.read) { + if (!(s->io.eof)(s->io_user_data)) return 0; + // if feof() is true, check if buffer = end + // special case: we've only got the special 0 character at the end + if (s->read_from_callbacks == 0) return 1; + } + + return s->img_buffer >= s->img_buffer_end; +} + +static void stbi__skip(stbi__context *s, int n) +{ + if (n < 0) { + s->img_buffer = s->img_buffer_end; + return; + } + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + s->img_buffer = s->img_buffer_end; + (s->io.skip)(s->io_user_data, n - blen); + return; + } + } + s->img_buffer += n; +} + +static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n) +{ + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + int res, count; + + memcpy(buffer, s->img_buffer, blen); + + count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen); + res = (count == (n-blen)); + s->img_buffer = s->img_buffer_end; + return res; + } + } + + if (s->img_buffer+n <= s->img_buffer_end) { + memcpy(buffer, s->img_buffer, n); + s->img_buffer += n; + return 1; + } else + return 0; +} + +static int stbi__get16be(stbi__context *s) +{ + int z = stbi__get8(s); + return (z << 8) + stbi__get8(s); +} + +static stbi__uint32 stbi__get32be(stbi__context *s) +{ + stbi__uint32 z = stbi__get16be(s); + return (z << 16) + stbi__get16be(s); +} + +#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +// nothing +#else +static int stbi__get16le(stbi__context *s) +{ + int z = stbi__get8(s); + return z + (stbi__get8(s) << 8); +} +#endif + +#ifndef STBI_NO_BMP +static stbi__uint32 stbi__get32le(stbi__context *s) +{ + stbi__uint32 z = stbi__get16le(s); + return z + (stbi__get16le(s) << 16); +} +#endif + +#define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings + + +////////////////////////////////////////////////////////////////////////////// +// +// generic converter from built-in img_n to req_comp +// individual types do this automatically as much as possible (e.g. jpeg +// does all cases internally since it needs to colorspace convert anyway, +// and it never has alpha, so very few cases ). png can automatically +// interleave an alpha=255 channel, but falls back to this for other cases +// +// assume data buffer is malloced, so malloc a new one and free that one +// only failure mode is malloc failing + +static stbi_uc stbi__compute_y(int r, int g, int b) +{ + return (stbi_uc) (((r*77) + (g*150) + (29*b)) >> 8); +} + +static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + unsigned char *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (unsigned char *) stbi__malloc_mad3(req_comp, x, y, 0); + if (good == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + unsigned char *src = data + j * x * img_n ; + unsigned char *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0], dest[1]=255; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=255; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=255; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = 255; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; } break; + default: STBI_ASSERT(0); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} + +static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +{ + return (stbi__uint16) (((r*77) + (g*150) + (29*b)) >> 8); +} + +static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + stbi__uint16 *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (stbi__uint16 *) stbi__malloc(req_comp * x * y * 2); + if (good == NULL) { + STBI_FREE(data); + return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + stbi__uint16 *src = data + j * x * img_n ; + stbi__uint16 *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0], dest[1]=0xffff; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=0xffff; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=0xffff; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]), dest[1] = 0xffff; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]), dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; } break; + default: STBI_ASSERT(0); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp) +{ + int i,k,n; + float *output; + if (!data) return NULL; + output = (float *) stbi__malloc_mad4(x, y, comp, sizeof(float), 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale); + } + if (k < comp) output[i*comp + k] = data[i*comp+k]/255.0f; + } + STBI_FREE(data); + return output; +} +#endif + +#ifndef STBI_NO_HDR +#define stbi__float2int(x) ((int) (x)) +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp) +{ + int i,k,n; + stbi_uc *output; + if (!data) return NULL; + output = (stbi_uc *) stbi__malloc_mad3(x, y, comp, 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + float z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + if (k < comp) { + float z = data[i*comp+k] * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + } + STBI_FREE(data); + return output; +} +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// "baseline" JPEG/JFIF decoder +// +// simple implementation +// - doesn't support delayed output of y-dimension +// - simple interface (only one output format: 8-bit interleaved RGB) +// - doesn't try to recover corrupt jpegs +// - doesn't allow partial loading, loading multiple at once +// - still fast on x86 (copying globals into locals doesn't help x86) +// - allocates lots of intermediate memory (full size of all components) +// - non-interleaved case requires this anyway +// - allows good upsampling (see next) +// high-quality +// - upsampled channels are bilinearly interpolated, even across blocks +// - quality integer IDCT derived from IJG's 'slow' +// performance +// - fast huffman; reasonable integer IDCT +// - some SIMD kernels for common paths on targets with SSE2/NEON +// - uses a lot of intermediate memory, could cache poorly + +#ifndef STBI_NO_JPEG + +// huffman decoding acceleration +#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache + +typedef struct +{ + stbi_uc fast[1 << FAST_BITS]; + // weirdly, repacking this into AoS is a 10% speed loss, instead of a win + stbi__uint16 code[256]; + stbi_uc values[256]; + stbi_uc size[257]; + unsigned int maxcode[18]; + int delta[17]; // old 'firstsymbol' - old 'firstcode' +} stbi__huffman; + +typedef struct +{ + stbi__context *s; + stbi__huffman huff_dc[4]; + stbi__huffman huff_ac[4]; + stbi__uint16 dequant[4][64]; + stbi__int16 fast_ac[4][1 << FAST_BITS]; + +// sizes for components, interleaved MCUs + int img_h_max, img_v_max; + int img_mcu_x, img_mcu_y; + int img_mcu_w, img_mcu_h; + +// definition of jpeg image component + struct + { + int id; + int h,v; + int tq; + int hd,ha; + int dc_pred; + + int x,y,w2,h2; + stbi_uc *data; + void *raw_data, *raw_coeff; + stbi_uc *linebuf; + short *coeff; // progressive only + int coeff_w, coeff_h; // number of 8x8 coefficient blocks + } img_comp[4]; + + stbi__uint32 code_buffer; // jpeg entropy-coded buffer + int code_bits; // number of valid bits + unsigned char marker; // marker seen while filling entropy buffer + int nomore; // flag if we saw a marker so must stop + + int progressive; + int spec_start; + int spec_end; + int succ_high; + int succ_low; + int eob_run; + int jfif; + int app14_color_transform; // Adobe APP14 tag + int rgb; + + int scan_n, order[4]; + int restart_interval, todo; + +// kernels + void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]); + void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step); + stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs); +} stbi__jpeg; + +static int stbi__build_huffman(stbi__huffman *h, int *count) +{ + int i,j,k=0; + unsigned int code; + // build size list for each symbol (from JPEG spec) + for (i=0; i < 16; ++i) + for (j=0; j < count[i]; ++j) + h->size[k++] = (stbi_uc) (i+1); + h->size[k] = 0; + + // compute actual symbols (from jpeg spec) + code = 0; + k = 0; + for(j=1; j <= 16; ++j) { + // compute delta to add to code to compute symbol id + h->delta[j] = k - code; + if (h->size[k] == j) { + while (h->size[k] == j) + h->code[k++] = (stbi__uint16) (code++); + if (code-1 >= (1u << j)) return stbi__err("bad code lengths","Corrupt JPEG"); + } + // compute largest code + 1 for this size, preshifted as needed later + h->maxcode[j] = code << (16-j); + code <<= 1; + } + h->maxcode[j] = 0xffffffff; + + // build non-spec acceleration table; 255 is flag for not-accelerated + memset(h->fast, 255, 1 << FAST_BITS); + for (i=0; i < k; ++i) { + int s = h->size[i]; + if (s <= FAST_BITS) { + int c = h->code[i] << (FAST_BITS-s); + int m = 1 << (FAST_BITS-s); + for (j=0; j < m; ++j) { + h->fast[c+j] = (stbi_uc) i; + } + } + } + return 1; +} + +// build a table that decodes both magnitude and value of small ACs in +// one go. +static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h) +{ + int i; + for (i=0; i < (1 << FAST_BITS); ++i) { + stbi_uc fast = h->fast[i]; + fast_ac[i] = 0; + if (fast < 255) { + int rs = h->values[fast]; + int run = (rs >> 4) & 15; + int magbits = rs & 15; + int len = h->size[fast]; + + if (magbits && len + magbits <= FAST_BITS) { + // magnitude code followed by receive_extend code + int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); + int m = 1 << (magbits - 1); + if (k < m) k += (~0U << magbits) + 1; + // if the result is small enough, we can fit it in fast_ac table + if (k >= -128 && k <= 127) + fast_ac[i] = (stbi__int16) ((k * 256) + (run * 16) + (len + magbits)); + } + } + } +} + +static void stbi__grow_buffer_unsafe(stbi__jpeg *j) +{ + do { + unsigned int b = j->nomore ? 0 : stbi__get8(j->s); + if (b == 0xff) { + int c = stbi__get8(j->s); + while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes + if (c != 0) { + j->marker = (unsigned char) c; + j->nomore = 1; + return; + } + } + j->code_buffer |= b << (24 - j->code_bits); + j->code_bits += 8; + } while (j->code_bits <= 24); +} + +// (1 << n) - 1 +static const stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535}; + +// decode a jpeg huffman value from the bitstream +stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h) +{ + unsigned int temp; + int c,k; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + // look at the top FAST_BITS and determine what symbol ID it is, + // if the code is <= FAST_BITS + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + k = h->fast[c]; + if (k < 255) { + int s = h->size[k]; + if (s > j->code_bits) + return -1; + j->code_buffer <<= s; + j->code_bits -= s; + return h->values[k]; + } + + // naive test is to shift the code_buffer down so k bits are + // valid, then test against maxcode. To speed this up, we've + // preshifted maxcode left so that it has (16-k) 0s at the + // end; in other words, regardless of the number of bits, it + // wants to be compared against something shifted to have 16; + // that way we don't need to shift inside the loop. + temp = j->code_buffer >> 16; + for (k=FAST_BITS+1 ; ; ++k) + if (temp < h->maxcode[k]) + break; + if (k == 17) { + // error! code not found + j->code_bits -= 16; + return -1; + } + + if (k > j->code_bits) + return -1; + + // convert the huffman code to the symbol id + c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); + + // convert the id to a symbol + j->code_bits -= k; + j->code_buffer <<= k; + return h->values[c]; +} + +// bias[n] = (-1<<n) + 1 +static const int stbi__jbias[16] = {0,-1,-3,-7,-15,-31,-63,-127,-255,-511,-1023,-2047,-4095,-8191,-16383,-32767}; + +// combined JPEG 'receive' and JPEG 'extend', since baseline +// always extends everything it receives. +stbi_inline static int stbi__extend_receive(stbi__jpeg *j, int n) +{ + unsigned int k; + int sgn; + if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + + sgn = (stbi__int32)j->code_buffer >> 31; // sign bit is always in MSB + k = stbi_lrot(j->code_buffer, n); + STBI_ASSERT(n >= 0 && n < (int) (sizeof(stbi__bmask)/sizeof(*stbi__bmask))); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k + (stbi__jbias[n] & ~sgn); +} + +// get some unsigned bits +stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) +{ + unsigned int k; + if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k; +} + +stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j) +{ + unsigned int k; + if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); + k = j->code_buffer; + j->code_buffer <<= 1; + --j->code_bits; + return k & 0x80000000; +} + +// given a value that's at position X in the zigzag stream, +// where does it appear in the 8x8 matrix coded as row-major? +static const stbi_uc stbi__jpeg_dezigzag[64+15] = +{ + 0, 1, 8, 16, 9, 2, 3, 10, + 17, 24, 32, 25, 18, 11, 4, 5, + 12, 19, 26, 33, 40, 48, 41, 34, + 27, 20, 13, 6, 7, 14, 21, 28, + 35, 42, 49, 56, 57, 50, 43, 36, + 29, 22, 15, 23, 30, 37, 44, 51, + 58, 59, 52, 45, 38, 31, 39, 46, + 53, 60, 61, 54, 47, 55, 62, 63, + // let corrupt input sample past end + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63 +}; + +// decode one 64-entry block-- +static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, int b, stbi__uint16 *dequant) +{ + int diff,dc,k; + int t; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + + // 0 all the ac values now so we can do it 32-bits at a time + memset(data,0,64*sizeof(data[0])); + + diff = t ? stbi__extend_receive(j, t) : 0; + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + data[0] = (short) (dc * dequant[0]); + + // decode AC components, see JPEG spec + k = 1; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + j->code_buffer <<= s; + j->code_bits -= s; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) * dequant[zig]); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (rs != 0xf0) break; // end block + k += 16; + } else { + k += r; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]); + } + } + } while (k < 64); + return 1; +} + +static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b) +{ + int diff,dc; + int t; + if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + if (j->succ_high == 0) { + // first scan for DC coefficient, must be first + memset(data,0,64*sizeof(data[0])); // 0 all the ac values now + t = stbi__jpeg_huff_decode(j, hdc); + diff = t ? stbi__extend_receive(j, t) : 0; + + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + data[0] = (short) (dc << j->succ_low); + } else { + // refinement scan for DC coefficient + if (stbi__jpeg_get_bit(j)) + data[0] += (short) (1 << j->succ_low); + } + return 1; +} + +// @OPTIMIZE: store non-zigzagged during the decode passes, +// and only de-zigzag when dequantizing +static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, stbi__int16 *fac) +{ + int k; + if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->succ_high == 0) { + int shift = j->succ_low; + + if (j->eob_run) { + --j->eob_run; + return 1; + } + + k = j->spec_start; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + j->code_buffer <<= s; + j->code_bits -= s; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) << shift); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r); + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + --j->eob_run; + break; + } + k += 16; + } else { + k += r; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) << shift); + } + } + } while (k <= j->spec_end); + } else { + // refinement scan for these AC coefficients + + short bit = (short) (1 << j->succ_low); + + if (j->eob_run) { + --j->eob_run; + for (k = j->spec_start; k <= j->spec_end; ++k) { + short *p = &data[stbi__jpeg_dezigzag[k]]; + if (*p != 0) + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } + } else { + k = j->spec_start; + do { + int r,s; + int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r) - 1; + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + r = 64; // force end of block + } else { + // r=15 s=0 should write 16 0s, so we just do + // a run of 15 0s and then write s (which is 0), + // so we don't have to do anything special here + } + } else { + if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); + // sign bit + if (stbi__jpeg_get_bit(j)) + s = bit; + else + s = -bit; + } + + // advance by r + while (k <= j->spec_end) { + short *p = &data[stbi__jpeg_dezigzag[k++]]; + if (*p != 0) { + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } else { + if (r == 0) { + *p = (short) s; + break; + } + --r; + } + } + } while (k <= j->spec_end); + } + } + return 1; +} + +// take a -128..127 value and stbi__clamp it and convert to 0..255 +stbi_inline static stbi_uc stbi__clamp(int x) +{ + // trick to use a single test to catch both cases + if ((unsigned int) x > 255) { + if (x < 0) return 0; + if (x > 255) return 255; + } + return (stbi_uc) x; +} + +#define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +#define stbi__fsh(x) ((x) * 4096) + +// derived from jidctint -- DCT_ISLOW +#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ + int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ + p2 = s2; \ + p3 = s6; \ + p1 = (p2+p3) * stbi__f2f(0.5411961f); \ + t2 = p1 + p3*stbi__f2f(-1.847759065f); \ + t3 = p1 + p2*stbi__f2f( 0.765366865f); \ + p2 = s0; \ + p3 = s4; \ + t0 = stbi__fsh(p2+p3); \ + t1 = stbi__fsh(p2-p3); \ + x0 = t0+t3; \ + x3 = t0-t3; \ + x1 = t1+t2; \ + x2 = t1-t2; \ + t0 = s7; \ + t1 = s5; \ + t2 = s3; \ + t3 = s1; \ + p3 = t0+t2; \ + p4 = t1+t3; \ + p1 = t0+t3; \ + p2 = t1+t2; \ + p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ + t0 = t0*stbi__f2f( 0.298631336f); \ + t1 = t1*stbi__f2f( 2.053119869f); \ + t2 = t2*stbi__f2f( 3.072711026f); \ + t3 = t3*stbi__f2f( 1.501321110f); \ + p1 = p5 + p1*stbi__f2f(-0.899976223f); \ + p2 = p5 + p2*stbi__f2f(-2.562915447f); \ + p3 = p3*stbi__f2f(-1.961570560f); \ + p4 = p4*stbi__f2f(-0.390180644f); \ + t3 += p1+p4; \ + t2 += p2+p3; \ + t1 += p2+p4; \ + t0 += p1+p3; + +static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64]) +{ + int i,val[64],*v=val; + stbi_uc *o; + short *d = data; + + // columns + for (i=0; i < 8; ++i,++d, ++v) { + // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing + if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0 + && d[40]==0 && d[48]==0 && d[56]==0) { + // no shortcut 0 seconds + // (1|2|3|4|5|6|7)==0 0 seconds + // all separate -0.047 seconds + // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds + int dcterm = d[0]*4; + v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; + } else { + STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56]) + // constants scaled things up by 1<<12; let's bring them back + // down, but keep 2 extra bits of precision + x0 += 512; x1 += 512; x2 += 512; x3 += 512; + v[ 0] = (x0+t3) >> 10; + v[56] = (x0-t3) >> 10; + v[ 8] = (x1+t2) >> 10; + v[48] = (x1-t2) >> 10; + v[16] = (x2+t1) >> 10; + v[40] = (x2-t1) >> 10; + v[24] = (x3+t0) >> 10; + v[32] = (x3-t0) >> 10; + } + } + + for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) { + // no fast case since the first 1D IDCT spread components out + STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7]) + // constants scaled things up by 1<<12, plus we had 1<<2 from first + // loop, plus horizontal and vertical each scale by sqrt(8) so together + // we've got an extra 1<<3, so 1<<17 total we need to remove. + // so we want to round that, which means adding 0.5 * 1<<17, + // aka 65536. Also, we'll end up with -128 to 127 that we want + // to encode as 0..255 by adding 128, so we'll add that before the shift + x0 += 65536 + (128<<17); + x1 += 65536 + (128<<17); + x2 += 65536 + (128<<17); + x3 += 65536 + (128<<17); + // tried computing the shifts into temps, or'ing the temps to see + // if any were out of range, but that was slower + o[0] = stbi__clamp((x0+t3) >> 17); + o[7] = stbi__clamp((x0-t3) >> 17); + o[1] = stbi__clamp((x1+t2) >> 17); + o[6] = stbi__clamp((x1-t2) >> 17); + o[2] = stbi__clamp((x2+t1) >> 17); + o[5] = stbi__clamp((x2-t1) >> 17); + o[3] = stbi__clamp((x3+t0) >> 17); + o[4] = stbi__clamp((x3-t0) >> 17); + } +} + +#ifdef STBI_SSE2 +// sse2 integer IDCT. not the fastest possible implementation but it +// produces bit-identical results to the generic C version so it's +// fully "transparent". +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + // This is constructed to match our regular (generic) integer IDCT exactly. + __m128i row0, row1, row2, row3, row4, row5, row6, row7; + __m128i tmp; + + // dot product constant: even elems=x, odd elems=y + #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) + + // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) + // out(1) = c1[even]*x + c1[odd]*y + #define dct_rot(out0,out1, x,y,c0,c1) \ + __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ + __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ + __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ + __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ + __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ + __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) + + // out = in << 12 (in 16-bit, out 32-bit) + #define dct_widen(out, in) \ + __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ + __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) + + // wide add + #define dct_wadd(out, a, b) \ + __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_add_epi32(a##_h, b##_h) + + // wide sub + #define dct_wsub(out, a, b) \ + __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) + + // butterfly a/b, add bias, then shift by "s" and pack + #define dct_bfly32o(out0, out1, a,b,bias,s) \ + { \ + __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ + __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ + dct_wadd(sum, abiased, b); \ + dct_wsub(dif, abiased, b); \ + out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ + out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ + } + + // 8-bit interleave step (for transposes) + #define dct_interleave8(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi8(a, b); \ + b = _mm_unpackhi_epi8(tmp, b) + + // 16-bit interleave step (for transposes) + #define dct_interleave16(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi16(a, b); \ + b = _mm_unpackhi_epi16(tmp, b) + + #define dct_pass(bias,shift) \ + { \ + /* even part */ \ + dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ + __m128i sum04 = _mm_add_epi16(row0, row4); \ + __m128i dif04 = _mm_sub_epi16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ + dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ + __m128i sum17 = _mm_add_epi16(row1, row7); \ + __m128i sum35 = _mm_add_epi16(row3, row5); \ + dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ + dct_wadd(x4, y0o, y4o); \ + dct_wadd(x5, y1o, y5o); \ + dct_wadd(x6, y2o, y5o); \ + dct_wadd(x7, y3o, y4o); \ + dct_bfly32o(row0,row7, x0,x7,bias,shift); \ + dct_bfly32o(row1,row6, x1,x6,bias,shift); \ + dct_bfly32o(row2,row5, x2,x5,bias,shift); \ + dct_bfly32o(row3,row4, x3,x4,bias,shift); \ + } + + __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); + __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f)); + __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); + __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); + __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f)); + __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f)); + __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f)); + __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f)); + + // rounding biases in column/row passes, see stbi__idct_block for explanation. + __m128i bias_0 = _mm_set1_epi32(512); + __m128i bias_1 = _mm_set1_epi32(65536 + (128<<17)); + + // load + row0 = _mm_load_si128((const __m128i *) (data + 0*8)); + row1 = _mm_load_si128((const __m128i *) (data + 1*8)); + row2 = _mm_load_si128((const __m128i *) (data + 2*8)); + row3 = _mm_load_si128((const __m128i *) (data + 3*8)); + row4 = _mm_load_si128((const __m128i *) (data + 4*8)); + row5 = _mm_load_si128((const __m128i *) (data + 5*8)); + row6 = _mm_load_si128((const __m128i *) (data + 6*8)); + row7 = _mm_load_si128((const __m128i *) (data + 7*8)); + + // column pass + dct_pass(bias_0, 10); + + { + // 16bit 8x8 transpose pass 1 + dct_interleave16(row0, row4); + dct_interleave16(row1, row5); + dct_interleave16(row2, row6); + dct_interleave16(row3, row7); + + // transpose pass 2 + dct_interleave16(row0, row2); + dct_interleave16(row1, row3); + dct_interleave16(row4, row6); + dct_interleave16(row5, row7); + + // transpose pass 3 + dct_interleave16(row0, row1); + dct_interleave16(row2, row3); + dct_interleave16(row4, row5); + dct_interleave16(row6, row7); + } + + // row pass + dct_pass(bias_1, 17); + + { + // pack + __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 + __m128i p1 = _mm_packus_epi16(row2, row3); + __m128i p2 = _mm_packus_epi16(row4, row5); + __m128i p3 = _mm_packus_epi16(row6, row7); + + // 8bit 8x8 transpose pass 1 + dct_interleave8(p0, p2); // a0e0a1e1... + dct_interleave8(p1, p3); // c0g0c1g1... + + // transpose pass 2 + dct_interleave8(p0, p1); // a0c0e0g0... + dct_interleave8(p2, p3); // b0d0f0h0... + + // transpose pass 3 + dct_interleave8(p0, p2); // a0b0c0d0... + dct_interleave8(p1, p3); // a4b4c4d4... + + // store + _mm_storel_epi64((__m128i *) out, p0); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p2); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p1); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p3); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e)); + } + +#undef dct_const +#undef dct_rot +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_interleave8 +#undef dct_interleave16 +#undef dct_pass +} + +#endif // STBI_SSE2 + +#ifdef STBI_NEON + +// NEON integer IDCT. should produce bit-identical +// results to the generic C version. +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; + + int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); + int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); + int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f)); + int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f)); + int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); + int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); + int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); + int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); + int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f)); + int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f)); + int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f)); + int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f)); + +#define dct_long_mul(out, inq, coeff) \ + int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) + +#define dct_long_mac(out, acc, inq, coeff) \ + int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) + +#define dct_widen(out, inq) \ + int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ + int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) + +// wide add +#define dct_wadd(out, a, b) \ + int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vaddq_s32(a##_h, b##_h) + +// wide sub +#define dct_wsub(out, a, b) \ + int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vsubq_s32(a##_h, b##_h) + +// butterfly a/b, then shift using "shiftop" by "s" and pack +#define dct_bfly32o(out0,out1, a,b,shiftop,s) \ + { \ + dct_wadd(sum, a, b); \ + dct_wsub(dif, a, b); \ + out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ + out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ + } + +#define dct_pass(shiftop, shift) \ + { \ + /* even part */ \ + int16x8_t sum26 = vaddq_s16(row2, row6); \ + dct_long_mul(p1e, sum26, rot0_0); \ + dct_long_mac(t2e, p1e, row6, rot0_1); \ + dct_long_mac(t3e, p1e, row2, rot0_2); \ + int16x8_t sum04 = vaddq_s16(row0, row4); \ + int16x8_t dif04 = vsubq_s16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + int16x8_t sum15 = vaddq_s16(row1, row5); \ + int16x8_t sum17 = vaddq_s16(row1, row7); \ + int16x8_t sum35 = vaddq_s16(row3, row5); \ + int16x8_t sum37 = vaddq_s16(row3, row7); \ + int16x8_t sumodd = vaddq_s16(sum17, sum35); \ + dct_long_mul(p5o, sumodd, rot1_0); \ + dct_long_mac(p1o, p5o, sum17, rot1_1); \ + dct_long_mac(p2o, p5o, sum35, rot1_2); \ + dct_long_mul(p3o, sum37, rot2_0); \ + dct_long_mul(p4o, sum15, rot2_1); \ + dct_wadd(sump13o, p1o, p3o); \ + dct_wadd(sump24o, p2o, p4o); \ + dct_wadd(sump23o, p2o, p3o); \ + dct_wadd(sump14o, p1o, p4o); \ + dct_long_mac(x4, sump13o, row7, rot3_0); \ + dct_long_mac(x5, sump24o, row5, rot3_1); \ + dct_long_mac(x6, sump23o, row3, rot3_2); \ + dct_long_mac(x7, sump14o, row1, rot3_3); \ + dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ + dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ + dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ + dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ + } + + // load + row0 = vld1q_s16(data + 0*8); + row1 = vld1q_s16(data + 1*8); + row2 = vld1q_s16(data + 2*8); + row3 = vld1q_s16(data + 3*8); + row4 = vld1q_s16(data + 4*8); + row5 = vld1q_s16(data + 5*8); + row6 = vld1q_s16(data + 6*8); + row7 = vld1q_s16(data + 7*8); + + // add DC bias + row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); + + // column pass + dct_pass(vrshrn_n_s32, 10); + + // 16bit 8x8 transpose + { +// these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +// whether compilers actually get this is another story, sadly. +#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } + + // pass 1 + dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 + dct_trn16(row2, row3); + dct_trn16(row4, row5); + dct_trn16(row6, row7); + + // pass 2 + dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 + dct_trn32(row1, row3); + dct_trn32(row4, row6); + dct_trn32(row5, row7); + + // pass 3 + dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 + dct_trn64(row1, row5); + dct_trn64(row2, row6); + dct_trn64(row3, row7); + +#undef dct_trn16 +#undef dct_trn32 +#undef dct_trn64 + } + + // row pass + // vrshrn_n_s32 only supports shifts up to 16, we need + // 17. so do a non-rounding shift of 16 first then follow + // up with a rounding shift by 1. + dct_pass(vshrn_n_s32, 16); + + { + // pack and round + uint8x8_t p0 = vqrshrun_n_s16(row0, 1); + uint8x8_t p1 = vqrshrun_n_s16(row1, 1); + uint8x8_t p2 = vqrshrun_n_s16(row2, 1); + uint8x8_t p3 = vqrshrun_n_s16(row3, 1); + uint8x8_t p4 = vqrshrun_n_s16(row4, 1); + uint8x8_t p5 = vqrshrun_n_s16(row5, 1); + uint8x8_t p6 = vqrshrun_n_s16(row6, 1); + uint8x8_t p7 = vqrshrun_n_s16(row7, 1); + + // again, these can translate into one instruction, but often don't. +#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } + + // sadly can't use interleaved stores here since we only write + // 8 bytes to each scan line! + + // 8x8 8-bit transpose pass 1 + dct_trn8_8(p0, p1); + dct_trn8_8(p2, p3); + dct_trn8_8(p4, p5); + dct_trn8_8(p6, p7); + + // pass 2 + dct_trn8_16(p0, p2); + dct_trn8_16(p1, p3); + dct_trn8_16(p4, p6); + dct_trn8_16(p5, p7); + + // pass 3 + dct_trn8_32(p0, p4); + dct_trn8_32(p1, p5); + dct_trn8_32(p2, p6); + dct_trn8_32(p3, p7); + + // store + vst1_u8(out, p0); out += out_stride; + vst1_u8(out, p1); out += out_stride; + vst1_u8(out, p2); out += out_stride; + vst1_u8(out, p3); out += out_stride; + vst1_u8(out, p4); out += out_stride; + vst1_u8(out, p5); out += out_stride; + vst1_u8(out, p6); out += out_stride; + vst1_u8(out, p7); + +#undef dct_trn8_8 +#undef dct_trn8_16 +#undef dct_trn8_32 + } + +#undef dct_long_mul +#undef dct_long_mac +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_pass +} + +#endif // STBI_NEON + +#define STBI__MARKER_none 0xff +// if there's a pending marker from the entropy stream, return that +// otherwise, fetch from the stream and get a marker. if there's no +// marker, return 0xff, which is never a valid marker value +static stbi_uc stbi__get_marker(stbi__jpeg *j) +{ + stbi_uc x; + if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } + x = stbi__get8(j->s); + if (x != 0xff) return STBI__MARKER_none; + while (x == 0xff) + x = stbi__get8(j->s); // consume repeated 0xff fill bytes + return x; +} + +// in each scan, we'll have scan_n components, and the order +// of the components is specified by order[] +#define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) + +// after a restart interval, stbi__jpeg_reset the entropy decoder and +// the dc prediction +static void stbi__jpeg_reset(stbi__jpeg *j) +{ + j->code_bits = 0; + j->code_buffer = 0; + j->nomore = 0; + j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + j->marker = STBI__MARKER_none; + j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + j->eob_run = 0; + // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, + // since we don't even allow 1<<30 pixels +} + +static int stbi__parse_entropy_coded_data(stbi__jpeg *z) +{ + stbi__jpeg_reset(z); + if (!z->progressive) { + if (z->scan_n == 1) { + int i,j; + STBI_SIMD_ALIGN(short, data[64]); + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + // if it's NOT a restart, then just bail, so we get corrupt data + // rather than no data + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + STBI_SIMD_ALIGN(short, data[64]); + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x)*8; + int y2 = (j*z->img_comp[n].v + y)*8; + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data); + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } else { + if (z->scan_n == 1) { + int i,j; + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + if (z->spec_start == 0) { + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } else { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) + return 0; + } + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x); + int y2 = (j*z->img_comp[n].v + y); + short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } +} + +static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant) +{ + int i; + for (i=0; i < 64; ++i) + data[i] *= dequant[i]; +} + +static void stbi__jpeg_finish(stbi__jpeg *z) +{ + if (z->progressive) { + // dequantize and idct the data + int i,j,n; + for (n=0; n < z->s->img_n; ++n) { + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + } + } + } + } +} + +static int stbi__process_marker(stbi__jpeg *z, int m) +{ + int L; + switch (m) { + case STBI__MARKER_none: // no marker found + return stbi__err("expected marker","Corrupt JPEG"); + + case 0xDD: // DRI - specify restart interval + if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len","Corrupt JPEG"); + z->restart_interval = stbi__get16be(z->s); + return 1; + + case 0xDB: // DQT - define quantization table + L = stbi__get16be(z->s)-2; + while (L > 0) { + int q = stbi__get8(z->s); + int p = q >> 4, sixteen = (p != 0); + int t = q & 15,i; + if (p != 0 && p != 1) return stbi__err("bad DQT type","Corrupt JPEG"); + if (t > 3) return stbi__err("bad DQT table","Corrupt JPEG"); + + for (i=0; i < 64; ++i) + z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); + L -= (sixteen ? 129 : 65); + } + return L==0; + + case 0xC4: // DHT - define huffman table + L = stbi__get16be(z->s)-2; + while (L > 0) { + stbi_uc *v; + int sizes[16],i,n=0; + int q = stbi__get8(z->s); + int tc = q >> 4; + int th = q & 15; + if (tc > 1 || th > 3) return stbi__err("bad DHT header","Corrupt JPEG"); + for (i=0; i < 16; ++i) { + sizes[i] = stbi__get8(z->s); + n += sizes[i]; + } + L -= 17; + if (tc == 0) { + if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0; + v = z->huff_dc[th].values; + } else { + if (!stbi__build_huffman(z->huff_ac+th, sizes)) return 0; + v = z->huff_ac[th].values; + } + for (i=0; i < n; ++i) + v[i] = stbi__get8(z->s); + if (tc != 0) + stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); + L -= n; + } + return L==0; + } + + // check for comment block or APP blocks + if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { + L = stbi__get16be(z->s); + if (L < 2) { + if (m == 0xFE) + return stbi__err("bad COM len","Corrupt JPEG"); + else + return stbi__err("bad APP len","Corrupt JPEG"); + } + L -= 2; + + if (m == 0xE0 && L >= 5) { // JFIF APP0 segment + static const unsigned char tag[5] = {'J','F','I','F','\0'}; + int ok = 1; + int i; + for (i=0; i < 5; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 5; + if (ok) + z->jfif = 1; + } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment + static const unsigned char tag[6] = {'A','d','o','b','e','\0'}; + int ok = 1; + int i; + for (i=0; i < 6; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 6; + if (ok) { + stbi__get8(z->s); // version + stbi__get16be(z->s); // flags0 + stbi__get16be(z->s); // flags1 + z->app14_color_transform = stbi__get8(z->s); // color transform + L -= 6; + } + } + + stbi__skip(z->s, L); + return 1; + } + + return stbi__err("unknown marker","Corrupt JPEG"); +} + +// after we see SOS +static int stbi__process_scan_header(stbi__jpeg *z) +{ + int i; + int Ls = stbi__get16be(z->s); + z->scan_n = stbi__get8(z->s); + if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return stbi__err("bad SOS component count","Corrupt JPEG"); + if (Ls != 6+2*z->scan_n) return stbi__err("bad SOS len","Corrupt JPEG"); + for (i=0; i < z->scan_n; ++i) { + int id = stbi__get8(z->s), which; + int q = stbi__get8(z->s); + for (which = 0; which < z->s->img_n; ++which) + if (z->img_comp[which].id == id) + break; + if (which == z->s->img_n) return 0; // no match + z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff","Corrupt JPEG"); + z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff","Corrupt JPEG"); + z->order[i] = which; + } + + { + int aa; + z->spec_start = stbi__get8(z->s); + z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 + aa = stbi__get8(z->s); + z->succ_high = (aa >> 4); + z->succ_low = (aa & 15); + if (z->progressive) { + if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) + return stbi__err("bad SOS", "Corrupt JPEG"); + } else { + if (z->spec_start != 0) return stbi__err("bad SOS","Corrupt JPEG"); + if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS","Corrupt JPEG"); + z->spec_end = 63; + } + } + + return 1; +} + +static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why) +{ + int i; + for (i=0; i < ncomp; ++i) { + if (z->img_comp[i].raw_data) { + STBI_FREE(z->img_comp[i].raw_data); + z->img_comp[i].raw_data = NULL; + z->img_comp[i].data = NULL; + } + if (z->img_comp[i].raw_coeff) { + STBI_FREE(z->img_comp[i].raw_coeff); + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].coeff = 0; + } + if (z->img_comp[i].linebuf) { + STBI_FREE(z->img_comp[i].linebuf); + z->img_comp[i].linebuf = NULL; + } + } + return why; +} + +static int stbi__process_frame_header(stbi__jpeg *z, int scan) +{ + stbi__context *s = z->s; + int Lf,p,i,q, h_max=1,v_max=1,c; + Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len","Corrupt JPEG"); // JPEG + p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit","JPEG format not supported: 8-bit only"); // JPEG baseline + s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG + s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width","Corrupt JPEG"); // JPEG requires + c = stbi__get8(s); + if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count","Corrupt JPEG"); + s->img_n = c; + for (i=0; i < c; ++i) { + z->img_comp[i].data = NULL; + z->img_comp[i].linebuf = NULL; + } + + if (Lf != 8+3*s->img_n) return stbi__err("bad SOF len","Corrupt JPEG"); + + z->rgb = 0; + for (i=0; i < s->img_n; ++i) { + static const unsigned char rgb[3] = { 'R', 'G', 'B' }; + z->img_comp[i].id = stbi__get8(s); + if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) + ++z->rgb; + q = stbi__get8(s); + z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H","Corrupt JPEG"); + z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V","Corrupt JPEG"); + z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ","Corrupt JPEG"); + } + + if (scan != STBI__SCAN_load) return 1; + + if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); + + for (i=0; i < s->img_n; ++i) { + if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; + if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; + } + + // compute interleaved mcu info + z->img_h_max = h_max; + z->img_v_max = v_max; + z->img_mcu_w = h_max * 8; + z->img_mcu_h = v_max * 8; + // these sizes can't be more than 17 bits + z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w; + z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h; + + for (i=0; i < s->img_n; ++i) { + // number of effective pixels (e.g. for non-interleaved MCU) + z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max; + z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max; + // to simplify generation, we'll allocate enough memory to decode + // the bogus oversized data from using interleaved MCUs and their + // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't + // discard the extra data until colorspace conversion + // + // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) + // so these muls can't overflow with 32-bit ints (which we require) + z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; + z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; + z->img_comp[i].coeff = 0; + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].linebuf = NULL; + z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); + if (z->img_comp[i].raw_data == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + // align blocks for idct using mmx/sse + z->img_comp[i].data = (stbi_uc*) (((size_t) z->img_comp[i].raw_data + 15) & ~15); + if (z->progressive) { + // w2, h2 are multiples of 8 (see above) + z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; + z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; + z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); + if (z->img_comp[i].raw_coeff == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + z->img_comp[i].coeff = (short*) (((size_t) z->img_comp[i].raw_coeff + 15) & ~15); + } + } + + return 1; +} + +// use comparisons since in some cases we handle more than one case (e.g. SOF) +#define stbi__DNL(x) ((x) == 0xdc) +#define stbi__SOI(x) ((x) == 0xd8) +#define stbi__EOI(x) ((x) == 0xd9) +#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +#define stbi__SOS(x) ((x) == 0xda) + +#define stbi__SOF_progressive(x) ((x) == 0xc2) + +static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan) +{ + int m; + z->jfif = 0; + z->app14_color_transform = -1; // valid values are 0,1,2 + z->marker = STBI__MARKER_none; // initialize cached marker to empty + m = stbi__get_marker(z); + if (!stbi__SOI(m)) return stbi__err("no SOI","Corrupt JPEG"); + if (scan == STBI__SCAN_type) return 1; + m = stbi__get_marker(z); + while (!stbi__SOF(m)) { + if (!stbi__process_marker(z,m)) return 0; + m = stbi__get_marker(z); + while (m == STBI__MARKER_none) { + // some files have extra padding after their blocks, so ok, we'll scan + if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); + m = stbi__get_marker(z); + } + } + z->progressive = stbi__SOF_progressive(m); + if (!stbi__process_frame_header(z, scan)) return 0; + return 1; +} + +// decode image to YCbCr format +static int stbi__decode_jpeg_image(stbi__jpeg *j) +{ + int m; + for (m = 0; m < 4; m++) { + j->img_comp[m].raw_data = NULL; + j->img_comp[m].raw_coeff = NULL; + } + j->restart_interval = 0; + if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; + m = stbi__get_marker(j); + while (!stbi__EOI(m)) { + if (stbi__SOS(m)) { + if (!stbi__process_scan_header(j)) return 0; + if (!stbi__parse_entropy_coded_data(j)) return 0; + if (j->marker == STBI__MARKER_none ) { + // handle 0s at the end of image data from IP Kamera 9060 + while (!stbi__at_eof(j->s)) { + int x = stbi__get8(j->s); + if (x == 255) { + j->marker = stbi__get8(j->s); + break; + } + } + // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 + } + } else if (stbi__DNL(m)) { + int Ld = stbi__get16be(j->s); + stbi__uint32 NL = stbi__get16be(j->s); + if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); + if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); + } else { + if (!stbi__process_marker(j, m)) return 0; + } + m = stbi__get_marker(j); + } + if (j->progressive) + stbi__jpeg_finish(j); + return 1; +} + +// static jfif-centered resampling (across block boundaries) + +typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1, + int w, int hs); + +#define stbi__div4(x) ((stbi_uc) ((x) >> 2)) + +static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + STBI_NOTUSED(out); + STBI_NOTUSED(in_far); + STBI_NOTUSED(w); + STBI_NOTUSED(hs); + return in_near; +} + +static stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples vertically for every one in input + int i; + STBI_NOTUSED(hs); + for (i=0; i < w; ++i) + out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2); + return out; +} + +static stbi_uc* stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples horizontally for every one in input + int i; + stbi_uc *input = in_near; + + if (w == 1) { + // if only one sample, can't do any interpolation + out[0] = out[1] = input[0]; + return out; + } + + out[0] = input[0]; + out[1] = stbi__div4(input[0]*3 + input[1] + 2); + for (i=1; i < w-1; ++i) { + int n = 3*input[i]+2; + out[i*2+0] = stbi__div4(n+input[i-1]); + out[i*2+1] = stbi__div4(n+input[i+1]); + } + out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2); + out[i*2+1] = input[w-1]; + + STBI_NOTUSED(in_far); + STBI_NOTUSED(hs); + + return out; +} + +#define stbi__div16(x) ((stbi_uc) ((x) >> 4)) + +static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i,t0,t1; + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + out[0] = stbi__div4(t1+2); + for (i=1; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i=0,t0,t1; + + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + // process groups of 8 pixels for as long as we can. + // note we can't handle the last pixel in a row in this loop + // because we need to handle the filter boundary conditions. + for (; i < ((w-1) & ~7); i += 8) { +#if defined(STBI_SSE2) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + __m128i zero = _mm_setzero_si128(); + __m128i farb = _mm_loadl_epi64((__m128i *) (in_far + i)); + __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i)); + __m128i farw = _mm_unpacklo_epi8(farb, zero); + __m128i nearw = _mm_unpacklo_epi8(nearb, zero); + __m128i diff = _mm_sub_epi16(farw, nearw); + __m128i nears = _mm_slli_epi16(nearw, 2); + __m128i curr = _mm_add_epi16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + __m128i prv0 = _mm_slli_si128(curr, 2); + __m128i nxt0 = _mm_srli_si128(curr, 2); + __m128i prev = _mm_insert_epi16(prv0, t1, 0); + __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + __m128i bias = _mm_set1_epi16(8); + __m128i curs = _mm_slli_epi16(curr, 2); + __m128i prvd = _mm_sub_epi16(prev, curr); + __m128i nxtd = _mm_sub_epi16(next, curr); + __m128i curb = _mm_add_epi16(curs, bias); + __m128i even = _mm_add_epi16(prvd, curb); + __m128i odd = _mm_add_epi16(nxtd, curb); + + // interleave even and odd pixels, then undo scaling. + __m128i int0 = _mm_unpacklo_epi16(even, odd); + __m128i int1 = _mm_unpackhi_epi16(even, odd); + __m128i de0 = _mm_srli_epi16(int0, 4); + __m128i de1 = _mm_srli_epi16(int1, 4); + + // pack and write output + __m128i outv = _mm_packus_epi16(de0, de1); + _mm_storeu_si128((__m128i *) (out + i*2), outv); +#elif defined(STBI_NEON) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + uint8x8_t farb = vld1_u8(in_far + i); + uint8x8_t nearb = vld1_u8(in_near + i); + int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); + int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); + int16x8_t curr = vaddq_s16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + int16x8_t prv0 = vextq_s16(curr, curr, 7); + int16x8_t nxt0 = vextq_s16(curr, curr, 1); + int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); + int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + int16x8_t curs = vshlq_n_s16(curr, 2); + int16x8_t prvd = vsubq_s16(prev, curr); + int16x8_t nxtd = vsubq_s16(next, curr); + int16x8_t even = vaddq_s16(curs, prvd); + int16x8_t odd = vaddq_s16(curs, nxtd); + + // undo scaling and round, then store with even/odd phases interleaved + uint8x8x2_t o; + o.val[0] = vqrshrun_n_s16(even, 4); + o.val[1] = vqrshrun_n_s16(odd, 4); + vst2_u8(out + i*2, o); +#endif + + // "previous" value for next iter + t1 = 3*in_near[i+7] + in_far[i+7]; + } + + t0 = t1; + t1 = 3*in_near[i] + in_far[i]; + out[i*2] = stbi__div16(3*t1 + t0 + 8); + + for (++i; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} +#endif + +static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // resample with nearest-neighbor + int i,j; + STBI_NOTUSED(in_far); + for (i=0; i < w; ++i) + for (j=0; j < hs; ++j) + out[i*hs+j] = in_near[i]; + return out; +} + +// this is a reduced-precision calculation of YCbCr-to-RGB introduced +// to make sure the code produces the same results in both SIMD and scalar +#define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step) +{ + int i; + for (i=0; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + (cr*-stbi__float2fixed(0.71414f)) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step) +{ + int i = 0; + +#ifdef STBI_SSE2 + // step == 3 is pretty ugly on the final interleave, and i'm not convinced + // it's useful in practice (you wouldn't use it for textures, for example). + // so just accelerate step == 4 case. + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + __m128i signflip = _mm_set1_epi8(-0x80); + __m128i cr_const0 = _mm_set1_epi16( (short) ( 1.40200f*4096.0f+0.5f)); + __m128i cr_const1 = _mm_set1_epi16( - (short) ( 0.71414f*4096.0f+0.5f)); + __m128i cb_const0 = _mm_set1_epi16( - (short) ( 0.34414f*4096.0f+0.5f)); + __m128i cb_const1 = _mm_set1_epi16( (short) ( 1.77200f*4096.0f+0.5f)); + __m128i y_bias = _mm_set1_epi8((char) (unsigned char) 128); + __m128i xw = _mm_set1_epi16(255); // alpha channel + + for (; i+7 < count; i += 8) { + // load + __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i)); + __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i)); + __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i)); + __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 + __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 + + // unpack to short (and left-shift cr, cb by 8) + __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); + __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); + __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); + + // color transform + __m128i yws = _mm_srli_epi16(yw, 4); + __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); + __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); + __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); + __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); + __m128i rws = _mm_add_epi16(cr0, yws); + __m128i gwt = _mm_add_epi16(cb0, yws); + __m128i bws = _mm_add_epi16(yws, cb1); + __m128i gws = _mm_add_epi16(gwt, cr1); + + // descale + __m128i rw = _mm_srai_epi16(rws, 4); + __m128i bw = _mm_srai_epi16(bws, 4); + __m128i gw = _mm_srai_epi16(gws, 4); + + // back to byte, set up for transpose + __m128i brb = _mm_packus_epi16(rw, bw); + __m128i gxb = _mm_packus_epi16(gw, xw); + + // transpose to interleave channels + __m128i t0 = _mm_unpacklo_epi8(brb, gxb); + __m128i t1 = _mm_unpackhi_epi8(brb, gxb); + __m128i o0 = _mm_unpacklo_epi16(t0, t1); + __m128i o1 = _mm_unpackhi_epi16(t0, t1); + + // store + _mm_storeu_si128((__m128i *) (out + 0), o0); + _mm_storeu_si128((__m128i *) (out + 16), o1); + out += 32; + } + } +#endif + +#ifdef STBI_NEON + // in this version, step=3 support would be easy to add. but is there demand? + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + uint8x8_t signflip = vdup_n_u8(0x80); + int16x8_t cr_const0 = vdupq_n_s16( (short) ( 1.40200f*4096.0f+0.5f)); + int16x8_t cr_const1 = vdupq_n_s16( - (short) ( 0.71414f*4096.0f+0.5f)); + int16x8_t cb_const0 = vdupq_n_s16( - (short) ( 0.34414f*4096.0f+0.5f)); + int16x8_t cb_const1 = vdupq_n_s16( (short) ( 1.77200f*4096.0f+0.5f)); + + for (; i+7 < count; i += 8) { + // load + uint8x8_t y_bytes = vld1_u8(y + i); + uint8x8_t cr_bytes = vld1_u8(pcr + i); + uint8x8_t cb_bytes = vld1_u8(pcb + i); + int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); + int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); + + // expand to s16 + int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); + int16x8_t crw = vshll_n_s8(cr_biased, 7); + int16x8_t cbw = vshll_n_s8(cb_biased, 7); + + // color transform + int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); + int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); + int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); + int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); + int16x8_t rws = vaddq_s16(yws, cr0); + int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); + int16x8_t bws = vaddq_s16(yws, cb1); + + // undo scaling, round, convert to byte + uint8x8x4_t o; + o.val[0] = vqrshrun_n_s16(rws, 4); + o.val[1] = vqrshrun_n_s16(gws, 4); + o.val[2] = vqrshrun_n_s16(bws, 4); + o.val[3] = vdup_n_u8(255); + + // store, interleaving r/g/b/a + vst4_u8(out, o); + out += 8*4; + } + } +#endif + + for (; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + cr*-stbi__float2fixed(0.71414f) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} +#endif + +// set up the kernels +static void stbi__setup_jpeg(stbi__jpeg *j) +{ + j->idct_block_kernel = stbi__idct_block; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + +#ifdef STBI_SSE2 + if (stbi__sse2_available()) { + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + } +#endif + +#ifdef STBI_NEON + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +#endif +} + +// clean up the temporary component buffers +static void stbi__cleanup_jpeg(stbi__jpeg *j) +{ + stbi__free_jpeg_components(j, j->s->img_n, 0); +} + +typedef struct +{ + resample_row_func resample; + stbi_uc *line0,*line1; + int hs,vs; // expansion factor in each axis + int w_lores; // horizontal pixels pre-expansion + int ystep; // how far through vertical expansion we are + int ypos; // which pre-expansion row we're on +} stbi__resample; + +// fast 0..255 * 0..255 => 0..255 rounded multiplication +static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +{ + unsigned int t = x*y + 128; + return (stbi_uc) ((t + (t >>8)) >> 8); +} + +static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp) +{ + int n, decode_n, is_rgb; + z->s->img_n = 0; // make stbi__cleanup_jpeg safe + + // validate req_comp + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + + // load a jpeg image from whichever source, but leave in YCbCr format + if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } + + // determine actual number of components to generate + n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; + + is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); + + if (z->s->img_n == 3 && n < 3 && !is_rgb) + decode_n = 1; + else + decode_n = z->s->img_n; + + // resample and color-convert + { + int k; + unsigned int i,j; + stbi_uc *output; + stbi_uc *coutput[4]; + + stbi__resample res_comp[4]; + + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + + // allocate line buffer big enough for upsampling off the edges + // with upsample factor of 4 + z->img_comp[k].linebuf = (stbi_uc *) stbi__malloc(z->s->img_x + 3); + if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + r->hs = z->img_h_max / z->img_comp[k].h; + r->vs = z->img_v_max / z->img_comp[k].v; + r->ystep = r->vs >> 1; + r->w_lores = (z->s->img_x + r->hs-1) / r->hs; + r->ypos = 0; + r->line0 = r->line1 = z->img_comp[k].data; + + if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; + else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; + else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; + else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; + else r->resample = stbi__resample_row_generic; + } + + // can't error after this so, this is safe + output = (stbi_uc *) stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); + if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + // now go ahead and resample + for (j=0; j < z->s->img_y; ++j) { + stbi_uc *out = output + n * z->s->img_x * j; + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + int y_bot = r->ystep >= (r->vs >> 1); + coutput[k] = r->resample(z->img_comp[k].linebuf, + y_bot ? r->line1 : r->line0, + y_bot ? r->line0 : r->line1, + r->w_lores, r->hs); + if (++r->ystep >= r->vs) { + r->ystep = 0; + r->line0 = r->line1; + if (++r->ypos < z->img_comp[k].y) + r->line1 += z->img_comp[k].w2; + } + } + if (n >= 3) { + stbi_uc *y = coutput[0]; + if (z->s->img_n == 3) { + if (is_rgb) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = y[i]; + out[1] = coutput[1][i]; + out[2] = coutput[2][i]; + out[3] = 255; + out += n; + } + } else { + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else if (z->s->img_n == 4) { + if (z->app14_color_transform == 0) { // CMYK + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(coutput[0][i], m); + out[1] = stbi__blinn_8x8(coutput[1][i], m); + out[2] = stbi__blinn_8x8(coutput[2][i], m); + out[3] = 255; + out += n; + } + } else if (z->app14_color_transform == 2) { // YCCK + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(255 - out[0], m); + out[1] = stbi__blinn_8x8(255 - out[1], m); + out[2] = stbi__blinn_8x8(255 - out[2], m); + out += n; + } + } else { // YCbCr + alpha? Ignore the fourth channel for now + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else + for (i=0; i < z->s->img_x; ++i) { + out[0] = out[1] = out[2] = y[i]; + out[3] = 255; // not used if n==3 + out += n; + } + } else { + if (is_rgb) { + if (n == 1) + for (i=0; i < z->s->img_x; ++i) + *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + else { + for (i=0; i < z->s->img_x; ++i, out += 2) { + out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + out[1] = 255; + } + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 0) { + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); + stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); + stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); + out[0] = stbi__compute_y(r, g, b); + out[1] = 255; + out += n; + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 2) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); + out[1] = 255; + out += n; + } + } else { + stbi_uc *y = coutput[0]; + if (n == 1) + for (i=0; i < z->s->img_x; ++i) out[i] = y[i]; + else + for (i=0; i < z->s->img_x; ++i) *out++ = y[i], *out++ = 255; + } + } + } + stbi__cleanup_jpeg(z); + *out_x = z->s->img_x; + *out_y = z->s->img_y; + if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output + return output; + } +} + +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + unsigned char* result; + stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg)); + STBI_NOTUSED(ri); + j->s = s; + stbi__setup_jpeg(j); + result = load_jpeg_image(j, x,y,comp,req_comp); + STBI_FREE(j); + return result; +} + +static int stbi__jpeg_test(stbi__context *s) +{ + int r; + stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); + j->s = s; + stbi__setup_jpeg(j); + r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + stbi__rewind(s); + STBI_FREE(j); + return r; +} + +static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) +{ + if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { + stbi__rewind( j->s ); + return 0; + } + if (x) *x = j->s->img_x; + if (y) *y = j->s->img_y; + if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; + return 1; +} + +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) +{ + int result; + stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg))); + j->s = s; + result = stbi__jpeg_info_raw(j, x, y, comp); + STBI_FREE(j); + return result; +} +#endif + +// public domain zlib decode v0.2 Sean Barrett 2006-11-18 +// simple implementation +// - all input must be provided in an upfront buffer +// - all output is written to a single output buffer (can malloc/realloc) +// performance +// - fast huffman + +#ifndef STBI_NO_ZLIB + +// fast-way is faster to check than jpeg huffman, but slow way is slower +#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +#define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) + +// zlib-style huffman encoding +// (jpegs packs from left, zlib from right, so can't share code) +typedef struct +{ + stbi__uint16 fast[1 << STBI__ZFAST_BITS]; + stbi__uint16 firstcode[16]; + int maxcode[17]; + stbi__uint16 firstsymbol[16]; + stbi_uc size[288]; + stbi__uint16 value[288]; +} stbi__zhuffman; + +stbi_inline static int stbi__bitreverse16(int n) +{ + n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + return n; +} + +stbi_inline static int stbi__bit_reverse(int v, int bits) +{ + STBI_ASSERT(bits <= 16); + // to bit reverse n bits, reverse 16 and shift + // e.g. 11 bits, bit reverse and shift away 5 + return stbi__bitreverse16(v) >> (16-bits); +} + +static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num) +{ + int i,k=0; + int code, next_code[16], sizes[17]; + + // DEFLATE spec for generating codes + memset(sizes, 0, sizeof(sizes)); + memset(z->fast, 0, sizeof(z->fast)); + for (i=0; i < num; ++i) + ++sizes[sizelist[i]]; + sizes[0] = 0; + for (i=1; i < 16; ++i) + if (sizes[i] > (1 << i)) + return stbi__err("bad sizes", "Corrupt PNG"); + code = 0; + for (i=1; i < 16; ++i) { + next_code[i] = code; + z->firstcode[i] = (stbi__uint16) code; + z->firstsymbol[i] = (stbi__uint16) k; + code = (code + sizes[i]); + if (sizes[i]) + if (code-1 >= (1 << i)) return stbi__err("bad codelengths","Corrupt PNG"); + z->maxcode[i] = code << (16-i); // preshift for inner loop + code <<= 1; + k += sizes[i]; + } + z->maxcode[16] = 0x10000; // sentinel + for (i=0; i < num; ++i) { + int s = sizelist[i]; + if (s) { + int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; + stbi__uint16 fastv = (stbi__uint16) ((s << 9) | i); + z->size [c] = (stbi_uc ) s; + z->value[c] = (stbi__uint16) i; + if (s <= STBI__ZFAST_BITS) { + int j = stbi__bit_reverse(next_code[s],s); + while (j < (1 << STBI__ZFAST_BITS)) { + z->fast[j] = fastv; + j += (1 << s); + } + } + ++next_code[s]; + } + } + return 1; +} + +// zlib-from-memory implementation for PNG reading +// because PNG allows splitting the zlib stream arbitrarily, +// and it's annoying structurally to have PNG call ZLIB call PNG, +// we require PNG read all the IDATs and combine them into a single +// memory buffer + +typedef struct +{ + stbi_uc *zbuffer, *zbuffer_end; + int num_bits; + stbi__uint32 code_buffer; + + char *zout; + char *zout_start; + char *zout_end; + int z_expandable; + + stbi__zhuffman z_length, z_distance; +} stbi__zbuf; + +stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z) +{ + if (z->zbuffer >= z->zbuffer_end) return 0; + return *z->zbuffer++; +} + +static void stbi__fill_bits(stbi__zbuf *z) +{ + do { + STBI_ASSERT(z->code_buffer < (1U << z->num_bits)); + z->code_buffer |= (unsigned int) stbi__zget8(z) << z->num_bits; + z->num_bits += 8; + } while (z->num_bits <= 24); +} + +stbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n) +{ + unsigned int k; + if (z->num_bits < n) stbi__fill_bits(z); + k = z->code_buffer & ((1 << n) - 1); + z->code_buffer >>= n; + z->num_bits -= n; + return k; +} + +static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s,k; + // not resolved by fast table, so compute it the slow way + // use jpeg approach, which requires MSbits at top + k = stbi__bit_reverse(a->code_buffer, 16); + for (s=STBI__ZFAST_BITS+1; ; ++s) + if (k < z->maxcode[s]) + break; + if (s == 16) return -1; // invalid code! + // code size is s, so: + b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s]; + STBI_ASSERT(z->size[b] == s); + a->code_buffer >>= s; + a->num_bits -= s; + return z->value[b]; +} + +stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s; + if (a->num_bits < 16) stbi__fill_bits(a); + b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + if (b) { + s = b >> 9; + a->code_buffer >>= s; + a->num_bits -= s; + return b & 511; + } + return stbi__zhuffman_decode_slowpath(a, z); +} + +static int stbi__zexpand(stbi__zbuf *z, char *zout, int n) // need to make room for n bytes +{ + char *q; + int cur, limit, old_limit; + z->zout = zout; + if (!z->z_expandable) return stbi__err("output buffer limit","Corrupt PNG"); + cur = (int) (z->zout - z->zout_start); + limit = old_limit = (int) (z->zout_end - z->zout_start); + while (cur + n > limit) + limit *= 2; + q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); + STBI_NOTUSED(old_limit); + if (q == NULL) return stbi__err("outofmem", "Out of memory"); + z->zout_start = q; + z->zout = q + cur; + z->zout_end = q + limit; + return 1; +} + +static const int stbi__zlength_base[31] = { + 3,4,5,6,7,8,9,10,11,13, + 15,17,19,23,27,31,35,43,51,59, + 67,83,99,115,131,163,195,227,258,0,0 }; + +static const int stbi__zlength_extra[31]= +{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; + +static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0}; + +static const int stbi__zdist_extra[32] = +{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; + +static int stbi__parse_huffman_block(stbi__zbuf *a) +{ + char *zout = a->zout; + for(;;) { + int z = stbi__zhuffman_decode(a, &a->z_length); + if (z < 256) { + if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); // error in huffman codes + if (zout >= a->zout_end) { + if (!stbi__zexpand(a, zout, 1)) return 0; + zout = a->zout; + } + *zout++ = (char) z; + } else { + stbi_uc *p; + int len,dist; + if (z == 256) { + a->zout = zout; + return 1; + } + z -= 257; + len = stbi__zlength_base[z]; + if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); + z = stbi__zhuffman_decode(a, &a->z_distance); + if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); + dist = stbi__zdist_base[z]; + if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); + if (zout - a->zout_start < dist) return stbi__err("bad dist","Corrupt PNG"); + if (zout + len > a->zout_end) { + if (!stbi__zexpand(a, zout, len)) return 0; + zout = a->zout; + } + p = (stbi_uc *) (zout - dist); + if (dist == 1) { // run of one byte; common in images. + stbi_uc v = *p; + if (len) { do *zout++ = v; while (--len); } + } else { + if (len) { do *zout++ = *p++; while (--len); } + } + } + } +} + +static int stbi__compute_huffman_codes(stbi__zbuf *a) +{ + static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; + stbi__zhuffman z_codelength; + stbi_uc lencodes[286+32+137];//padding for maximum single op + stbi_uc codelength_sizes[19]; + int i,n; + + int hlit = stbi__zreceive(a,5) + 257; + int hdist = stbi__zreceive(a,5) + 1; + int hclen = stbi__zreceive(a,4) + 4; + int ntot = hlit + hdist; + + memset(codelength_sizes, 0, sizeof(codelength_sizes)); + for (i=0; i < hclen; ++i) { + int s = stbi__zreceive(a,3); + codelength_sizes[length_dezigzag[i]] = (stbi_uc) s; + } + if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; + + n = 0; + while (n < ntot) { + int c = stbi__zhuffman_decode(a, &z_codelength); + if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); + if (c < 16) + lencodes[n++] = (stbi_uc) c; + else { + stbi_uc fill = 0; + if (c == 16) { + c = stbi__zreceive(a,2)+3; + if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); + fill = lencodes[n-1]; + } else if (c == 17) + c = stbi__zreceive(a,3)+3; + else { + STBI_ASSERT(c == 18); + c = stbi__zreceive(a,7)+11; + } + if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); + memset(lencodes+n, fill, c); + n += c; + } + } + if (n != ntot) return stbi__err("bad codelengths","Corrupt PNG"); + if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0; + return 1; +} + +static int stbi__parse_uncompressed_block(stbi__zbuf *a) +{ + stbi_uc header[4]; + int len,nlen,k; + if (a->num_bits & 7) + stbi__zreceive(a, a->num_bits & 7); // discard + // drain the bit-packed data into header + k = 0; + while (a->num_bits > 0) { + header[k++] = (stbi_uc) (a->code_buffer & 255); // suppress MSVC run-time check + a->code_buffer >>= 8; + a->num_bits -= 8; + } + STBI_ASSERT(a->num_bits == 0); + // now fill header the normal way + while (k < 4) + header[k++] = stbi__zget8(a); + len = header[1] * 256 + header[0]; + nlen = header[3] * 256 + header[2]; + if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt","Corrupt PNG"); + if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer","Corrupt PNG"); + if (a->zout + len > a->zout_end) + if (!stbi__zexpand(a, a->zout, len)) return 0; + memcpy(a->zout, a->zbuffer, len); + a->zbuffer += len; + a->zout += len; + return 1; +} + +static int stbi__parse_zlib_header(stbi__zbuf *a) +{ + int cmf = stbi__zget8(a); + int cm = cmf & 15; + /* int cinfo = cmf >> 4; */ + int flg = stbi__zget8(a); + if ((cmf*256+flg) % 31 != 0) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec + if (flg & 32) return stbi__err("no preset dict","Corrupt PNG"); // preset dictionary not allowed in png + if (cm != 8) return stbi__err("bad compression","Corrupt PNG"); // DEFLATE required for png + // window = 1 << (8 + cinfo)... but who cares, we fully buffer output + return 1; +} + +static const stbi_uc stbi__zdefault_length[288] = +{ + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +}; +static const stbi_uc stbi__zdefault_distance[32] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +}; +/* +Init algorithm: +{ + int i; // use <= to match clearly with spec + for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; + for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; + for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; + for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; + + for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +} +*/ + +static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) +{ + int final, type; + if (parse_header) + if (!stbi__parse_zlib_header(a)) return 0; + a->num_bits = 0; + a->code_buffer = 0; + do { + final = stbi__zreceive(a,1); + type = stbi__zreceive(a,2); + if (type == 0) { + if (!stbi__parse_uncompressed_block(a)) return 0; + } else if (type == 3) { + return 0; + } else { + if (type == 1) { + // use fixed code lengths + if (!stbi__zbuild_huffman(&a->z_length , stbi__zdefault_length , 288)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; + } else { + if (!stbi__compute_huffman_codes(a)) return 0; + } + if (!stbi__parse_huffman_block(a)) return 0; + } + } while (!final); + return 1; +} + +static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header) +{ + a->zout_start = obuf; + a->zout = obuf; + a->zout_end = obuf + olen; + a->z_expandable = exp; + + return stbi__parse_zlib(a, parse_header); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen) +{ + return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) + return (int) (a.zout - a.zout_start); + else + return -1; +} + +STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(16384); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer+len; + if (stbi__do_zlib(&a, p, 16384, 1, 0)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) + return (int) (a.zout - a.zout_start); + else + return -1; +} +#endif + +// public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +// simple implementation +// - only 8-bit samples +// - no CRC checking +// - allocates lots of intermediate memory +// - avoids problem of streaming data between subsystems +// - avoids explicit window management +// performance +// - uses stb_zlib, a PD zlib implementation with fast huffman decoding + +#ifndef STBI_NO_PNG +typedef struct +{ + stbi__uint32 length; + stbi__uint32 type; +} stbi__pngchunk; + +static stbi__pngchunk stbi__get_chunk_header(stbi__context *s) +{ + stbi__pngchunk c; + c.length = stbi__get32be(s); + c.type = stbi__get32be(s); + return c; +} + +static int stbi__check_png_header(stbi__context *s) +{ + static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; + int i; + for (i=0; i < 8; ++i) + if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig","Not a PNG"); + return 1; +} + +typedef struct +{ + stbi__context *s; + stbi_uc *idata, *expanded, *out; + int depth; +} stbi__png; + + +enum { + STBI__F_none=0, + STBI__F_sub=1, + STBI__F_up=2, + STBI__F_avg=3, + STBI__F_paeth=4, + // synthetic filters used for first scanline to avoid needing a dummy row of 0s + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static stbi_uc first_row_filter[5] = +{ + STBI__F_none, + STBI__F_sub, + STBI__F_none, + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static int stbi__paeth(int a, int b, int c) +{ + int p = a + b - c; + int pa = abs(p-a); + int pb = abs(p-b); + int pc = abs(p-c); + if (pa <= pb && pa <= pc) return a; + if (pb <= pc) return b; + return c; +} + +static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; + +// create the png data from post-deflated data +static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +{ + int bytes = (depth == 16? 2 : 1); + stbi__context *s = a->s; + stbi__uint32 i,j,stride = x*out_n*bytes; + stbi__uint32 img_len, img_width_bytes; + int k; + int img_n = s->img_n; // copy it into a local for later + + int output_bytes = out_n*bytes; + int filter_bytes = img_n*bytes; + int width = x; + + STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1); + a->out = (stbi_uc *) stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into + if (!a->out) return stbi__err("outofmem", "Out of memory"); + + if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); + img_width_bytes = (((img_n * x * depth) + 7) >> 3); + img_len = (img_width_bytes + 1) * y; + + // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, + // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), + // so just check for raw_len < img_len always. + if (raw_len < img_len) return stbi__err("not enough pixels","Corrupt PNG"); + + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *prior; + int filter = *raw++; + + if (filter > 4) + return stbi__err("invalid filter","Corrupt PNG"); + + if (depth < 8) { + STBI_ASSERT(img_width_bytes <= x); + cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place + filter_bytes = 1; + width = img_width_bytes; + } + prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above + + // if first row, use special filter that doesn't sample previous row + if (j == 0) filter = first_row_filter[filter]; + + // handle first byte explicitly + for (k=0; k < filter_bytes; ++k) { + switch (filter) { + case STBI__F_none : cur[k] = raw[k]; break; + case STBI__F_sub : cur[k] = raw[k]; break; + case STBI__F_up : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; + case STBI__F_avg : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break; + case STBI__F_paeth : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break; + case STBI__F_avg_first : cur[k] = raw[k]; break; + case STBI__F_paeth_first: cur[k] = raw[k]; break; + } + } + + if (depth == 8) { + if (img_n != out_n) + cur[img_n] = 255; // first pixel + raw += img_n; + cur += out_n; + prior += out_n; + } else if (depth == 16) { + if (img_n != out_n) { + cur[filter_bytes] = 255; // first pixel top byte + cur[filter_bytes+1] = 255; // first pixel bottom byte + } + raw += filter_bytes; + cur += output_bytes; + prior += output_bytes; + } else { + raw += 1; + cur += 1; + prior += 1; + } + + // this is a little gross, so that we don't switch per-pixel or per-component + if (depth < 8 || img_n == out_n) { + int nk = (width - 1)*filter_bytes; + #define STBI__CASE(f) \ + case f: \ + for (k=0; k < nk; ++k) + switch (filter) { + // "none" filter turns into a memcpy here; make that explicit. + case STBI__F_none: memcpy(cur, raw, nk); break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break; + } + #undef STBI__CASE + raw += nk; + } else { + STBI_ASSERT(img_n+1 == out_n); + #define STBI__CASE(f) \ + case f: \ + for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ + for (k=0; k < filter_bytes; ++k) + switch (filter) { + STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break; + } + #undef STBI__CASE + + // the loop above sets the high byte of the pixels' alpha, but for + // 16 bit png files we also need the low byte set. we'll do that here. + if (depth == 16) { + cur = a->out + stride*j; // start at the beginning of the row again + for (i=0; i < x; ++i,cur+=output_bytes) { + cur[filter_bytes+1] = 255; + } + } + } + } + + // we make a separate pass to expand bits to pixels; for performance, + // this could run two scanlines behind the above code, so it won't + // intefere with filtering but will still be in the cache. + if (depth < 8) { + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *in = a->out + stride*j + x*out_n - img_width_bytes; + // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit + // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop + stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range + + // note that the final byte might overshoot and write more data than desired. + // we can allocate enough data that this never writes out of memory, but it + // could also overwrite the next scanline. can it overwrite non-empty data + // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. + // so we need to explicitly clamp the final ones + + if (depth == 4) { + for (k=x*img_n; k >= 2; k-=2, ++in) { + *cur++ = scale * ((*in >> 4) ); + *cur++ = scale * ((*in ) & 0x0f); + } + if (k > 0) *cur++ = scale * ((*in >> 4) ); + } else if (depth == 2) { + for (k=x*img_n; k >= 4; k-=4, ++in) { + *cur++ = scale * ((*in >> 6) ); + *cur++ = scale * ((*in >> 4) & 0x03); + *cur++ = scale * ((*in >> 2) & 0x03); + *cur++ = scale * ((*in ) & 0x03); + } + if (k > 0) *cur++ = scale * ((*in >> 6) ); + if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); + if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); + } else if (depth == 1) { + for (k=x*img_n; k >= 8; k-=8, ++in) { + *cur++ = scale * ((*in >> 7) ); + *cur++ = scale * ((*in >> 6) & 0x01); + *cur++ = scale * ((*in >> 5) & 0x01); + *cur++ = scale * ((*in >> 4) & 0x01); + *cur++ = scale * ((*in >> 3) & 0x01); + *cur++ = scale * ((*in >> 2) & 0x01); + *cur++ = scale * ((*in >> 1) & 0x01); + *cur++ = scale * ((*in ) & 0x01); + } + if (k > 0) *cur++ = scale * ((*in >> 7) ); + if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); + if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); + if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); + if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); + if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); + if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); + } + if (img_n != out_n) { + int q; + // insert alpha = 255 + cur = a->out + stride*j; + if (img_n == 1) { + for (q=x-1; q >= 0; --q) { + cur[q*2+1] = 255; + cur[q*2+0] = cur[q]; + } + } else { + STBI_ASSERT(img_n == 3); + for (q=x-1; q >= 0; --q) { + cur[q*4+3] = 255; + cur[q*4+2] = cur[q*3+2]; + cur[q*4+1] = cur[q*3+1]; + cur[q*4+0] = cur[q*3+0]; + } + } + } + } + } else if (depth == 16) { + // force the image data from big-endian to platform-native. + // this is done in a separate pass due to the decoding relying + // on the data being untouched, but could probably be done + // per-line during decode if care is taken. + stbi_uc *cur = a->out; + stbi__uint16 *cur16 = (stbi__uint16*)cur; + + for(i=0; i < x*y*out_n; ++i,cur16++,cur+=2) { + *cur16 = (cur[0] << 8) | cur[1]; + } + } + + return 1; +} + +static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +{ + int bytes = (depth == 16 ? 2 : 1); + int out_bytes = out_n * bytes; + stbi_uc *final; + int p; + if (!interlaced) + return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); + + // de-interlacing + final = (stbi_uc *) stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); + for (p=0; p < 7; ++p) { + int xorig[] = { 0,4,0,2,0,1,0 }; + int yorig[] = { 0,0,4,0,2,0,1 }; + int xspc[] = { 8,8,4,4,2,2,1 }; + int yspc[] = { 8,8,8,4,4,2,2 }; + int i,j,x,y; + // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 + x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p]; + y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p]; + if (x && y) { + stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; + if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { + STBI_FREE(final); + return 0; + } + for (j=0; j < y; ++j) { + for (i=0; i < x; ++i) { + int out_y = j*yspc[p]+yorig[p]; + int out_x = i*xspc[p]+xorig[p]; + memcpy(final + out_y*a->s->img_x*out_bytes + out_x*out_bytes, + a->out + (j*x+i)*out_bytes, out_bytes); + } + } + STBI_FREE(a->out); + image_data += img_len; + image_data_len -= img_len; + } + } + a->out = final; + + return 1; +} + +static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + // compute color-based transparency, assuming we've + // already got 255 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i=0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 255); + p += 2; + } + } else { + for (i=0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi__uint16 *p = (stbi__uint16*) z->out; + + // compute color-based transparency, assuming we've + // already got 65535 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 65535); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n) +{ + stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; + stbi_uc *p, *temp_out, *orig = a->out; + + p = (stbi_uc *) stbi__malloc_mad2(pixel_count, pal_img_n, 0); + if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + // between here and free(out) below, exitting would leak + temp_out = p; + + if (pal_img_n == 3) { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p += 3; + } + } else { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p[3] = palette[n+3]; + p += 4; + } + } + STBI_FREE(a->out); + a->out = temp_out; + + STBI_NOTUSED(len); + + return 1; +} + +static int stbi__unpremultiply_on_load = 0; +static int stbi__de_iphone_flag = 0; + +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load = flag_true_if_should_unpremultiply; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag = flag_true_if_should_convert; +} + +static void stbi__de_iphone(stbi__png *z) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + if (s->img_out_n == 3) { // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 3; + } + } else { + STBI_ASSERT(s->img_out_n == 4); + if (stbi__unpremultiply_on_load) { + // convert bgr to rgb and unpremultiply + for (i=0; i < pixel_count; ++i) { + stbi_uc a = p[3]; + stbi_uc t = p[0]; + if (a) { + stbi_uc half = a / 2; + p[0] = (p[2] * 255 + half) / a; + p[1] = (p[1] * 255 + half) / a; + p[2] = ( t * 255 + half) / a; + } else { + p[0] = p[2]; + p[2] = t; + } + p += 4; + } + } else { + // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 4; + } + } + } +} + +#define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) + +static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) +{ + stbi_uc palette[1024], pal_img_n=0; + stbi_uc has_trans=0, tc[3]; + stbi__uint16 tc16[3]; + stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0; + int first=1,k,interlace=0, color=0, is_iphone=0; + stbi__context *s = z->s; + + z->expanded = NULL; + z->idata = NULL; + z->out = NULL; + + if (!stbi__check_png_header(s)) return 0; + + if (scan == STBI__SCAN_type) return 1; + + for (;;) { + stbi__pngchunk c = stbi__get_chunk_header(s); + switch (c.type) { + case STBI__PNG_TYPE('C','g','B','I'): + is_iphone = 1; + stbi__skip(s, c.length); + break; + case STBI__PNG_TYPE('I','H','D','R'): { + int comp,filter; + if (!first) return stbi__err("multiple IHDR","Corrupt PNG"); + first = 0; + if (c.length != 13) return stbi__err("bad IHDR len","Corrupt PNG"); + s->img_x = stbi__get32be(s); if (s->img_x > (1 << 24)) return stbi__err("too large","Very large image (corrupt?)"); + s->img_y = stbi__get32be(s); if (s->img_y > (1 << 24)) return stbi__err("too large","Very large image (corrupt?)"); + z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only","PNG not supported: 1/2/4/8/16-bit only"); + color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3 && z->depth == 16) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype","Corrupt PNG"); + comp = stbi__get8(s); if (comp) return stbi__err("bad comp method","Corrupt PNG"); + filter= stbi__get8(s); if (filter) return stbi__err("bad filter method","Corrupt PNG"); + interlace = stbi__get8(s); if (interlace>1) return stbi__err("bad interlace method","Corrupt PNG"); + if (!s->img_x || !s->img_y) return stbi__err("0-pixel image","Corrupt PNG"); + if (!pal_img_n) { + s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); + if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); + if (scan == STBI__SCAN_header) return 1; + } else { + // if paletted, then pal_n is our final components, and + // img_n is # components to decompress/filter. + s->img_n = 1; + if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large","Corrupt PNG"); + // if SCAN_header, have to scan to see if we have a tRNS + } + break; + } + + case STBI__PNG_TYPE('P','L','T','E'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (c.length > 256*3) return stbi__err("invalid PLTE","Corrupt PNG"); + pal_len = c.length / 3; + if (pal_len * 3 != c.length) return stbi__err("invalid PLTE","Corrupt PNG"); + for (i=0; i < pal_len; ++i) { + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + } + break; + } + + case STBI__PNG_TYPE('t','R','N','S'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (z->idata) return stbi__err("tRNS after IDAT","Corrupt PNG"); + if (pal_img_n) { + if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } + if (pal_len == 0) return stbi__err("tRNS before PLTE","Corrupt PNG"); + if (c.length > pal_len) return stbi__err("bad tRNS len","Corrupt PNG"); + pal_img_n = 4; + for (i=0; i < c.length; ++i) + palette[i*4+3] = stbi__get8(s); + } else { + if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG"); + if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG"); + has_trans = 1; + if (z->depth == 16) { + for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is + } else { + for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger + } + } + break; + } + + case STBI__PNG_TYPE('I','D','A','T'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (pal_img_n && !pal_len) return stbi__err("no PLTE","Corrupt PNG"); + if (scan == STBI__SCAN_header) { s->img_n = pal_img_n; return 1; } + if ((int)(ioff + c.length) < (int)ioff) return 0; + if (ioff + c.length > idata_limit) { + stbi__uint32 idata_limit_old = idata_limit; + stbi_uc *p; + if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; + while (ioff + c.length > idata_limit) + idata_limit *= 2; + STBI_NOTUSED(idata_limit_old); + p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); + z->idata = p; + } + if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err("outofdata","Corrupt PNG"); + ioff += c.length; + break; + } + + case STBI__PNG_TYPE('I','E','N','D'): { + stbi__uint32 raw_len, bpl; + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (scan != STBI__SCAN_load) return 1; + if (z->idata == NULL) return stbi__err("no IDAT","Corrupt PNG"); + // initial guess for decoded data size to avoid unnecessary reallocs + bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component + raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; + z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone); + if (z->expanded == NULL) return 0; // zlib should set error + STBI_FREE(z->idata); z->idata = NULL; + if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans) + s->img_out_n = s->img_n+1; + else + s->img_out_n = s->img_n; + if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; + if (has_trans) { + if (z->depth == 16) { + if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; + } else { + if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; + } + } + if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) + stbi__de_iphone(z); + if (pal_img_n) { + // pal_img_n == 3 or 4 + s->img_n = pal_img_n; // record the actual colors we had + s->img_out_n = pal_img_n; + if (req_comp >= 3) s->img_out_n = req_comp; + if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) + return 0; + } else if (has_trans) { + // non-paletted image with tRNS -> source image has (constant) alpha + ++s->img_n; + } + STBI_FREE(z->expanded); z->expanded = NULL; + return 1; + } + + default: + // if critical, fail + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if ((c.type & (1 << 29)) == 0) { + #ifndef STBI_NO_FAILURE_STRINGS + // not threadsafe + static char invalid_chunk[] = "XXXX PNG chunk not known"; + invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); + invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); + invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); + invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); + #endif + return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); + } + stbi__skip(s, c.length); + break; + } + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + } +} + +static void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri) +{ + void *result=NULL; + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + if (p->depth < 8) + ri->bits_per_channel = 8; + else + ri->bits_per_channel = p->depth; + result = p->out; + p->out = NULL; + if (req_comp && req_comp != p->s->img_out_n) { + if (ri->bits_per_channel == 8) + result = stbi__convert_format((unsigned char *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + else + result = stbi__convert_format16((stbi__uint16 *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + p->s->img_out_n = req_comp; + if (result == NULL) return result; + } + *x = p->s->img_x; + *y = p->s->img_y; + if (n) *n = p->s->img_n; + } + STBI_FREE(p->out); p->out = NULL; + STBI_FREE(p->expanded); p->expanded = NULL; + STBI_FREE(p->idata); p->idata = NULL; + + return result; +} + +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi__png p; + p.s = s; + return stbi__do_png(&p, x,y,comp,req_comp, ri); +} + +static int stbi__png_test(stbi__context *s) +{ + int r; + r = stbi__check_png_header(s); + stbi__rewind(s); + return r; +} + +static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp) +{ + if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { + stbi__rewind( p->s ); + return 0; + } + if (x) *x = p->s->img_x; + if (y) *y = p->s->img_y; + if (comp) *comp = p->s->img_n; + return 1; +} + +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__png p; + p.s = s; + return stbi__png_info_raw(&p, x, y, comp); +} + +static int stbi__png_is16(stbi__context *s) +{ + stbi__png p; + p.s = s; + if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) + return 0; + if (p.depth != 16) { + stbi__rewind(p.s); + return 0; + } + return 1; +} +#endif + +// Microsoft/Windows BMP image + +#ifndef STBI_NO_BMP +static int stbi__bmp_test_raw(stbi__context *s) +{ + int r; + int sz; + if (stbi__get8(s) != 'B') return 0; + if (stbi__get8(s) != 'M') return 0; + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + stbi__get32le(s); // discard data offset + sz = stbi__get32le(s); + r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + return r; +} + +static int stbi__bmp_test(stbi__context *s) +{ + int r = stbi__bmp_test_raw(s); + stbi__rewind(s); + return r; +} + + +// returns 0..31 for the highest set bit +static int stbi__high_bit(unsigned int z) +{ + int n=0; + if (z == 0) return -1; + if (z >= 0x10000) n += 16, z >>= 16; + if (z >= 0x00100) n += 8, z >>= 8; + if (z >= 0x00010) n += 4, z >>= 4; + if (z >= 0x00004) n += 2, z >>= 2; + if (z >= 0x00002) n += 1, z >>= 1; + return n; +} + +static int stbi__bitcount(unsigned int a) +{ + a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + a = (a + (a >> 8)); // max 16 per 8 bits + a = (a + (a >> 16)); // max 32 per 8 bits + return a & 0xff; +} + +// extract an arbitrarily-aligned N-bit value (N=bits) +// from v, and then make it 8-bits long and fractionally +// extend it to full full range. +static int stbi__shiftsigned(int v, int shift, int bits) +{ + static unsigned int mul_table[9] = { + 0, + 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, + 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, + }; + static unsigned int shift_table[9] = { + 0, 0,0,1,0,2,4,6,0, + }; + if (shift < 0) + v <<= -shift; + else + v >>= shift; + STBI_ASSERT(v >= 0 && v < 256); + v >>= (8-bits); + STBI_ASSERT(bits >= 0 && bits <= 8); + return (int) ((unsigned) v * mul_table[bits]) >> shift_table[bits]; +} + +typedef struct +{ + int bpp, offset, hsz; + unsigned int mr,mg,mb,ma, all_a; +} stbi__bmp_data; + +static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) +{ + int hsz; + if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + info->offset = stbi__get32le(s); + info->hsz = hsz = stbi__get32le(s); + info->mr = info->mg = info->mb = info->ma = 0; + + if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); + if (hsz == 12) { + s->img_x = stbi__get16le(s); + s->img_y = stbi__get16le(s); + } else { + s->img_x = stbi__get32le(s); + s->img_y = stbi__get32le(s); + } + if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); + info->bpp = stbi__get16le(s); + if (hsz != 12) { + int compress = stbi__get32le(s); + if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); + stbi__get32le(s); // discard sizeof + stbi__get32le(s); // discard hres + stbi__get32le(s); // discard vres + stbi__get32le(s); // discard colorsused + stbi__get32le(s); // discard max important + if (hsz == 40 || hsz == 56) { + if (hsz == 56) { + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + } + if (info->bpp == 16 || info->bpp == 32) { + if (compress == 0) { + if (info->bpp == 32) { + info->mr = 0xffu << 16; + info->mg = 0xffu << 8; + info->mb = 0xffu << 0; + info->ma = 0xffu << 24; + info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + } else { + info->mr = 31u << 10; + info->mg = 31u << 5; + info->mb = 31u << 0; + } + } else if (compress == 3) { + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + // not documented, but generated by photoshop and handled by mspaint + if (info->mr == info->mg && info->mg == info->mb) { + // ?!?!? + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else { + int i; + if (hsz != 108 && hsz != 124) + return stbi__errpuc("bad BMP", "bad BMP"); + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->ma = stbi__get32le(s); + stbi__get32le(s); // discard color space + for (i=0; i < 12; ++i) + stbi__get32le(s); // discard color space parameters + if (hsz == 124) { + stbi__get32le(s); // discard rendering intent + stbi__get32le(s); // discard offset of profile data + stbi__get32le(s); // discard size of profile data + stbi__get32le(s); // discard reserved + } + } + } + return (void *) 1; +} + + +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + unsigned int mr=0,mg=0,mb=0,ma=0, all_a; + stbi_uc pal[256][4]; + int psize=0,i,j,width; + int flip_vertically, pad, target; + stbi__bmp_data info; + STBI_NOTUSED(ri); + + info.all_a = 255; + if (stbi__bmp_parse_header(s, &info) == NULL) + return NULL; // error code already set + + flip_vertically = ((int) s->img_y) > 0; + s->img_y = abs((int) s->img_y); + + mr = info.mr; + mg = info.mg; + mb = info.mb; + ma = info.ma; + all_a = info.all_a; + + if (info.hsz == 12) { + if (info.bpp < 24) + psize = (info.offset - 14 - 24) / 3; + } else { + if (info.bpp < 16) + psize = (info.offset - 14 - info.hsz) >> 2; + } + + s->img_n = ma ? 4 : 3; + if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 + target = req_comp; + else + target = s->img_n; // if they want monochrome, we'll post-convert + + // sanity-check size + if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "Corrupt BMP"); + + out = (stbi_uc *) stbi__malloc_mad3(target, s->img_x, s->img_y, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + if (info.bpp < 16) { + int z=0; + if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } + for (i=0; i < psize; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + if (info.hsz != 12) stbi__get8(s); + pal[i][3] = 255; + } + stbi__skip(s, info.offset - 14 - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); + if (info.bpp == 1) width = (s->img_x + 7) >> 3; + else if (info.bpp == 4) width = (s->img_x + 1) >> 1; + else if (info.bpp == 8) width = s->img_x; + else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } + pad = (-width)&3; + if (info.bpp == 1) { + for (j=0; j < (int) s->img_y; ++j) { + int bit_offset = 7, v = stbi__get8(s); + for (i=0; i < (int) s->img_x; ++i) { + int color = (v>>bit_offset)&0x1; + out[z++] = pal[color][0]; + out[z++] = pal[color][1]; + out[z++] = pal[color][2]; + if((--bit_offset) < 0) { + bit_offset = 7; + v = stbi__get8(s); + } + } + stbi__skip(s, pad); + } + } else { + for (j=0; j < (int) s->img_y; ++j) { + for (i=0; i < (int) s->img_x; i += 2) { + int v=stbi__get8(s),v2=0; + if (info.bpp == 4) { + v2 = v & 15; + v >>= 4; + } + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + if (i+1 == (int) s->img_x) break; + v = (info.bpp == 8) ? stbi__get8(s) : v2; + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + } + stbi__skip(s, pad); + } + } + } else { + int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0; + int z = 0; + int easy=0; + stbi__skip(s, info.offset - 14 - info.hsz); + if (info.bpp == 24) width = 3 * s->img_x; + else if (info.bpp == 16) width = 2*s->img_x; + else /* bpp = 32 and pad = 0 */ width=0; + pad = (-width) & 3; + if (info.bpp == 24) { + easy = 1; + } else if (info.bpp == 32) { + if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) + easy = 2; + } + if (!easy) { + if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + // right shift amt to put high bit in position #7 + rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr); + gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg); + bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb); + ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma); + } + for (j=0; j < (int) s->img_y; ++j) { + if (easy) { + for (i=0; i < (int) s->img_x; ++i) { + unsigned char a; + out[z+2] = stbi__get8(s); + out[z+1] = stbi__get8(s); + out[z+0] = stbi__get8(s); + z += 3; + a = (easy == 2 ? stbi__get8(s) : 255); + all_a |= a; + if (target == 4) out[z++] = a; + } + } else { + int bpp = info.bpp; + for (i=0; i < (int) s->img_x; ++i) { + stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s)); + unsigned int a; + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); + a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + all_a |= a; + if (target == 4) out[z++] = STBI__BYTECAST(a); + } + } + stbi__skip(s, pad); + } + } + + // if alpha channel is all 0s, replace with all 255s + if (target == 4 && all_a == 0) + for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4) + out[i] = 255; + + if (flip_vertically) { + stbi_uc t; + for (j=0; j < (int) s->img_y>>1; ++j) { + stbi_uc *p1 = out + j *s->img_x*target; + stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target; + for (i=0; i < (int) s->img_x*target; ++i) { + t = p1[i], p1[i] = p2[i], p2[i] = t; + } + } + } + + if (req_comp && req_comp != target) { + out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + return out; +} +#endif + +// Targa Truevision - TGA +// by Jonathan Dummer +#ifndef STBI_NO_TGA +// returns STBI_rgb or whatever, 0 on error +static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +{ + // only RGB or RGBA (incl. 16bit) or grey allowed + if (is_rgb16) *is_rgb16 = 0; + switch(bits_per_pixel) { + case 8: return STBI_grey; + case 16: if(is_grey) return STBI_grey_alpha; + // fallthrough + case 15: if(is_rgb16) *is_rgb16 = 1; + return STBI_rgb; + case 24: // fallthrough + case 32: return bits_per_pixel/8; + default: return 0; + } +} + +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) +{ + int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; + int sz, tga_colormap_type; + stbi__get8(s); // discard Offset + tga_colormap_type = stbi__get8(s); // colormap type + if( tga_colormap_type > 1 ) { + stbi__rewind(s); + return 0; // only RGB or indexed allowed + } + tga_image_type = stbi__get8(s); // image type + if ( tga_colormap_type == 1 ) { // colormapped (paletted) image + if (tga_image_type != 1 && tga_image_type != 9) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip image x and y origin + tga_colormap_bpp = sz; + } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE + if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) { + stbi__rewind(s); + return 0; // only RGB or grey allowed, +/- RLE + } + stbi__skip(s,9); // skip colormap specification and image x/y origin + tga_colormap_bpp = 0; + } + tga_w = stbi__get16le(s); + if( tga_w < 1 ) { + stbi__rewind(s); + return 0; // test width + } + tga_h = stbi__get16le(s); + if( tga_h < 1 ) { + stbi__rewind(s); + return 0; // test height + } + tga_bits_per_pixel = stbi__get8(s); // bits per pixel + stbi__get8(s); // ignore alpha bits + if (tga_colormap_bpp != 0) { + if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { + // when using a colormap, tga_bits_per_pixel is the size of the indexes + // I don't think anything but 8 or 16bit indexes makes sense + stbi__rewind(s); + return 0; + } + tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); + } else { + tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); + } + if(!tga_comp) { + stbi__rewind(s); + return 0; + } + if (x) *x = tga_w; + if (y) *y = tga_h; + if (comp) *comp = tga_comp; + return 1; // seems to have passed everything +} + +static int stbi__tga_test(stbi__context *s) +{ + int res = 0; + int sz, tga_color_type; + stbi__get8(s); // discard Offset + tga_color_type = stbi__get8(s); // color type + if ( tga_color_type > 1 ) goto errorEnd; // only RGB or indexed allowed + sz = stbi__get8(s); // image type + if ( tga_color_type == 1 ) { // colormapped (paletted) image + if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + stbi__skip(s,4); // skip image x and y origin + } else { // "normal" image w/o colormap + if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE + stbi__skip(s,9); // skip colormap specification and image x/y origin + } + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test width + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test height + sz = stbi__get8(s); // bits per pixel + if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + + res = 1; // if we got this far, everything's good and we can return 1 instead of 0 + +errorEnd: + stbi__rewind(s); + return res; +} + +// read 16bit value and convert to 24bit RGB +static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out) +{ + stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + stbi__uint16 fiveBitMask = 31; + // we have 3 channels with 5bits each + int r = (px >> 10) & fiveBitMask; + int g = (px >> 5) & fiveBitMask; + int b = px & fiveBitMask; + // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later + out[0] = (stbi_uc)((r * 255)/31); + out[1] = (stbi_uc)((g * 255)/31); + out[2] = (stbi_uc)((b * 255)/31); + + // some people claim that the most significant bit might be used for alpha + // (possibly if an alpha-bit is set in the "image descriptor byte") + // but that only made 16bit test images completely translucent.. + // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +} + +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + // read in the TGA header stuff + int tga_offset = stbi__get8(s); + int tga_indexed = stbi__get8(s); + int tga_image_type = stbi__get8(s); + int tga_is_RLE = 0; + int tga_palette_start = stbi__get16le(s); + int tga_palette_len = stbi__get16le(s); + int tga_palette_bits = stbi__get8(s); + int tga_x_origin = stbi__get16le(s); + int tga_y_origin = stbi__get16le(s); + int tga_width = stbi__get16le(s); + int tga_height = stbi__get16le(s); + int tga_bits_per_pixel = stbi__get8(s); + int tga_comp, tga_rgb16=0; + int tga_inverted = stbi__get8(s); + // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) + // image data + unsigned char *tga_data; + unsigned char *tga_palette = NULL; + int i, j; + unsigned char raw_data[4] = {0}; + int RLE_count = 0; + int RLE_repeating = 0; + int read_next_pixel = 1; + STBI_NOTUSED(ri); + + // do a tiny bit of precessing + if ( tga_image_type >= 8 ) + { + tga_image_type -= 8; + tga_is_RLE = 1; + } + tga_inverted = 1 - ((tga_inverted >> 5) & 1); + + // If I'm paletted, then I'll use the number of bits from the palette + if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); + + if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency + return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); + + // tga info + *x = tga_width; + *y = tga_height; + if (comp) *comp = tga_comp; + + if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) + return stbi__errpuc("too large", "Corrupt TGA"); + + tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); + if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); + + // skip to the data's starting position (offset usually = 0) + stbi__skip(s, tga_offset ); + + if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) { + for (i=0; i < tga_height; ++i) { + int row = tga_inverted ? tga_height -i - 1 : i; + stbi_uc *tga_row = tga_data + row*tga_width*tga_comp; + stbi__getn(s, tga_row, tga_width * tga_comp); + } + } else { + // do I need to load a palette? + if ( tga_indexed) + { + // any data to skip? (offset usually = 0) + stbi__skip(s, tga_palette_start ); + // load the palette + tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); + if (!tga_palette) { + STBI_FREE(tga_data); + return stbi__errpuc("outofmem", "Out of memory"); + } + if (tga_rgb16) { + stbi_uc *pal_entry = tga_palette; + STBI_ASSERT(tga_comp == STBI_rgb); + for (i=0; i < tga_palette_len; ++i) { + stbi__tga_read_rgb16(s, pal_entry); + pal_entry += tga_comp; + } + } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { + STBI_FREE(tga_data); + STBI_FREE(tga_palette); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + } + // load the data + for (i=0; i < tga_width * tga_height; ++i) + { + // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? + if ( tga_is_RLE ) + { + if ( RLE_count == 0 ) + { + // yep, get the next byte as a RLE command + int RLE_cmd = stbi__get8(s); + RLE_count = 1 + (RLE_cmd & 127); + RLE_repeating = RLE_cmd >> 7; + read_next_pixel = 1; + } else if ( !RLE_repeating ) + { + read_next_pixel = 1; + } + } else + { + read_next_pixel = 1; + } + // OK, if I need to read a pixel, do it now + if ( read_next_pixel ) + { + // load however much data we did have + if ( tga_indexed ) + { + // read in index, then perform the lookup + int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); + if ( pal_idx >= tga_palette_len ) { + // invalid index + pal_idx = 0; + } + pal_idx *= tga_comp; + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = tga_palette[pal_idx+j]; + } + } else if(tga_rgb16) { + STBI_ASSERT(tga_comp == STBI_rgb); + stbi__tga_read_rgb16(s, raw_data); + } else { + // read in the data raw + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = stbi__get8(s); + } + } + // clear the reading flag for the next pixel + read_next_pixel = 0; + } // end of reading a pixel + + // copy data + for (j = 0; j < tga_comp; ++j) + tga_data[i*tga_comp+j] = raw_data[j]; + + // in case we're in RLE mode, keep counting down + --RLE_count; + } + // do I need to invert the image? + if ( tga_inverted ) + { + for (j = 0; j*2 < tga_height; ++j) + { + int index1 = j * tga_width * tga_comp; + int index2 = (tga_height - 1 - j) * tga_width * tga_comp; + for (i = tga_width * tga_comp; i > 0; --i) + { + unsigned char temp = tga_data[index1]; + tga_data[index1] = tga_data[index2]; + tga_data[index2] = temp; + ++index1; + ++index2; + } + } + } + // clear my palette, if I had one + if ( tga_palette != NULL ) + { + STBI_FREE( tga_palette ); + } + } + + // swap RGB - if the source data was RGB16, it already is in the right order + if (tga_comp >= 3 && !tga_rgb16) + { + unsigned char* tga_pixel = tga_data; + for (i=0; i < tga_width * tga_height; ++i) + { + unsigned char temp = tga_pixel[0]; + tga_pixel[0] = tga_pixel[2]; + tga_pixel[2] = temp; + tga_pixel += tga_comp; + } + } + + // convert to target component count + if (req_comp && req_comp != tga_comp) + tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); + + // the things I do to get rid of an error message, and yet keep + // Microsoft's C compilers happy... [8^( + tga_palette_start = tga_palette_len = tga_palette_bits = + tga_x_origin = tga_y_origin = 0; + // OK, done + return tga_data; +} +#endif + +// ************************************************************************************************* +// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s) +{ + int r = (stbi__get32be(s) == 0x38425053); + stbi__rewind(s); + return r; +} + +static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount) +{ + int count, nleft, len; + + count = 0; + while ((nleft = pixelCount - count) > 0) { + len = stbi__get8(s); + if (len == 128) { + // No-op. + } else if (len < 128) { + // Copy next len+1 bytes literally. + len++; + if (len > nleft) return 0; // corrupt data + count += len; + while (len) { + *p = stbi__get8(s); + p += 4; + len--; + } + } else if (len > 128) { + stbi_uc val; + // Next -len+1 bytes in the dest are replicated from next source byte. + // (Interpret len as a negative 8-bit int.) + len = 257 - len; + if (len > nleft) return 0; // corrupt data + val = stbi__get8(s); + count += len; + while (len) { + *p = val; + p += 4; + len--; + } + } + } + + return 1; +} + +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + int pixelCount; + int channelCount, compression; + int channel, i; + int bitdepth; + int w,h; + stbi_uc *out; + STBI_NOTUSED(ri); + + // Check identifier + if (stbi__get32be(s) != 0x38425053) // "8BPS" + return stbi__errpuc("not PSD", "Corrupt PSD image"); + + // Check file type version. + if (stbi__get16be(s) != 1) + return stbi__errpuc("wrong version", "Unsupported version of PSD image"); + + // Skip 6 reserved bytes. + stbi__skip(s, 6 ); + + // Read the number of channels (R, G, B, A, etc). + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) + return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); + + // Read the rows and columns of the image. + h = stbi__get32be(s); + w = stbi__get32be(s); + + // Make sure the depth is 8 bits. + bitdepth = stbi__get16be(s); + if (bitdepth != 8 && bitdepth != 16) + return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); + + // Make sure the color mode is RGB. + // Valid options are: + // 0: Bitmap + // 1: Grayscale + // 2: Indexed color + // 3: RGB color + // 4: CMYK color + // 7: Multichannel + // 8: Duotone + // 9: Lab color + if (stbi__get16be(s) != 3) + return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); + + // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) + stbi__skip(s,stbi__get32be(s) ); + + // Skip the image resources. (resolution, pen tool paths, etc) + stbi__skip(s, stbi__get32be(s) ); + + // Skip the reserved data. + stbi__skip(s, stbi__get32be(s) ); + + // Find out if the data is compressed. + // Known values: + // 0: no compression + // 1: RLE compressed + compression = stbi__get16be(s); + if (compression > 1) + return stbi__errpuc("bad compression", "PSD has an unknown compression format"); + + // Check size + if (!stbi__mad3sizes_valid(4, w, h, 0)) + return stbi__errpuc("too large", "Corrupt PSD"); + + // Create the destination image. + + if (!compression && bitdepth == 16 && bpc == 16) { + out = (stbi_uc *) stbi__malloc_mad3(8, w, h, 0); + ri->bits_per_channel = 16; + } else + out = (stbi_uc *) stbi__malloc(4 * w*h); + + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + pixelCount = w*h; + + // Initialize the data to zero. + //memset( out, 0, pixelCount * 4 ); + + // Finally, the image data. + if (compression) { + // RLE as used by .PSD and .TIFF + // Loop until you get the number of unpacked bytes you are expecting: + // Read the next source byte into n. + // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. + // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. + // Else if n is 128, noop. + // Endloop + + // The RLE-compressed data is preceeded by a 2-byte data count for each row in the data, + // which we're going to just skip. + stbi__skip(s, h * channelCount * 2 ); + + // Read the RLE data by channel. + for (channel = 0; channel < 4; channel++) { + stbi_uc *p; + + p = out+channel; + if (channel >= channelCount) { + // Fill this channel with default data. + for (i = 0; i < pixelCount; i++, p += 4) + *p = (channel == 3 ? 255 : 0); + } else { + // Read the RLE data. + if (!stbi__psd_decode_rle(s, p, pixelCount)) { + STBI_FREE(out); + return stbi__errpuc("corrupt", "bad RLE data"); + } + } + } + + } else { + // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) + // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. + + // Read the data by channel. + for (channel = 0; channel < 4; channel++) { + if (channel >= channelCount) { + // Fill this channel with default data. + if (bitdepth == 16 && bpc == 16) { + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + stbi__uint16 val = channel == 3 ? 65535 : 0; + for (i = 0; i < pixelCount; i++, q += 4) + *q = val; + } else { + stbi_uc *p = out+channel; + stbi_uc val = channel == 3 ? 255 : 0; + for (i = 0; i < pixelCount; i++, p += 4) + *p = val; + } + } else { + if (ri->bits_per_channel == 16) { // output bpc + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + for (i = 0; i < pixelCount; i++, q += 4) + *q = (stbi__uint16) stbi__get16be(s); + } else { + stbi_uc *p = out+channel; + if (bitdepth == 16) { // input bpc + for (i = 0; i < pixelCount; i++, p += 4) + *p = (stbi_uc) (stbi__get16be(s) >> 8); + } else { + for (i = 0; i < pixelCount; i++, p += 4) + *p = stbi__get8(s); + } + } + } + } + } + + // remove weird white matte from PSD + if (channelCount >= 4) { + if (ri->bits_per_channel == 16) { + for (i=0; i < w*h; ++i) { + stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i; + if (pixel[3] != 0 && pixel[3] != 65535) { + float a = pixel[3] / 65535.0f; + float ra = 1.0f / a; + float inv_a = 65535.0f * (1 - ra); + pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a); + pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a); + pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a); + } + } + } else { + for (i=0; i < w*h; ++i) { + unsigned char *pixel = out + 4*i; + if (pixel[3] != 0 && pixel[3] != 255) { + float a = pixel[3] / 255.0f; + float ra = 1.0f / a; + float inv_a = 255.0f * (1 - ra); + pixel[0] = (unsigned char) (pixel[0]*ra + inv_a); + pixel[1] = (unsigned char) (pixel[1]*ra + inv_a); + pixel[2] = (unsigned char) (pixel[2]*ra + inv_a); + } + } + } + } + + // convert to desired output format + if (req_comp && req_comp != 4) { + if (ri->bits_per_channel == 16) + out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h); + else + out = stbi__convert_format(out, 4, req_comp, w, h); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + if (comp) *comp = 4; + *y = h; + *x = w; + + return out; +} +#endif + +// ************************************************************************************************* +// Softimage PIC loader +// by Tom Seddon +// +// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ + +#ifndef STBI_NO_PIC +static int stbi__pic_is4(stbi__context *s,const char *str) +{ + int i; + for (i=0; i<4; ++i) + if (stbi__get8(s) != (stbi_uc)str[i]) + return 0; + + return 1; +} + +static int stbi__pic_test_core(stbi__context *s) +{ + int i; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) + return 0; + + for(i=0;i<84;++i) + stbi__get8(s); + + if (!stbi__pic_is4(s,"PICT")) + return 0; + + return 1; +} + +typedef struct +{ + stbi_uc size,type,channel; +} stbi__pic_packet; + +static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest) +{ + int mask=0x80, i; + + for (i=0; i<4; ++i, mask>>=1) { + if (channel & mask) { + if (stbi__at_eof(s)) return stbi__errpuc("bad file","PIC file too short"); + dest[i]=stbi__get8(s); + } + } + + return dest; +} + +static void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src) +{ + int mask=0x80,i; + + for (i=0;i<4; ++i, mask>>=1) + if (channel&mask) + dest[i]=src[i]; +} + +static stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int height,int *comp, stbi_uc *result) +{ + int act_comp=0,num_packets=0,y,chained; + stbi__pic_packet packets[10]; + + // this will (should...) cater for even some bizarre stuff like having data + // for the same channel in multiple packets. + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return stbi__errpuc("bad format","too many packets"); + + packet = &packets[num_packets++]; + + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + + act_comp |= packet->channel; + + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (reading packets)"); + if (packet->size != 8) return stbi__errpuc("bad format","packet isn't 8bpp"); + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? + + for(y=0; y<height; ++y) { + int packet_idx; + + for(packet_idx=0; packet_idx < num_packets; ++packet_idx) { + stbi__pic_packet *packet = &packets[packet_idx]; + stbi_uc *dest = result+y*width*4; + + switch (packet->type) { + default: + return stbi__errpuc("bad format","packet has bad compression type"); + + case 0: {//uncompressed + int x; + + for(x=0;x<width;++x, dest+=4) + if (!stbi__readval(s,packet->channel,dest)) + return 0; + break; + } + + case 1://Pure RLE + { + int left=width, i; + + while (left>0) { + stbi_uc count,value[4]; + + count=stbi__get8(s); + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pure read count)"); + + if (count > left) + count = (stbi_uc) left; + + if (!stbi__readval(s,packet->channel,value)) return 0; + + for(i=0; i<count; ++i,dest+=4) + stbi__copyval(packet->channel,dest,value); + left -= count; + } + } + break; + + case 2: {//Mixed RLE + int left=width; + while (left>0) { + int count = stbi__get8(s), i; + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (mixed read count)"); + + if (count >= 128) { // Repeated + stbi_uc value[4]; + + if (count==128) + count = stbi__get16be(s); + else + count -= 127; + if (count > left) + return stbi__errpuc("bad file","scanline overrun"); + + if (!stbi__readval(s,packet->channel,value)) + return 0; + + for(i=0;i<count;++i, dest += 4) + stbi__copyval(packet->channel,dest,value); + } else { // Raw + ++count; + if (count>left) return stbi__errpuc("bad file","scanline overrun"); + + for(i=0;i<count;++i, dest+=4) + if (!stbi__readval(s,packet->channel,dest)) + return 0; + } + left-=count; + } + break; + } + } + } + } + + return result; +} + +static void *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_comp, stbi__result_info *ri) +{ + stbi_uc *result; + int i, x,y, internal_comp; + STBI_NOTUSED(ri); + + if (!comp) comp = &internal_comp; + + for (i=0; i<92; ++i) + stbi__get8(s); + + x = stbi__get16be(s); + y = stbi__get16be(s); + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pic header)"); + if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); + + stbi__get32be(s); //skip `ratio' + stbi__get16be(s); //skip `fields' + stbi__get16be(s); //skip `pad' + + // intermediate buffer is RGBA + result = (stbi_uc *) stbi__malloc_mad3(x, y, 4, 0); + memset(result, 0xff, x*y*4); + + if (!stbi__pic_load_core(s,x,y,comp, result)) { + STBI_FREE(result); + result=0; + } + *px = x; + *py = y; + if (req_comp == 0) req_comp = *comp; + result=stbi__convert_format(result,4,req_comp,x,y); + + return result; +} + +static int stbi__pic_test(stbi__context *s) +{ + int r = stbi__pic_test_core(s); + stbi__rewind(s); + return r; +} +#endif + +// ************************************************************************************************* +// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb + +#ifndef STBI_NO_GIF +typedef struct +{ + stbi__int16 prefix; + stbi_uc first; + stbi_uc suffix; +} stbi__gif_lzw; + +typedef struct +{ + int w,h; + stbi_uc *out; // output buffer (always 4 components) + stbi_uc *background; // The current "background" as far as a gif is concerned + stbi_uc *history; + int flags, bgindex, ratio, transparent, eflags; + stbi_uc pal[256][4]; + stbi_uc lpal[256][4]; + stbi__gif_lzw codes[8192]; + stbi_uc *color_table; + int parse, step; + int lflags; + int start_x, start_y; + int max_x, max_y; + int cur_x, cur_y; + int line_size; + int delay; +} stbi__gif; + +static int stbi__gif_test_raw(stbi__context *s) +{ + int sz; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; + sz = stbi__get8(s); + if (sz != '9' && sz != '7') return 0; + if (stbi__get8(s) != 'a') return 0; + return 1; +} + +static int stbi__gif_test(stbi__context *s) +{ + int r = stbi__gif_test_raw(s); + stbi__rewind(s); + return r; +} + +static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, int transp) +{ + int i; + for (i=0; i < num_entries; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + pal[i][3] = transp == i ? 0 : 255; + } +} + +static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info) +{ + stbi_uc version; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') + return stbi__err("not GIF", "Corrupt GIF"); + + version = stbi__get8(s); + if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); + if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); + + stbi__g_failure_reason = ""; + g->w = stbi__get16le(s); + g->h = stbi__get16le(s); + g->flags = stbi__get8(s); + g->bgindex = stbi__get8(s); + g->ratio = stbi__get8(s); + g->transparent = -1; + + if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments + + if (is_info) return 1; + + if (g->flags & 0x80) + stbi__gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1); + + return 1; +} + +static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif)); + if (!stbi__gif_header(s, g, comp, 1)) { + STBI_FREE(g); + stbi__rewind( s ); + return 0; + } + if (x) *x = g->w; + if (y) *y = g->h; + STBI_FREE(g); + return 1; +} + +static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code) +{ + stbi_uc *p, *c; + int idx; + + // recurse to decode the prefixes, since the linked-list is backwards, + // and working backwards through an interleaved image would be nasty + if (g->codes[code].prefix >= 0) + stbi__out_gif_code(g, g->codes[code].prefix); + + if (g->cur_y >= g->max_y) return; + + idx = g->cur_x + g->cur_y; + p = &g->out[idx]; + g->history[idx / 4] = 1; + + c = &g->color_table[g->codes[code].suffix * 4]; + if (c[3] > 128) { // don't render transparent pixels; + p[0] = c[2]; + p[1] = c[1]; + p[2] = c[0]; + p[3] = c[3]; + } + g->cur_x += 4; + + if (g->cur_x >= g->max_x) { + g->cur_x = g->start_x; + g->cur_y += g->step; + + while (g->cur_y >= g->max_y && g->parse > 0) { + g->step = (1 << g->parse) * g->line_size; + g->cur_y = g->start_y + (g->step >> 1); + --g->parse; + } + } +} + +static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g) +{ + stbi_uc lzw_cs; + stbi__int32 len, init_code; + stbi__uint32 first; + stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; + stbi__gif_lzw *p; + + lzw_cs = stbi__get8(s); + if (lzw_cs > 12) return NULL; + clear = 1 << lzw_cs; + first = 1; + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + bits = 0; + valid_bits = 0; + for (init_code = 0; init_code < clear; init_code++) { + g->codes[init_code].prefix = -1; + g->codes[init_code].first = (stbi_uc) init_code; + g->codes[init_code].suffix = (stbi_uc) init_code; + } + + // support no starting clear code + avail = clear+2; + oldcode = -1; + + len = 0; + for(;;) { + if (valid_bits < codesize) { + if (len == 0) { + len = stbi__get8(s); // start new block + if (len == 0) + return g->out; + } + --len; + bits |= (stbi__int32) stbi__get8(s) << valid_bits; + valid_bits += 8; + } else { + stbi__int32 code = bits & codemask; + bits >>= codesize; + valid_bits -= codesize; + // @OPTIMIZE: is there some way we can accelerate the non-clear path? + if (code == clear) { // clear code + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + avail = clear + 2; + oldcode = -1; + first = 0; + } else if (code == clear + 1) { // end of stream code + stbi__skip(s, len); + while ((len = stbi__get8(s)) > 0) + stbi__skip(s,len); + return g->out; + } else if (code <= avail) { + if (first) { + return stbi__errpuc("no clear code", "Corrupt GIF"); + } + + if (oldcode >= 0) { + p = &g->codes[avail++]; + if (avail > 8192) { + return stbi__errpuc("too many codes", "Corrupt GIF"); + } + + p->prefix = (stbi__int16) oldcode; + p->first = g->codes[oldcode].first; + p->suffix = (code == avail) ? p->first : g->codes[code].first; + } else if (code == avail) + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + + stbi__out_gif_code(g, (stbi__uint16) code); + + if ((avail & codemask) == 0 && avail <= 0x0FFF) { + codesize++; + codemask = (1 << codesize) - 1; + } + + oldcode = code; + } else { + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + } + } + } +} + +// this function is designed to support animated gifs, although stb_image doesn't support it +// two back is the image from two frames ago, used for a very specific disposal format +static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp, stbi_uc *two_back) +{ + int dispose; + int first_frame; + int pi; + int pcount; + + // on first frame, any non-written pixels get the background colour (non-transparent) + first_frame = 0; + if (g->out == 0) { + if (!stbi__gif_header(s, g, comp,0)) return 0; // stbi__g_failure_reason set by stbi__gif_header + g->out = (stbi_uc *) stbi__malloc(4 * g->w * g->h); + g->background = (stbi_uc *) stbi__malloc(4 * g->w * g->h); + g->history = (stbi_uc *) stbi__malloc(g->w * g->h); + if (g->out == 0) return stbi__errpuc("outofmem", "Out of memory"); + + // image is treated as "tranparent" at the start - ie, nothing overwrites the current background; + // background colour is only used for pixels that are not rendered first frame, after that "background" + // color refers to teh color that was there the previous frame. + memset( g->out, 0x00, 4 * g->w * g->h ); + memset( g->background, 0x00, 4 * g->w * g->h ); // state of the background (starts transparent) + memset( g->history, 0x00, g->w * g->h ); // pixels that were affected previous frame + first_frame = 1; + } else { + // second frame - how do we dispoase of the previous one? + dispose = (g->eflags & 0x1C) >> 2; + pcount = g->w * g->h; + + if ((dispose == 3) && (two_back == 0)) { + dispose = 2; // if I don't have an image to revert back to, default to the old background + } + + if (dispose == 3) { // use previous graphic + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &two_back[pi * 4], 4 ); + } + } + } else if (dispose == 2) { + // restore what was changed last frame to background before that frame; + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &g->background[pi * 4], 4 ); + } + } + } else { + // This is a non-disposal case eithe way, so just + // leave the pixels as is, and they will become the new background + // 1: do not dispose + // 0: not specified. + } + + // background is what out is after the undoing of the previou frame; + memcpy( g->background, g->out, 4 * g->w * g->h ); + } + + // clear my history; + memset( g->history, 0x00, g->w * g->h ); // pixels that were affected previous frame + + for (;;) { + int tag = stbi__get8(s); + switch (tag) { + case 0x2C: /* Image Descriptor */ + { + stbi__int32 x, y, w, h; + stbi_uc *o; + + x = stbi__get16le(s); + y = stbi__get16le(s); + w = stbi__get16le(s); + h = stbi__get16le(s); + if (((x + w) > (g->w)) || ((y + h) > (g->h))) + return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); + + g->line_size = g->w * 4; + g->start_x = x * 4; + g->start_y = y * g->line_size; + g->max_x = g->start_x + w * 4; + g->max_y = g->start_y + h * g->line_size; + g->cur_x = g->start_x; + g->cur_y = g->start_y; + + g->lflags = stbi__get8(s); + + if (g->lflags & 0x40) { + g->step = 8 * g->line_size; // first interlaced spacing + g->parse = 3; + } else { + g->step = g->line_size; + g->parse = 0; + } + + if (g->lflags & 0x80) { + stbi__gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); + g->color_table = (stbi_uc *) g->lpal; + } else if (g->flags & 0x80) { + g->color_table = (stbi_uc *) g->pal; + } else + return stbi__errpuc("missing color table", "Corrupt GIF"); + + o = stbi__process_gif_raster(s, g); + if (o == NULL) return NULL; + + // if this was the first frame, + pcount = g->w * g->h; + if (first_frame && (g->bgindex > 0)) { + // if first frame, any pixel not drawn to gets the background color + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi] == 0) { + g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; + memcpy( &g->out[pi * 4], &g->pal[g->bgindex], 4 ); + } + } + } + + return o; + } + + case 0x21: // Comment Extension. + { + int len; + int ext = stbi__get8(s); + if (ext == 0xF9) { // Graphic Control Extension. + len = stbi__get8(s); + if (len == 4) { + g->eflags = stbi__get8(s); + g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths. + + // unset old transparent + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 255; + } + if (g->eflags & 0x01) { + g->transparent = stbi__get8(s); + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 0; + } + } else { + // don't need transparent + stbi__skip(s, 1); + g->transparent = -1; + } + } else { + stbi__skip(s, len); + break; + } + } + while ((len = stbi__get8(s)) != 0) { + stbi__skip(s, len); + } + break; + } + + case 0x3B: // gif stream termination code + return (stbi_uc *) s; // using '1' causes warning on some compilers + + default: + return stbi__errpuc("unknown code", "Corrupt GIF"); + } + } +} + +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + if (stbi__gif_test(s)) { + int layers = 0; + stbi_uc *u = 0; + stbi_uc *out = 0; + stbi_uc *two_back = 0; + stbi__gif g; + int stride; + memset(&g, 0, sizeof(g)); + if (delays) { + *delays = 0; + } + + do { + u = stbi__gif_load_next(s, &g, comp, req_comp, two_back); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + + if (u) { + *x = g.w; + *y = g.h; + ++layers; + stride = g.w * g.h * 4; + + if (out) { + out = (stbi_uc*) STBI_REALLOC( out, layers * stride ); + if (delays) { + *delays = (int*) STBI_REALLOC( *delays, sizeof(int) * layers ); + } + } else { + out = (stbi_uc*)stbi__malloc( layers * stride ); + if (delays) { + *delays = (int*) stbi__malloc( layers * sizeof(int) ); + } + } + memcpy( out + ((layers - 1) * stride), u, stride ); + if (layers >= 2) { + two_back = out - 2 * stride; + } + + if (delays) { + (*delays)[layers - 1U] = g.delay; + } + } + } while (u != 0); + + // free temp buffer; + STBI_FREE(g.out); + STBI_FREE(g.history); + STBI_FREE(g.background); + + // do the final conversion after loading everything; + if (req_comp && req_comp != 4) + out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h); + + *z = layers; + return out; + } else { + return stbi__errpuc("not GIF", "Image was not as a gif type."); + } +} + +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *u = 0; + stbi__gif g; + memset(&g, 0, sizeof(g)); + + u = stbi__gif_load_next(s, &g, comp, req_comp, 0); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + if (u) { + *x = g.w; + *y = g.h; + + // moved conversion to after successful load so that the same + // can be done for multiple frames. + if (req_comp && req_comp != 4) + u = stbi__convert_format(u, 4, req_comp, g.w, g.h); + } + + // free buffers needed for multiple frame loading; + STBI_FREE(g.history); + STBI_FREE(g.background); + + return u; +} + +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp) +{ + return stbi__gif_info_raw(s,x,y,comp); +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR loader +// originally by Nicolas Schulz +#ifndef STBI_NO_HDR +static int stbi__hdr_test_core(stbi__context *s, const char *signature) +{ + int i; + for (i=0; signature[i]; ++i) + if (stbi__get8(s) != signature[i]) + return 0; + stbi__rewind(s); + return 1; +} + +static int stbi__hdr_test(stbi__context* s) +{ + int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); + stbi__rewind(s); + if(!r) { + r = stbi__hdr_test_core(s, "#?RGBE\n"); + stbi__rewind(s); + } + return r; +} + +#define STBI__HDR_BUFLEN 1024 +static char *stbi__hdr_gettoken(stbi__context *z, char *buffer) +{ + int len=0; + char c = '\0'; + + c = (char) stbi__get8(z); + + while (!stbi__at_eof(z) && c != '\n') { + buffer[len++] = c; + if (len == STBI__HDR_BUFLEN-1) { + // flush to end of line + while (!stbi__at_eof(z) && stbi__get8(z) != '\n') + ; + break; + } + c = (char) stbi__get8(z); + } + + buffer[len] = 0; + return buffer; +} + +static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp) +{ + if ( input[3] != 0 ) { + float f1; + // Exponent + f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8)); + if (req_comp <= 2) + output[0] = (input[0] + input[1] + input[2]) * f1 / 3; + else { + output[0] = input[0] * f1; + output[1] = input[1] * f1; + output[2] = input[2] * f1; + } + if (req_comp == 2) output[1] = 1; + if (req_comp == 4) output[3] = 1; + } else { + switch (req_comp) { + case 4: output[3] = 1; /* fallthrough */ + case 3: output[0] = output[1] = output[2] = 0; + break; + case 2: output[1] = 1; /* fallthrough */ + case 1: output[0] = 0; + break; + } + } +} + +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int width, height; + stbi_uc *scanline; + float *hdr_data; + int len; + unsigned char count, value; + int i, j, k, c1,c2, z; + const char *headerToken; + STBI_NOTUSED(ri); + + // Check identifier + headerToken = stbi__hdr_gettoken(s,buffer); + if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0) + return stbi__errpf("not HDR", "Corrupt HDR image"); + + // Parse header + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) return stbi__errpf("unsupported format", "Unsupported HDR format"); + + // Parse width and height + // can't use sscanf() if we're not using stdio! + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + height = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + width = (int) strtol(token, NULL, 10); + + *x = width; + *y = height; + + if (comp) *comp = 3; + if (req_comp == 0) req_comp = 3; + + if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) + return stbi__errpf("too large", "HDR image is too large"); + + // Read data + hdr_data = (float *) stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0); + if (!hdr_data) + return stbi__errpf("outofmem", "Out of memory"); + + // Load image data + // image data is stored as some number of sca + if ( width < 8 || width >= 32768) { + // Read flat data + for (j=0; j < height; ++j) { + for (i=0; i < width; ++i) { + stbi_uc rgbe[4]; + main_decode_loop: + stbi__getn(s, rgbe, 4); + stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp); + } + } + } else { + // Read RLE-encoded data + scanline = NULL; + + for (j = 0; j < height; ++j) { + c1 = stbi__get8(s); + c2 = stbi__get8(s); + len = stbi__get8(s); + if (c1 != 2 || c2 != 2 || (len & 0x80)) { + // not run-length encoded, so we have to actually use THIS data as a decoded + // pixel (note this can't be a valid pixel--one of RGB must be >= 128) + stbi_uc rgbe[4]; + rgbe[0] = (stbi_uc) c1; + rgbe[1] = (stbi_uc) c2; + rgbe[2] = (stbi_uc) len; + rgbe[3] = (stbi_uc) stbi__get8(s); + stbi__hdr_convert(hdr_data, rgbe, req_comp); + i = 1; + j = 0; + STBI_FREE(scanline); + goto main_decode_loop; // yes, this makes no sense + } + len <<= 8; + len |= stbi__get8(s); + if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } + if (scanline == NULL) { + scanline = (stbi_uc *) stbi__malloc_mad2(width, 4, 0); + if (!scanline) { + STBI_FREE(hdr_data); + return stbi__errpf("outofmem", "Out of memory"); + } + } + + for (k = 0; k < 4; ++k) { + int nleft; + i = 0; + while ((nleft = width - i) > 0) { + count = stbi__get8(s); + if (count > 128) { + // Run + value = stbi__get8(s); + count -= 128; + if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = value; + } else { + // Dump + if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = stbi__get8(s); + } + } + } + for (i=0; i < width; ++i) + stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp); + } + if (scanline) + STBI_FREE(scanline); + } + + return hdr_data; +} + +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int dummy; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (stbi__hdr_test(s) == 0) { + stbi__rewind( s ); + return 0; + } + + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) { + stbi__rewind( s ); + return 0; + } + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *y = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *x = (int) strtol(token, NULL, 10); + *comp = 3; + return 1; +} +#endif // STBI_NO_HDR + +#ifndef STBI_NO_BMP +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) +{ + void *p; + stbi__bmp_data info; + + info.all_a = 255; + p = stbi__bmp_parse_header(s, &info); + stbi__rewind( s ); + if (p == NULL) + return 0; + if (x) *x = s->img_x; + if (y) *y = s->img_y; + if (comp) *comp = info.ma ? 4 : 3; + return 1; +} +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp) +{ + int channelCount, dummy, depth; + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + *y = stbi__get32be(s); + *x = stbi__get32be(s); + depth = stbi__get16be(s); + if (depth != 8 && depth != 16) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 3) { + stbi__rewind( s ); + return 0; + } + *comp = 4; + return 1; +} + +static int stbi__psd_is16(stbi__context *s) +{ + int channelCount, depth; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + (void) stbi__get32be(s); + (void) stbi__get32be(s); + depth = stbi__get16be(s); + if (depth != 16) { + stbi__rewind( s ); + return 0; + } + return 1; +} +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp) +{ + int act_comp=0,num_packets=0,chained,dummy; + stbi__pic_packet packets[10]; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) { + stbi__rewind(s); + return 0; + } + + stbi__skip(s, 88); + + *x = stbi__get16be(s); + *y = stbi__get16be(s); + if (stbi__at_eof(s)) { + stbi__rewind( s); + return 0; + } + if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) { + stbi__rewind( s ); + return 0; + } + + stbi__skip(s, 8); + + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return 0; + + packet = &packets[num_packets++]; + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + act_comp |= packet->channel; + + if (stbi__at_eof(s)) { + stbi__rewind( s ); + return 0; + } + if (packet->size != 8) { + stbi__rewind( s ); + return 0; + } + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); + + return 1; +} +#endif + +// ************************************************************************************************* +// Portable Gray Map and Portable Pixel Map loader +// by Ken Miller +// +// PGM: http://netpbm.sourceforge.net/doc/pgm.html +// PPM: http://netpbm.sourceforge.net/doc/ppm.html +// +// Known limitations: +// Does not support comments in the header section +// Does not support ASCII image data (formats P2 and P3) +// Does not support 16-bit-per-channel + +#ifndef STBI_NO_PNM + +static int stbi__pnm_test(stbi__context *s) +{ + char p, t; + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind( s ); + return 0; + } + return 1; +} + +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + STBI_NOTUSED(ri); + + if (!stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n)) + return 0; + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + + if (!stbi__mad3sizes_valid(s->img_n, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "PNM too large"); + + out = (stbi_uc *) stbi__malloc_mad3(s->img_n, s->img_x, s->img_y, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + stbi__getn(s, out, s->img_n * s->img_x * s->img_y); + + if (req_comp && req_comp != s->img_n) { + out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + return out; +} + +static int stbi__pnm_isspace(char c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; +} + +static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) +{ + for (;;) { + while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) + *c = (char) stbi__get8(s); + + if (stbi__at_eof(s) || *c != '#') + break; + + while (!stbi__at_eof(s) && *c != '\n' && *c != '\r' ) + *c = (char) stbi__get8(s); + } +} + +static int stbi__pnm_isdigit(char c) +{ + return c >= '0' && c <= '9'; +} + +static int stbi__pnm_getinteger(stbi__context *s, char *c) +{ + int value = 0; + + while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { + value = value*10 + (*c - '0'); + *c = (char) stbi__get8(s); + } + + return value; +} + +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp) +{ + int maxv, dummy; + char c, p, t; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + stbi__rewind(s); + + // Get identifier + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; + } + + *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm + + c = (char) stbi__get8(s); + stbi__pnm_skip_whitespace(s, &c); + + *x = stbi__pnm_getinteger(s, &c); // read width + stbi__pnm_skip_whitespace(s, &c); + + *y = stbi__pnm_getinteger(s, &c); // read height + stbi__pnm_skip_whitespace(s, &c); + + maxv = stbi__pnm_getinteger(s, &c); // read max value + + if (maxv > 255) + return stbi__err("max value > 255", "PPM image not 8-bit"); + else + return 1; +} +#endif + +static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp) +{ + #ifndef STBI_NO_JPEG + if (stbi__jpeg_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNG + if (stbi__png_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_GIF + if (stbi__gif_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_BMP + if (stbi__bmp_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PIC + if (stbi__pic_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNM + if (stbi__pnm_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_info(s, x, y, comp)) return 1; + #endif + + // test tga last because it's a crappy test! + #ifndef STBI_NO_TGA + if (stbi__tga_info(s, x, y, comp)) + return 1; + #endif + return stbi__err("unknown image type", "Image not of any known type, or corrupt"); +} + +static int stbi__is_16_main(stbi__context *s) +{ + #ifndef STBI_NO_PNG + if (stbi__png_is16(s)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_is16(s)) return 1; + #endif + + return 0; +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_info_from_file(f, x, y, comp); + fclose(f); + return result; +} + +STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__info_main(&s,x,y,comp); + fseek(f,pos,SEEK_SET); + return r; +} + +STBIDEF int stbi_is_16_bit(char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_is_16_bit_from_file(f); + fclose(f); + return result; +} + +STBIDEF int stbi_is_16_bit_from_file(FILE *f) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__is_16_main(&s); + fseek(f,pos,SEEK_SET); + return r; +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__is_16_main(&s); +} + +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, void *user) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__is_16_main(&s); +} + +#endif // STB_IMAGE_IMPLEMENTATION + +/* + revision history: + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug + 1-bit BMP + *_is_16_bit api + avoid warnings + 2.16 (2017-07-23) all functions have 16-bit variants; + STBI_NO_STDIO works again; + compilation fixes; + fix rounding in unpremultiply; + optimize vertical flip; + disable raw_len validation; + documentation fixes + 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode; + warning fixes; disable run-time SSE detection on gcc; + uniform handling of optional "return" values; + thread-safe initialization of zlib tables + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) allocate large structures on the stack + remove white matting for transparent PSD + fix reported channel count for PNG & BMP + re-enable SSE2 in non-gcc 64-bit + support RGB-formatted JPEG + read 16-bit PNGs (only as 8-bit) + 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED + 2.09 (2016-01-16) allow comments in PNM files + 16-bit-per-pixel TGA (not bit-per-component) + info() for TGA could break due to .hdr handling + info() for BMP to shares code instead of sloppy parse + can use STBI_REALLOC_SIZED if allocator doesn't support realloc + code cleanup + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA + 2.07 (2015-09-13) fix compiler warnings + partial animated GIF support + limited 16-bpc PSD support + #ifdef unused functions + bug with < 92 byte PIC,PNM,HDR,TGA + 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value + 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning + 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit + 2.03 (2015-04-12) extra corruption checking (mmozeiko) + stbi_set_flip_vertically_on_load (nguillemot) + fix NEON support; fix mingw support + 2.02 (2015-01-19) fix incorrect assert, fix warning + 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 + 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG + 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) + progressive JPEG (stb) + PGM/PPM support (Ken Miller) + STBI_MALLOC,STBI_REALLOC,STBI_FREE + GIF bugfix -- seemingly never worked + STBI_NO_*, STBI_ONLY_* + 1.48 (2014-12-14) fix incorrectly-named assert() + 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) + optimize PNG (ryg) + fix bug in interlaced PNG with user-specified channel count (stb) + 1.46 (2014-08-26) + fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG + 1.45 (2014-08-16) + fix MSVC-ARM internal compiler error by wrapping malloc + 1.44 (2014-08-07) + various warning fixes from Ronny Chevalier + 1.43 (2014-07-15) + fix MSVC-only compiler problem in code changed in 1.42 + 1.42 (2014-07-09) + don't define _CRT_SECURE_NO_WARNINGS (affects user code) + fixes to stbi__cleanup_jpeg path + added STBI_ASSERT to avoid requiring assert.h + 1.41 (2014-06-25) + fix search&replace from 1.36 that messed up comments/error messages + 1.40 (2014-06-22) + fix gcc struct-initialization warning + 1.39 (2014-06-15) + fix to TGA optimization when req_comp != number of components in TGA; + fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) + add support for BMP version 5 (more ignored fields) + 1.38 (2014-06-06) + suppress MSVC warnings on integer casts truncating values + fix accidental rename of 'skip' field of I/O + 1.37 (2014-06-04) + remove duplicate typedef + 1.36 (2014-06-03) + convert to header file single-file library + if de-iphone isn't set, load iphone images color-swapped instead of returning NULL + 1.35 (2014-05-27) + various warnings + fix broken STBI_SIMD path + fix bug where stbi_load_from_file no longer left file pointer in correct place + fix broken non-easy path for 32-bit BMP (possibly never used) + TGA optimization by Arseny Kapoulkine + 1.34 (unknown) + use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case + 1.33 (2011-07-14) + make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements + 1.32 (2011-07-13) + support for "info" function for all supported filetypes (SpartanJ) + 1.31 (2011-06-20) + a few more leak fixes, bug in PNG handling (SpartanJ) + 1.30 (2011-06-11) + added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) + removed deprecated format-specific test/load functions + removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway + error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) + fix inefficiency in decoding 32-bit BMP (David Woo) + 1.29 (2010-08-16) + various warning fixes from Aurelien Pocheville + 1.28 (2010-08-01) + fix bug in GIF palette transparency (SpartanJ) + 1.27 (2010-08-01) + cast-to-stbi_uc to fix warnings + 1.26 (2010-07-24) + fix bug in file buffering for PNG reported by SpartanJ + 1.25 (2010-07-17) + refix trans_data warning (Won Chun) + 1.24 (2010-07-12) + perf improvements reading from files on platforms with lock-heavy fgetc() + minor perf improvements for jpeg + deprecated type-specific functions so we'll get feedback if they're needed + attempt to fix trans_data warning (Won Chun) + 1.23 fixed bug in iPhone support + 1.22 (2010-07-10) + removed image *writing* support + stbi_info support from Jetro Lauha + GIF support from Jean-Marc Lienher + iPhone PNG-extensions from James Brown + warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) + 1.21 fix use of 'stbi_uc' in header (reported by jon blow) + 1.20 added support for Softimage PIC, by Tom Seddon + 1.19 bug in interlaced PNG corruption check (found by ryg) + 1.18 (2008-08-02) + fix a threading bug (local mutable static) + 1.17 support interlaced PNG + 1.16 major bugfix - stbi__convert_format converted one too many pixels + 1.15 initialize some fields for thread safety + 1.14 fix threadsafe conversion bug + header-file-only version (#define STBI_HEADER_FILE_ONLY before including) + 1.13 threadsafe + 1.12 const qualifiers in the API + 1.11 Support installable IDCT, colorspace conversion routines + 1.10 Fixes for 64-bit (don't use "unsigned long") + optimized upsampling by Fabian "ryg" Giesen + 1.09 Fix format-conversion for PSD code (bad global variables!) + 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz + 1.07 attempt to fix C++ warning/errors again + 1.06 attempt to fix C++ warning/errors again + 1.05 fix TGA loading to return correct *comp and use good luminance calc + 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free + 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR + 1.02 support for (subset of) HDR files, float interface for preferred access to them + 1.01 fix bug: possible bug in handling right-side up bmps... not sure + fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all + 1.00 interface to zlib that skips zlib header + 0.99 correct handling of alpha in palette + 0.98 TGA loader by lonesock; dynamically add loaders (untested) + 0.97 jpeg errors on too large a file; also catch another malloc failure + 0.96 fix detection of invalid v value - particleman@mollyrocket forum + 0.95 during header scan, seek to markers in case of padding + 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same + 0.93 handle jpegtran output; verbose errors + 0.92 read 4,8,16,24,32-bit BMP files of several formats + 0.91 output 24-bit Windows 3.0 BMP files + 0.90 fix a few more warnings; bump version number to approach 1.0 + 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd + 0.60 fix compiling as c++ + 0.59 fix warnings: merge Dave Moore's -Wall fixes + 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian + 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available + 0.56 fix bug: zlib uncompressed mode len vs. nlen + 0.55 fix bug: restart_interval not initialized to 0 + 0.54 allow NULL for 'int *comp' + 0.53 fix bug in png 3->4; speedup png decoding + 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments + 0.51 obey req_comp requests, 1-component jpegs return as 1-component, + on 'test' only check type, not whether we support this variant + 0.50 (2006-11-19) + first released version +*/ + + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff -Nru gem-0.94~pre1/plugins/imageSTB/STB/stb_image_write.h gem-0.94/plugins/imageSTB/STB/stb_image_write.h --- gem-0.94~pre1/plugins/imageSTB/STB/stb_image_write.h 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/plugins/imageSTB/STB/stb_image_write.h 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,1568 @@ +/* stb_image_write - v1.09 - public domain - http://nothings.org/stb/stb_image_write.h + writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015 + no warranty implied; use at your own risk + + Before #including, + + #define STB_IMAGE_WRITE_IMPLEMENTATION + + in the file that you want to have the implementation. + + Will probably not work correctly with strict-aliasing optimizations. + + If using a modern Microsoft Compiler, non-safe versions of CRT calls may cause + compilation warnings or even errors. To avoid this, also before #including, + + #define STBI_MSC_SECURE_CRT + +ABOUT: + + This header file is a library for writing images to C stdio. It could be + adapted to write to memory or a general streaming interface; let me know. + + The PNG output is not optimal; it is 20-50% larger than the file + written by a decent optimizing implementation; though providing a custom + zlib compress function (see STBIW_ZLIB_COMPRESS) can mitigate that. + This library is designed for source code compactness and simplicity, + not optimal image file size or run-time performance. + +BUILDING: + + You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h. + You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace + malloc,realloc,free. + You can #define STBIW_MEMMOVE() to replace memmove() + You can #define STBIW_ZLIB_COMPRESS to use a custom zlib-style compress function + for PNG compression (instead of the builtin one), it must have the following signature: + unsigned char * my_compress(unsigned char *data, int data_len, int *out_len, int quality); + The returned data will be freed with STBIW_FREE() (free() by default), + so it must be heap allocated with STBIW_MALLOC() (malloc() by default), + +USAGE: + + There are five functions, one for each image file format: + + int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_jpg(char const *filename, int w, int h, int comp, const void *data, int quality); + int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); + + void stbi_flip_vertically_on_write(int flag); // flag is non-zero to flip data vertically + + There are also five equivalent functions that use an arbitrary write function. You are + expected to open/close your file-equivalent before and after calling these: + + int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); + int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + + where the callback is: + void stbi_write_func(void *context, void *data, int size); + + You can configure it with these global variables: + int stbi_write_tga_with_rle; // defaults to true; set to 0 to disable RLE + int stbi_write_png_compression_level; // defaults to 8; set to higher for more compression + int stbi_write_force_png_filter; // defaults to -1; set to 0..5 to force a filter mode + + + You can define STBI_WRITE_NO_STDIO to disable the file variant of these + functions, so the library will not use stdio.h at all. However, this will + also disable HDR writing, because it requires stdio for formatted output. + + Each function returns 0 on failure and non-0 on success. + + The functions create an image file defined by the parameters. The image + is a rectangle of pixels stored from left-to-right, top-to-bottom. + Each pixel contains 'comp' channels of data stored interleaved with 8-bits + per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is + monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall. + The *data pointer points to the first byte of the top-left-most pixel. + For PNG, "stride_in_bytes" is the distance in bytes from the first byte of + a row of pixels to the first byte of the next row of pixels. + + PNG creates output files with the same number of components as the input. + The BMP format expands Y to RGB in the file format and does not + output alpha. + + PNG supports writing rectangles of data even when the bytes storing rows of + data are not consecutive in memory (e.g. sub-rectangles of a larger image), + by supplying the stride between the beginning of adjacent rows. The other + formats do not. (Thus you cannot write a native-format BMP through the BMP + writer, both because it is in BGR order and because it may have padding + at the end of the line.) + + PNG allows you to set the deflate compression level by setting the global + variable 'stbi_write_png_compression_level' (it defaults to 8). + + HDR expects linear float data. Since the format is always 32-bit rgb(e) + data, alpha (if provided) is discarded, and for monochrome data it is + replicated across all three channels. + + TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed + data, set the global variable 'stbi_write_tga_with_rle' to 0. + + JPEG does ignore alpha channels in input data; quality is between 1 and 100. + Higher quality looks better but results in a bigger image. + JPEG baseline (no JPEG progressive). + +CREDITS: + + + Sean Barrett - PNG/BMP/TGA + Baldur Karlsson - HDR + Jean-Sebastien Guay - TGA monochrome + Tim Kelsey - misc enhancements + Alan Hickman - TGA RLE + Emmanuel Julien - initial file IO callback implementation + Jon Olick - original jo_jpeg.cpp code + Daniel Gibson - integrate JPEG, allow external zlib + Aarni Koskela - allow choosing PNG filter + + bugfixes: + github:Chribba + Guillaume Chereau + github:jry2 + github:romigrou + Sergio Gonzalez + Jonas Karlsson + Filip Wasil + Thatcher Ulrich + github:poppolopoppo + Patrick Boettcher + github:xeekworx + Cap Petschulat + Simon Rodriguez + Ivan Tikhonov + github:ignotion + Adam Schackart + +LICENSE + + See end of file for license information. + +*/ + +#ifndef INCLUDE_STB_IMAGE_WRITE_H +#define INCLUDE_STB_IMAGE_WRITE_H + +// if STB_IMAGE_WRITE_STATIC causes problems, try defining STBIWDEF to 'inline' or 'static inline' +#ifndef STBIWDEF +#ifdef STB_IMAGE_WRITE_STATIC +#define STBIWDEF static +#else +#ifdef __cplusplus +#define STBIWDEF extern "C" +#else +#define STBIWDEF extern +#endif +#endif +#endif + +#ifndef STB_IMAGE_WRITE_STATIC // C++ forbids static forward declarations +extern int stbi_write_tga_with_rle; +extern int stbi_write_png_compression_level; +extern int stbi_write_force_png_filter; +#endif + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality); +#endif + +typedef void stbi_write_func(void *context, void *data, int size); + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + +STBIWDEF void stbi_flip_vertically_on_write(int flip_boolean); + +#endif//INCLUDE_STB_IMAGE_WRITE_H + +#ifdef STB_IMAGE_WRITE_IMPLEMENTATION + +#ifdef _WIN32 + #ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS + #endif + #ifndef _CRT_NONSTDC_NO_DEPRECATE + #define _CRT_NONSTDC_NO_DEPRECATE + #endif +#endif + +#ifndef STBI_WRITE_NO_STDIO +#include <stdio.h> +#endif // STBI_WRITE_NO_STDIO + +#include <stdarg.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED)) +// ok +#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED)." +#endif + +#ifndef STBIW_MALLOC +#define STBIW_MALLOC(sz) malloc(sz) +#define STBIW_REALLOC(p,newsz) realloc(p,newsz) +#define STBIW_FREE(p) free(p) +#endif + +#ifndef STBIW_REALLOC_SIZED +#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz) +#endif + + +#ifndef STBIW_MEMMOVE +#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz) +#endif + + +#ifndef STBIW_ASSERT +#include <assert.h> +#define STBIW_ASSERT(x) assert(x) +#endif + +#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff) + +#ifdef STB_IMAGE_WRITE_STATIC +static int stbi__flip_vertically_on_write=0; +static int stbi_write_png_compression_level = 8; +static int stbi_write_tga_with_rle = 1; +static int stbi_write_force_png_filter = -1; +#else +int stbi_write_png_compression_level = 8; +int stbi__flip_vertically_on_write=0; +int stbi_write_tga_with_rle = 1; +int stbi_write_force_png_filter = -1; +#endif + +STBIWDEF void stbi_flip_vertically_on_write(int flag) +{ + stbi__flip_vertically_on_write = flag; +} + +typedef struct +{ + stbi_write_func *func; + void *context; +} stbi__write_context; + +// initialize a callback-based context +static void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context) +{ + s->func = c; + s->context = context; +} + +#ifndef STBI_WRITE_NO_STDIO + +static void stbi__stdio_write(void *context, void *data, int size) +{ + fwrite(data,1,size,(FILE*) context); +} + +static int stbi__start_write_file(stbi__write_context *s, const char *filename) +{ + FILE *f; +#ifdef STBI_MSC_SECURE_CRT + if (fopen_s(&f, filename, "wb")) + f = NULL; +#else + f = fopen(filename, "wb"); +#endif + stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f); + return f != NULL; +} + +static void stbi__end_write_file(stbi__write_context *s) +{ + fclose((FILE *)s->context); +} + +#endif // !STBI_WRITE_NO_STDIO + +typedef unsigned int stbiw_uint32; +typedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1]; + +static void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v) +{ + while (*fmt) { + switch (*fmt++) { + case ' ': break; + case '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int)); + s->func(s->context,&x,1); + break; } + case '2': { int x = va_arg(v,int); + unsigned char b[2]; + b[0] = STBIW_UCHAR(x); + b[1] = STBIW_UCHAR(x>>8); + s->func(s->context,b,2); + break; } + case '4': { stbiw_uint32 x = va_arg(v,int); + unsigned char b[4]; + b[0]=STBIW_UCHAR(x); + b[1]=STBIW_UCHAR(x>>8); + b[2]=STBIW_UCHAR(x>>16); + b[3]=STBIW_UCHAR(x>>24); + s->func(s->context,b,4); + break; } + default: + STBIW_ASSERT(0); + return; + } + } +} + +static void stbiw__writef(stbi__write_context *s, const char *fmt, ...) +{ + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); +} + +static void stbiw__putc(stbi__write_context *s, unsigned char c) +{ + s->func(s->context, &c, 1); +} + +static void stbiw__write3(stbi__write_context *s, unsigned char a, unsigned char b, unsigned char c) +{ + unsigned char arr[3]; + arr[0] = a, arr[1] = b, arr[2] = c; + s->func(s->context, arr, 3); +} + +static void stbiw__write_pixel(stbi__write_context *s, int rgb_dir, int comp, int write_alpha, int expand_mono, unsigned char *d) +{ + unsigned char bg[3] = { 255, 0, 255}, px[3]; + int k; + + if (write_alpha < 0) + s->func(s->context, &d[comp - 1], 1); + + switch (comp) { + case 2: // 2 pixels = mono + alpha, alpha is written separately, so same as 1-channel case + case 1: + if (expand_mono) + stbiw__write3(s, d[0], d[0], d[0]); // monochrome bmp + else + s->func(s->context, d, 1); // monochrome TGA + break; + case 4: + if (!write_alpha) { + // composite against pink background + for (k = 0; k < 3; ++k) + px[k] = bg[k] + ((d[k] - bg[k]) * d[3]) / 255; + stbiw__write3(s, px[1 - rgb_dir], px[1], px[1 + rgb_dir]); + break; + } + /* FALLTHROUGH */ + case 3: + stbiw__write3(s, d[1 - rgb_dir], d[1], d[1 + rgb_dir]); + break; + } + if (write_alpha > 0) + s->func(s->context, &d[comp - 1], 1); +} + +static void stbiw__write_pixels(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad, int expand_mono) +{ + stbiw_uint32 zero = 0; + int i,j, j_end; + + if (y <= 0) + return; + + if (stbi__flip_vertically_on_write) + vdir *= -1; + + if (vdir < 0) + j_end = -1, j = y-1; + else + j_end = y, j = 0; + + for (; j != j_end; j += vdir) { + for (i=0; i < x; ++i) { + unsigned char *d = (unsigned char *) data + (j*x+i)*comp; + stbiw__write_pixel(s, rgb_dir, comp, write_alpha, expand_mono, d); + } + s->func(s->context, &zero, scanline_pad); + } +} + +static int stbiw__outfile(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, int expand_mono, void *data, int alpha, int pad, const char *fmt, ...) +{ + if (y < 0 || x < 0) { + return 0; + } else { + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); + stbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad, expand_mono); + return 1; + } +} + +static int stbi_write_bmp_core(stbi__write_context *s, int x, int y, int comp, const void *data) +{ + int pad = (-x*3) & 3; + return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *) data,0,pad, + "11 4 22 4" "4 44 22 444444", + 'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40, // file header + 40, x,y, 1,24, 0,0,0,0,0,0); // bitmap header +} + +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_bmp_core(&s, x, y, comp, data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_bmp_core(&s, x, y, comp, data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif //!STBI_WRITE_NO_STDIO + +static int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, void *data) +{ + int has_alpha = (comp == 2 || comp == 4); + int colorbytes = has_alpha ? comp-1 : comp; + int format = colorbytes < 2 ? 3 : 2; // 3 color channels (RGB/RGBA) = 2, 1 color channel (Y/YA) = 3 + + if (y < 0 || x < 0) + return 0; + + if (!stbi_write_tga_with_rle) { + return stbiw__outfile(s, -1, -1, x, y, comp, 0, (void *) data, has_alpha, 0, + "111 221 2222 11", 0, 0, format, 0, 0, 0, 0, 0, x, y, (colorbytes + has_alpha) * 8, has_alpha * 8); + } else { + int i,j,k; + int jend, jdir; + + stbiw__writef(s, "111 221 2222 11", 0,0,format+8, 0,0,0, 0,0,x,y, (colorbytes + has_alpha) * 8, has_alpha * 8); + + if (stbi__flip_vertically_on_write) { + j = 0; + jend = y; + jdir = 1; + } else { + j = y-1; + jend = -1; + jdir = -1; + } + for (; j != jend; j += jdir) { + unsigned char *row = (unsigned char *) data + j * x * comp; + int len; + + for (i = 0; i < x; i += len) { + unsigned char *begin = row + i * comp; + int diff = 1; + len = 1; + + if (i < x - 1) { + ++len; + diff = memcmp(begin, row + (i + 1) * comp, comp); + if (diff) { + const unsigned char *prev = begin; + for (k = i + 2; k < x && len < 128; ++k) { + if (memcmp(prev, row + k * comp, comp)) { + prev += comp; + ++len; + } else { + --len; + break; + } + } + } else { + for (k = i + 2; k < x && len < 128; ++k) { + if (!memcmp(begin, row + k * comp, comp)) { + ++len; + } else { + break; + } + } + } + } + + if (diff) { + unsigned char header = STBIW_UCHAR(len - 1); + s->func(s->context, &header, 1); + for (k = 0; k < len; ++k) { + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp); + } + } else { + unsigned char header = STBIW_UCHAR(len - 129); + s->func(s->context, &header, 1); + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin); + } + } + } + } + return 1; +} + +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_tga_core(&s, x, y, comp, (void *) data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_tga_core(&s, x, y, comp, (void *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR writer +// by Baldur Karlsson + +#define stbiw__max(a, b) ((a) > (b) ? (a) : (b)) + +void stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear) +{ + int exponent; + float maxcomp = stbiw__max(linear[0], stbiw__max(linear[1], linear[2])); + + if (maxcomp < 1e-32f) { + rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0; + } else { + float normalize = (float) frexp(maxcomp, &exponent) * 256.0f/maxcomp; + + rgbe[0] = (unsigned char)(linear[0] * normalize); + rgbe[1] = (unsigned char)(linear[1] * normalize); + rgbe[2] = (unsigned char)(linear[2] * normalize); + rgbe[3] = (unsigned char)(exponent + 128); + } +} + +void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte) +{ + unsigned char lengthbyte = STBIW_UCHAR(length+128); + STBIW_ASSERT(length+128 <= 255); + s->func(s->context, &lengthbyte, 1); + s->func(s->context, &databyte, 1); +} + +void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data) +{ + unsigned char lengthbyte = STBIW_UCHAR(length); + STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code + s->func(s->context, &lengthbyte, 1); + s->func(s->context, data, length); +} + +void stbiw__write_hdr_scanline(stbi__write_context *s, int width, int ncomp, unsigned char *scratch, float *scanline) +{ + unsigned char scanlineheader[4] = { 2, 2, 0, 0 }; + unsigned char rgbe[4]; + float linear[3]; + int x; + + scanlineheader[2] = (width&0xff00)>>8; + scanlineheader[3] = (width&0x00ff); + + /* skip RLE for images too small or large */ + if (width < 8 || width >= 32768) { + for (x=0; x < width; x++) { + switch (ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + s->func(s->context, rgbe, 4); + } + } else { + int c,r; + /* encode into scratch buffer */ + for (x=0; x < width; x++) { + switch(ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + scratch[x + width*0] = rgbe[0]; + scratch[x + width*1] = rgbe[1]; + scratch[x + width*2] = rgbe[2]; + scratch[x + width*3] = rgbe[3]; + } + + s->func(s->context, scanlineheader, 4); + + /* RLE each component separately */ + for (c=0; c < 4; c++) { + unsigned char *comp = &scratch[width*c]; + + x = 0; + while (x < width) { + // find first run + r = x; + while (r+2 < width) { + if (comp[r] == comp[r+1] && comp[r] == comp[r+2]) + break; + ++r; + } + if (r+2 >= width) + r = width; + // dump up to first run + while (x < r) { + int len = r-x; + if (len > 128) len = 128; + stbiw__write_dump_data(s, len, &comp[x]); + x += len; + } + // if there's a run, output it + if (r+2 < width) { // same test as what we break out of in search loop, so only true if we break'd + // find next byte after run + while (r < width && comp[r] == comp[x]) + ++r; + // output run up to r + while (x < r) { + int len = r-x; + if (len > 127) len = 127; + stbiw__write_run_data(s, len, comp[x]); + x += len; + } + } + } + } + } +} + +static int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, float *data) +{ + if (y <= 0 || x <= 0 || data == NULL) + return 0; + else { + // Each component is stored separately. Allocate scratch space for full output scanline. + unsigned char *scratch = (unsigned char *) STBIW_MALLOC(x*4); + int i, len; + char buffer[128]; + char header[] = "#?RADIANCE\n# Written by stb_image_write.h\nFORMAT=32-bit_rle_rgbe\n"; + s->func(s->context, header, sizeof(header)-1); + +#ifdef STBI_MSC_SECURE_CRT + len = sprintf_s(buffer, "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); +#else + len = sprintf(buffer, "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); +#endif + s->func(s->context, buffer, len); + + for(i=0; i < y; i++) + stbiw__write_hdr_scanline(s, x, comp, scratch, data + comp*x*(stbi__flip_vertically_on_write ? y-1-i : i)*x); + STBIW_FREE(scratch); + return 1; + } +} + +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const float *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_hdr_core(&s, x, y, comp, (float *) data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_hdr(char const *filename, int x, int y, int comp, const float *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_hdr_core(&s, x, y, comp, (float *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif // STBI_WRITE_NO_STDIO + + +////////////////////////////////////////////////////////////////////////////// +// +// PNG writer +// + +#ifndef STBIW_ZLIB_COMPRESS +// stretchy buffer; stbiw__sbpush() == vector<>::push_back() -- stbiw__sbcount() == vector<>::size() +#define stbiw__sbraw(a) ((int *) (a) - 2) +#define stbiw__sbm(a) stbiw__sbraw(a)[0] +#define stbiw__sbn(a) stbiw__sbraw(a)[1] + +#define stbiw__sbneedgrow(a,n) ((a)==0 || stbiw__sbn(a)+n >= stbiw__sbm(a)) +#define stbiw__sbmaybegrow(a,n) (stbiw__sbneedgrow(a,(n)) ? stbiw__sbgrow(a,n) : 0) +#define stbiw__sbgrow(a,n) stbiw__sbgrowf((void **) &(a), (n), sizeof(*(a))) + +#define stbiw__sbpush(a, v) (stbiw__sbmaybegrow(a,1), (a)[stbiw__sbn(a)++] = (v)) +#define stbiw__sbcount(a) ((a) ? stbiw__sbn(a) : 0) +#define stbiw__sbfree(a) ((a) ? STBIW_FREE(stbiw__sbraw(a)),0 : 0) + +static void *stbiw__sbgrowf(void **arr, int increment, int itemsize) +{ + int m = *arr ? 2*stbiw__sbm(*arr)+increment : increment+1; + void *p = STBIW_REALLOC_SIZED(*arr ? stbiw__sbraw(*arr) : 0, *arr ? (stbiw__sbm(*arr)*itemsize + sizeof(int)*2) : 0, itemsize * m + sizeof(int)*2); + STBIW_ASSERT(p); + if (p) { + if (!*arr) ((int *) p)[1] = 0; + *arr = (void *) ((int *) p + 2); + stbiw__sbm(*arr) = m; + } + return *arr; +} + +static unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount) +{ + while (*bitcount >= 8) { + stbiw__sbpush(data, STBIW_UCHAR(*bitbuffer)); + *bitbuffer >>= 8; + *bitcount -= 8; + } + return data; +} + +static int stbiw__zlib_bitrev(int code, int codebits) +{ + int res=0; + while (codebits--) { + res = (res << 1) | (code & 1); + code >>= 1; + } + return res; +} + +static unsigned int stbiw__zlib_countm(unsigned char *a, unsigned char *b, int limit) +{ + int i; + for (i=0; i < limit && i < 258; ++i) + if (a[i] != b[i]) break; + return i; +} + +static unsigned int stbiw__zhash(unsigned char *data) +{ + stbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16); + hash ^= hash << 3; + hash += hash >> 5; + hash ^= hash << 4; + hash += hash >> 17; + hash ^= hash << 25; + hash += hash >> 6; + return hash; +} + +#define stbiw__zlib_flush() (out = stbiw__zlib_flushf(out, &bitbuf, &bitcount)) +#define stbiw__zlib_add(code,codebits) \ + (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush()) +#define stbiw__zlib_huffa(b,c) stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c) +// default huffman tables +#define stbiw__zlib_huff1(n) stbiw__zlib_huffa(0x30 + (n), 8) +#define stbiw__zlib_huff2(n) stbiw__zlib_huffa(0x190 + (n)-144, 9) +#define stbiw__zlib_huff3(n) stbiw__zlib_huffa(0 + (n)-256,7) +#define stbiw__zlib_huff4(n) stbiw__zlib_huffa(0xc0 + (n)-280,8) +#define stbiw__zlib_huff(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : (n) <= 255 ? stbiw__zlib_huff2(n) : (n) <= 279 ? stbiw__zlib_huff3(n) : stbiw__zlib_huff4(n)) +#define stbiw__zlib_huffb(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : stbiw__zlib_huff2(n)) + +#define stbiw__ZHASH 16384 + +#endif // STBIW_ZLIB_COMPRESS + +unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality) +{ +#ifdef STBIW_ZLIB_COMPRESS + // user provided a zlib compress implementation, use that + return STBIW_ZLIB_COMPRESS(data, data_len, out_len, quality); +#else // use builtin + static unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 }; + static unsigned char lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 }; + static unsigned short distc[] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 }; + static unsigned char disteb[] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; + unsigned int bitbuf=0; + int i,j, bitcount=0; + unsigned char *out = NULL; + unsigned char ***hash_table = (unsigned char***) STBIW_MALLOC(stbiw__ZHASH * sizeof(char**)); + if (hash_table == NULL) + return NULL; + if (quality < 5) quality = 5; + + stbiw__sbpush(out, 0x78); // DEFLATE 32K window + stbiw__sbpush(out, 0x5e); // FLEVEL = 1 + stbiw__zlib_add(1,1); // BFINAL = 1 + stbiw__zlib_add(1,2); // BTYPE = 1 -- fixed huffman + + for (i=0; i < stbiw__ZHASH; ++i) + hash_table[i] = NULL; + + i=0; + while (i < data_len-3) { + // hash next 3 bytes of data to be compressed + int h = stbiw__zhash(data+i)&(stbiw__ZHASH-1), best=3; + unsigned char *bestloc = 0; + unsigned char **hlist = hash_table[h]; + int n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32768) { // if entry lies within window + int d = stbiw__zlib_countm(hlist[j], data+i, data_len-i); + if (d >= best) best=d,bestloc=hlist[j]; + } + } + // when hash table entry is too long, delete half the entries + if (hash_table[h] && stbiw__sbn(hash_table[h]) == 2*quality) { + STBIW_MEMMOVE(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality); + stbiw__sbn(hash_table[h]) = quality; + } + stbiw__sbpush(hash_table[h],data+i); + + if (bestloc) { + // "lazy matching" - check match at *next* byte, and if it's better, do cur byte as literal + h = stbiw__zhash(data+i+1)&(stbiw__ZHASH-1); + hlist = hash_table[h]; + n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32767) { + int e = stbiw__zlib_countm(hlist[j], data+i+1, data_len-i-1); + if (e > best) { // if next match is better, bail on current match + bestloc = NULL; + break; + } + } + } + } + + if (bestloc) { + int d = (int) (data+i - bestloc); // distance back + STBIW_ASSERT(d <= 32767 && best <= 258); + for (j=0; best > lengthc[j+1]-1; ++j); + stbiw__zlib_huff(j+257); + if (lengtheb[j]) stbiw__zlib_add(best - lengthc[j], lengtheb[j]); + for (j=0; d > distc[j+1]-1; ++j); + stbiw__zlib_add(stbiw__zlib_bitrev(j,5),5); + if (disteb[j]) stbiw__zlib_add(d - distc[j], disteb[j]); + i += best; + } else { + stbiw__zlib_huffb(data[i]); + ++i; + } + } + // write out final bytes + for (;i < data_len; ++i) + stbiw__zlib_huffb(data[i]); + stbiw__zlib_huff(256); // end of block + // pad with 0 bits to byte boundary + while (bitcount) + stbiw__zlib_add(0,1); + + for (i=0; i < stbiw__ZHASH; ++i) + (void) stbiw__sbfree(hash_table[i]); + STBIW_FREE(hash_table); + + { + // compute adler32 on input + unsigned int s1=1, s2=0; + int blocklen = (int) (data_len % 5552); + j=0; + while (j < data_len) { + for (i=0; i < blocklen; ++i) s1 += data[j+i], s2 += s1; + s1 %= 65521, s2 %= 65521; + j += blocklen; + blocklen = 5552; + } + stbiw__sbpush(out, STBIW_UCHAR(s2 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s2)); + stbiw__sbpush(out, STBIW_UCHAR(s1 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s1)); + } + *out_len = stbiw__sbn(out); + // make returned pointer freeable + STBIW_MEMMOVE(stbiw__sbraw(out), out, *out_len); + return (unsigned char *) stbiw__sbraw(out); +#endif // STBIW_ZLIB_COMPRESS +} + +static unsigned int stbiw__crc32(unsigned char *buffer, int len) +{ + static unsigned int crc_table[256] = + { + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, + 0x0eDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, + 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, + 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, + 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, + 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, + 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, + 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, + 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, + 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, + 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, + 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, + 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, + 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, + 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D + }; + + unsigned int crc = ~0u; + int i; + for (i=0; i < len; ++i) + crc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)]; + return ~crc; +} + +#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4) +#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v)); +#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3]) + +static void stbiw__wpcrc(unsigned char **data, int len) +{ + unsigned int crc = stbiw__crc32(*data - len - 4, len+4); + stbiw__wp32(*data, crc); +} + +static unsigned char stbiw__paeth(int a, int b, int c) +{ + int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c); + if (pa <= pb && pa <= pc) return STBIW_UCHAR(a); + if (pb <= pc) return STBIW_UCHAR(b); + return STBIW_UCHAR(c); +} + +// @OPTIMIZE: provide an option that always forces left-predict or paeth predict +static void stbiw__encode_png_line(unsigned char *pixels, int stride_bytes, int width, int height, int y, int n, int filter_type, signed char *line_buffer) +{ + static int mapping[] = { 0,1,2,3,4 }; + static int firstmap[] = { 0,1,0,5,6 }; + int *mymap = (y != 0) ? mapping : firstmap; + int i; + int type = mymap[filter_type]; + unsigned char *z = pixels + stride_bytes * (stbi__flip_vertically_on_write ? height-1-y : y); + int signed_stride = stbi__flip_vertically_on_write ? -stride_bytes : stride_bytes; + for (i = 0; i < n; ++i) { + switch (type) { + case 0: line_buffer[i] = z[i]; break; + case 1: line_buffer[i] = z[i]; break; + case 2: line_buffer[i] = z[i] - z[i-signed_stride]; break; + case 3: line_buffer[i] = z[i] - (z[i-signed_stride]>>1); break; + case 4: line_buffer[i] = (signed char) (z[i] - stbiw__paeth(0,z[i-signed_stride],0)); break; + case 5: line_buffer[i] = z[i]; break; + case 6: line_buffer[i] = z[i]; break; + } + } + for (i=n; i < width*n; ++i) { + switch (type) { + case 0: line_buffer[i] = z[i]; break; + case 1: line_buffer[i] = z[i] - z[i-n]; break; + case 2: line_buffer[i] = z[i] - z[i-signed_stride]; break; + case 3: line_buffer[i] = z[i] - ((z[i-n] + z[i-signed_stride])>>1); break; + case 4: line_buffer[i] = z[i] - stbiw__paeth(z[i-n], z[i-signed_stride], z[i-signed_stride-n]); break; + case 5: line_buffer[i] = z[i] - (z[i-n]>>1); break; + case 6: line_buffer[i] = z[i] - stbiw__paeth(z[i-n], 0,0); break; + } + } +} + +unsigned char *stbi_write_png_to_mem(unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len) +{ + int force_filter = stbi_write_force_png_filter; + int ctype[5] = { -1, 0, 4, 2, 6 }; + unsigned char sig[8] = { 137,80,78,71,13,10,26,10 }; + unsigned char *out,*o, *filt, *zlib; + signed char *line_buffer; + int j,zlen; + + if (stride_bytes == 0) + stride_bytes = x * n; + + if (force_filter >= 5) { + force_filter = -1; + } + + filt = (unsigned char *) STBIW_MALLOC((x*n+1) * y); if (!filt) return 0; + line_buffer = (signed char *) STBIW_MALLOC(x * n); if (!line_buffer) { STBIW_FREE(filt); return 0; } + for (j=0; j < y; ++j) { + int filter_type; + if (force_filter > -1) { + filter_type = force_filter; + stbiw__encode_png_line(pixels, stride_bytes, x, y, j, n, force_filter, line_buffer); + } else { // Estimate the best filter by running through all of them: + int best_filter = 0, best_filter_val = 0x7fffffff, est, i; + for (filter_type = 0; filter_type < 5; filter_type++) { + stbiw__encode_png_line(pixels, stride_bytes, x, y, j, n, filter_type, line_buffer); + + // Estimate the entropy of the line using this filter; the less, the better. + est = 0; + for (i = 0; i < x*n; ++i) { + est += abs((signed char) line_buffer[i]); + } + if (est < best_filter_val) { + best_filter_val = est; + best_filter = filter_type; + } + } + if (filter_type != best_filter) { // If the last iteration already got us the best filter, don't redo it + stbiw__encode_png_line(pixels, stride_bytes, x, y, j, n, best_filter, line_buffer); + filter_type = best_filter; + } + } + // when we get here, filter_type contains the filter type, and line_buffer contains the data + filt[j*(x*n+1)] = (unsigned char) filter_type; + STBIW_MEMMOVE(filt+j*(x*n+1)+1, line_buffer, x*n); + } + STBIW_FREE(line_buffer); + zlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, stbi_write_png_compression_level); + STBIW_FREE(filt); + if (!zlib) return 0; + + // each tag requires 12 bytes of overhead + out = (unsigned char *) STBIW_MALLOC(8 + 12+13 + 12+zlen + 12); + if (!out) return 0; + *out_len = 8 + 12+13 + 12+zlen + 12; + + o=out; + STBIW_MEMMOVE(o,sig,8); o+= 8; + stbiw__wp32(o, 13); // header length + stbiw__wptag(o, "IHDR"); + stbiw__wp32(o, x); + stbiw__wp32(o, y); + *o++ = 8; + *o++ = STBIW_UCHAR(ctype[n]); + *o++ = 0; + *o++ = 0; + *o++ = 0; + stbiw__wpcrc(&o,13); + + stbiw__wp32(o, zlen); + stbiw__wptag(o, "IDAT"); + STBIW_MEMMOVE(o, zlib, zlen); + o += zlen; + STBIW_FREE(zlib); + stbiw__wpcrc(&o, zlen); + + stbiw__wp32(o,0); + stbiw__wptag(o, "IEND"); + stbiw__wpcrc(&o,0); + + STBIW_ASSERT(o == out + *out_len); + + return out; +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes) +{ + FILE *f; + int len; + unsigned char *png = stbi_write_png_to_mem((unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; +#ifdef STBI_MSC_SECURE_CRT + if (fopen_s(&f, filename, "wb")) + f = NULL; +#else + f = fopen(filename, "wb"); +#endif + if (!f) { STBIW_FREE(png); return 0; } + fwrite(png, 1, len, f); + fclose(f); + STBIW_FREE(png); + return 1; +} +#endif + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int stride_bytes) +{ + int len; + unsigned char *png = stbi_write_png_to_mem((unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + func(context, png, len); + STBIW_FREE(png); + return 1; +} + + +/* *************************************************************************** + * + * JPEG writer + * + * This is based on Jon Olick's jo_jpeg.cpp: + * public domain Simple, Minimalistic JPEG writer - http://www.jonolick.com/code.html + */ + +static const unsigned char stbiw__jpg_ZigZag[] = { 0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18, + 24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63 }; + +static void stbiw__jpg_writeBits(stbi__write_context *s, int *bitBufP, int *bitCntP, const unsigned short *bs) { + int bitBuf = *bitBufP, bitCnt = *bitCntP; + bitCnt += bs[1]; + bitBuf |= bs[0] << (24 - bitCnt); + while(bitCnt >= 8) { + unsigned char c = (bitBuf >> 16) & 255; + stbiw__putc(s, c); + if(c == 255) { + stbiw__putc(s, 0); + } + bitBuf <<= 8; + bitCnt -= 8; + } + *bitBufP = bitBuf; + *bitCntP = bitCnt; +} + +static void stbiw__jpg_DCT(float *d0p, float *d1p, float *d2p, float *d3p, float *d4p, float *d5p, float *d6p, float *d7p) { + float d0 = *d0p, d1 = *d1p, d2 = *d2p, d3 = *d3p, d4 = *d4p, d5 = *d5p, d6 = *d6p, d7 = *d7p; + float z1, z2, z3, z4, z5, z11, z13; + + float tmp0 = d0 + d7; + float tmp7 = d0 - d7; + float tmp1 = d1 + d6; + float tmp6 = d1 - d6; + float tmp2 = d2 + d5; + float tmp5 = d2 - d5; + float tmp3 = d3 + d4; + float tmp4 = d3 - d4; + + // Even part + float tmp10 = tmp0 + tmp3; // phase 2 + float tmp13 = tmp0 - tmp3; + float tmp11 = tmp1 + tmp2; + float tmp12 = tmp1 - tmp2; + + d0 = tmp10 + tmp11; // phase 3 + d4 = tmp10 - tmp11; + + z1 = (tmp12 + tmp13) * 0.707106781f; // c4 + d2 = tmp13 + z1; // phase 5 + d6 = tmp13 - z1; + + // Odd part + tmp10 = tmp4 + tmp5; // phase 2 + tmp11 = tmp5 + tmp6; + tmp12 = tmp6 + tmp7; + + // The rotator is modified from fig 4-8 to avoid extra negations. + z5 = (tmp10 - tmp12) * 0.382683433f; // c6 + z2 = tmp10 * 0.541196100f + z5; // c2-c6 + z4 = tmp12 * 1.306562965f + z5; // c2+c6 + z3 = tmp11 * 0.707106781f; // c4 + + z11 = tmp7 + z3; // phase 5 + z13 = tmp7 - z3; + + *d5p = z13 + z2; // phase 6 + *d3p = z13 - z2; + *d1p = z11 + z4; + *d7p = z11 - z4; + + *d0p = d0; *d2p = d2; *d4p = d4; *d6p = d6; +} + +static void stbiw__jpg_calcBits(int val, unsigned short bits[2]) { + int tmp1 = val < 0 ? -val : val; + val = val < 0 ? val-1 : val; + bits[1] = 1; + while(tmp1 >>= 1) { + ++bits[1]; + } + bits[0] = val & ((1<<bits[1])-1); +} + +static int stbiw__jpg_processDU(stbi__write_context *s, int *bitBuf, int *bitCnt, float *CDU, float *fdtbl, int DC, const unsigned short HTDC[256][2], const unsigned short HTAC[256][2]) { + const unsigned short EOB[2] = { HTAC[0x00][0], HTAC[0x00][1] }; + const unsigned short M16zeroes[2] = { HTAC[0xF0][0], HTAC[0xF0][1] }; + int dataOff, i, diff, end0pos; + int DU[64]; + + // DCT rows + for(dataOff=0; dataOff<64; dataOff+=8) { + stbiw__jpg_DCT(&CDU[dataOff], &CDU[dataOff+1], &CDU[dataOff+2], &CDU[dataOff+3], &CDU[dataOff+4], &CDU[dataOff+5], &CDU[dataOff+6], &CDU[dataOff+7]); + } + // DCT columns + for(dataOff=0; dataOff<8; ++dataOff) { + stbiw__jpg_DCT(&CDU[dataOff], &CDU[dataOff+8], &CDU[dataOff+16], &CDU[dataOff+24], &CDU[dataOff+32], &CDU[dataOff+40], &CDU[dataOff+48], &CDU[dataOff+56]); + } + // Quantize/descale/zigzag the coefficients + for(i=0; i<64; ++i) { + float v = CDU[i]*fdtbl[i]; + // DU[stbiw__jpg_ZigZag[i]] = (int)(v < 0 ? ceilf(v - 0.5f) : floorf(v + 0.5f)); + // ceilf() and floorf() are C99, not C89, but I /think/ they're not needed here anyway? + DU[stbiw__jpg_ZigZag[i]] = (int)(v < 0 ? v - 0.5f : v + 0.5f); + } + + // Encode DC + diff = DU[0] - DC; + if (diff == 0) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTDC[0]); + } else { + unsigned short bits[2]; + stbiw__jpg_calcBits(diff, bits); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTDC[bits[1]]); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits); + } + // Encode ACs + end0pos = 63; + for(; (end0pos>0)&&(DU[end0pos]==0); --end0pos) { + } + // end0pos = first element in reverse order !=0 + if(end0pos == 0) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + return DU[0]; + } + for(i = 1; i <= end0pos; ++i) { + int startpos = i; + int nrzeroes; + unsigned short bits[2]; + for (; DU[i]==0 && i<=end0pos; ++i) { + } + nrzeroes = i-startpos; + if ( nrzeroes >= 16 ) { + int lng = nrzeroes>>4; + int nrmarker; + for (nrmarker=1; nrmarker <= lng; ++nrmarker) + stbiw__jpg_writeBits(s, bitBuf, bitCnt, M16zeroes); + nrzeroes &= 15; + } + stbiw__jpg_calcBits(DU[i], bits); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTAC[(nrzeroes<<4)+bits[1]]); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits); + } + if(end0pos != 63) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + } + return DU[0]; +} + +static int stbi_write_jpg_core(stbi__write_context *s, int width, int height, int comp, const void* data, int quality) { + // Constants that don't pollute global namespace + static const unsigned char std_dc_luminance_nrcodes[] = {0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0}; + static const unsigned char std_dc_luminance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_luminance_nrcodes[] = {0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d}; + static const unsigned char std_ac_luminance_values[] = { + 0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28, + 0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89, + 0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2, + 0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa + }; + static const unsigned char std_dc_chrominance_nrcodes[] = {0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0}; + static const unsigned char std_dc_chrominance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_chrominance_nrcodes[] = {0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77}; + static const unsigned char std_ac_chrominance_values[] = { + 0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26, + 0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87, + 0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa + }; + // Huffman tables + static const unsigned short YDC_HT[256][2] = { {0,2},{2,3},{3,3},{4,3},{5,3},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9}}; + static const unsigned short UVDC_HT[256][2] = { {0,2},{1,2},{2,2},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9},{1022,10},{2046,11}}; + static const unsigned short YAC_HT[256][2] = { + {10,4},{0,2},{1,2},{4,3},{11,4},{26,5},{120,7},{248,8},{1014,10},{65410,16},{65411,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {12,4},{27,5},{121,7},{502,9},{2038,11},{65412,16},{65413,16},{65414,16},{65415,16},{65416,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {28,5},{249,8},{1015,10},{4084,12},{65417,16},{65418,16},{65419,16},{65420,16},{65421,16},{65422,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{503,9},{4085,12},{65423,16},{65424,16},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1016,10},{65430,16},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2039,11},{65438,16},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {123,7},{4086,12},{65446,16},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {250,8},{4087,12},{65454,16},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{32704,15},{65462,16},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65470,16},{65471,16},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65479,16},{65480,16},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1017,10},{65488,16},{65489,16},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{65497,16},{65498,16},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2040,11},{65506,16},{65507,16},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {65515,16},{65516,16},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65525,16},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const unsigned short UVAC_HT[256][2] = { + {0,2},{1,2},{4,3},{10,4},{24,5},{25,5},{56,6},{120,7},{500,9},{1014,10},{4084,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {11,4},{57,6},{246,8},{501,9},{2038,11},{4085,12},{65416,16},{65417,16},{65418,16},{65419,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {26,5},{247,8},{1015,10},{4086,12},{32706,15},{65420,16},{65421,16},{65422,16},{65423,16},{65424,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {27,5},{248,8},{1016,10},{4087,12},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{65430,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{502,9},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{65438,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1017,10},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{65446,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {121,7},{2039,11},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{65454,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2040,11},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{65462,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {249,8},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{65470,16},{65471,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {503,9},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{65479,16},{65480,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{65488,16},{65489,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{65497,16},{65498,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{65506,16},{65507,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{65515,16},{65516,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {16352,14},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{65525,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{32707,15},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const int YQT[] = {16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22, + 37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99}; + static const int UVQT[] = {17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99, + 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99}; + static const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f, + 1.0f * 2.828427125f, 0.785694958f * 2.828427125f, 0.541196100f * 2.828427125f, 0.275899379f * 2.828427125f }; + + int row, col, i, k; + float fdtbl_Y[64], fdtbl_UV[64]; + unsigned char YTable[64], UVTable[64]; + + if(!data || !width || !height || comp > 4 || comp < 1) { + return 0; + } + + quality = quality ? quality : 90; + quality = quality < 1 ? 1 : quality > 100 ? 100 : quality; + quality = quality < 50 ? 5000 / quality : 200 - quality * 2; + + for(i = 0; i < 64; ++i) { + int uvti, yti = (YQT[i]*quality+50)/100; + YTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (yti < 1 ? 1 : yti > 255 ? 255 : yti); + uvti = (UVQT[i]*quality+50)/100; + UVTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (uvti < 1 ? 1 : uvti > 255 ? 255 : uvti); + } + + for(row = 0, k = 0; row < 8; ++row) { + for(col = 0; col < 8; ++col, ++k) { + fdtbl_Y[k] = 1 / (YTable [stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + fdtbl_UV[k] = 1 / (UVTable[stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + } + } + + // Write Headers + { + static const unsigned char head0[] = { 0xFF,0xD8,0xFF,0xE0,0,0x10,'J','F','I','F',0,1,1,0,0,1,0,1,0,0,0xFF,0xDB,0,0x84,0 }; + static const unsigned char head2[] = { 0xFF,0xDA,0,0xC,3,1,0,2,0x11,3,0x11,0,0x3F,0 }; + const unsigned char head1[] = { 0xFF,0xC0,0,0x11,8,(unsigned char)(height>>8),STBIW_UCHAR(height),(unsigned char)(width>>8),STBIW_UCHAR(width), + 3,1,0x11,0,2,0x11,1,3,0x11,1,0xFF,0xC4,0x01,0xA2,0 }; + s->func(s->context, (void*)head0, sizeof(head0)); + s->func(s->context, (void*)YTable, sizeof(YTable)); + stbiw__putc(s, 1); + s->func(s->context, UVTable, sizeof(UVTable)); + s->func(s->context, (void*)head1, sizeof(head1)); + s->func(s->context, (void*)(std_dc_luminance_nrcodes+1), sizeof(std_dc_luminance_nrcodes)-1); + s->func(s->context, (void*)std_dc_luminance_values, sizeof(std_dc_luminance_values)); + stbiw__putc(s, 0x10); // HTYACinfo + s->func(s->context, (void*)(std_ac_luminance_nrcodes+1), sizeof(std_ac_luminance_nrcodes)-1); + s->func(s->context, (void*)std_ac_luminance_values, sizeof(std_ac_luminance_values)); + stbiw__putc(s, 1); // HTUDCinfo + s->func(s->context, (void*)(std_dc_chrominance_nrcodes+1), sizeof(std_dc_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_dc_chrominance_values, sizeof(std_dc_chrominance_values)); + stbiw__putc(s, 0x11); // HTUACinfo + s->func(s->context, (void*)(std_ac_chrominance_nrcodes+1), sizeof(std_ac_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_ac_chrominance_values, sizeof(std_ac_chrominance_values)); + s->func(s->context, (void*)head2, sizeof(head2)); + } + + // Encode 8x8 macroblocks + { + static const unsigned short fillBits[] = {0x7F, 7}; + const unsigned char *imageData = (const unsigned char *)data; + int DCY=0, DCU=0, DCV=0; + int bitBuf=0, bitCnt=0; + // comp == 2 is grey+alpha (alpha is ignored) + int ofsG = comp > 2 ? 1 : 0, ofsB = comp > 2 ? 2 : 0; + int x, y, pos; + for(y = 0; y < height; y += 8) { + for(x = 0; x < width; x += 8) { + float YDU[64], UDU[64], VDU[64]; + for(row = y, pos = 0; row < y+8; ++row) { + for(col = x; col < x+8; ++col, ++pos) { + int p = (stbi__flip_vertically_on_write ? height-1-row : row)*width*comp + col*comp; + float r, g, b; + if(row >= height) { + p -= width*comp*(row+1 - height); + } + if(col >= width) { + p -= comp*(col+1 - width); + } + + r = imageData[p+0]; + g = imageData[p+ofsG]; + b = imageData[p+ofsB]; + YDU[pos]=+0.29900f*r+0.58700f*g+0.11400f*b-128; + UDU[pos]=-0.16874f*r-0.33126f*g+0.50000f*b; + VDU[pos]=+0.50000f*r-0.41869f*g-0.08131f*b; + } + } + + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); + DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); + } + } + + // Do the bit alignment of the EOI marker + stbiw__jpg_writeBits(s, &bitBuf, &bitCnt, fillBits); + } + + // EOI + stbiw__putc(s, 0xFF); + stbiw__putc(s, 0xD9); + + return 1; +} + +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_jpg_core(&s, x, y, comp, (void *) data, quality); +} + + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_jpg_core(&s, x, y, comp, data, quality); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +#endif // STB_IMAGE_WRITE_IMPLEMENTATION + +/* Revision history + 1.09 (2018-02-11) + fix typo in zlib quality API, improve STB_I_W_STATIC in C++ + 1.08 (2018-01-29) + add stbi__flip_vertically_on_write, external zlib, zlib quality, choose PNG filter + 1.07 (2017-07-24) + doc fix + 1.06 (2017-07-23) + writing JPEG (using Jon Olick's code) + 1.05 ??? + 1.04 (2017-03-03) + monochrome BMP expansion + 1.03 ??? + 1.02 (2016-04-02) + avoid allocating large structures on the stack + 1.01 (2016-01-16) + STBIW_REALLOC_SIZED: support allocators with no realloc support + avoid race-condition in crc initialization + minor compile issues + 1.00 (2015-09-14) + installable file IO function + 0.99 (2015-09-13) + warning fixes; TGA rle support + 0.98 (2015-04-08) + added STBIW_MALLOC, STBIW_ASSERT etc + 0.97 (2015-01-18) + fixed HDR asserts, rewrote HDR rle logic + 0.96 (2015-01-17) + add HDR output + fix monochrome BMP + 0.95 (2014-08-17) + add monochrome TGA output + 0.94 (2014-05-31) + rename private functions to avoid conflicts with stb_image.h + 0.93 (2014-05-27) + warning fixes + 0.92 (2010-08-01) + casts to unsigned char to fix warnings + 0.91 (2010-07-17) + first public release + 0.90 first internal release +*/ + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff -Nru gem-0.94~pre1/plugins/imageTIFF/imageTIFF.cpp gem-0.94/plugins/imageTIFF/imageTIFF.cpp --- gem-0.94~pre1/plugins/imageTIFF/imageTIFF.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/imageTIFF/imageTIFF.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -118,22 +118,21 @@ result.xsize=width; result.ysize=height; result.upsidedown=true; - result.type=GL_UNSIGNED_BYTE; //? bool knownFormat = false; // Is it a gray8 image? if (bits == 8 && samps == 1) { - result.setCsizeByFormat(GL_LUMINANCE); + result.setCsizeByFormat(GEM_GRAY); knownFormat = true; } // Is it an RGB image? else if (bits == 8 && samps == 3) { - result.setCsizeByFormat(GL_RGBA); + result.setCsizeByFormat(GEM_RGBA); knownFormat = true; } // Is it an RGBA image? else if (bits == 8 && samps == 4) { - result.setCsizeByFormat(GL_RGBA); + result.setCsizeByFormat(GEM_RGBA); knownFormat = true; } @@ -215,7 +214,7 @@ } TIFFRGBAImageEnd(&img); - result.setCsizeByFormat(GL_RGBA); + result.setCsizeByFormat(GEM_RGBA); result.reallocate(); unsigned char *dstLine = result.data; @@ -284,7 +283,7 @@ { TIFF *tif = NULL; - if(GL_YUV422_GEM==constimage.format) { + if(GEM_YUV==constimage.format) { verbose(0, "[GEM:imageTIFF] don't know how to write YUV-images"); return false; } diff -Nru gem-0.94~pre1/plugins/Makefile.am gem-0.94/plugins/Makefile.am --- gem-0.94~pre1/plugins/Makefile.am 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/Makefile.am 2019-02-12 13:10:01.000000000 +0000 @@ -4,7 +4,8 @@ SUBDIRS = ## image loading/saving plugins -SUBDIRS += imageMAGICK imageTIFF imageJPEG imageSGI +SUBDIRS += imageMAGICK imageTIFF imageJPEG +SUBDIRS += imageSGI imageSTB SUBDIRS += imageQT imageIO diff -Nru gem-0.94~pre1/plugins/modelASSIMP2/modelASSIMP2.cpp gem-0.94/plugins/modelASSIMP2/modelASSIMP2.cpp --- gem-0.94~pre1/plugins/modelASSIMP2/modelASSIMP2.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/modelASSIMP2/modelASSIMP2.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -17,6 +17,7 @@ #include "Gem/Exception.h" #include "Gem/Properties.h" #include "Gem/VertexBuffer.h" +#include "Gem/GemGL.h" #include "Utils/Functions.h" diff -Nru gem-0.94~pre1/plugins/modelASSIMP3/modelASSIMP3.cpp gem-0.94/plugins/modelASSIMP3/modelASSIMP3.cpp --- gem-0.94~pre1/plugins/modelASSIMP3/modelASSIMP3.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/modelASSIMP3/modelASSIMP3.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -17,6 +17,7 @@ #include "Gem/Exception.h" #include "Gem/Properties.h" #include "Gem/VertexBuffer.h" +#include "Gem/GemGL.h" #include "Utils/Functions.h" diff -Nru gem-0.94~pre1/plugins/modelOBJ/model_loader.cpp gem-0.94/plugins/modelOBJ/model_loader.cpp --- gem-0.94~pre1/plugins/modelOBJ/model_loader.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/modelOBJ/model_loader.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -14,6 +14,7 @@ #include "model_loader.h" /* for post(), error(),... */ #include "m_pd.h" +#include "Gem/GemGL.h" #include <string> @@ -1687,7 +1688,7 @@ * glmGetNumVertices: get number of vertices in the model */ GLuint -glmGetNumVertices(GLMmodel *model) +glmGetNumVertices(const GLMmodel *model) { return (model && model->vertices)?model->numvertices:0; } @@ -1695,7 +1696,7 @@ * glmGetNumNormals: get number of normals in the model */ GLuint -glmGetNumNormals(GLMmodel *model) +glmGetNumNormals(const GLMmodel *model) { return (model && model->normals)?model->numnormals:0; } @@ -1703,7 +1704,7 @@ * glmGetNumTexCoords: get number of texcoords in the model */ GLuint -glmGetNumTexCoords(GLMmodel *model) +glmGetNumTexCoords(const GLMmodel *model) { return (model && model->texcoords)?model->numtexcoords:0; } @@ -1711,7 +1712,7 @@ * glmGetNumFacetNorms: get number of facetnorms in the model */ GLuint -glmGetNumFacetNorms(GLMmodel *model) +glmGetNumFacetNorms(const GLMmodel *model) { return (model && model->facetnorms)?model->numfacetnorms:0; } @@ -1719,7 +1720,7 @@ * glmGetNumTriangles: get number of triangles in the model */ GLuint -glmGetNumTriangles(GLMmodel *model) +glmGetNumTriangles(const GLMmodel *model) { return (model && model->triangles)?model->numtriangles:0; } @@ -1727,7 +1728,7 @@ * glmGetNumMaterials: get number of materials in the model */ GLuint -glmGetNumMaterials(GLMmodel *model) +glmGetNumMaterials(const GLMmodel *model) { return (model && model->materials)?model->nummaterials:0; } @@ -1735,7 +1736,7 @@ * glmGetNumGroups: get number of groups in the model */ GLuint -glmGetNumGroups(GLMmodel *model) +glmGetNumGroups(const GLMmodel *model) { return (model && model->groups)?model->numgroups:0; } diff -Nru gem-0.94~pre1/plugins/modelOBJ/model_loader.h gem-0.94/plugins/modelOBJ/model_loader.h --- gem-0.94~pre1/plugins/modelOBJ/model_loader.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/modelOBJ/model_loader.h 2019-02-12 13:10:01.000000000 +0000 @@ -136,49 +136,49 @@ * model - pointer to initialized GLMmodel structure */ GLuint -glmGetNumVertices(GLMmodel *model); +glmGetNumVertices(const GLMmodel *model); /* * glmGetNumNormals: get number of normals in the model * * model - pointer to initialized GLMmodel structure */ GLuint -glmGetNumNormals(GLMmodel *model); +glmGetNumNormals(const GLMmodel *model); /* * glmGetNumTexCoords: get number of texcoords in the model * * model - pointer to initialized GLMmodel structure */ GLuint -glmGetNumTexCoords(GLMmodel *model); +glmGetNumTexCoords(const GLMmodel *model); /* * glmGetNumFacetNorms: get number of facetnorms in the model * * model - pointer to initialized GLMmodel structure */ GLuint -glmGetNumFacetNorms(GLMmodel *model); +glmGetNumFacetNorms(const GLMmodel *model); /* * glmGetNumTriangles: get number of triangles in the model * * model - pointer to initialized GLMmodel structure */ GLuint -glmGetNumTriangles(GLMmodel *model); +glmGetNumTriangles(const GLMmodel *model); /* * glmGetNumMaterials: get number of materials in the model * * model - pointer to initialized GLMmodel structure */ GLuint -glmGetNumMaterials(GLMmodel *model); +glmGetNumMaterials(const GLMmodel *model); /* * glmGetNumGroups: get number of groups in the model * * model - pointer to initialized GLMmodel structure */ GLuint -glmGetNumGroups(GLMmodel *model); +glmGetNumGroups(const GLMmodel *model); /* glmDelete: Deletes a GLMmodel structure. diff -Nru gem-0.94~pre1/plugins/modelOBJ/modelOBJ.cpp gem-0.94/plugins/modelOBJ/modelOBJ.cpp --- gem-0.94~pre1/plugins/modelOBJ/modelOBJ.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/modelOBJ/modelOBJ.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/plugins/recordQT/recordQT.cpp gem-0.94/plugins/recordQT/recordQT.cpp --- gem-0.94~pre1/plugins/recordQT/recordQT.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/recordQT/recordQT.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -35,6 +35,15 @@ /* for post() and error() */ #include "m_pd.h" +static char* FourCC2Str(int code, char*char5) { + char5[0] = (code >> 24) & 0xFF; + char5[1] = (code >> 16) & 0xFF; + char5[2] = (code >> 8) & 0xFF; + char5[3] = (code >> 0) & 0xFF; + char5[4] = 0; + return char5; +} + static bool touch(const std::string&filename) { @@ -87,18 +96,18 @@ { static bool firsttime=true; if(firsttime) { + OSErr err = noErr; #ifdef _WIN32 // Initialize QuickTime Media Layer - OSErr err = noErr; if ((err = InitializeQTML(0))) { throw(GemException("unable to initialize QuickTime")); } +#endif // WINDOWS // start QuickTime if (err = EnterMovies()) { throw(GemException("unable to initialize QuickTime/Movies")); } verbose(1, "[GEM:recordQT] QT init done"); -#endif // WINDOWS firsttime=false; } @@ -128,8 +137,8 @@ for(i = 0; i < count; i++) { if (codecContainer[i].ctype == kJPEGCodecType) { m_codec = codecContainer[i].codec; - verbose(1, "[GEM:recordQT] found pjpeg codec %i %i %i ctype", i, - m_codecType, m_codec); + verbose(1, "[GEM:recordQT] found pjpeg codec %i %lu %p ctype", + i, m_codecType, m_codec); break; } } @@ -151,7 +160,7 @@ if (stdComponent != NULL) { compErr = CloseComponent(stdComponent); if (compErr != noErr) { - verbose(0, "[GEM:recordQT] CloseComponent failed with error %d",compErr); + verbose(0, "[GEM:recordQT] CloseComponent failed with error %ld", compErr); } } } @@ -187,7 +196,7 @@ touch (filename); #ifdef __APPLE__ do { - UInt8*filename8=reinterpret_cast<UInt8*>(filename.c_str()); + const UInt8*filename8=reinterpret_cast<const UInt8*>(filename.c_str()); err = ::FSPathMakeRef(filename8, &ref, NULL); if (err) { error("[GEM:recordQT] Unable to make file ref from filename %s", @@ -252,11 +261,11 @@ m_srcRect.bottom = m_height; m_srcRect.right = m_width; - if (m_compressImage->format == GL_YUV422_GEM) { + if (m_compressImage->format == GEM_YUV) { verbose(0, "[GEM:recordQT] using YUV"); colorspace = k422YpCbCr8CodecType; } - if (m_compressImage->format == GL_BGRA) { + if (m_compressImage->format == GEM_RGBA) { verbose(0, "[GEM:recordQT] using BGRA"); colorspace = k32ARGBPixelFormat; } @@ -264,6 +273,7 @@ colorspace = k32RGBAPixelFormat; #endif + char char5[5]; switch(colorspace) { case k32ARGBPixelFormat: case k32BGRAPixelFormat: @@ -274,7 +284,7 @@ m_rowBytes = m_width * 2; break; default: - error("[GEM:recordQT] unknown colorspace 0x%x", colorspace); + error("[GEM:recordQT] unknown colorspace '%s'", FourCC2Str(colorspace, char5)); m_rowBytes = m_width; break; } @@ -300,7 +310,7 @@ //since QT has flipped Y compared to GL it is upside down to GL but not to itself //so while the upsidedown flag is set for QT images sent to GL it is not correct for pix_ processing. //this is a hack on OSX since the native is YUV for pix_ and the only BGRA will usually be from pix_snap - if (m_compressImage->upsidedown && m_compressImage->format == GL_BGRA) { + if (m_compressImage->upsidedown && m_compressImage->format == GEM_RGBA) { MatrixRecord aMatrix; GetMovieMatrix(m_movie,&aMatrix); verbose(1, "[GEM:recordQT] upside down"); @@ -335,13 +345,13 @@ compErr = SCSetInfo(stdComponent, scDataRateSettingsType, &datarate); if (compErr != noErr) { - error("[GEM:recordQT] SCSetInfo failed with error#%d",compErr); + error("[GEM:recordQT] SCSetInfo failed with error#%ld", compErr); } compErr = SCCompressSequenceBegin(stdComponent,GetPortPixMap(m_srcGWorld), &m_srcRect,&hImageDesc); if (compErr != noErr) { - error("[GEM:recordQT] SCCompressSequenceBegin failed with error#%d", + error("[GEM:recordQT] SCCompressSequenceBegin failed with error#%ld", compErr); return; } @@ -400,7 +410,7 @@ compErr = SCCompressSequenceEnd(stdComponent); if (compErr != noErr) { - error("[GEM:recordQT] SCCompressSequenceEnd failed with error %d", + error("[GEM:recordQT] SCCompressSequenceEnd failed with error %ld", compErr); } @@ -473,7 +483,7 @@ &syncFlag); if (compErr != noErr) { - error("[GEM:recordQT] SCCompressSequenceFrame failed with error %d", + error("[GEM:recordQT] SCCompressSequenceFrame failed with error %ld", compErr); } @@ -566,7 +576,7 @@ compErr = CloseComponent(stdComponent); } if (compErr != noErr) { - verbose(0, "[GEM:recordQT] CloseComponent failed with error %d", compErr); + verbose(0, "[GEM:recordQT] CloseComponent failed with error %ld", compErr); } //open a new component from scratch @@ -581,7 +591,7 @@ compErr = SCRequestSequenceSettings(stdComponent); if (compErr != noErr) { - verbose(0, "[GEM:recordQT] SCRequestSequenceSettings failed with error %d", + verbose(0, "[GEM:recordQT] SCRequestSequenceSettings failed with error %ld", compErr); } @@ -590,7 +600,7 @@ compErr = SCGetInfo(stdComponent, scSpatialSettingsType, &SpatialSettings); if (compErr != noErr) { - verbose(0, "[GEM:recordQT] SCGetInfo failed with error %d", compErr); + verbose(0, "[GEM:recordQT] SCGetInfo failed with error %ld", compErr); } m_codecType = SpatialSettings.codecType; @@ -601,16 +611,16 @@ m_keyFrameRate = TemporalSettings.keyFrameRate; verbose(1, "[GEM:recordQT] Dialog returned SpatialSettings\n" - "\tcodecType %d\n" - "\tcodec %d\n" + "\tcodecType %lX\n" + "\tcodec %p\n" "\tdepth %d\n" - "\tspatialQuality %d", + "\tspatialQuality %ld", SpatialSettings.codecType, SpatialSettings.codec, SpatialSettings.depth, SpatialSettings.spatialQuality); verbose(1, "[GEM:recordQT] Dialog returned TemporalSettings\n" - "\ttemporalQualitye %d\n" - "\tframeRate %d\n" - "\tkeyFrameRate %d", + "\ttemporalQualitye %ld\n" + "\tframeRate %ld\n" + "\tkeyFrameRate %ld", TemporalSettings.temporalQuality, TemporalSettings.frameRate, TemporalSettings.keyFrameRate); return(true); diff -Nru gem-0.94~pre1/plugins/recordQT/recordQT.h gem-0.94/plugins/recordQT/recordQT.h --- gem-0.94~pre1/plugins/recordQT/recordQT.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/recordQT/recordQT.h 2019-02-12 13:10:01.000000000 +0000 @@ -22,7 +22,7 @@ # include <Math64.h> # define TARGET_OS_WIN32 1 # endif /* MINGW */ - +# include <windows.h> # include <QTML.h> # include <Movies.h> # include <QuickTimeComponents.h> diff -Nru gem-0.94~pre1/plugins/recordQT4L/recordQT4L.cpp gem-0.94/plugins/recordQT4L/recordQT4L.cpp --- gem-0.94~pre1/plugins/recordQT4L/recordQT4L.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/recordQT4L/recordQT4L.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -359,13 +359,13 @@ switch(m_colormodel) { case BC_RGBA8888: - m_image.convertFrom(img, GL_RGBA); + m_image.convertFrom(img, GEM_RGBA); break; case BC_RGB888: - m_image.convertFrom(img, GL_RGB); + m_image.convertFrom(img, GEM_RGB); break; case BC_YUV422: - m_image.convertFrom(img, GL_YUV422_GEM); + m_image.convertFrom(img, GEM_YUV); break; default: error("[GEM:recordQT4L] unsupported colormodel..."); diff -Nru gem-0.94~pre1/plugins/recordV4L/recordV4L.cpp gem-0.94/plugins/recordV4L/recordV4L.cpp --- gem-0.94~pre1/plugins/recordV4L/recordV4L.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/recordV4L/recordV4L.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -54,18 +54,18 @@ { m_image.xsize=720; m_image.ysize=576; - m_image.setCsizeByFormat(GL_YUV422_GEM); - m_image.setCsizeByFormat(GL_RGBA); + m_image.setCsizeByFormat(GEM_YUV); + m_image.setCsizeByFormat(GEM_RGBA); m_image.reallocate(); switch(m_image.format) { - case GL_YUV422_GEM: + case GEM_YUV: m_palette = VIDEO_PALETTE_YUV422; break; - case GL_LUMINANCE: + case GEM_GRAY: m_palette = VIDEO_PALETTE_GREY; break; - case GL_RGBA: + case GEM_RGBA: m_palette = VIDEO_PALETTE_RGB32; break; default: diff -Nru gem-0.94~pre1/plugins/recordV4L2/recordV4L2.cpp gem-0.94/plugins/recordV4L2/recordV4L2.cpp --- gem-0.94~pre1/plugins/recordV4L2/recordV4L2.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/recordV4L2/recordV4L2.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -56,18 +56,18 @@ { m_image.xsize=720; m_image.ysize=576; - m_image.setCsizeByFormat(GL_YUV422_GEM); - //m_image.setCsizeByFormat(GL_RGBA); /* RGBA works with Gem, but not with GStreamer and xawtv */ + m_image.setCsizeByFormat(GEM_YUV); + //m_image.setCsizeByFormat(GEM_RGBA); /* RGBA works with Gem, but not with GStreamer and xawtv */ m_image.reallocate(); switch(m_image.format) { - case GL_YUV422_GEM: + case GEM_YUV: m_palette = V4L2_PIX_FMT_UYVY; break; - case GL_LUMINANCE: + case GEM_GRAY: m_palette = V4L2_PIX_FMT_GREY; break; - case GL_RGBA: + case GEM_RGBA: m_palette = V4L2_PIX_FMT_RGB32; break; default: diff -Nru gem-0.94~pre1/plugins/videoAVF/AVFVideoGrabber.mm gem-0.94/plugins/videoAVF/AVFVideoGrabber.mm --- gem-0.94~pre1/plugins/videoAVF/AVFVideoGrabber.mm 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoAVF/AVFVideoGrabber.mm 2019-02-12 13:10:01.000000000 +0000 @@ -75,7 +75,7 @@ NSArray * devices = [AVCaptureDevice devicesWithMediaType: AVMediaTypeVideo]; switch(fmt) { - case GL_RGBA_GEM: + case GEM_RGBA: glformat=fmt; capformat=kCVPixelFormatType_32BGRA; default: diff -Nru gem-0.94~pre1/plugins/videoAVF/videoAVF.h gem-0.94/plugins/videoAVF/videoAVF.h --- gem-0.94~pre1/plugins/videoAVF/videoAVF.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoAVF/videoAVF.h 2019-02-12 13:10:01.000000000 +0000 @@ -115,11 +115,12 @@ // PIMPL pointer to the Obj-C object behind this class AVFVideoGrabber* m_videoGrabber; - GLenum m_wantedFormat; //< requested color space + unsigned int m_wantedFormat; //< requested color space int m_width, m_height; bool m_isInit; + pixBlock m_img; }; }; }; diff -Nru gem-0.94~pre1/plugins/videoAVF/videoAVF.mm gem-0.94/plugins/videoAVF/videoAVF.mm --- gem-0.94~pre1/plugins/videoAVF/videoAVF.mm 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoAVF/videoAVF.mm 2019-02-12 13:10:01.000000000 +0000 @@ -31,8 +31,8 @@ REGISTER_VIDEOFACTORY("AVF", videoAVF); -//#define VIDEOAVF_DEFAULT_PIXELFORMAT GL_YCBCR_422_APPLE -#define VIDEOAVF_DEFAULT_PIXELFORMAT GL_RGBA_GEM +//#define VIDEOAVF_DEFAULT_PIXELFORMAT GEM_YUV +#define VIDEOAVF_DEFAULT_PIXELFORMAT GEM_RGBA #define VIDEOAVF_DEFAULT_WIDTH 1280 #define VIDEOAVF_DEFAULT_HEIGHT 720 @@ -224,7 +224,11 @@ m_width = img->image.xsize; m_height = img->image.ysize; } - return img; + img->image.copy2Image(&m_img.image); + m_img.newfilm = img->newfilm; + m_img.newimage = img->newimage; + + return &m_img; } void videoAVF::releaseFrame(void) { diff -Nru gem-0.94~pre1/plugins/videoAVT/videoAVT.cpp gem-0.94/plugins/videoAVT/videoAVT.cpp --- gem-0.94~pre1/plugins/videoAVT/videoAVT.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoAVT/videoAVT.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -140,7 +140,7 @@ lock(); m_image.image.xsize=pFrame.Width; m_image.image.ysize=pFrame.Height; - m_image.image.setCsizeByFormat(GL_RGBA); + m_image.image.setCsizeByFormat(GEM_RGBA); m_image.image.reallocate(); switch(pFrame.Format) { diff -Nru gem-0.94~pre1/plugins/videoDarwin/videoDarwin.cpp gem-0.94/plugins/videoDarwin/videoDarwin.cpp --- gem-0.94~pre1/plugins/videoDarwin/videoDarwin.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoDarwin/videoDarwin.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -55,17 +55,17 @@ , m_srcGWorld(NULL) , m_rowBytes(0) , m_quality(channelPlayNormal) - , m_colorspace(GL_YCBCR_422_GEM) + , m_colorspace(GEM_YUV) , m_inputDevice(0) //set to the first input device , m_inputDeviceChannel(0) { m_width= DEFAULT_WIDTH; m_height=DEFAULT_HEIGHT; - m_image.image.xsize = 800; - m_image.image.ysize = 600; - m_image.image.setCsizeByFormat(GL_BGRA_EXT); - m_image.image.allocate(); + m_img.xsize = 800; + m_img.ysize = 600; + m_img.setCsizeByFormat(GEM_RGBA); + m_img.allocate(); //initSeqGrabber(); provide("dv"); @@ -145,6 +145,7 @@ verbose(0, "[GEM:videoDarwin] no video yet"); return true; } + m_img.copy2Image(&m_image.image); m_image.newimage = m_newFrame; m_newFrame = false; @@ -291,28 +292,28 @@ } SGSetChannelPlayFlags(m_vc, m_quality); OSType pixelFormat=0; - m_image.image.xsize = m_width; - m_image.image.ysize = m_height; + m_img.xsize = m_width; + m_img.ysize = m_height; - if (m_colorspace==GL_BGRA_EXT) { - m_image.image.setCsizeByFormat(GL_RGBA_GEM); - m_rowBytes = m_width*4; + if (m_colorspace==GEM_RGBA) { + m_img.setCsizeByFormat(m_colorspace); + m_rowBytes = m_width*m_img.csize; pixelFormat=k32ARGBPixelFormat; verbose(1, "[GEM:videoDarwin] using RGB"); } else { - m_image.image.setCsizeByFormat(GL_YCBCR_422_APPLE); + m_img.setCsizeByFormat(GEM_YUV); m_rowBytes = m_width*2; pixelFormat=k422YpCbCr8PixelFormat; verbose(1, "[GEM:videoDarwin] using YUV"); } - m_image.image.reallocate(); + m_img.reallocate(); anErr = QTNewGWorldFromPtr (&m_srcGWorld, pixelFormat, &srcRect, NULL, NULL, 0, - m_image.image.data, + m_img.data, m_rowBytes); if (anErr!= noErr) { diff -Nru gem-0.94~pre1/plugins/videoDarwin/videoDarwin.h gem-0.94/plugins/videoDarwin/videoDarwin.h --- gem-0.94~pre1/plugins/videoDarwin/videoDarwin.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoDarwin/videoDarwin.h 2019-02-12 13:10:01.000000000 +0000 @@ -84,8 +84,6 @@ void destroySeqGrabber(void); virtual void setupCapture(void); - - int m_newFrame; SeqGrabComponent m_sg; // Sequence Grabber Component SGChannel m_vc; // Video Channel @@ -104,6 +102,8 @@ bool setIIDCProperty(OSType specifier, double value); bool applyProperties(gem::Properties&props); + + imageStruct m_img; }; }; }; diff -Nru gem-0.94~pre1/plugins/videoDC1394/videoDC1394.cpp gem-0.94/plugins/videoDC1394/videoDC1394.cpp --- gem-0.94~pre1/plugins/videoDC1394/videoDC1394.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoDC1394/videoDC1394.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -48,7 +48,7 @@ m_frame.xsize=1600; m_frame.ysize=1200; - m_frame.setCsizeByFormat(GL_RGBA); + m_frame.setCsizeByFormat(GEM_RGBA); m_frame.allocate(); provide("iidc"); @@ -92,7 +92,7 @@ m_frame.xsize=frame->size[0]; m_frame.ysize=frame->size[1]; - m_frame.setCsizeByFormat(GL_RGBA); + m_frame.setCsizeByFormat(GEM_RGBA); m_frame.fromRGB(colframe->image); lock(); diff -Nru gem-0.94~pre1/plugins/videoDECKLINK/configure.ac gem-0.94/plugins/videoDECKLINK/configure.ac --- gem-0.94~pre1/plugins/videoDECKLINK/configure.ac 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoDECKLINK/configure.ac 2019-02-12 13:10:01.000000000 +0000 @@ -14,10 +14,11 @@ AC_PROG_LIBTOOL #AM_SANITY_CHECK +AC_LANG(C++) + GEM_CHECK_FAT(GEM_ARCH) GEM_CHECK_EXTERNAL - -AC_LANG(C++) +GEM_CHECK_THREADS system="" AS_CASE([${host}] diff -Nru gem-0.94~pre1/plugins/videoDECKLINK/decklink-videoplugin.pd gem-0.94/plugins/videoDECKLINK/decklink-videoplugin.pd --- gem-0.94~pre1/plugins/videoDECKLINK/decklink-videoplugin.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoDECKLINK/decklink-videoplugin.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,4 @@ -#N canvas 8 51 636 903 10; +#N canvas 61 128 636 521 10; #X text 89 47 DeckLink video backend; #X text 89 59 ======================; #X text 61 94 this allows you to use capture cards manufactured by diff -Nru gem-0.94~pre1/plugins/videoDECKLINK/Makefile.am gem-0.94/plugins/videoDECKLINK/Makefile.am --- gem-0.94~pre1/plugins/videoDECKLINK/Makefile.am 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoDECKLINK/Makefile.am 2019-02-12 13:10:01.000000000 +0000 @@ -25,8 +25,8 @@ gem_videoDECKLINK_la_CXXFLAGS += $(GEM_RTE_CFLAGS) $(GEM_ARCH_CXXFLAGS) gem_videoDECKLINK_la_LDFLAGS += $(GEM_RTE_LIBS) $(GEM_ARCH_LDFLAGS) # flags for building Gem externals -gem_videoDECKLINK_la_CXXFLAGS += $(GEM_EXTERNAL_CFLAGS) -gem_videoDECKLINK_la_LIBADD += -L$(builddir)/../.. $(GEM_EXTERNAL_LIBS) +gem_videoDECKLINK_la_CXXFLAGS += $(GEM_EXTERNAL_CFLAGS) $(GEM_THREADS_CFLAGS) +gem_videoDECKLINK_la_LIBADD += -L$(builddir)/../.. $(GEM_EXTERNAL_LIBS) $(GEM_THREADS_LIBS) # #gem_videoDECKLINK_la @MOREFLAGS@ # Dependencies diff -Nru gem-0.94~pre1/plugins/videoDECKLINK/videoDECKLINK.cpp gem-0.94/plugins/videoDECKLINK/videoDECKLINK.cpp --- gem-0.94~pre1/plugins/videoDECKLINK/videoDECKLINK.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoDECKLINK/videoDECKLINK.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -21,6 +21,8 @@ #include "Gem/RTE.h" #include "Gem/Exception.h" +#include <pthread.h> + #include <stdio.h> #define MARK() printf("%s:%d\t%s\n", __FILE__, __LINE__, __FUNCTION__) @@ -212,7 +214,7 @@ videoFrame->GetBytes(&frameBytes); m_priv->setFrame(videoFrame->GetWidth(), videoFrame->GetHeight(), - GL_YUV422_GEM, + GEM_YUV, (unsigned char*)frameBytes); } @@ -335,7 +337,7 @@ m_pixBlock.image.xsize = 64; m_pixBlock.image.ysize = 64; - m_pixBlock.image.setCsizeByFormat(GL_RGBA); + m_pixBlock.image.setCsizeByFormat(GEM_RGBA); m_pixBlock.image.reallocate(); } @@ -517,7 +519,7 @@ m_mutex.lock(); return &m_pixBlock; } -void videoDECKLINK::setFrame(unsigned int w, unsigned int h, GLenum format, +void videoDECKLINK::setFrame(unsigned int w, unsigned int h, unsigned int format, unsigned char*data) { m_mutex.lock(); diff -Nru gem-0.94~pre1/plugins/videoDECKLINK/videoDECKLINK.h gem-0.94/plugins/videoDECKLINK/videoDECKLINK.h --- gem-0.94~pre1/plugins/videoDECKLINK/videoDECKLINK.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoDECKLINK/videoDECKLINK.h 2019-02-12 13:10:01.000000000 +0000 @@ -52,7 +52,7 @@ virtual void releaseFrame(void); /* to be called from the capturing thread */ - void setFrame(unsigned int w, unsigned int h, GLenum format, + void setFrame(unsigned int w, unsigned int h, unsigned int format, unsigned char*data); virtual std::vector<std::string>enumerate(void); diff -Nru gem-0.94~pre1/plugins/videoDS/videoDS.cpp gem-0.94/plugins/videoDS/videoDS.cpp --- gem-0.94~pre1/plugins/videoDS/videoDS.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoDS/videoDS.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -26,7 +26,7 @@ REGISTER_VIDEOFACTORY("DS", videoDS); # include <memory> -# include <Dvdmedia.h> +# include <dvdmedia.h> # include <streams.h> # include <atlbase.h> # include "DSgrabber.h" @@ -65,7 +65,7 @@ : videoBase("directshow", 0), m_readIdx (0), m_lastreadIdx (0), m_writeIdx(0), m_lastwriteIdx(0), - m_format(GL_BGR_EXT), + m_format(GEM_RGB) /* really: GL_BGR_EXT */ #ifdef USE_RECORDING m_recording(false), #endif @@ -99,7 +99,7 @@ for (int i = 0; i <= 2; i++) { m_pixBlockBuf[i].image.xsize=m_width; m_pixBlockBuf[i].image.ysize=m_height; - m_pixBlockBuf[i].image.setCsizeByFormat(GL_RGBA); + m_pixBlockBuf[i].image.setCsizeByFormat(GEM_RGBA); m_pixBlockBuf[i].image.reallocate(); m_pixBlockBuf[i].newimage = 0; @@ -111,7 +111,7 @@ m_image.image.xsize=m_width; m_image.image.ysize=m_height; - m_image.image.setCsizeByFormat(GL_RGBA); + m_image.image.setCsizeByFormat(GEM_RGBA); m_image.image.reallocate(); #ifdef USE_RECORDING @@ -464,7 +464,7 @@ m_image.image.xsize=m_pixBlockBuf[m_readIdx].image.xsize; m_image.image.ysize=m_pixBlockBuf[m_readIdx].image.ysize; switch (m_pixBlockBuf[m_readIdx].image.format) { - case GL_BGR_EXT: + case GEM_RGB: default: m_image.image.fromBGR(m_pixBlockBuf[m_readIdx].image.data); } @@ -511,7 +511,7 @@ GetBitmapInfoHdr(&pmt, &pbmih); m_width = pbmih->biWidth; m_height = pbmih->biHeight; - m_format = GL_BGR_EXT; + m_format = GEM_RGB; FreeMediaType(pmt); // is this necessary?! } @@ -574,7 +574,7 @@ GetBitmapInfoHdr(&mt, &pbmih); m_width = pbmih->biWidth; m_height = pbmih->biHeight; - m_format = GL_BGR_EXT; + m_format = GEM_RGB; //starts the graph rendering if (FAILED(hr = m_pMC->Run())) { diff -Nru gem-0.94~pre1/plugins/videoDV4L/videoDV4L.cpp gem-0.94/plugins/videoDV4L/videoDV4L.cpp --- gem-0.94~pre1/plugins/videoDV4L/videoDV4L.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoDV4L/videoDV4L.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/plugins/videoHALCON/videoHALCON.cpp gem-0.94/plugins/videoHALCON/videoHALCON.cpp --- gem-0.94~pre1/plugins/videoHALCON/videoHALCON.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoHALCON/videoHALCON.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -179,7 +179,7 @@ lock(); m_image.image.xsize=w; m_image.image.ysize=h; - m_image.image.setCsizeByFormat(GL_RGBA); + m_image.image.setCsizeByFormat(GEM_RGBA); m_image.image.reallocate(); long row, col; unsigned char*data=m_image.image.data; diff -Nru gem-0.94~pre1/plugins/videoOptiTrack/videoOptiTrack.cpp gem-0.94/plugins/videoOptiTrack/videoOptiTrack.cpp --- gem-0.94~pre1/plugins/videoOptiTrack/videoOptiTrack.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoOptiTrack/videoOptiTrack.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -77,7 +77,7 @@ { m_pixBlock.image.xsize = 320; m_pixBlock.image.ysize = 240; - m_pixBlock.image.setCsizeByFormat(GL_LUMINANCE); + m_pixBlock.image.setCsizeByFormat(GEM_GRAY); m_pixBlock.image.allocate(); } diff -Nru gem-0.94~pre1/plugins/videoPYLON/videoPYLON.cpp gem-0.94/plugins/videoPYLON/videoPYLON.cpp --- gem-0.94~pre1/plugins/videoPYLON/videoPYLON.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoPYLON/videoPYLON.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -38,11 +38,11 @@ Pylon::CImageFormatConverter m_converter; Pylon::CLock m_colorlock, m_pixlock; pixBlock m_pix; - GLenum m_color; + unsigned int m_color; ImageEventHandler(videoPYLON*parent) : CImageEventHandler() , m_parent(parent) - , m_color(GL_RGBA) + , m_color(GEM_RGBA) { m_converter.OutputBitAlignment = Pylon::OutputBitAlignment_LsbAligned; setFormat(m_color); @@ -67,11 +67,11 @@ void setFormat(int format) { Pylon::AutoLock colorlock(m_colorlock); switch(format) { - case(GL_RGBA): + case(GEM_RGBA): m_color = format; m_converter.OutputPixelFormat = Pylon::PixelType_BGRA8packed; break; - case(GL_LUMINANCE): + case(GEM_GRAY): m_color = format; m_converter.OutputPixelFormat = Pylon::PixelType_Mono8; break; diff -Nru gem-0.94~pre1/plugins/videoSGI/videoSGI.cpp gem-0.94/plugins/videoSGI/videoSGI.cpp --- gem-0.94~pre1/plugins/videoSGI/videoSGI.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoSGI/videoSGI.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/plugins/videoTEST/videoTEST.cpp gem-0.94/plugins/videoTEST/videoTEST.cpp --- gem-0.94~pre1/plugins/videoTEST/videoTEST.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoTEST/videoTEST.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -18,7 +18,7 @@ { m_pixBlock.image.xsize = 64; m_pixBlock.image.ysize = 64; - m_pixBlock.image.setCsizeByFormat(GL_RGBA_GEM); + m_pixBlock.image.setCsizeByFormat(GEM_RGBA); m_pixBlock.image.reallocate(); } @@ -79,7 +79,7 @@ pixBlock*videoTEST::getFrame(void) { - m_pixBlock.image.setCsizeByFormat(GL_RGBA_GEM); + m_pixBlock.image.setCsizeByFormat(GEM_RGBA); m_pixBlock.image.reallocate(); const unsigned int count = m_pixBlock.image.xsize * m_pixBlock.image.ysize; unsigned int i=0; diff -Nru gem-0.94~pre1/plugins/videoUNICAP/videoUNICAP.cpp gem-0.94/plugins/videoUNICAP/videoUNICAP.cpp --- gem-0.94~pre1/plugins/videoUNICAP/videoUNICAP.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoUNICAP/videoUNICAP.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -77,7 +77,7 @@ m_width(-1), m_height(-1), m_handle(NULL), m_devicenum(-1), - m_reqFormat(GL_RGBA_GEM), + m_reqFormat(GEM_RGBA), m_running(false) { enumerate(); diff -Nru gem-0.94~pre1/plugins/videoV4L/videoV4L.cpp gem-0.94/plugins/videoV4L/videoV4L.cpp --- gem-0.94~pre1/plugins/videoV4L/videoV4L.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoV4L/videoV4L.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -56,6 +56,7 @@ #include "Gem/RTE.h" #include "Gem/Files.h" +#include "Gem/GemGL.h" #ifndef HAVE_LIBV4L1 # define v4l1_open ::open diff -Nru gem-0.94~pre1/plugins/videoV4L2/v4l2-videoplugin.pd gem-0.94/plugins/videoV4L2/v4l2-videoplugin.pd --- gem-0.94~pre1/plugins/videoV4L2/v4l2-videoplugin.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoV4L2/v4l2-videoplugin.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,23 +1,23 @@ -#N canvas 8 49 505 589 10; -#X msg 9 219 device usb-0000:00:04.1-4; -#X msg 9 239 device usb-0000:00:06.0-2; -#X msg 9 259 device usb-0000:00:04.0-1; -#X msg -42 366 get driver; -#X msg 48 366 get card; -#X msg 138 366 get bus_info; -#X text -42 304 contrary to /dev/video* files \, this address is not +#N canvas 8 61 505 589 10; +#X msg 109 219 device usb-0000:00:04.1-4; +#X msg 109 239 device usb-0000:00:06.0-2; +#X msg 109 259 device usb-0000:00:04.0-1; +#X msg 58 366 get driver; +#X msg 148 366 get card; +#X msg 238 366 get bus_info; +#X text 58 304 contrary to /dev/video* files \, this address is not related to the plug order of the devices; -#X obj -73 425 cnv 15 150 20 empty \$0-propreadNamev4l2 -- 10 9 0 14 +#X obj 27 425 cnv 15 150 20 empty \$0-propreadNamev4l2 -- 10 9 0 14 -203904 -66577 0; -#X obj 86 425 cnv 15 200 20 empty \$0-propreadValuev4l2 -- 10 9 0 14 --261234 -66577 0; -#X obj -21 282 s \$1-ctl; -#X text -38 176 You can also choose a device by its physical location +#X obj 186 425 cnv 15 200 20 empty \$0-propreadValuev4l2 -- 10 9 0 +14 -261234 -66577 0; +#X obj 79 282 s \$1-ctl; +#X text 62 176 You can also choose a device by its physical location on the bus:; -#X obj -21 132 s \$1-ctl; -#X msg 9 69 device /dev/video0; -#X msg 9 89 device /dev/video4; -#X text -44 350 these are some related read-only properties :; +#X obj 79 132 s \$1-ctl; +#X msg 109 69 device /dev/video0; +#X msg 109 89 device /dev/video4; +#X text 56 350 these are some related read-only properties :; #N canvas 762 178 450 537 getDeviceInfo 0; #X obj 54 38 inlet; #X obj 54 66 s \$1-ctl; @@ -62,8 +62,8 @@ #X connect 18 0 19 0; #X connect 19 0 7 0; #X connect 19 1 12 0; -#X restore -42 394 pd getDeviceInfo; -#X text -38 26 With V4L2 backend you can choose a device via its device-name: +#X restore 58 394 pd getDeviceInfo; +#X text 62 26 With V4L2 backend you can choose a device via its device-name: ; #X connect 0 0 9 0; #X connect 1 0 9 0; diff -Nru gem-0.94~pre1/plugins/videoV4L2/videoV4L2.cpp gem-0.94/plugins/videoV4L2/videoV4L2.cpp --- gem-0.94~pre1/plugins/videoV4L2/videoV4L2.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoV4L2/videoV4L2.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -587,18 +587,18 @@ } switch(m_reqFormat) { - case GL_YCBCR_422_GEM: + case GEM_YUV: pixelformat = V4L2_PIX_FMT_UYVY; break; - case GL_LUMINANCE: + case GEM_GRAY: pixelformat = V4L2_PIX_FMT_GREY; break; - case GL_RGB: + case GEM_RGB: pixelformat = V4L2_PIX_FMT_RGB24; break; default: pixelformat = V4L2_PIX_FMT_RGB32; - m_reqFormat=GL_RGBA; + m_reqFormat=GEM_RGBA; break; } @@ -648,8 +648,8 @@ * let's try formats that should be always supported by libv4l2 */ switch(m_reqFormat) { - case GL_YCBCR_422_GEM: - case GL_LUMINANCE: + case GEM_YUV: + case GEM_GRAY: pixelformat = V4L2_PIX_FMT_YUV420; break; default: @@ -731,16 +731,16 @@ m_reqFormat); switch(m_gotFormat) { case V4L2_PIX_FMT_GREY : - m_colorConvert=(m_reqFormat!=GL_LUMINANCE); + m_colorConvert=(m_reqFormat!=GEM_GRAY); break; case V4L2_PIX_FMT_RGB24 : - m_colorConvert=(m_reqFormat!=GL_BGR); + m_colorConvert=true; break; case V4L2_PIX_FMT_RGB32 : m_colorConvert=true; break; case V4L2_PIX_FMT_UYVY : - m_colorConvert=(m_reqFormat!=GL_YCBCR_422_GEM); + m_colorConvert=(m_reqFormat!=GEM_YUV); break; case V4L2_PIX_FMT_YUV420: m_colorConvert=1; diff -Nru gem-0.94~pre1/plugins/videoVFW/videoVFW.cpp gem-0.94/plugins/videoVFW/videoVFW.cpp --- gem-0.94~pre1/plugins/videoVFW/videoVFW.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoVFW/videoVFW.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -172,7 +172,7 @@ m_image.image.xsize = m_width; m_image.image.ysize = m_height; - m_image.image.setCsizeByFormat(GL_RGBA); + m_image.image.setCsizeByFormat(GEM_RGBA); m_image.image.reallocate(); m_image.image.setBlack(); diff -Nru gem-0.94~pre1/plugins/videoVFW/videoVFW.h gem-0.94/plugins/videoVFW/videoVFW.h --- gem-0.94~pre1/plugins/videoVFW/videoVFW.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoVFW/videoVFW.h 2019-02-12 13:10:01.000000000 +0000 @@ -16,7 +16,7 @@ #define _INCLUDE_GEMPLUGIN__VIDEOVFW_VIDEOVFW_H_ #include "plugins/videoBase.h" - +#include <windows.h> #include <vfw.h> /*----------------------------------------------------------------- diff -Nru gem-0.94~pre1/plugins/videoVIDS/videoVIDS.cpp gem-0.94/plugins/videoVIDS/videoVIDS.cpp --- gem-0.94~pre1/plugins/videoVIDS/videoVIDS.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoVIDS/videoVIDS.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -457,7 +457,7 @@ unsigned char*data=m_pixBlock.image.data; m_pixBlock.image.xsize=m_width; m_pixBlock.image.ysize=m_height; - m_pixBlock.image.setCsizeByFormat(GL_RGBA); + m_pixBlock.image.setCsizeByFormat(GEM_RGBA); m_pixBlock.image.reallocate(); m_pixBlock.newimage=(data==m_pixBlock.image.data); diff -Nru gem-0.94~pre1/plugins/videoVLC/videoVLC.cpp gem-0.94/plugins/videoVLC/videoVLC.cpp --- gem-0.94~pre1/plugins/videoVLC/videoVLC.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoVLC/videoVLC.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -43,7 +43,7 @@ namespace { static const char* format_string="RV32"; -static const GLenum format_enum = GL_RGBA_GEM; +static const unsigned int format_enum = GEM_RGBA; }; videoVLC::videoVLC(void) : @@ -393,7 +393,7 @@ return 1; } void videoVLC::resize(unsigned int width, unsigned int height, - GLenum format) + unsigned int format) { bool do_convert = true; diff -Nru gem-0.94~pre1/plugins/videoVLC/videoVLC.h gem-0.94/plugins/videoVLC/videoVLC.h --- gem-0.94~pre1/plugins/videoVLC/videoVLC.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoVLC/videoVLC.h 2019-02-12 13:10:01.000000000 +0000 @@ -28,7 +28,7 @@ Properties m_props; unsigned int m_type; - void resize(unsigned int width, unsigned int height, GLenum format=0); + void resize(unsigned int width, unsigned int height, unsigned int format=0); public: videoVLC(void); diff -Nru gem-0.94~pre1/plugins/videoVLC/vlc-videoplugin.pd gem-0.94/plugins/videoVLC/vlc-videoplugin.pd --- gem-0.94~pre1/plugins/videoVLC/vlc-videoplugin.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoVLC/vlc-videoplugin.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,5 +1,5 @@ -#N canvas 771 336 763 434 10; -#X obj 152 143 s \$1-ctl; +#N canvas 94 121 763 563 10; +#X obj 142 223 s \$1-ctl; #X text 63 27 With VLC backend you can open whatever VLC can as far as its a video : a file \, a stream; #X msg 44 89 driver vlc; @@ -8,14 +8,23 @@ #X msg 180 90 device file:///home/me/video.avi; #X text 196 109 note the path should be the same you enter in VLC in "Open network stream" window; -#X text 64 212 VLC doesn't know the resolution of the video \, so please +#X text 54 372 VLC doesn't know the resolution of the video \, so please set it yourself :; -#X obj 158 297 s \$1-ctl; -#X msg 114 256 dimen 640 480; -#X msg 226 258 dimen 1920 1080; -#X text 71 313 you can easily over- or undersample your video with +#X obj 148 457 s \$1-ctl; +#X msg 104 416 dimen 640 480; +#X msg 216 418 dimen 1920 1080; +#X text 61 473 you can easily over- or undersample your video with this (if don't care about the interpolation quality...); +#X msg 169 160 set screen-fps 50 \, set screen-top 100 \, set screen-left +0 \, set screen-width 500 \, set screen-height 500 \, device screen:// +; +#X text 537 174 screen capturing; +#X text 53 275 The available properties are the VLC cmdline options. +See the VLC documentation for a list (you could also check https://wiki.videolan.org/VLC_command-line_help/). +You need to remove the leading dashes ("--") from the cmdline options. +; #X connect 2 0 0 0; #X connect 5 0 0 0; #X connect 9 0 8 0; #X connect 10 0 8 0; +#X connect 12 0 0 0; diff -Nru gem-0.94~pre1/plugins/videoVNC/videoVNC.cpp gem-0.94/plugins/videoVNC/videoVNC.cpp --- gem-0.94~pre1/plugins/videoVNC/videoVNC.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoVNC/videoVNC.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -30,7 +30,7 @@ m_mouse.mask=0; m_pixBlock.image.xsize = 64; m_pixBlock.image.ysize = 64; - m_pixBlock.image.setCsizeByFormat(GL_RGBA); + m_pixBlock.image.setCsizeByFormat(GEM_RGBA); m_pixBlock.image.reallocate(); } @@ -216,7 +216,7 @@ int bpp=pf->bitsPerPixel/8; int row_stride=client->width*bpp; - m_pixBlock.image.setCsizeByFormat(GL_RGBA); + m_pixBlock.image.setCsizeByFormat(GEM_RGBA); m_pixBlock.image.xsize=client->width; m_pixBlock.image.ysize=client->height; m_pixBlock.image.reallocate(); diff -Nru gem-0.94~pre1/plugins/videoVNC/vnc-videoplugin.pd gem-0.94/plugins/videoVNC/vnc-videoplugin.pd --- gem-0.94~pre1/plugins/videoVNC/vnc-videoplugin.pd 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/plugins/videoVNC/vnc-videoplugin.pd 2019-02-12 13:10:01.000000000 +0000 @@ -1,4 +1,4 @@ -#N canvas 344 334 656 389 10; +#N canvas 106 139 656 389 10; #X obj 82 233 s \$1-ctl; #X text 19 72 1- select the backend; #X text 62 27 With VNC backend you can open a remote desktop using diff -Nru gem-0.94~pre1/README.txt gem-0.94/README.txt --- gem-0.94~pre1/README.txt 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/README.txt 2019-02-12 13:10:01.000000000 +0000 @@ -8,8 +8,7 @@ if you want to compile the newest (bleeding edge, and possibly unstable) source code yourself, you can get a copy from the public git repository: - read-only access: https://git.iem.at/pd/Gem.git - read-write access: ssh://git@git.iem.at:pd/Gem.git + https://git.iem.at/pd/Gem.git There is also a mirror on github: https://github.com/umlaeute/Gem diff -Nru gem-0.94~pre1/src/Base/CPPExtern.cpp gem-0.94/src/Base/CPPExtern.cpp --- gem-0.94~pre1/src/Base/CPPExtern.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/CPPExtern.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -220,3 +220,4 @@ { //post("CPPExtern to be deleted"); } + diff -Nru gem-0.94~pre1/src/Base/CPPExtern.h gem-0.94/src/Base/CPPExtern.h --- gem-0.94~pre1/src/Base/CPPExtern.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/CPPExtern.h 2019-02-12 13:10:01.000000000 +0000 @@ -332,21 +332,19 @@ // (registering the class with pd) // a static copy of this class is created at runtime, to actually do the setup-call /////////////////////////////////////////////////////////////////////////////// +typedef void (*t_class_setup)(void); +extern "C" { GEM_EXTERN void gem_register_class_setup(const char*name, t_class_setup); } + #ifdef NO_AUTO_REGISTER_CLASS // if NO_AUTO_REGISTER_CLASS is defined, we will not register the class # define AUTO_REGISTER_CLASS(NEW_CLASS) \ static int NEW_CLASS ## _dummyinstance #else // for debugging we can show the which classes are auto-registering -# if 0 -# define POST_AUTOREGISTER(NEW_CLASS) post("auto-registering: "#NEW_CLASS) -# else -# define POST_AUTOREGISTER(NEW_CLASS) -# endif -# define AUTO_REGISTER_CLASS(NEW_CLASS) \ +# define AUTO_REGISTER_CLASS(NEW_CLASS) \ class NEW_CLASS ## _cppclass { \ public: \ - NEW_CLASS ## _cppclass(void) {POST_AUTOREGISTER(NEW_CLASS); NEW_CLASS ## _setup(); } \ + NEW_CLASS ## _cppclass(void) {gem_register_class_setup(#NEW_CLASS, & NEW_CLASS ## _setup); } \ }; \ static NEW_CLASS ## _cppclass NEW_CLASS ## _instance #endif diff -Nru gem-0.94~pre1/src/Base/GemBase.cpp gem-0.94/src/Base/GemBase.cpp --- gem-0.94~pre1/src/Base/GemBase.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemBase.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Base/GemBase.h gem-0.94/src/Base/GemBase.h --- gem-0.94~pre1/src/Base/GemBase.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemBase.h 2019-02-12 13:10:01.000000000 +0000 @@ -15,7 +15,6 @@ #ifndef _INCLUDE__GEM_BASE_GEMBASE_H_ #define _INCLUDE__GEM_BASE_GEMBASE_H_ -#include "Gem/GemGL.h" #include "Gem/ContextData.h" #include "Base/CPPExtern.h" diff -Nru gem-0.94~pre1/src/Base/GemContext.cpp gem-0.94/src/Base/GemContext.cpp --- gem-0.94~pre1/src/Base/GemContext.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemContext.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -165,8 +165,6 @@ } m_pimpl->maxStackDepth[GemMan::STACKCOLOR]=colorstack; - - post("GLEW version %s",glewGetString(GLEW_VERSION)); } pop(); diff -Nru gem-0.94~pre1/src/Base/GemGluObj.cpp gem-0.94/src/Base/GemGluObj.cpp --- gem-0.94~pre1/src/Base/GemGluObj.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemGluObj.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Base/GemPathBase.cpp gem-0.94/src/Base/GemPathBase.cpp --- gem-0.94~pre1/src/Base/GemPathBase.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemPathBase.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Base/GemPixDualObj.cpp gem-0.94/src/Base/GemPixDualObj.cpp --- gem-0.94~pre1/src/Base/GemPixDualObj.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemPixDualObj.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Base/GemPixObj.cpp gem-0.94/src/Base/GemPixObj.cpp --- gem-0.94~pre1/src/Base/GemPixObj.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemPixObj.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Base/GemPixObj.h gem-0.94/src/Base/GemPixObj.h --- gem-0.94~pre1/src/Base/GemPixObj.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemPixObj.h 2019-02-12 13:10:01.000000000 +0000 @@ -18,9 +18,9 @@ #include "Base/GemBase.h" #include "Gem/Image.h" #include "Gem/Rectangle.h" -#include "stdlib.h" -#include "string.h" -#include "math.h" +#include <stdlib.h> +#include <string.h> +#include <math.h> /*----------------------------------------------------------------- ------------------------------------------------------------------- diff -Nru gem-0.94~pre1/src/Base/GemShape.cpp gem-0.94/src/Base/GemShape.cpp --- gem-0.94~pre1/src/Base/GemShape.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemShape.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Base/GemShape.h gem-0.94/src/Base/GemShape.h --- gem-0.94~pre1/src/Base/GemShape.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemShape.h 2019-02-12 13:10:01.000000000 +0000 @@ -16,6 +16,7 @@ #define _INCLUDE__GEM_BASE_GEMSHAPE_H_ #include "Base/GemBase.h" +#include "Gem/GemGL.h" #include <map> /*----------------------------------------------------------------- ------------------------------------------------------------------- diff -Nru gem-0.94~pre1/src/Base/GemVertex.cpp gem-0.94/src/Base/GemVertex.cpp --- gem-0.94~pre1/src/Base/GemVertex.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemVertex.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Base/GemWinCreateEM.cpp gem-0.94/src/Base/GemWinCreateEM.cpp --- gem-0.94~pre1/src/Base/GemWinCreateEM.cpp 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/Base/GemWinCreateEM.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,491 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// claude@mathr.co.uk +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2012 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +// Copyright (c) 2019 Claude Heiland-Allen +// +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// +#include "Gem/GemConfig.h" +#ifdef __EMSCRIPTEN__ + +#include "GemWinCreate.h" +#include "Gem/Event.h" +#include "Gem/GemGL.h" +#include "Gem/RTE.h" + +#include <map> +#include <string> + +///////////////////////////////////////////////////////// +// createGemWindow +// +///////////////////////////////////////////////////////// +GEM_EXTERN int createGemWindow(WindowInfo &info, WindowHints &hints) +{ + static int firstTime = 1; + if (firstTime) { + SDL_Init(SDL_INIT_VIDEO); + firstTime = 0; + } + + if (! hints.actuallyDisplay) { + return(1); + } + + int w = hints.width; + int h = hints.height; + int x = hints.x_offset; + int y = hints.y_offset; + bool fullscreen = (hints.fullscreen != 0); + bool border = (hints.border != 0); + + info.win = SDL_CreateWindow(hints.title, x, y, w, h + , SDL_WINDOW_OPENGL + | SDL_WINDOW_RESIZABLE + | (fullscreen ? SDL_WINDOW_FULLSCREEN : 0) + | (border ? 0 : SDL_WINDOW_BORDERLESS) + ); + info.fs = fullscreen; + + if (! info.win) { + error("GEM: Unable to create window"); + return(0); + } + +// Emscripten doesn't support shared contexts yet +#if 0 + if (hints.shared) { + if (SDL_GL_MakeCurrent(info.win, hints.shared)) { + error("GEM: Unable to make shared OpenGL context current: %s", SDL_GetError()); + destroyGemWindow(info); + return(0); + } + SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 1); + } +#endif + info.context = SDL_GL_CreateContext(info.win); +#if 0 + if (! info.context) { + error("GEM: Unable to create OpenGL context: %s", SDL_GetError()); + SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 0); + destroyGemWindow(info); + return(0); + } + SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 0); +#endif + + if (SDL_GL_MakeCurrent(info.win, info.context)) { + error("GEM: Unable to make OpenGL context current: %s", SDL_GetError()); + destroyGemWindow(info); + return(0); + } + + if (fullscreen) { + SDL_RaiseWindow(info.win); + } + + return(1); +} + +///////////////////////////////////////////////////////// +// destroyGemWindow +// +///////////////////////////////////////////////////////// +GEM_EXTERN void destroyGemWindow(WindowInfo &info) +{ + if (info.win) { + if (info.context) { + SDL_GL_DeleteContext(info.context); + } + SDL_DestroyWindow(info.win); + } + info.win = NULL; + info.context = 0; +} + +///////////////////////////////////////////////////////// +// switch cursor on/off +// +///////////////////////////////////////////////////////// +int cursorGemWindow(WindowInfo &info, int state) +{ + static int cursor_state = 1; + state=!(!state); + if (cursor_state != state) { + cursor_state=SDL_ShowCursor(state); + if (cursor_state != (cursor_state & 1)) + { + fprintf(stderr, "cursor problem: %s\n", SDL_GetError()); + } + } + return cursor_state; +} + +///////////////////////////////////////////////////////// +// set topmost position on/off +// +///////////////////////////////////////////////////////// +int topmostGemWindow(WindowInfo &info, int state) +{ + static int topmost_state = 0; + state=!(!state); + if (state) + { + SDL_RaiseWindow(info.win); // FIXME not permanent + } + topmost_state = state; + return topmost_state; +} + +void gemWinSwapBuffers(WindowInfo &nfo) +{ + SDL_GL_SwapWindow(nfo.win); +} + +void gemWinMakeCurrent(WindowInfo&nfo) +{ + if (!nfo.win || !nfo.context) { + return; // do not crash ?? + } + SDL_GL_MakeCurrent(nfo.win, nfo.context); +} + +bool initGemWin(void) +{ + return 1; +} + +GEM_EXTERN void initWin_sharedContext(WindowInfo &info, WindowHints &hints) +{ + // myHints.shared = constInfo.context; + hints.shared = NULL; +} + +static std::map<SDL_Keycode, std::string>s_key2symbol; +static std::map<SDL_Keycode, std::string>s_worldkey2symbol; +static std::string key2symbol(SDL_Keycode k) +{ + if(0==s_key2symbol.size()) { + s_key2symbol[SDLK_BACKSPACE]="BackSpace"; + s_key2symbol[SDLK_TAB]="Tab"; + s_key2symbol[SDLK_CLEAR]="Clear"; + s_key2symbol[SDLK_RETURN]="Return"; + s_key2symbol[SDLK_PAUSE]="Pause"; + s_key2symbol[SDLK_ESCAPE]="Escape"; + s_key2symbol[SDLK_SPACE]="Space"; + s_key2symbol[SDLK_EXCLAIM]="!"; + s_key2symbol[SDLK_QUOTEDBL]="\""; + s_key2symbol[SDLK_HASH]="#"; + s_key2symbol[SDLK_DOLLAR]="$"; + s_key2symbol[SDLK_AMPERSAND]="&"; + s_key2symbol[SDLK_QUOTE]="'"; + s_key2symbol[SDLK_LEFTPAREN]="("; + s_key2symbol[SDLK_RIGHTPAREN]=")"; + s_key2symbol[SDLK_ASTERISK]="*"; + s_key2symbol[SDLK_PLUS]="+"; + s_key2symbol[SDLK_COMMA]=","; + s_key2symbol[SDLK_MINUS]="-"; + s_key2symbol[SDLK_PERIOD]="."; + s_key2symbol[SDLK_SLASH]="/"; + s_key2symbol[SDLK_0]="0"; + s_key2symbol[SDLK_1]="1"; + s_key2symbol[SDLK_2]="2"; + s_key2symbol[SDLK_3]="3"; + s_key2symbol[SDLK_4]="4"; + s_key2symbol[SDLK_5]="5"; + s_key2symbol[SDLK_6]="6"; + s_key2symbol[SDLK_7]="7"; + s_key2symbol[SDLK_8]="8"; + s_key2symbol[SDLK_9]="9"; + s_key2symbol[SDLK_COLON]=":"; + s_key2symbol[SDLK_SEMICOLON]=";"; + s_key2symbol[SDLK_LESS]="<"; + s_key2symbol[SDLK_EQUALS]="="; + s_key2symbol[SDLK_GREATER]=">"; + s_key2symbol[SDLK_QUESTION]="?"; + s_key2symbol[SDLK_AT]="@"; + s_key2symbol[SDLK_LEFTBRACKET]="]"; + s_key2symbol[SDLK_BACKSLASH]="\\"; + s_key2symbol[SDLK_RIGHTBRACKET]="]"; + s_key2symbol[SDLK_CARET]="^"; + s_key2symbol[SDLK_UNDERSCORE]="_"; + s_key2symbol[SDLK_BACKQUOTE]="`"; + s_key2symbol[SDLK_a]="a"; + s_key2symbol[SDLK_b]="b"; + s_key2symbol[SDLK_c]="c"; + s_key2symbol[SDLK_d]="d"; + s_key2symbol[SDLK_e]="e"; + s_key2symbol[SDLK_f]="f"; + s_key2symbol[SDLK_g]="g"; + s_key2symbol[SDLK_h]="h"; + s_key2symbol[SDLK_i]="i"; + s_key2symbol[SDLK_j]="j"; + s_key2symbol[SDLK_k]="k"; + s_key2symbol[SDLK_l]="l"; + s_key2symbol[SDLK_m]="m"; + s_key2symbol[SDLK_n]="n"; + s_key2symbol[SDLK_o]="o"; + s_key2symbol[SDLK_p]="p"; + s_key2symbol[SDLK_q]="q"; + s_key2symbol[SDLK_r]="r"; + s_key2symbol[SDLK_s]="s"; + s_key2symbol[SDLK_t]="t"; + s_key2symbol[SDLK_u]="u"; + s_key2symbol[SDLK_v]="v"; + s_key2symbol[SDLK_w]="w"; + s_key2symbol[SDLK_x]="x"; + s_key2symbol[SDLK_y]="y"; + s_key2symbol[SDLK_z]="z"; + s_key2symbol[SDLK_DELETE]="Delete"; + +#ifndef __EMSCRIPTEN__ + s_worldkey2symbol[SDLK_WORLD_0]="World_0"; + s_worldkey2symbol[SDLK_WORLD_1]="World_1"; + s_worldkey2symbol[SDLK_WORLD_2]="World_2"; + s_worldkey2symbol[SDLK_WORLD_3]="World_3"; + s_worldkey2symbol[SDLK_WORLD_4]="World_4"; + s_worldkey2symbol[SDLK_WORLD_5]="World_5"; + s_worldkey2symbol[SDLK_WORLD_6]="World_6"; + s_worldkey2symbol[SDLK_WORLD_7]="World_7"; + s_worldkey2symbol[SDLK_WORLD_8]="World_8"; + s_worldkey2symbol[SDLK_WORLD_9]="World_9"; + s_worldkey2symbol[SDLK_WORLD_10]="World_10"; + s_worldkey2symbol[SDLK_WORLD_11]="World_11"; + s_worldkey2symbol[SDLK_WORLD_12]="World_12"; + s_worldkey2symbol[SDLK_WORLD_13]="World_13"; + s_worldkey2symbol[SDLK_WORLD_14]="World_14"; + s_worldkey2symbol[SDLK_WORLD_15]="World_15"; + s_worldkey2symbol[SDLK_WORLD_16]="World_16"; + s_worldkey2symbol[SDLK_WORLD_17]="World_17"; + s_worldkey2symbol[SDLK_WORLD_18]="World_18"; + s_worldkey2symbol[SDLK_WORLD_19]="World_19"; + s_worldkey2symbol[SDLK_WORLD_20]="World_20"; + s_worldkey2symbol[SDLK_WORLD_21]="World_21"; + s_worldkey2symbol[SDLK_WORLD_22]="World_22"; + s_worldkey2symbol[SDLK_WORLD_23]="World_23"; + s_worldkey2symbol[SDLK_WORLD_24]="World_24"; + s_worldkey2symbol[SDLK_WORLD_25]="World_25"; + s_worldkey2symbol[SDLK_WORLD_26]="World_26"; + s_worldkey2symbol[SDLK_WORLD_27]="World_27"; + s_worldkey2symbol[SDLK_WORLD_28]="World_28"; + s_worldkey2symbol[SDLK_WORLD_29]="World_29"; + s_worldkey2symbol[SDLK_WORLD_30]="World_30"; + s_worldkey2symbol[SDLK_WORLD_31]="World_31"; + s_worldkey2symbol[SDLK_WORLD_32]="World_32"; + s_worldkey2symbol[SDLK_WORLD_33]="World_33"; + s_worldkey2symbol[SDLK_WORLD_34]="World_34"; + s_worldkey2symbol[SDLK_WORLD_35]="World_35"; + s_worldkey2symbol[SDLK_WORLD_36]="World_36"; + s_worldkey2symbol[SDLK_WORLD_37]="World_37"; + s_worldkey2symbol[SDLK_WORLD_38]="World_38"; + s_worldkey2symbol[SDLK_WORLD_39]="World_39"; + s_worldkey2symbol[SDLK_WORLD_40]="World_40"; + s_worldkey2symbol[SDLK_WORLD_41]="World_41"; + s_worldkey2symbol[SDLK_WORLD_42]="World_42"; + s_worldkey2symbol[SDLK_WORLD_43]="World_43"; + s_worldkey2symbol[SDLK_WORLD_44]="World_44"; + s_worldkey2symbol[SDLK_WORLD_45]="World_45"; + s_worldkey2symbol[SDLK_WORLD_46]="World_46"; + s_worldkey2symbol[SDLK_WORLD_47]="World_47"; + s_worldkey2symbol[SDLK_WORLD_48]="World_48"; + s_worldkey2symbol[SDLK_WORLD_49]="World_49"; + s_worldkey2symbol[SDLK_WORLD_50]="World_50"; + s_worldkey2symbol[SDLK_WORLD_51]="World_51"; + s_worldkey2symbol[SDLK_WORLD_52]="World_52"; + s_worldkey2symbol[SDLK_WORLD_53]="World_53"; + s_worldkey2symbol[SDLK_WORLD_54]="World_54"; + s_worldkey2symbol[SDLK_WORLD_55]="World_55"; + s_worldkey2symbol[SDLK_WORLD_56]="World_56"; + s_worldkey2symbol[SDLK_WORLD_57]="World_57"; + s_worldkey2symbol[SDLK_WORLD_58]="World_58"; + s_worldkey2symbol[SDLK_WORLD_59]="World_59"; + s_worldkey2symbol[SDLK_WORLD_60]="World_60"; + s_worldkey2symbol[SDLK_WORLD_61]="World_61"; + s_worldkey2symbol[SDLK_WORLD_62]="World_62"; + s_worldkey2symbol[SDLK_WORLD_63]="World_63"; + s_worldkey2symbol[SDLK_WORLD_64]="World_64"; + s_worldkey2symbol[SDLK_WORLD_65]="World_65"; + s_worldkey2symbol[SDLK_WORLD_66]="World_66"; + s_worldkey2symbol[SDLK_WORLD_67]="World_67"; + s_worldkey2symbol[SDLK_WORLD_68]="World_68"; + s_worldkey2symbol[SDLK_WORLD_69]="World_69"; + s_worldkey2symbol[SDLK_WORLD_70]="World_70"; + s_worldkey2symbol[SDLK_WORLD_71]="World_71"; + s_worldkey2symbol[SDLK_WORLD_72]="World_72"; + s_worldkey2symbol[SDLK_WORLD_73]="World_73"; + s_worldkey2symbol[SDLK_WORLD_74]="World_74"; + s_worldkey2symbol[SDLK_WORLD_75]="World_75"; + s_worldkey2symbol[SDLK_WORLD_76]="World_76"; + s_worldkey2symbol[SDLK_WORLD_77]="World_77"; + s_worldkey2symbol[SDLK_WORLD_78]="World_78"; + s_worldkey2symbol[SDLK_WORLD_79]="World_79"; + s_worldkey2symbol[SDLK_WORLD_80]="World_80"; + s_worldkey2symbol[SDLK_WORLD_81]="World_81"; + s_worldkey2symbol[SDLK_WORLD_82]="World_82"; + s_worldkey2symbol[SDLK_WORLD_83]="World_83"; + s_worldkey2symbol[SDLK_WORLD_84]="World_84"; + s_worldkey2symbol[SDLK_WORLD_85]="World_85"; + s_worldkey2symbol[SDLK_WORLD_86]="World_86"; + s_worldkey2symbol[SDLK_WORLD_87]="World_87"; + s_worldkey2symbol[SDLK_WORLD_88]="World_88"; + s_worldkey2symbol[SDLK_WORLD_89]="World_89"; + s_worldkey2symbol[SDLK_WORLD_90]="World_90"; + s_worldkey2symbol[SDLK_WORLD_91]="World_91"; + s_worldkey2symbol[SDLK_WORLD_92]="World_92"; + s_worldkey2symbol[SDLK_WORLD_93]="World_93"; + s_worldkey2symbol[SDLK_WORLD_94]="World_94"; + s_worldkey2symbol[SDLK_WORLD_95]="World_95"; +#endif + + s_key2symbol[SDLK_KP_0]="KeyPad_0"; + s_key2symbol[SDLK_KP_1]="KeyPad_1"; + s_key2symbol[SDLK_KP_2]="KeyPad_2"; + s_key2symbol[SDLK_KP_3]="KeyPad_3"; + s_key2symbol[SDLK_KP_4]="KeyPad_4"; + s_key2symbol[SDLK_KP_5]="KeyPad_5"; + s_key2symbol[SDLK_KP_6]="KeyPad_6"; + s_key2symbol[SDLK_KP_7]="KeyPad_7"; + s_key2symbol[SDLK_KP_8]="KeyPad_8"; + s_key2symbol[SDLK_KP_9]="KeyPad_9"; + s_key2symbol[SDLK_KP_PERIOD]="KeyPad_."; + s_key2symbol[SDLK_KP_DIVIDE]="KeyPad_/"; + s_key2symbol[SDLK_KP_MULTIPLY]="KeyPad_*"; + s_key2symbol[SDLK_KP_MINUS]="KeyPad_-"; + s_key2symbol[SDLK_KP_PLUS]="KeyPad_+"; + s_key2symbol[SDLK_KP_ENTER]="KeyPad_Enter"; + s_key2symbol[SDLK_KP_EQUALS]="KeyPad_="; + s_key2symbol[SDLK_UP]="Up"; + s_key2symbol[SDLK_DOWN]="Down"; + s_key2symbol[SDLK_RIGHT]="Right"; + s_key2symbol[SDLK_LEFT]="Left"; + s_key2symbol[SDLK_INSERT]="Insert"; + s_key2symbol[SDLK_HOME]="Home"; + s_key2symbol[SDLK_END]="End"; + s_key2symbol[SDLK_PAGEUP]="Prior"; + s_key2symbol[SDLK_PAGEDOWN]="Next"; + s_key2symbol[SDLK_F1]="F1"; + s_key2symbol[SDLK_F2]="F2"; + s_key2symbol[SDLK_F3]="F3"; + s_key2symbol[SDLK_F4]="F4"; + s_key2symbol[SDLK_F5]="F5"; + s_key2symbol[SDLK_F6]="F6"; + s_key2symbol[SDLK_F7]="F7"; + s_key2symbol[SDLK_F8]="F8"; + s_key2symbol[SDLK_F9]="F9"; + s_key2symbol[SDLK_F10]="F10"; + s_key2symbol[SDLK_F11]="F11"; + s_key2symbol[SDLK_F12]="F12"; + s_key2symbol[SDLK_F13]="F13"; + s_key2symbol[SDLK_F14]="F14"; + s_key2symbol[SDLK_F15]="F15"; +#ifndef __EMSCRIPTEN__ + s_key2symbol[SDLK_NUMLOCK]="Num_Lock"; +#endif + s_key2symbol[SDLK_CAPSLOCK]="Caps_Lock"; + s_key2symbol[SDLK_SCROLLLOCK]="Scroll_Lock"; + s_key2symbol[SDLK_RSHIFT]="Shift_R"; + s_key2symbol[SDLK_LSHIFT]="Shift_L"; + s_key2symbol[SDLK_RCTRL]="Control_R"; + s_key2symbol[SDLK_LCTRL]="Control_L"; + s_key2symbol[SDLK_RALT]="AltGr"; + s_key2symbol[SDLK_LALT]="Alt_L"; +#ifndef __EMSCRIPTEN__ + s_key2symbol[SDLK_RMETA]="Meta_R"; + s_key2symbol[SDLK_LMETA]="Meta_L"; + s_key2symbol[SDLK_LSUPER]="Super_L"; + s_key2symbol[SDLK_RSUPER]="Super_R"; +#endif + s_key2symbol[SDLK_MODE]="Mode"; +#ifndef __EMSCRIPTEN__ + s_key2symbol[SDLK_COMPOSE]="Compose"; +#endif + s_key2symbol[SDLK_HELP]="Help"; +#ifndef __EMSCRIPTEN__ + s_key2symbol[SDLK_PRINT]="Print"; +#endif + s_key2symbol[SDLK_SYSREQ]="SysRq"; +#ifndef __EMSCRIPTEN__ + s_key2symbol[SDLK_BREAK]="Break"; +#endif + s_key2symbol[SDLK_MENU]="Menu"; + s_key2symbol[SDLK_POWER]="Power"; +#ifndef __EMSCRIPTEN__ + s_key2symbol[SDLK_EURO]="€"; +#endif + s_key2symbol[SDLK_UNDO]="Undo"; + } + std::string s = s_key2symbol[k]; + if(s.empty()) { + s=s_worldkey2symbol[k]; + } + if(s.empty()) { + s="<unknown>"; + } + + return s; +} + +GEM_EXTERN void dispatchGemWindowMessages(WindowInfo &win) +{ + SDL_Event event; + while (SDL_PollEvent(&event)) + { + switch (event.type) + { + case SDL_QUIT: + // ignore + break; + case SDL_WINDOWEVENT: + switch (event.window.event) + { + case SDL_WINDOWEVENT_CLOSE: + // ignore + break; + case SDL_WINDOWEVENT_RESIZED: + case SDL_WINDOWEVENT_SIZE_CHANGED: + triggerResizeEvent(event.window.data1, event.window.data2); + break; + } + break; + case SDL_KEYDOWN: + case SDL_KEYUP: + triggerKeyboardEvent + ( key2symbol(event.key.keysym.sym).c_str() + , event.key.keysym.scancode + , event.type == SDL_KEYDOWN + ); + break; + case SDL_MOUSEBUTTONDOWN: + case SDL_MOUSEBUTTONUP: + triggerButtonEvent + ( event.button.button == SDL_BUTTON_LEFT ? 0 + : event.button.button == SDL_BUTTON_MIDDLE ? 1 + : event.button.button == SDL_BUTTON_RIGHT ? 2 + : event.button.button // FIXME + , event.type == SDL_MOUSEBUTTONDOWN + , event.button.x + , event.button.y + ); + break; + case SDL_MOUSEMOTION: + triggerMotionEvent(event.motion.x, event.motion.y); + break; + case SDL_MOUSEWHEEL: // FIXME + if (event.wheel.y != 0) triggerWheelEvent(0, event.wheel.y); + if (event.wheel.x != 0) triggerWheelEvent(1, event.wheel.x); + break; + } + } +} + +#endif /* Emscripten */ diff -Nru gem-0.94~pre1/src/Base/GemWinCreate.h gem-0.94/src/Base/GemWinCreate.h --- gem-0.94~pre1/src/Base/GemWinCreate.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemWinCreate.h 2019-02-12 13:10:01.000000000 +0000 @@ -25,6 +25,8 @@ # ifdef HAVE_LIBXXF86VM # include <X11/extensions/xf86vmode.h> # endif +#elif defined __EMSCRIPTEN__ +# include <SDL/SDL.h> #else # error Define OS specific window creation #endif @@ -65,6 +67,8 @@ #elif defined __linux__ || defined HAVE_GL_GLX_H dpy(NULL), win(0), screen(0), cmap(0), context(NULL), delete_atom(0), have_border(false), +#elif defined __EMSCRIPTEN__ + win(NULL), context(0), #else #endif have_constContext(0) @@ -112,6 +116,10 @@ XF86VidModeModeInfo deskMode; // originale ModeLine of the Desktop # endif +#elif defined __EMSCRIPTEN__ + + SDL_Window *win; + SDL_GLContext context; #else # error Define OS specific window data @@ -176,11 +184,11 @@ int fsaa; ///// if we can use a different display , this has its meaning under X - char* display; + const char* display; ////////////// // display some title.... - char* title; + const char* title; ////////// // The GLXcontext to share rendering with @@ -190,6 +198,8 @@ AGLContext shared; #elif defined __linux__ || defined HAVE_GL_GLX_H GLXContext shared; +#elif defined __EMSCRIPTEN__ + SDL_GLContext shared; #else #error Define OS specific OpenGL context #endif diff -Nru gem-0.94~pre1/src/Base/GemWinCreateNT.cpp gem-0.94/src/Base/GemWinCreateNT.cpp --- gem-0.94~pre1/src/Base/GemWinCreateNT.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemWinCreateNT.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Base/GemWinCreateXWin.cpp gem-0.94/src/Base/GemWinCreateXWin.cpp --- gem-0.94~pre1/src/Base/GemWinCreateXWin.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemWinCreateXWin.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Base/GemWindow.cpp gem-0.94/src/Base/GemWindow.cpp --- gem-0.94~pre1/src/Base/GemWindow.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/GemWindow.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -22,6 +22,7 @@ #include "GemBase.h" #include <set> +#include <sstream> namespace { @@ -176,7 +177,8 @@ GemWindow :: GemWindow() : m_pimpl(new PIMPL(this)), m_width(500), m_height(500), - m_xoffset(0), m_yoffset(0), + /* in order to not hide the window-title, offset is >0 */ + m_xoffset(50), m_yoffset(50), m_border(true), m_fullscreen(false), m_buffer(2), m_title("Gem"), @@ -474,7 +476,26 @@ void GemWindow:: printMess(void) { - // nada + verbose(1, "@%p", this); + if (!makeCurrent()) { + error("OpenGL has not been initialized yet"); + post("create a window first!"); + return; + } + + post("OpenGL info"); + post("\tVendor: %s", glGetString(GL_VENDOR)); + post("\tRenderer: %s", glGetString(GL_RENDERER)); + post("\tVersion: %s", glGetString(GL_VERSION)); + post("\tGLEW: %s", glewGetString(GLEW_VERSION)); + + std::string extensions = (char*)glGetString(GL_EXTENSIONS); + std::string ext; + std::istringstream extStream(extensions); + + while (std::getline(extStream, ext, ' ')) { + verbose(0, "\tExtension: %s", ext.c_str()); // Print extension string + } } void GemWindow:: anyMess(t_symbol*s, int argc, t_atom*argv) @@ -499,7 +520,8 @@ CPPEXTERN_MSG1(classPtr, "border", borderMess, bool); CPPEXTERN_MSG1(classPtr, "cursor", cursorMess, bool); CPPEXTERN_MSG1(classPtr, "transparent", transparentMess, bool); - // CPPEXTERN_MSG0(classPtr, "print", printMess); + + CPPEXTERN_MSG0(classPtr, "print", printMess); struct _CB_any { static void callback(void*data, t_symbol*s, int argc, t_atom*argv) diff -Nru gem-0.94~pre1/src/Base/Makefile.am gem-0.94/src/Base/Makefile.am --- gem-0.94~pre1/src/Base/Makefile.am 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/Makefile.am 2019-02-12 13:10:01.000000000 +0000 @@ -32,6 +32,9 @@ else !ENABLE_MULTICONTEXT libBase_la_CXXFLAGS += $(GEM_LIB_GLEW_CFLAGS) libBase_la_LIBADD += $(GEM_LIB_GLEW_LIBS) +if WINDOWS +libBase_la_LIBADD += -lgdi32 +endif endif !ENABLE_MULTICONTEXT # FTGL @@ -82,6 +85,7 @@ else !ENABLE_MULTICONTEXT libBase_la_SOURCES+= \ GemWinCreate.h \ + GemWinCreateEM.cpp \ GemWinCreateMac.cpp \ GemWinCreateNT.cpp \ GemWinCreateXWin.cpp diff -Nru gem-0.94~pre1/src/Base/TextBaseFTGL.cpp gem-0.94/src/Base/TextBaseFTGL.cpp --- gem-0.94~pre1/src/Base/TextBaseFTGL.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/TextBaseFTGL.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -74,10 +74,8 @@ void TextBase :: startRendering(void) { - if(NULL==m_font) { - if(m_fontname) { - fontNameMess(m_fontname->s_name); - } + if(m_fontname) { + fontNameMess(m_fontname->s_name); } } @@ -136,6 +134,7 @@ renderLine(m_theText[i].c_str(), m_lineDist[i]*m_fontSize*m_dist*m_precision); } + glDisable(GL_BLEND); glPopAttrib(); fontInfo(); } @@ -199,7 +198,7 @@ m_font->Depth(m_fontDepth); m_font->CharMap(ft_encoding_unicode); - setModified(); + //setModified(); } ///////////////////////////////////////////////////////// @@ -232,8 +231,7 @@ if(!m_font->FaceSize(fs)) { error("unable to set fontsize !"); } - - setModified(); + //setModified(); } ///////////////////////////////////////////////////////// @@ -431,7 +429,7 @@ m_theText.push_back(gem::string::getVisualLine(line)); } makeLineDist(); - setModified(); + //setModified(); } void TextBase :: textMess(int argc, t_atom *argv) diff -Nru gem-0.94~pre1/src/Base/TextBase.h gem-0.94/src/Base/TextBase.h --- gem-0.94~pre1/src/Base/TextBase.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/TextBase.h 2019-02-12 13:10:01.000000000 +0000 @@ -26,6 +26,7 @@ #include "RTE/Outlet.h" #include "Base/GemBase.h" +#include "Gem/GemGL.h" #include <vector> #include <string> diff -Nru gem-0.94~pre1/src/Base/TextBaseNone.cpp gem-0.94/src/Base/TextBaseNone.cpp --- gem-0.94~pre1/src/Base/TextBaseNone.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Base/TextBaseNone.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/check-sources.mk gem-0.94/src/check-sources.mk --- gem-0.94~pre1/src/check-sources.mk 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/check-sources.mk 2019-02-12 13:10:01.000000000 +0000 @@ -6,10 +6,10 @@ all-local:: check-sources -_check_sources_all=$(wildcard *.cpp *.h) +_check_sources_all=$(notdir $(wildcard $(addprefix $(srcdir)/*, $(SUFFIXES) $(.SUFFIXES)))) _check_sources_unused=$(filter-out $(DIST_SOURCES) $(CHECKUNUSED_IGNORE), $(_check_sources_all)) check-sources: - @echo "UNUSED SOURCES: $(_check_sources_unused)" - - +@IFNEQ@ ($(strip $(_check_sources_unused)),) + @echo "UNUSED SOURCES in $(srcdir:$(top_srcdir)/%=%): $(_check_sources_unused)" +@ENDIF@ diff -Nru gem-0.94~pre1/src/Controls/gemcubeframebuffer.h gem-0.94/src/Controls/gemcubeframebuffer.h --- gem-0.94~pre1/src/Controls/gemcubeframebuffer.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemcubeframebuffer.h 2019-02-12 13:10:01.000000000 +0000 @@ -21,6 +21,7 @@ #define _INCLUDE__GEM_CONTROLS_GEMCUBEFRAMEBUFFER_H_ #include "Base/GemBase.h" +#include "Gem/GemGL.h" #include <iostream> /*----------------------------------------------------------------- diff -Nru gem-0.94~pre1/src/Controls/gemframebuffer.cpp gem-0.94/src/Controls/gemframebuffer.cpp --- gem-0.94~pre1/src/Controls/gemframebuffer.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemframebuffer.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -20,8 +20,7 @@ #include "Gem/State.h" #include "Gem/GLStack.h" -CPPEXTERN_NEW_WITH_TWO_ARGS(gemframebuffer, t_symbol *, A_DEFSYMBOL, - t_symbol *, A_DEFSYMBOL); +CPPEXTERN_NEW_WITH_GIMME(gemframebuffer); ///////////////////////////////////////////////////////// // @@ -31,7 +30,17 @@ // Constructor // ///////////////////////////////////////////////////////// -gemframebuffer :: gemframebuffer(t_symbol *format, t_symbol *type) +/* args: + * : width(256), height(256), format(RGB), type(uchar) + * s <s:format>: width(), height(), format(format), type() + * f <f:dimen>: width()dimen, height(dimen), format(), type() + * ss <s:format> <s:type>: width(), height(), format(format), type(type) + * ff <f:width> <f:height>: width(width), height(height), format(), type() + * ffs <f:width> <f:height> <s:format>: width(width), height(height), format(format), type() + * ffss <f:width> <f:height> <s:format> <s:type>: width(width), height(height), format(format), type(type) + + */ +gemframebuffer :: gemframebuffer(int argc, t_atom*argv) : m_haveinit(false), m_wantinit(false), m_frameBufferIndex(0), m_depthBufferIndex(0), m_offScreenID(0), m_texTarget(GL_TEXTURE_2D), m_texunit(0), @@ -50,6 +59,59 @@ m_outTexInfo = outlet_new(this->x_obj, 0); } + unsigned int typesignature = 0; + for(int i=0; i<4; i++) { + if(i>=argc) + break; + switch(argv[i].a_type) { + default: + break; + case A_SYMBOL: + typesignature |= 2<<(2*i); + break; + case A_FLOAT: + typesignature |= 1<<(2*i); + break; + } + } + + int index_width=-1; + int index_height=-1; + int index_format=-1; + int index_type=-1; + switch(typesignature) { + case 0: + break; + case 1: /* f */ + index_width = index_height = 0; + break; + case 2: /* s */ + index_format = 0; + break; + case 5: /* ff */ + index_width = 0; + index_height = 1; + break; + case 10: /* ss */ + index_format = 0; + index_type = 1; + break; + case 37: /* ffs */ + index_width = 0; + index_height = 1; + index_format = 2; + break; + case 165: /* ffss */ + index_width = 0; + index_height = 1; + index_format = 2; + index_type = 3; + break; + default: + /* unknown type signature */ + break; + } + m_FBOcolor[0] = 0.f; m_FBOcolor[1] = 0.f; m_FBOcolor[2] = 0.f; @@ -62,12 +124,19 @@ m_perspect[4] = 1.f; m_perspect[5] = 20.f; - - if(format && format->s_name && format!=gensym("")) { - formatMess(format->s_name); + int w = m_width, h = m_height; + if(index_width >= 0) { + w = atom_getfloat(argv+index_width); + } + if(index_height >= 0) { + h = atom_getfloat(argv+index_height); + } + dimMess(w, h); + if(index_format >= 0) { + formatMess(atom_getsymbol(argv+index_format)->s_name); } - if(type && type->s_name && type !=gensym("")) { - typeMess(type->s_name); + if(index_type >= 0) { + typeMess(atom_getsymbol(argv+index_type)->s_name); } } @@ -282,6 +351,12 @@ std::string type; switch(m_type) { + case GL_UNSIGNED_INT: + type="UINT"; + break; + case GL_INT: + type="INT"; + break; case GL_UNSIGNED_BYTE: type="BYTE"; break; @@ -570,10 +645,15 @@ { if("FLOAT"==type) { m_type = GL_FLOAT; + } else if("INT"==type) { + m_type = GL_INT; + } else if("UINT"==type) { + m_type = GL_UNSIGNED_INT; } else { type="BYTE"; m_type=GL_UNSIGNED_BYTE; } + // changed type, so we need to rebuild the FBO setModified(); } diff -Nru gem-0.94~pre1/src/Controls/gemframebuffer.h gem-0.94/src/Controls/gemframebuffer.h --- gem-0.94~pre1/src/Controls/gemframebuffer.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemframebuffer.h 2019-02-12 13:10:01.000000000 +0000 @@ -16,6 +16,7 @@ #define _INCLUDE__GEM_CONTROLS_GEMFRAMEBUFFER_H_ #include "Base/GemBase.h" +#include "Gem/GemGL.h" #include <iostream> /*----------------------------------------------------------------- @@ -38,7 +39,7 @@ ////////// // Constructor - gemframebuffer(t_symbol *format, t_symbol *type); + gemframebuffer(int, t_atom*); protected: diff -Nru gem-0.94~pre1/src/Controls/gemhead.cpp gem-0.94/src/Controls/gemhead.cpp --- gem-0.94~pre1/src/Controls/gemhead.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemhead.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -125,6 +125,10 @@ // renderGL // ///////////////////////////////////////////////////////// +#ifdef __GNUC__ +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif void gemhead :: renderGL(GemState *state) { static const GLfloat a_color[]= {0.2,0.2,0.2,1}; @@ -151,14 +155,7 @@ state->reset(); // set the state dirty flag state->set(GemState::_DIRTY, m_cache->dirty); -#ifdef __GNUC__ -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wdeprecated-declarations" -#endif state->VertexDirty=m_cache->vertexDirty; -#ifdef __GNUC__ -# pragma GCC diagnostic pop -#endif state->get(GemState::_GL_STACKS, stacks); if(stacks) { @@ -187,6 +184,9 @@ stacks->pop(); } } +#ifdef __GNUC__ +# pragma GCC diagnostic pop +#endif ///////////////////////////////////////////////////////// diff -Nru gem-0.94~pre1/src/Controls/gemkeyboard.cpp gem-0.94/src/Controls/gemkeyboard.cpp --- gem-0.94~pre1/src/Controls/gemkeyboard.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemkeyboard.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -67,7 +67,7 @@ ///////////////////////////////////////////////////////// void gemkeyboard :: obj_setupCallback(t_class *) { } -void gemkeyboard :: keyboardCallback(char* w, int x, int y, void *data) +void gemkeyboard :: keyboardCallback(const char* w, int x, int y, void *data) { (reinterpret_cast<gemkeyboard*>(data))->KeyBoardPressed(x, y); } diff -Nru gem-0.94~pre1/src/Controls/gemkeyboard.h gem-0.94/src/Controls/gemkeyboard.h --- gem-0.94~pre1/src/Controls/gemkeyboard.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemkeyboard.h 2019-02-12 13:10:01.000000000 +0000 @@ -55,7 +55,7 @@ ////////// // Static member functions - static void keyboardCallback(char *w, int x, int y, void *data); + static void keyboardCallback(const char *w, int x, int y, void *data); }; #endif // for header file diff -Nru gem-0.94~pre1/src/Controls/gemkeyname.cpp gem-0.94/src/Controls/gemkeyname.cpp --- gem-0.94~pre1/src/Controls/gemkeyname.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemkeyname.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -55,7 +55,7 @@ // mouseMotion // ///////////////////////////////////////////////////////// -void gemkeyname :: KeyNamePressed(char *string, int val, int state) +void gemkeyname :: KeyNamePressed(const char *string, int val, int state) { outlet_symbol(m_outKeyVal, gensym(string)); outlet_float(m_outKeyState, static_cast<t_float>(state)); @@ -67,7 +67,7 @@ ///////////////////////////////////////////////////////// void gemkeyname :: obj_setupCallback(t_class *) { } -void gemkeyname :: keynameCallback(char *x, int y, int z, void *data) +void gemkeyname :: keynameCallback(const char *x, int y, int z, void *data) { - (reinterpret_cast<gemkeyname*>(data))->KeyNamePressed(x,y, z); + (reinterpret_cast<gemkeyname*>(data))->KeyNamePressed(x, y, z); } diff -Nru gem-0.94~pre1/src/Controls/gemkeyname.h gem-0.94/src/Controls/gemkeyname.h --- gem-0.94~pre1/src/Controls/gemkeyname.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemkeyname.h 2019-02-12 13:10:01.000000000 +0000 @@ -45,7 +45,7 @@ ////////// // keyname-button - void KeyNamePressed(char* string, int val, int state); + void KeyNamePressed(const char* string, int val, int state); ////////// // The key-val outlet @@ -60,7 +60,7 @@ ////////// // Static member functions - static void keynameCallback(char* x, int y, int z, void *data); + static void keynameCallback(const char* x, int y, int z, void *data); }; #endif // for header file diff -Nru gem-0.94~pre1/src/Controls/gemlist_info.cpp gem-0.94/src/Controls/gemlist_info.cpp --- gem-0.94~pre1/src/Controls/gemlist_info.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemlist_info.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // @@ -13,8 +13,9 @@ //////////////////////////////////////////////////////// #include "gemlist_info.h" +#include "Gem/GemGL.h" -#include "math.h" +#include <math.h> #ifdef __ppc__ #include "Utils/Functions.h" diff -Nru gem-0.94~pre1/src/Controls/gemlist_info.h gem-0.94/src/Controls/gemlist_info.h --- gem-0.94~pre1/src/Controls/gemlist_info.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemlist_info.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/Controls/gemlist_matrix.cpp gem-0.94/src/Controls/gemlist_matrix.cpp --- gem-0.94~pre1/src/Controls/gemlist_matrix.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemlist_matrix.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // @@ -13,8 +13,9 @@ //////////////////////////////////////////////////////// #include "gemlist_matrix.h" +#include "Gem/GemGL.h" -#include "math.h" +#include <math.h> #ifdef __ppc__ #include "Utils/Functions.h" diff -Nru gem-0.94~pre1/src/Controls/gemlist_matrix.h gem-0.94/src/Controls/gemlist_matrix.h --- gem-0.94~pre1/src/Controls/gemlist_matrix.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemlist_matrix.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/Controls/gemmanager.cpp gem-0.94/src/Controls/gemmanager.cpp --- gem-0.94~pre1/src/Controls/gemmanager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/Controls/gemmanager.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,56 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.at +// +// Implementation file +// +// Copyright (c) 2019 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// +#include "gemmanager.h" +#include "Gem/Manager.h" + +CPPEXTERN_NEW(gemmanager); + + +///////////////////////////////////////////////////////// +// +// gemmanager +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +gemmanager :: gemmanager() +{ } + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +gemmanager :: ~gemmanager() +{ +} + +///////////////////////////////////////////////////////// +// dimenMess +// +///////////////////////////////////////////////////////// +void gemmanager :: dimenMess(int w, int h) +{ + GemMan::setDimen(w, h); +} + + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void gemmanager :: obj_setupCallback(t_class *classPtr) +{ + CPPEXTERN_MSG2(classPtr, "dimen", dimenMess, int, int); +} diff -Nru gem-0.94~pre1/src/Controls/gemmanager.h gem-0.94/src/Controls/gemmanager.h --- gem-0.94~pre1/src/Controls/gemmanager.h 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/Controls/gemmanager.h 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,50 @@ +/*----------------------------------------------------------------- + LOG + GEM - Graphics Environment for Multimedia + + Interface for the window manager + + Copyright (c) 2019 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + + -----------------------------------------------------------------*/ + +#ifndef _INCLUDE__GEM_CONTROLS_GEMMANAGER_H_ +#define _INCLUDE__GEM_CONTROLS_GEMMANAGER_H_ + +#include "Base/CPPExtern.h" + +/*----------------------------------------------------------------- + ------------------------------------------------------------------- + CLASS + gemmanager + + interface with the global gem-state + + DESCRIPTION + + Access to GemMan. + + "dimen" - set the current window-size to w/h + + -----------------------------------------------------------------*/ +class GEM_EXTERN gemmanager : public CPPExtern +{ + CPPEXTERN_HEADER(gemmanager, CPPExtern); + +public: + + ////////// + // Constructor + gemmanager(void); + +private: + + ////////// + // Destructor + virtual ~gemmanager(); + void dimenMess(int width, int height); +}; + +#endif // for header file diff -Nru gem-0.94~pre1/src/Controls/gemmouse.cpp gem-0.94/src/Controls/gemmouse.cpp --- gem-0.94~pre1/src/Controls/gemmouse.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemmouse.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Controls/gemreceive.cpp gem-0.94/src/Controls/gemreceive.cpp --- gem-0.94~pre1/src/Controls/gemreceive.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemreceive.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -65,7 +65,7 @@ bind_list->elements=0; bind_list->next=0; - debug_post("binding %x to %s", bind_list, key->s_name); + debug_post("binding %p to %s", bind_list, key->s_name); pd_bind(&bind_list->p_obj.ob_pd, key); t_gemreceive_proxy*last=proxy_list; @@ -90,7 +90,7 @@ */ t_float priority=element->priority; t_bind_element*elements=bind_list->elements, *last=0; - debug_post("priority insert of %x:%g", element, priority); + debug_post("priority insert of %p:%g", element, priority); if(!elements || elements->priority >= priority) { bind_list->elements = element; @@ -100,17 +100,17 @@ } - debug_post("trying %x:%g", elements, elements->priority); + debug_post("trying %p:%g", elements, elements->priority); while(elements && elements->priority < priority) { - debug_post("skipping %x:%g to %x", elements, elements->priority, + debug_post("skipping %p:%g to %p", elements, elements->priority, elements->next); last=elements; elements=elements->next; } - debug_post("inserting after %x:%g", last, + debug_post("inserting after %p:%g", last, (last ? (last->priority):0)); - debug_post("inserting before %x:%g", elements, + debug_post("inserting before %p:%g", elements, (elements?(elements->priority):0)); element->next=elements; @@ -126,7 +126,7 @@ { t_gemreceive_proxy*bind_list=0; t_bind_element*element=0; - debug_post("trying to bind 0x%X:: '%s':%g via %x", x, key->s_name, + debug_post("trying to bind %p:: '%s':%g via %p", x, key->s_name, priority, proxy_list); bind_list=find_key(key); @@ -153,7 +153,7 @@ t_gemreceive_proxy*list=0, *last=0; t_bind_element*elements=0, *lastlmn=0; - debug_post("trying to unbind 0x%X:: '%s' from %x", x, key->s_name, + debug_post("trying to unbind %p:: '%s' from %p", x, key->s_name, proxy_list); for(list=proxy_list; list && list->key!=key; list=list->next) { @@ -222,8 +222,7 @@ m_name(s), m_priority(f), m_outlet(NULL), m_fltin(NULL) { - debug_post("hi, i am gemreceive 0x%X", this); - + debug_post("hi, i am gemreceive %p", this); m_fltin = inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, gensym("")); @@ -258,7 +257,7 @@ ///////////////////////////////////////////////////////// void gemreceive :: receive(t_symbol*s, int argc, t_atom*argv) { - debug_post("receiveing....%x", m_outlet); + debug_post("receiveing....%p", m_outlet); outlet_anything(m_outlet, s, argc, argv); } @@ -303,12 +302,12 @@ { t_bind_element*elements=p->elements; - debug_post("proxy anything: %x", p); + debug_post("proxy anything: %p", p); while(elements) { gemreceive*o=elements->object; elements=elements->next; - debug_post("proxy for 0x%X", o); + debug_post("proxy for %p", o); if(o) { o->receive(s, argc, argv); } diff -Nru gem-0.94~pre1/src/Controls/gemwin.cpp gem-0.94/src/Controls/gemwin.cpp --- gem-0.94~pre1/src/Controls/gemwin.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/gemwin.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -144,7 +144,7 @@ ///////////////////////////////////////////////////////// void gemwin :: createMess(t_symbol* s) { - char* disp = NULL; + const char* disp = NULL; /* just in case a "pleaseDestroy" is still pending... */ GemMan::pleaseDestroy=false; diff -Nru gem-0.94~pre1/src/Controls/Makefile.am gem-0.94/src/Controls/Makefile.am --- gem-0.94~pre1/src/Controls/Makefile.am 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/Makefile.am 2019-02-12 13:10:01.000000000 +0000 @@ -30,10 +30,13 @@ gemlist_info.h \ gemlist_matrix.cpp \ gemlist_matrix.h \ + gemmanager.cpp \ + gemmanager.h \ gemreceive.cpp \ gemreceive.h \ render_trigger.cpp \ - render_trigger.h + render_trigger.h \ + $(empty) if ENABLE_MULTICONTEXT else !ENABLE_MULTICONTEXT @@ -45,5 +48,12 @@ gemmouse.cpp \ gemmouse.h \ gemwin.cpp \ - gemwin.h + gemwin.h \ + $(empty) endif !ENABLE_MULTICONTEXT + + +libControls_la_SOURCES+= \ + modelfiler.cpp \ + modelfiler.h \ + $(empty) diff -Nru gem-0.94~pre1/src/Controls/modelfiler.cpp gem-0.94/src/Controls/modelfiler.cpp --- gem-0.94~pre1/src/Controls/modelfiler.cpp 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/Controls/modelfiler.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,486 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.at +// +// Implementation file +// +// Copyright (c) 1997-1999 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "modelfiler.h" +#include "plugins/modelloader.h" +#include <algorithm> // std::min +#include "RTE/Array.h" + +CPPEXTERN_NEW_WITH_GIMME(modelfiler); + + +namespace { +std::string checkArrays(const std::string*tablenames, size_t count) { + gem::RTE::Array a; + for(size_t i=0; i<count; i++) { + if(!a.name(tablenames[i])) + return tablenames[i]; + } + return std::string(); +} +}; + +///////////////////////////////////////////////////////// +// +// modelfiler +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +modelfiler :: modelfiler(int argc, t_atom*argv) + : m_loader(gem::plugins::modelloader::getInstance()) + , m_infoOut(gem::RTE::Outlet(this)) +{ + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +modelfiler :: ~modelfiler(void) +{ + if(m_loader) { + delete m_loader; + m_loader=NULL; + } +} + +static gem::any atom2any(t_atom*ap) +{ + gem::any result; + if(ap) { + switch(ap->a_type) { + case A_FLOAT: + result=atom_getfloat(ap); + break; + case A_SYMBOL: + result=std::string(atom_getsymbol(ap)->s_name); + break; + default: + result=ap->a_w.w_gpointer; + } + } + return result; +} +static void addProperties(gem::Properties&props, int argc, t_atom*argv) +{ + if(!argc) { + return; + } + + if(argv->a_type != A_SYMBOL) { + error("no key given..."); + return; + } + std::string key=std::string(atom_getsymbol(argv)->s_name); + std::vector<gem::any> values; + argc--; + argv++; + while(argc-->0) { + values.push_back(atom2any(argv++)); + } + switch(values.size()) { + default: + props.set(key, values); + break; + case 1: + props.set(key, values[0]); + break; + case 0: { + gem::any dummy; + props.set(key, dummy); + } + break; + } +} + +void modelfiler :: setPropertyMess(t_symbol*, int argc, t_atom*argv) +{ + if(!argc) { + error("no property specified!"); + return; + } + addProperties(m_readprops, argc, argv); + + if(m_loader) { + m_loader->setProperties(m_readprops); + } +} + +void modelfiler :: getPropertyMess(t_symbol*, int argc, t_atom*argv) +{ + if(argc) { + int i=0; + m_readprops.clear(); + + for(i=0; i<argc; i++) { + addProperties(m_readprops, 1, argv+i); + } + + } else { + /* LATER: read all properties */ + } + + if(m_loader) { + m_loader->getProperties(m_readprops); + std::vector<std::string>keys=m_readprops.keys(); + unsigned int i=0; + for(i=0; i<keys.size(); i++) { + std::vector<gem::any>atoms; + gem::any value; + std::string key=keys[i]; + atoms.push_back(value=key); + switch(m_readprops.type(key)) { + default: + case gem::Properties::UNSET: + post("oops: %s", key.c_str()); + continue; + case gem::Properties::NONE: + break; + case gem::Properties::DOUBLE: + do { + double d=0; + if(m_readprops.get(key, d)) { + atoms.push_back(value=d); + } + } while(0); + break; + case gem::Properties::STRING: + do { + std::string s; + if(m_readprops.get(key, s)) { + atoms.push_back(value=s); + } + } while(0); + break; + } + m_infoOut.send("prop", atoms); + } + } else { + verbose(1, "no open model loader...remembering properties..."); + } +} + +void modelfiler :: enumPropertyMess() +{ + if(m_loader) { + gem::Properties readable, writeable; + std::vector<std::string>readkeys, writekeys; + std::vector<gem::any>data; + gem::any value; + + m_loader->enumProperties(readable, writeable); + + readkeys=readable.keys(); + + data.clear(); + data.push_back(value=std::string("numread")); + data.push_back(value=(int)readkeys.size()); + m_infoOut.send("proplist", data); + + unsigned int i=0; + for(i=0; i<readkeys.size(); i++) { + std::string key=readkeys[i]; + data.clear(); + data.push_back(value=std::string("read")); + data.push_back(key); + switch(readable.type(key)) { + case gem::Properties::NONE: + data.push_back(value=std::string("bang")); + break; + case gem::Properties::DOUBLE: { + double d=-1; + data.push_back(value=std::string("float")); + /* LATER: get and show ranges */ + if(readable.get(key, d)) { + data.push_back(value=d); + } + } + break; + case gem::Properties::STRING: { + data.push_back(value=std::string("symbol")); + std::string s; + if(readable.get(key, s)) { + data.push_back(value=s); + } + } + break; + default: + data.push_back(value=std::string("unknown")); + break; + } + m_infoOut.send("proplist", data); + } + + writekeys=writeable.keys(); + + data.clear(); + data.push_back(value=std::string("numwrite")); + data.push_back(value=(int)writekeys.size()); + m_infoOut.send("proplist", data); + + for(i=0; i<writekeys.size(); i++) { + data.clear(); + data.push_back(value=std::string("write")); + std::string key=writekeys[i]; + data.push_back(value=key); + switch(writeable.type(key)) { + case gem::Properties::NONE: + data.push_back(value=std::string("bang")); + break; + case gem::Properties::DOUBLE: { + double d=-1; + data.push_back(value=std::string("float")); + /* LATER: get and show ranges */ + if(writeable.get(key, d)) { + data.push_back(value=d); + } + } + break; + case gem::Properties::STRING: { + data.push_back(value=std::string("symbol")); + std::string s; + if(writeable.get(key, s)) { + data.push_back(value=s); + } + } + break; + default: + data.push_back(value=std::string("unknown")); + break; + } + m_infoOut.send("proplist", data); + } + } else { + error("cannot enumerate properties without a valid model loader"); + } +} + +void modelfiler :: setPropertiesMess(t_symbol*, int argc, t_atom*argv) +{ + addProperties(m_readprops, argc, argv); +} + +void modelfiler :: applyProperties() +{ + if(m_loader) { + m_loader->setProperties(m_readprops); + } else { + verbose(1, "no open model loader...remembering properties..."); + } +} +void modelfiler :: clearPropertiesMess() +{ + m_readprops.clear(); +} + +///////////////////////////////////////////////////////// +// backendMess +// +///////////////////////////////////////////////////////// +void modelfiler :: backendMess(t_symbol*s, int argc, t_atom*argv) +{ + m_backends.clear(); + if(argc) { + for(int i=0; i<argc; i++) { + if(A_SYMBOL == argv->a_type) { + t_symbol *b=atom_getsymbol(argv+i); + m_backends.push_back(b->s_name); + } else { + error("%s must be symbolic", s->s_name); + } + } + } else { + /* no backend requested, just enumerate them */ + if(m_loader) { + std::vector<gem::any>atoms; + gem::any value; + t_atom at; + t_atom*ap=&at; + gem::Properties props; + std::vector<std::string> backends; + props.set("backends", value); + m_loader->getProperties(props); + if(props.type("backends")!=gem::Properties::UNSET) { + props.get("backends", backends); + } + atoms.clear(); + atoms.push_back(value=(int)(backends.size())); + m_infoOut.send("loaders", atoms); + if(!backends.empty()) { + for(int i=0; i<backends.size(); i++) { + atoms.clear(); + atoms.push_back(value=backends[i]); + post("loader[%d] %s", i, backends[i].c_str()); + m_infoOut.send("loader", atoms); + } + } else { + post("no model-loading backends found!"); + } + } + } +} + +///////////////////////////////////////////////////////// +// openMess +// +///////////////////////////////////////////////////////// +void modelfiler :: openMess(const std::string&filename) +{ + gem::Properties wantProps = m_readprops; + + if(!m_loader) { + error("no model loader backends found"); + return; + } + if(!m_backends.empty()) { + wantProps.set("backends", m_backends); + } + + char buf[MAXPDSTRING]; + canvas_makefilename(const_cast<t_canvas*>(getCanvas()), + const_cast<char*>(filename.c_str()), buf, MAXPDSTRING); + if(!m_loader->open(buf, wantProps)) { + error("unable to read model '%s'", buf); + return; + } + +#define COPYARRAY(name, tables, count) int name = copyArrays(#name, tables, count) +#define PRINTSUCCESS(name) if(name) do { \ + alist.clear(); \ + gem::any v = name; \ + alist.push_back(v); \ + m_infoOut.send(std::string(#name), alist); \ + } while(0) + + COPYARRAY(vertices, m_position, 3); + COPYARRAY(colors, m_color, 4); + COPYARRAY(texcoords, m_texture, 2); + COPYARRAY(normals, m_normal, 3); + + m_loader->close(); + std::vector<gem::any> alist; + PRINTSUCCESS(vertices); + PRINTSUCCESS(colors); + PRINTSUCCESS(texcoords); + PRINTSUCCESS(normals); +} + +size_t modelfiler :: copyArrays(const std::string&name, const std::string*tablenames, size_t count) { + if((count > 0) && tablenames[0].empty()) + return 0; + std::string failed = checkArrays(tablenames, count); + if(!failed.empty()) { + error("no such array '%s' for %s", failed.c_str(), name.c_str()); + return 0; + } + const std::vector<std::vector<float> >&data = m_loader->getVector(name); + std::vector<gem::RTE::Array> tabs; + + size_t size = data.size(); + if(!size) + return size; + + for(size_t i=0; i<count; i++) { + gem::RTE::Array a(tablenames[i]); + a.resize(size); + tabs.push_back(a); + } + for(size_t i=0; i<size; i++) { + for(size_t j=0; j<count; j++) { + tabs[j][i] = data[i][j]; + } + } + + return size; +} + + +void modelfiler :: tableMess(t_symbol*s, int argc, t_atom*argv) { + const std::string tabletype = s->s_name; + std::vector<std::string>extensions; + std::string*names; + + if(tabletype == "position" || tabletype == "normal") { + extensions.push_back("X"); + extensions.push_back("Y"); + extensions.push_back("Z"); + if("position" == tabletype) + names = m_position; + else + names = m_normal; + } else if (tabletype == "texture") { + extensions.push_back("U"); + extensions.push_back("V"); + names = m_texture; + } else if (tabletype == "color") { + extensions.push_back("R"); + extensions.push_back("G"); + extensions.push_back("B"); + extensions.push_back("A"); + names = m_color; + } + + if((argc != 1) && (argc != extensions.size()) && (argc != extensions.size() + 1)) { + error("'%s' requires %d array names", s->s_name, extensions.size()); + return; + } + if(argc == extensions.size()) { + for(int i = 0; i < argc; i++) { + names[i] = atom_getsymbol(argv+i)->s_name; + } + return; + } + if(argc == extensions.size() + 1) { + extensions.clear(); + for(int i = 1; i < argc; i++) { + extensions.push_back(atom_getsymbol(argv+i)->s_name); + } + argc = 1; + } + if(argc == 1) { + std::string basename = atom_getsymbol(argv+0)->s_name; + for (size_t i=0; i < extensions.size(); i++) { + names[i] = basename + extensions[i]; + } + return; + } +} + + + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void modelfiler :: obj_setupCallback(t_class *classPtr) +{ + CPPEXTERN_MSG1(classPtr, "open", openMess, std::string); + CPPEXTERN_MSG (classPtr, "loader", backendMess); + + CPPEXTERN_MSG (classPtr, "set", setPropertyMess); + CPPEXTERN_MSG (classPtr, "get", getPropertyMess); + CPPEXTERN_MSG (classPtr, "setProps", setPropertiesMess); + CPPEXTERN_MSG0(classPtr, "enumProps", enumPropertyMess); + CPPEXTERN_MSG0(classPtr, "clearProps", clearPropertiesMess); + + CPPEXTERN_MSG(classPtr, "position", tableMess); + CPPEXTERN_MSG(classPtr, "color", tableMess); + CPPEXTERN_MSG(classPtr, "texture", tableMess); + CPPEXTERN_MSG(classPtr, "normal", tableMess); +} diff -Nru gem-0.94~pre1/src/Controls/modelfiler.h gem-0.94/src/Controls/modelfiler.h --- gem-0.94~pre1/src/Controls/modelfiler.h 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/Controls/modelfiler.h 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,97 @@ +/*----------------------------------------------------------------- + LOG + GEM - Graphics Environment for Multimedia + + read in a model file + + Copyright (c) 2019 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + + -----------------------------------------------------------------*/ + +#ifndef _INCLUDE__GEM_GEOS_MODELFILER_H_ +#define _INCLUDE__GEM_GEOS_MODELFILER_H_ + +#include "Base/CPPExtern.h" +#include "Gem/Properties.h" +#include "RTE/Outlet.h" + +#include <map> + +/*----------------------------------------------------------------- + ------------------------------------------------------------------- + CLASS + modelfiler + + read in a model file + + DESCRIPTION + + Inlet for a list - "model" + + "open" - the RGB model to set the object to + + -----------------------------------------------------------------*/ +namespace gem +{ +namespace plugins +{ +class modelloader; +}; +}; + +class GEM_EXTERN modelfiler : public CPPExtern +{ + CPPEXTERN_HEADER(modelfiler, CPPExtern); + +public: + + ////////// + // Constructor + modelfiler(int argc, t_atom*argv); + +protected: + + ////////// + // Destructor + virtual ~modelfiler(void); + + ////////// + // When an open is received + virtual void openMess(const std::string&filename); + + + ///////// + // output tables + virtual void tableMess(t_symbol*s, int, t_atom*); + + + virtual void enumPropertyMess(void); + virtual void clearPropertiesMess(void); + virtual void getPropertyMess(t_symbol*s, int, t_atom*); + virtual void setPropertyMess(t_symbol*s, int, t_atom*); + virtual void setPropertiesMess(t_symbol*, int, t_atom*); + virtual void applyProperties(void); + + ////////// + // Set backend to use + virtual void backendMess(t_symbol*s, int argc, t_atom*argv); + + gem::plugins::modelloader*m_loader; + + gem::Properties m_readprops; + + std::string m_position[3]; + std::string m_texture[2]; + std::string m_color[4]; + std::string m_normal[3]; + + gem::RTE::Outlet m_infoOut; + std::vector<std::string> m_backends; + + size_t copyArrays(const std::string&, const std::string*, size_t); + +}; + +#endif // for header file diff -Nru gem-0.94~pre1/src/Controls/render_trigger.cpp gem-0.94/src/Controls/render_trigger.cpp --- gem-0.94~pre1/src/Controls/render_trigger.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Controls/render_trigger.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Gem/Cache.cpp gem-0.94/src/Gem/Cache.cpp --- gem-0.94~pre1/src/Gem/Cache.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Cache.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Gem/ContextData.cpp gem-0.94/src/Gem/ContextData.cpp --- gem-0.94~pre1/src/Gem/ContextData.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/ContextData.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Gem/Dylib.cpp gem-0.94/src/Gem/Dylib.cpp --- gem-0.94~pre1/src/Gem/Dylib.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Dylib.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -120,7 +120,7 @@ sys_bashfilename(filename.c_str(), buf); UINT errorboxflags=SetErrorMode(SEM_FAILCRITICALERRORS); SetLastError(0); - handle->w32handle=LoadLibrary(buf); + handle->w32handle=LoadLibraryEx(buf, NULL, LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR); DWORD errorNumber = GetLastError(); errorboxflags=SetErrorMode(errorboxflags); if(handle->w32handle) { @@ -191,12 +191,12 @@ } if(fullname.empty()) { - std::string error="couldn't find '"; - error+=filename; - error+="'.'"; - error+=ext; - error+="'"; - throw(GemException(error)); + std::string error_string="couldn't find '"; + error_string+=filename; + error_string+="'.'"; + error_string+=ext; + error_string+="'"; + throw(GemException(error_string)); } return open(fullname); diff -Nru gem-0.94~pre1/src/Gem/Dylib.h gem-0.94/src/Gem/Dylib.h --- gem-0.94~pre1/src/Gem/Dylib.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Dylib.h 2019-02-12 13:10:01.000000000 +0000 @@ -14,6 +14,7 @@ #define _INCLUDE__GEM_GEM_DYLIB_H_ #include "Gem/Exception.h" +#include <string> /* an opaque handle to the platform specific library handle */ diff -Nru gem-0.94~pre1/src/Gem/Event.cpp gem-0.94/src/Gem/Event.cpp --- gem-0.94~pre1/src/Gem/Event.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Event.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -434,7 +434,7 @@ { addEvent(WHEEL, NULL, 0, 0, 0, axis, value, 0); } -GEM_EXTERN void triggerKeyboardEvent(char *string, int value, int state) +GEM_EXTERN void triggerKeyboardEvent(const char *string, int value, int state) { addEvent(KEYBOARD, gensym(string)->s_name, 0, 0, state, 0, value, 0); } diff -Nru gem-0.94~pre1/src/Gem/Exception.cpp gem-0.94/src/Gem/Exception.cpp --- gem-0.94~pre1/src/Gem/Exception.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Exception.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -22,28 +22,20 @@ #include <stdlib.h> GemException::GemException(const char *error) - : ErrorString(strdup(error)) + : runtime_error(error) {} GemException::GemException(const std::string&error) - : ErrorString(strdup(error.c_str())) + : runtime_error(error) {} GemException::GemException() - : ErrorString(0) + : runtime_error("") {} -GemException::~GemException() -{ - if(ErrorString) - free(const_cast<char*>(ErrorString)); -} -const char *GemException::what() const -{ - return ErrorString?ErrorString:""; -} void GemException::report(const char*origin) const { + const char*ErrorString = what(); if(ErrorString && *ErrorString) { if (NULL==origin) { error("GemException: %s", ErrorString); @@ -63,7 +55,7 @@ ex.report(name); } else { t_object*o=(t_object*)obj; - char*str=(char*)ex.what(); + const char*str=ex.what(); if(NULL!=str) { if (NULL==name) { pd_error(o, "GemException: %s", str); diff -Nru gem-0.94~pre1/src/Gem/Exception.h gem-0.94/src/Gem/Exception.h --- gem-0.94~pre1/src/Gem/Exception.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Exception.h 2019-02-12 13:10:01.000000000 +0000 @@ -32,22 +32,18 @@ #define _INCLUDE__GEM_GEM_EXCEPTION_H_ #include "Gem/ExportDef.h" -#include <string> +#include <stdexcept> + typedef struct _text t_object; -class GEM_EXTERN GemException +class GEM_EXTERN GemException : public std::runtime_error { public: GemException(void); explicit GemException(const char*error); explicit GemException(const std::string&error); - virtual ~GemException(void); - - virtual const char *what(void) const; virtual void report(const char*origin=0) const; -private: - const char*ErrorString; }; namespace gem diff -Nru gem-0.94~pre1/src/Gem/Files.cpp gem-0.94/src/Gem/Files.cpp --- gem-0.94~pre1/src/Gem/Files.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Files.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -12,8 +12,12 @@ #include "Files.h" #ifdef HAVE_WORDEXP_H +#ifdef __EMSCRIPTEN__ +#undef HAVE_WORDEXP_H +#else # include <wordexp.h> #endif +#endif #include "Gem/RTE.h" #include "Base/CPPExtern.h" @@ -32,6 +36,18 @@ HANDLE hFind; LPVOID lpErrorMessage; + std::string::size_type filePos = pattern.rfind('\\'); + if (filePos != std::string::npos) + ++filePos; + else { + filePos = pattern.rfind('/'); + if (filePos != std::string::npos) + ++filePos; + else + filePos = pattern.length(); + } + std::string dirname = pattern.substr(0, filePos); + hFind = FindFirstFile(pattern.c_str(), &findData); if (hFind == INVALID_HANDLE_VALUE) { errorNumber = GetLastError(); @@ -53,7 +69,9 @@ return result; } do { - result.push_back(findData.cFileName); + std::string pathfile = dirname; + pathfile += findData.cFileName; + result.push_back(pathfile); } while (FindNextFile(hFind, &findData) != 0); FindClose(hFind); @@ -61,7 +79,11 @@ /* use glob */ glob_t glob_buffer; int i=0; +#ifdef GLOB_TILDE switch( glob( pattern.c_str(), GLOB_TILDE, NULL, &glob_buffer ) ) { +#else + switch( glob( pattern.c_str(), 0, NULL, &glob_buffer ) ) { +#endif case GLOB_NOSPACE: // error("out of memory for \"%s\"",pattern.c_str()); return result; diff -Nru gem-0.94~pre1/src/Gem/GemConfig.h gem-0.94/src/Gem/GemConfig.h --- gem-0.94~pre1/src/Gem/GemConfig.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/GemConfig.h 2019-02-12 13:10:01.000000000 +0000 @@ -20,15 +20,6 @@ # endif #endif -#define GEM_FILMBACKEND_undefined 0 -#define GEM_FILMBACKEND_Darwin 1 - -#define GEM_VIDEOBACKEND_undefined 0 -#define GEM_VIDEOBACKEND_Darwin 1 -#define GEM_VIDEOBACKEND_DS 2 -#define GEM_VIDEOBACKEND_NT 3 -#define GEM_VIDEOBACKEND_SGI 4 - #ifdef HAVE_CONFIG_H # include "config.h" @@ -47,16 +38,6 @@ # endif #endif -#if defined GEM_VIDEOBACKEND && GEM_VIDEOBACKEND == GEM_VIDEOBACKEND_undefined -# warning ignoring unknown video backend -# undef GEM_VIDEOBACKEND -#endif - -#if defined GEM_FILMBACKEND && GEM_FILMBACKEND == GEM_FILMBACKEND_undefined -# warning ignoring unknown film backend -# undef GEM_FILMBACKEND -#endif - #ifdef HAVE_LIBFTGL # define FTGL #endif diff -Nru gem-0.94~pre1/src/Gem/GemGLconfig.h.in gem-0.94/src/Gem/GemGLconfig.h.in --- gem-0.94~pre1/src/Gem/GemGLconfig.h.in 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/Gem/GemGLconfig.h.in 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,6 @@ + +/* Define to 1 if Gem is built with multi-context support */ +#undef GEM_MULTICONTEXT + +/* Define to 1 if using the built-in GLEW */ +#undef GLEW_BUILD diff -Nru gem-0.94~pre1/src/Gem/GemGL.h gem-0.94/src/Gem/GemGL.h --- gem-0.94~pre1/src/Gem/GemGL.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/GemGL.h 2019-02-12 13:10:01.000000000 +0000 @@ -26,14 +26,32 @@ # include <windows.h> #endif -#ifdef GLEW_MX -# define GEM_MULTICONTEXT +#include "Gem/GemGLconfig.h" + +#ifdef GEM_MULTICONTEXT +# define GLEW_MX #endif -#include "Gem/glew.h" +#ifndef GEM_HAVE_GLU +# define GLEW_NO_GLU +#else +#endif + + +#ifdef __EMSCRIPTEN__ +# include <GL/glew.h> +# include <SDL/SDL_opengl.h> +# include <GL/gl.h> +# ifdef GEM_HAVE_GLU +# include <GL/glu.h> +# endif +#else +# include "Gem/glew.h" +#endif #ifdef __APPLE__ # include <OpenGL/OpenGL.h> +#elif defined(__EMSCRIPTEN__) #elif defined _WIN32 # include "Gem/wglew.h" #elif defined(__linux__) || defined(__FreeBSD_kernel__) @@ -84,4 +102,10 @@ # endif #endif + +// missing from Emscripten's glew implementation +#ifndef GL_TEXTURE_RECTANGLE_EXT +# define GL_TEXTURE_RECTANGLE_EXT 0x84F5 +#endif + #endif /* _INCLUDE__GEM_GEM_GEMGL_H_ */ diff -Nru gem-0.94~pre1/src/Gem/glew.c gem-0.94/src/Gem/glew.c --- gem-0.94~pre1/src/Gem/glew.c 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/glew.c 2019-02-12 13:10:01.000000000 +0000 @@ -1,3 +1,7 @@ +#include "Gem/GemGLconfig.h" +#ifdef GEM_MULTICONTEXT +# define GLEW_MX +#endif /* ** The OpenGL Extension Wrangler Library ** Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net> diff -Nru gem-0.94~pre1/src/Gem/glew.h gem-0.94/src/Gem/glew.h --- gem-0.94~pre1/src/Gem/glew.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/glew.h 2019-02-12 13:10:01.000000000 +0000 @@ -6600,7 +6600,7 @@ #define GL_TIMEOUT_EXPIRED 0x911B #define GL_CONDITION_SATISFIED 0x911C #define GL_WAIT_FAILED 0x911D -#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull typedef GLenum (GLAPIENTRY * PFNGLCLIENTWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GLuint64 timeout); typedef void (GLAPIENTRY * PFNGLDELETESYNCPROC) (GLsync GLsync); diff -Nru gem-0.94~pre1/src/Gem/GLStack.cpp gem-0.94/src/Gem/GLStack.cpp --- gem-0.94~pre1/src/Gem/GLStack.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/GLStack.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Gem/Image.cpp gem-0.94/src/Gem/Image.cpp --- gem-0.94~pre1/src/Gem/Image.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Image.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -25,11 +25,27 @@ #include "m_pd.h" #include "Image.h" +#include "GemGL.h" #include "PixConvert.h" #include "Utils/Functions.h" // utility functions from PeteHelpers.h //#include "Utils/PixPete.h" +#if GEM_GRAY != GL_LUMINANCE +# error Grayscale colortype broken +#endif + +#if GEM_YUV != GL_YUV422_GEM +# error YUV colortype broken +#endif + +#if GEM_RGBA != GL_RGBA_GEM +# error RGBA colortype broken +#endif + +#if GEM_RGB != GL_RGB +# error RGB colortype broken +#endif #include <string.h> #include <ctype.h> @@ -80,27 +96,27 @@ imageStruct :: imageStruct(void) - : xsize (0),ysize(0),csize(0), + : xsize (0), ysize(0), csize(0) #ifdef __APPLE__ // or should type be GL_UNSIGNED_INT_8_8_8_8_REV ? i don't know: jmz # ifdef __BIG_ENDIAN__ - type(GL_UNSIGNED_SHORT_8_8_REV_APPLE), + , type(GL_UNSIGNED_SHORT_8_8_REV_APPLE) # else - type(GL_UNSIGNED_SHORT_8_8_APPLE), + , type(GL_UNSIGNED_SHORT_8_8_APPLE) # endif /* __BIG_ENDIAN__ */ - format(GL_YCBCR_422_GEM), + , format(GL_YCBCR_422_GEM) #else /* !__APPLE__ */ - type(GL_UNSIGNED_BYTE), format(GL_RGBA), + , type(GL_UNSIGNED_BYTE), format(GL_RGBA) #endif /* __APPLE__ */ - notowned(false),data(NULL),pdata(NULL),datasize(0), - upsidedown(true) + , notowned(false), data(NULL), pdata(NULL), datasize(0) + , upsidedown(true) {} imageStruct :: imageStruct(const imageStruct&org) - : xsize (0),ysize(0),csize(0), - type(GL_UNSIGNED_BYTE), format(GL_RGBA), - notowned(0),data(NULL),pdata(NULL),datasize(0), - upsidedown(true) + : xsize(0), ysize(0), csize(0) + , type(GL_UNSIGNED_BYTE), format(GL_RGBA) + , notowned(false), data(NULL), pdata(NULL), datasize(0) + , upsidedown(true) { org.copy2Image(this); } @@ -188,7 +204,7 @@ GEM_EXTERN void imageStruct::copy2ImageStruct(imageStruct *to) const { - if (!to || !this || !this->data) { + if (!to || !data) { error("GEM: Someone sent a bogus pointer to copy2ImageStruct"); if (to) { to->data = NULL; @@ -347,7 +363,7 @@ default: format=GL_RGBA; #ifdef __BIG_ENDIAN__ - type =GL_UNSIGNED_INT_8_8_8_8_REV; + type=GL_UNSIGNED_INT_8_8_8_8_REV; #else type=GL_UNSIGNED_BYTE; //type =GL_UNSIGNED_INT_8_8_8_8; @@ -430,12 +446,12 @@ break; } } -GEM_EXTERN void imageStruct::convertFrom(const imageStruct *from, - GLenum to_format) +GEM_EXTERN bool imageStruct::convertFrom(const imageStruct *from, + unsigned int to_format) { - if (!from || !this || !from->data) { + if (!from || !from->data) { error("GEM: Someone sent a bogus pointer to convert"); - return; + return false; } xsize=from->xsize; ysize=from->ysize; @@ -451,36 +467,31 @@ switch (from->format) { default: error("%s: unable to convert from %d", __FUNCTION__, from->format); - return; - case GL_RGBA: - fromRGBA(from->data); break; + case GL_RGBA: + return fromRGBA(from->data); case GL_RGB: - fromRGB(from->data); - break; + return fromRGB(from->data); case GL_BGR_EXT: - fromBGR(from->data); - break; + return fromBGR(from->data); case GL_BGRA_EXT: /* "RGBA" on apple */ - fromBGRA(from->data); - break; + return fromBGRA(from->data); case GL_LUMINANCE: - fromGray(from->data); - break; + return fromGray(from->data); case GL_YCBCR_422_GEM: // YUV - fromUYVY(from->data); - break; + return fromUYVY(from->data); } + return false; } -GEM_EXTERN void imageStruct::convertTo(imageStruct *to, GLenum fmt) const +GEM_EXTERN bool imageStruct::convertTo(imageStruct *to, unsigned int fmt) const { - if (!to || !this || !this->data) { + if (!to || !data) { error("GEM: Someone sent a bogus pointer to convert"); if (to) { to->data = NULL; } - return; + return false; } to->xsize=xsize; to->ysize=ysize; @@ -495,32 +506,33 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + break; case GL_RGBA: - to->fromRGBA(data); + return to->fromRGBA(data); break; case GL_RGB: - to->fromRGB(data); + return to->fromRGB(data); break; case GL_BGR_EXT: - to->fromBGR(data); + return to->fromBGR(data); break; case GL_BGRA_EXT: /* "RGBA" on apple */ - to->fromBGRA(data); + return to->fromBGRA(data); break; case GL_LUMINANCE: - to->fromGray(data); + return to->fromGray(data); break; case GL_YCBCR_422_GEM: // YUV - to->fromUYVY(data); + return to->fromUYVY(data); break; } + return false; } -GEM_EXTERN void imageStruct::fromRGB(const unsigned char *rgbdata) +GEM_EXTERN bool imageStruct::fromRGB(const unsigned char *rgbdata) { if(!rgbdata) { - return; + return false; } size_t pixelnum=xsize*ysize; setCsizeByFormat(); @@ -529,7 +541,7 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + return false; case GL_RGB: memcpy(data, rgbdata, pixelnum*csize); break; @@ -586,14 +598,15 @@ #endif break; } + return true; } -GEM_EXTERN void imageStruct::fromRGB16(const unsigned char *rgb16data) +GEM_EXTERN bool imageStruct::fromRGB16(const unsigned char *rgb16data) { // B B B B B G G G G G G R R R R R // R R R R R G G G G G G B B B B B if(!rgb16data) { - return; + return false; } const unsigned short*rgbdata=(const unsigned short*)rgb16data; size_t pixelnum=xsize*ysize; @@ -604,7 +617,7 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + return false; case GL_RGBA: while(pixelnum--) { rgb=*rgbdata++; @@ -641,12 +654,13 @@ } break; } + return true; } -GEM_EXTERN void imageStruct::fromRGBA(const unsigned char *rgbadata) +GEM_EXTERN bool imageStruct::fromRGBA(const unsigned char *rgbadata) { if(!rgbadata) { - return; + return false; } size_t pixelnum=xsize*ysize; setCsizeByFormat(); @@ -655,7 +669,7 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + return false; case GL_RGB: while(pixelnum--) { *pixels++=*rgbadata++; @@ -738,13 +752,14 @@ STOP_TIMING("RGBA to UYVY"); break; } + return true; } -GEM_EXTERN void imageStruct::fromBGR(const unsigned char *bgrdata) +GEM_EXTERN bool imageStruct::fromBGR(const unsigned char *bgrdata) { if(!bgrdata) { - return; + return false; } size_t pixelnum=xsize*ysize; setCsizeByFormat(); @@ -753,7 +768,7 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + return false; case GL_BGR_EXT: memcpy(data, bgrdata, pixelnum*csize); break; @@ -806,12 +821,13 @@ } break; } + return true; } -GEM_EXTERN void imageStruct::fromBGRA(const unsigned char *bgradata) +GEM_EXTERN bool imageStruct::fromBGRA(const unsigned char *bgradata) { if(!bgradata) { - return; + return false; } size_t pixelnum=xsize*ysize; setCsizeByFormat(); @@ -820,7 +836,7 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + return false; case GL_BGR_EXT: while(pixelnum--) { *pixels++=*bgradata++; @@ -907,14 +923,15 @@ STOP_TIMING("BGRA_to_YCbCr"); break; } + return true; } -GEM_EXTERN void imageStruct::fromABGR(const unsigned char *abgrdata) +GEM_EXTERN bool imageStruct::fromABGR(const unsigned char *abgrdata) { if(!abgrdata) { - return; + return false; } size_t pixelnum=xsize*ysize; setCsizeByFormat(); @@ -923,7 +940,7 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + return false; case GL_BGR_EXT: while(pixelnum--) { abgrdata++; @@ -1031,12 +1048,13 @@ STOP_TIMING("ABGR_to_YCbCr"); break; } + return true; } -GEM_EXTERN void imageStruct::fromARGB(const unsigned char *argbdata) +GEM_EXTERN bool imageStruct::fromARGB(const unsigned char *argbdata) { if(!argbdata) { - return; + return false; } size_t pixelnum=xsize*ysize; setCsizeByFormat(); @@ -1045,7 +1063,7 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + return false; case GL_BGR_EXT: while(pixelnum--) { pixels[0]=argbdata[3]; // B @@ -1144,12 +1162,13 @@ STOP_TIMING("ARGB_to_YCbCr"); break; } + return true; } -GEM_EXTERN void imageStruct::fromGray(const unsigned char *greydata) +GEM_EXTERN bool imageStruct::fromGray(const unsigned char *greydata) { if(!greydata) { - return; + return false; } size_t pixelnum=xsize*ysize; setCsizeByFormat(); @@ -1159,7 +1178,7 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + return false; case GL_RGB: case GL_BGR_EXT: while(pixelnum--) { @@ -1194,12 +1213,13 @@ } break; } + return true; } -GEM_EXTERN void imageStruct::fromGray(short *greydata) +GEM_EXTERN bool imageStruct::fromGray(const short *greydata) { if(!greydata) { - return; + return false; } size_t pixelnum=xsize*ysize; setCsizeByFormat(); @@ -1209,7 +1229,7 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + return false; case GL_RGB: case GL_BGR_EXT: while(pixelnum--) { @@ -1244,33 +1264,34 @@ } break; } + return true; } -GEM_EXTERN void imageStruct::fromYU12(const unsigned char*yuvdata) +GEM_EXTERN bool imageStruct::fromYU12(const unsigned char*yuvdata) { if(!yuvdata) { - return; + return false; } size_t pixelnum=xsize*ysize; - fromYV12((yuvdata), yuvdata+(pixelnum), yuvdata+(pixelnum+(pixelnum>>2))); + return fromYV12((yuvdata), yuvdata+(pixelnum), yuvdata+(pixelnum+(pixelnum>>2))); } -GEM_EXTERN void imageStruct::fromYV12(const unsigned char*yuvdata) +GEM_EXTERN bool imageStruct::fromYV12(const unsigned char*yuvdata) { if(!yuvdata) { - return; + return false; } size_t pixelnum=xsize*ysize; - fromYV12((yuvdata), yuvdata+(pixelnum+(pixelnum>>2)), yuvdata+(pixelnum)); + return fromYV12((yuvdata), yuvdata+(pixelnum+(pixelnum>>2)), yuvdata+(pixelnum)); } -GEM_EXTERN void imageStruct::fromYV12(const unsigned char*Y, +GEM_EXTERN bool imageStruct::fromYV12(const unsigned char*Y, const unsigned char*U, const unsigned char*V) { // planar: 8bit Y-plane + 8bit 2x2-subsampled V- and U-planes if(!U && !V) { - fromGray(Y); + return fromGray(Y); } if(!Y || !U || !V) { - return; + return false; } size_t pixelnum=xsize*ysize; @@ -1279,7 +1300,7 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + return false; case GL_LUMINANCE: memcpy(data, Y, pixelnum); break; @@ -1430,25 +1451,26 @@ } break; } + return true; } // for gem2pdp -GEM_EXTERN void imageStruct::fromYV12(const short*yuvdata) +GEM_EXTERN bool imageStruct::fromYV12(const short*yuvdata) { if(!yuvdata) { - return; + return false; } int pixelnum=xsize*ysize; - fromYV12((yuvdata), yuvdata+(pixelnum+(pixelnum>>2)), yuvdata+(pixelnum)); + return fromYV12((yuvdata), yuvdata+(pixelnum+(pixelnum>>2)), yuvdata+(pixelnum)); } -GEM_EXTERN void imageStruct::fromYV12(const short*Y, const short*U, +GEM_EXTERN bool imageStruct::fromYV12(const short*Y, const short*U, const short*V) { // planar: 8bit Y-plane + 8bit 2x2-subsampled V- and U-planes if(!U && !V) { - fromGray(reinterpret_cast<unsigned char*>(*Y>>7)); + return fromGray(Y); } if(!Y || !U || !V) { - return; + return false; } size_t pixelnum=xsize*ysize; @@ -1457,7 +1479,7 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + return false; case GL_LUMINANCE: memcpy(data, Y, pixelnum); break; @@ -1658,13 +1680,14 @@ } break; } + return true; } -GEM_EXTERN void imageStruct::fromUYVY(const unsigned char *yuvdata) +GEM_EXTERN bool imageStruct::fromUYVY(const unsigned char *yuvdata) { // this is the yuv-format with Gem if(!yuvdata) { - return; + return false; } size_t pixelnum=xsize*ysize; setCsizeByFormat(); @@ -1673,7 +1696,7 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + return false; case GL_YUV422_GEM: memcpy(data, yuvdata, pixelnum*csize); break; @@ -1776,13 +1799,14 @@ } break; } + return true; } -GEM_EXTERN void imageStruct::fromYUY2(const unsigned char +GEM_EXTERN bool imageStruct::fromYUY2(const unsigned char *yuvdata) // YUYV { if(!yuvdata) { - return; + return false; } size_t pixelnum=xsize*ysize; setCsizeByFormat(); @@ -1791,7 +1815,7 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + return false; case GL_YUV422_GEM: pixelnum>>=1; while(pixelnum--) { @@ -1875,13 +1899,14 @@ } break; } + return true; } -GEM_EXTERN void imageStruct::fromYVYU(const unsigned char *yuvdata) +GEM_EXTERN bool imageStruct::fromYVYU(const unsigned char *yuvdata) { // this is the yuv-format with Gem if(!yuvdata) { - return; + return false; } size_t pixelnum=xsize*ysize; setCsizeByFormat(); @@ -1890,7 +1915,7 @@ switch (format) { default: error("%s: unable to convert to %d", __FUNCTION__, format); - return; + return false; case GL_YUV422_GEM: pixelnum>>=1; while(pixelnum--) { @@ -1974,6 +1999,7 @@ } break; } + return true; } GEM_EXTERN extern int getPixFormat(const char*cformat) @@ -2052,7 +2078,7 @@ } -GEM_EXTERN void imageStruct::getRGB(int X, int Y, unsigned char*r, +GEM_EXTERN bool imageStruct::getRGB(int X, int Y, unsigned char*r, unsigned char*g, unsigned char*b, unsigned char*a) const { unsigned char red=0, green=0, blue=0, alpha=255; @@ -2123,8 +2149,9 @@ if(a) { *a=alpha; } + return true; } -GEM_EXTERN void imageStruct::getGrey(int X, int Y, unsigned char*g) const +GEM_EXTERN bool imageStruct::getGrey(int X, int Y, unsigned char*g) const { unsigned char grey=0; int position = (X+(upsidedown?(ysize-Y-1):Y)*xsize); @@ -2161,8 +2188,9 @@ if(g) { *g=grey; } + return true; } -GEM_EXTERN void imageStruct::getYUV(int X, int Y, unsigned char*y, +GEM_EXTERN bool imageStruct::getYUV(int X, int Y, unsigned char*y, unsigned char*u, unsigned char*v) const { unsigned char luma=0, chromaU=128, chromaV=128; @@ -2175,11 +2203,11 @@ case GL_RGB: case GL_BGR_EXT: error("getYUV not implemented for RGB"); - break; + return false; case GL_RGBA: case GL_BGRA_EXT: error("getYUV not implemented for RGBA"); - break; + return false; case GL_YUV422_GEM: position = (((X+(upsidedown?(ysize-Y-1):Y)*xsize)>>1)<<1); pixels=data+position*csize; @@ -2199,4 +2227,5 @@ if(v) { *v=chromaV; } + return true; } diff -Nru gem-0.94~pre1/src/Gem/Image.h gem-0.94/src/Gem/Image.h --- gem-0.94~pre1/src/Gem/Image.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Image.h 2019-02-12 13:10:01.000000000 +0000 @@ -8,7 +8,7 @@ Copyright (c) 1997-1999 Mark Danks. mark@danks.org Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + Copyright (c) 2001-2019 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. @@ -17,10 +17,9 @@ #ifndef _INCLUDE__GEM_GEM_IMAGE_H_ #define _INCLUDE__GEM_GEM_IMAGE_H_ -#include "Gem/GemGL.h" - #include <string.h> #include <stdlib.h> +#include "Gem/ExportDef.h" /////////////////////////////////////////////////////////////////////////////// // Color component defines @@ -28,29 +27,33 @@ // These should be used to reference the various color channels /////////////////////////////////////////////////////////////////////////////// -/* RGBA */ - -#if GL_RGBA_GEM == GL_RGBA -const int chRed = 0; -const int chGreen = 1; -const int chBlue = 2; -const int chAlpha = 3; -#else -const int chAlpha = 0; -const int chRed = 1; -const int chGreen = 2; -const int chBlue = 3; +/* RGBA: on Apple this is really BGRA_EXT */ +#ifndef __APPLE__ +# define GEM_RGBA 0x1908 +const int chRed = 0; +const int chGreen = 1; +const int chBlue = 2; +const int chAlpha = 3; +#else /* APPLE */ +# define GEM_RGBA 0x80E1 +const int chAlpha = 0; +const int chRed = 1; +const int chGreen = 2; +const int chBlue = 3; #endif +#define GEM_RGB 0x1907 /* Gray */ -const int chGray = 0; +#define GEM_GRAY 0x1909 +const int chGray = 0; /* YUV422 */ -const int chU = 0; -const int chY0 = 1; -const int chV = 2; -const int chY1 = 3; +#define GEM_YUV 0x85B9 +const int chU = 0; +const int chY0 = 1; +const int chV = 2; +const int chY1 = 3; /*----------------------------------------------------------------- ------------------------------------------------------------------- @@ -86,23 +89,23 @@ ////////// // dimensions of the image - GLint xsize; - GLint ysize; + int xsize; + int ysize; ////////// // (average) width of 1 pixel (LUMINANCE = 1, RGBA = 4, YUV = 2) - GLint csize; + int csize; ////////// // data type - always GL_UNSIGNED_BYTE (except for OS X) - GLenum type; + unsigned int type; ////////// // the format - either GL_RGBA, GL_LUMINANCE // or GL_YCBCR_422_GEM (which is on mac-computers GL_YCBCR_422_APPLE) - GLenum format; + unsigned int format; - ////////// + ///////// // is this owned by us (? what about underscores ?) int notowned; @@ -136,10 +139,10 @@ ///////// // gets the color of a pixel - virtual void getRGB(int X, int Y, unsigned char*r, unsigned char*g, + virtual bool getRGB(int X, int Y, unsigned char*r, unsigned char*g, unsigned char*b, unsigned char*a=NULL) const; - virtual void getGrey(int X, int Y, unsigned char*g) const; - virtual void getYUV(int X, int Y, unsigned char*y, unsigned char*u, + virtual bool getGrey(int X, int Y, unsigned char*g) const; + virtual bool getYUV(int X, int Y, unsigned char*y, unsigned char*u, unsigned char*v) const; /* following will set the whole image-data to either black or white @@ -192,64 +195,64 @@ * this is maybe not really clean (the meta-data is stored in the destination, * while the source has no meta-data of its own) */ - virtual void convertTo (imageStruct*to, GLenum dest_format=0) const; - virtual void convertFrom(const imageStruct*from, GLenum dest_format=0); + virtual bool convertTo (imageStruct*to, unsigned int dest_format=0) const; + virtual bool convertFrom(const imageStruct*from, unsigned int dest_format=0); - virtual void fromRGB (const unsigned char* orgdata); - virtual void fromRGBA (const unsigned char* orgdata); - virtual void fromBGR (const unsigned char* orgdata); - virtual void fromBGRA (const unsigned char* orgdata); - virtual void fromRGB16 (const unsigned char* orgdata); - virtual void fromABGR (const unsigned char* orgdata); - virtual void fromARGB (const unsigned char* orgdata); - virtual void fromGray (const unsigned char* orgdata); - virtual void fromGray (short* orgdata); - virtual void fromUYVY (const unsigned char* orgdata); - virtual void fromYUY2 (const unsigned char* orgdata); // YUYV - virtual void fromYVYU (const unsigned char* orgdata); + virtual bool fromRGB (const unsigned char* orgdata); + virtual bool fromRGBA (const unsigned char* orgdata); + virtual bool fromBGR (const unsigned char* orgdata); + virtual bool fromBGRA (const unsigned char* orgdata); + virtual bool fromRGB16 (const unsigned char* orgdata); + virtual bool fromABGR (const unsigned char* orgdata); + virtual bool fromARGB (const unsigned char* orgdata); + virtual bool fromGray (const unsigned char* orgdata); + virtual bool fromGray (const short* orgdata); + virtual bool fromUYVY (const unsigned char* orgdata); + virtual bool fromYUY2 (const unsigned char* orgdata); // YUYV + virtual bool fromYVYU (const unsigned char* orgdata); /* planar YUV420: this is rather generic and not really YV12 only */ - virtual void fromYV12 (const unsigned char* Y, const unsigned char*U, + virtual bool fromYV12 (const unsigned char* Y, const unsigned char*U, const unsigned char*V); /* assume that the planes are near each other: YVU */ - virtual void fromYV12 (const unsigned char* orgdata); + virtual bool fromYV12 (const unsigned char* orgdata); /* assume that the planes are near each other: YVU */ - virtual void fromYU12 (const unsigned char* orgdata); + virtual bool fromYU12 (const unsigned char* orgdata); /* overloading the above two in order to accept pdp YV12 packets */ - virtual void fromYV12 (const short* Y, const short*U, const short*V); - virtual void fromYV12 (const short* orgdata); + virtual bool fromYV12 (const short* Y, const short*U, const short*V); + virtual bool fromYV12 (const short* orgdata); /* aliases */ - virtual void fromYUV422 (const unsigned char* orgdata) + virtual bool fromYUV422 (const unsigned char* orgdata) { - fromUYVY(orgdata); + return fromUYVY(orgdata); } - virtual void fromYUV420P(const unsigned char* orgdata) + virtual bool fromYUV420P(const unsigned char* orgdata) { - fromYV12(orgdata); + return fromYV12(orgdata); } - virtual void fromYUV420P(const unsigned char*Y,const unsigned char*U, + virtual bool fromYUV420P(const unsigned char*Y,const unsigned char*U, const unsigned char*V) { - fromYV12(Y,U,V); + return fromYV12(Y,U,V); } // "data" points to the image. // the memory could(!) be reserved by this class or someone else // "notowned" should be set to "1", if "data" points to foreign memory // "data" is not freed directly, when the destructor is called - unsigned char *data; // the pointer to the data + unsigned char *data; // the pointer to the data private: // "pdata" is the private data, and is the memory reserved by this class // this data is freed when the destructor is called - unsigned char *pdata; + unsigned char *pdata; // "datasize" is the size of data reserved at "pdata" - size_t datasize; + size_t datasize; public: ////////// // true if the image is flipped horizontally (origin is upper-left) // false if the image is openGL-conformant (origin is lower-left) - GLboolean upsidedown; + bool upsidedown; /* make the image orientation openGL-conformant */ virtual void fixUpDown(void); @@ -270,17 +273,17 @@ ////////// // the block's image - imageStruct image; + imageStruct image; ////////// // is this a newimage since last time? // ie, has it been refreshed - bool newimage; + bool newimage; ////////// // keeps track of when new films are loaded // useful for rectangle_textures on OSX - bool newfilm; + bool newfilm; }; /////////////////////////////////////////////////////////////////////////////// diff -Nru gem-0.94~pre1/src/Gem/ImageLoad.cpp gem-0.94/src/Gem/ImageLoad.cpp --- gem-0.94~pre1/src/Gem/ImageLoad.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/ImageLoad.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Gem/ImageSave.cpp gem-0.94/src/Gem/ImageSave.cpp --- gem-0.94~pre1/src/Gem/ImageSave.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/ImageSave.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Gem/Makefile.am gem-0.94/src/Gem/Makefile.am --- gem-0.94~pre1/src/Gem/Makefile.am 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Makefile.am 2019-02-12 13:10:01.000000000 +0000 @@ -50,6 +50,7 @@ libGem_la_include_HEADERS += \ GemGL.h \ + GemGLconfig.h \ glew.h \ glxew.h \ wglew.h \ diff -Nru gem-0.94~pre1/src/Gem/Manager.cpp gem-0.94/src/Gem/Manager.cpp --- gem-0.94~pre1/src/Gem/Manager.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Manager.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -147,11 +147,9 @@ void GemMan::resizeCallback(int xSize, int ySize, void *) { #ifndef GEM_MULTICONTEXT - if (ySize==0) { - ySize=1; - } float xDivy = (float)xSize / (float)ySize; + if (ySize == 0) xDivy = 1; GemMan::m_h = ySize; GemMan::m_w = xSize; GemMan::m_height = ySize; @@ -195,7 +193,7 @@ } } -void GemMan :: createContext(char* disp) +void GemMan :: createContext(const char* disp) { // can we only have one context? @@ -335,6 +333,8 @@ // setup the transformation matrices float xDivy = (float)m_w / (float)m_h; + if (m_w == 0) xDivy = 1; + if (m_h == 0) xDivy = 1; if(GLEW_ARB_imaging) { glMatrixMode(GL_COLOR); @@ -356,7 +356,7 @@ // TODO: // shouldn't this be called here? // glLoadIdentity(); - gluLookAt(m_lookat[0], m_lookat[1], m_lookat[2], m_lookat[3], m_lookat[4], + gem::utils::gl::gluLookAt(m_lookat[0], m_lookat[1], m_lookat[2], m_lookat[3], m_lookat[4], m_lookat[5], m_lookat[6], m_lookat[7], m_lookat[8]); if (m_fogMode == FOG_OFF) { @@ -607,6 +607,7 @@ int xSize = m_w / 2; int ySize = m_h; float xDivy = static_cast<float>(xSize) / static_cast<float>(ySize); + if (ySize == 0) xDivy = 1; // setup the left viewpoint glViewport(0, 0, xSize, ySize); @@ -622,7 +623,7 @@ glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - gluLookAt(m_lookat[0] - m_stereoSep / 100.f, m_lookat[1], m_lookat[2], + gem::utils::gl::gluLookAt(m_lookat[0] - m_stereoSep / 100.f, m_lookat[1], m_lookat[2], m_lookat[3], m_lookat[4], m_lookat[5] + m_stereoFocal, m_lookat[6], m_lookat[7], m_lookat[8]); @@ -633,7 +634,7 @@ glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - gluLookAt(0 - m_stereoSep / 100.f, 0, 4, 0, 0, 0 + m_stereoFocal, 0, 1, 0); + gem::utils::gl::gluLookAt(0 - m_stereoSep / 100.f, 0, 4, 0, 0, 0 + m_stereoFocal, 0, 1, 0); renderChain(chain2, ¤tState); // setup the right viewpoint @@ -650,7 +651,7 @@ glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - gluLookAt(m_lookat[0] + m_stereoSep / 100.f, m_lookat[1], m_lookat[2], + gem::utils::gl::gluLookAt(m_lookat[0] + m_stereoSep / 100.f, m_lookat[1], m_lookat[2], m_lookat[3], m_lookat[4], m_lookat[5] + m_stereoFocal, m_lookat[6], m_lookat[7], m_lookat[8]); @@ -662,7 +663,7 @@ glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - gluLookAt(0 + m_stereoSep / 100.f, 0, 4, 0, 0, 0 + m_stereoFocal, 0, 1, 0); + gem::utils::gl::gluLookAt(0 + m_stereoSep / 100.f, 0, 4, 0, 0, 0 + m_stereoFocal, 0, 1, 0); renderChain(chain2, ¤tState); @@ -678,7 +679,7 @@ glFrustum(-1, 1, -1, 1, 1, 20); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - gluLookAt(0, 0, 4, 0, 0, 0, 0, 1, 0); + gem::utils::gl::gluLookAt(0, 0, 4, 0, 0, 0, 0, 1, 0); glLineWidth(2.f); glColor3f(1.f, 1.f, 1.f); @@ -694,6 +695,7 @@ int xSize = m_w; int ySize = m_h; float xDivy = static_cast<float>(xSize) / static_cast<float>(ySize); + if (ySize == 0) xDivy = 1; color_t left_color=RED; color_t right_color=GREEN; @@ -718,7 +720,7 @@ glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - gluLookAt(m_lookat[0] - m_stereoSep / 100.f, m_lookat[1], m_lookat[2], + gem::utils::gl::gluLookAt(m_lookat[0] - m_stereoSep / 100.f, m_lookat[1], m_lookat[2], m_lookat[3], m_lookat[4], m_lookat[5] + m_stereoFocal, m_lookat[6], m_lookat[7], m_lookat[8]); @@ -727,7 +729,7 @@ renderChain(chain1, ¤tState); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - gluLookAt(0 - m_stereoSep / 100.f, 0, 4, 0, 0, 0 + m_stereoFocal, 0, 1, 0); + gem::utils::gl::gluLookAt(0 - m_stereoSep / 100.f, 0, 4, 0, 0, 0 + m_stereoFocal, 0, 1, 0); renderChain(chain2, ¤tState); // setup the right viewpoint @@ -746,7 +748,7 @@ glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - gluLookAt(m_lookat[0] + m_stereoSep / 100.f, m_lookat[1], m_lookat[2], + gem::utils::gl::gluLookAt(m_lookat[0] + m_stereoSep / 100.f, m_lookat[1], m_lookat[2], m_lookat[3], m_lookat[4], m_lookat[5] + m_stereoFocal, m_lookat[6], m_lookat[7], m_lookat[8]); @@ -758,7 +760,7 @@ glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - gluLookAt(0 + m_stereoSep / 100.f, 0, 4, 0, 0, 0 + m_stereoFocal, 0, 1, 0); + gem::utils::gl::gluLookAt(0 + m_stereoSep / 100.f, 0, 4, 0, 0, 0 + m_stereoFocal, 0, 1, 0); renderChain(chain2, ¤tState); glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE); @@ -768,6 +770,7 @@ int xSize = m_w; int ySize = m_h; float xDivy = static_cast<float>(xSize) / static_cast<float>(ySize); + if (ySize == 0) xDivy = 1; // setup the left viewpoint @@ -784,7 +787,7 @@ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); - gluLookAt(m_lookat[0] - m_stereoSep / 100.f, m_lookat[1], m_lookat[2], + gem::utils::gl::gluLookAt(m_lookat[0] - m_stereoSep / 100.f, m_lookat[1], m_lookat[2], m_lookat[3], m_lookat[4], m_lookat[5] + m_stereoFocal, m_lookat[6], m_lookat[7], m_lookat[8]); @@ -793,7 +796,7 @@ renderChain(chain1, ¤tState); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - gluLookAt(0 - m_stereoSep / 100.f, 0, 4, 0, 0, 0 + m_stereoFocal, 0, 1, 0); + gem::utils::gl::gluLookAt(0 - m_stereoSep / 100.f, 0, 4, 0, 0, 0 + m_stereoFocal, 0, 1, 0); renderChain(chain2, ¤tState); // setup the right viewpoint @@ -812,7 +815,7 @@ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); - gluLookAt(m_lookat[0] + m_stereoSep / 100.f, m_lookat[1], m_lookat[2], + gem::utils::gl::gluLookAt(m_lookat[0] + m_stereoSep / 100.f, m_lookat[1], m_lookat[2], m_lookat[3], m_lookat[4], m_lookat[5] + m_stereoFocal, m_lookat[6], m_lookat[7], m_lookat[8]); @@ -824,7 +827,7 @@ glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - gluLookAt(0 + m_stereoSep / 100.f, 0, 4, 0, 0, 0 + m_stereoFocal, 0, 1, 0); + gem::utils::gl::gluLookAt(0 + m_stereoSep / 100.f, 0, 4, 0, 0, 0 + m_stereoFocal, 0, 1, 0); renderChain(chain2, ¤tState); glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE); @@ -837,7 +840,7 @@ // setup the matrices glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - gluLookAt(0, 0, 4, 0, 0, 0, 0, 1, 0); + gem::utils::gl::gluLookAt(0, 0, 4, 0, 0, 0, 0, 1, 0); renderChain(chain2, ¤tState); } } @@ -992,7 +995,7 @@ // createWindow // ///////////////////////////////////////////////////////// -int GemMan :: createWindow(char* disp) +int GemMan :: createWindow(const char* disp) { #ifndef GEM_MULTICONTEXT if ( m_windowState ) { @@ -1132,7 +1135,7 @@ // createConstWindow // ///////////////////////////////////////////////////////// -int GemMan::createConstWindow(char* disp) +int GemMan::createConstWindow(const char* disp) { #ifndef GEM_MULTICONTEXT // can we only have one context? @@ -1212,6 +1215,7 @@ glFlush(); // setup the transformation matrices float xDivy = static_cast<float>(m_w) / static_cast<float>(m_h); + if (m_h == 0) xDivy = 1; glMatrixMode(GL_PROJECTION); glLoadIdentity(); @@ -1223,7 +1227,7 @@ // TODO: // shouldn't this be called here? // glLoadIdentity(); - gluLookAt(m_lookat[0], m_lookat[1], m_lookat[2], m_lookat[3], m_lookat[4], + gem::utils::gl::gluLookAt(m_lookat[0], m_lookat[1], m_lookat[2], m_lookat[3], m_lookat[4], m_lookat[5], m_lookat[6], m_lookat[7], m_lookat[8]); } #endif /* GEM_MULTICONTEXT */ @@ -1320,6 +1324,11 @@ *height=m_height; } } +void GemMan :: setDimen(int width, int height) +{ + m_width = width; + m_height = height; +} ///////////////////////////////////////////////////////// // get real window dimensions (as reported by the window creator) diff -Nru gem-0.94~pre1/src/Gem/Manager.h gem-0.94/src/Gem/Manager.h --- gem-0.94~pre1/src/Gem/Manager.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Manager.h 2019-02-12 13:10:01.000000000 +0000 @@ -68,7 +68,7 @@ ////////// // is there a context (has its meaning under X) - static void createContext(char* disp); + static void createContext(const char* disp); static int contextExists(void); ////////// @@ -98,7 +98,7 @@ ////////// // Create the window with the current parameters - static int createWindow(char* disp = 0); + static int createWindow(const char* disp = 0); ////////// // Destroy the window @@ -123,6 +123,7 @@ static void getDimen(int*width, int*height); static void getRealDimen(int*width, int*height); static void getOffset(int*x, int*y); + static void setDimen(int width, int height); ////////// // Turn on/off lighting @@ -219,7 +220,7 @@ // This window is always available (although not visible) static WindowInfo &getConstWindowInfo(void); #endif /* GEM_MULTICONTEXT */ - static int createConstWindow(char* disp = 0); + static int createConstWindow(const char* disp = 0); // gemwin is allowed to modifying "global" window attributes friend class gemwin; diff -Nru gem-0.94~pre1/src/Gem/PBuffer.cpp gem-0.94/src/Gem/PBuffer.cpp --- gem-0.94~pre1/src/Gem/PBuffer.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/PBuffer.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -290,13 +290,13 @@ data = new PBuffer_data; data->old_context = CGLGetCurrentContext(); err = CGLGetVirtualScreen(data->old_context, &vs); - verbose (2, "Target Context (0x%X) Renderer: %s\n",data->old_context, + verbose (2, "Target Context (%p) Renderer: %s\n",data->old_context, glGetString (GL_RENDERER)); cglReportError(CGLChoosePixelFormat (attrib, &data->pixfmt, &npf)); cglReportError(CGLCreateContext (data->pixfmt, data->old_context, &(data->context))); - verbose (2, "pBuffer Context (0x%X) Renderer: %s\n",data->context, + verbose (2, "pBuffer Context (%p) Renderer: %s\n",data->context, glGetString (GL_RENDERER)); /* if (float_buffer) @@ -308,7 +308,7 @@ cglReportError( CGLSetCurrentContext( data->context ) ); cglReportError( CGLGetVirtualScreen(data->old_context, &vs) ); cglReportError( CGLSetPBuffer(data->context, data->pbuffer, 0, 0, vs) ); - verbose (2, "pbuffer (0x%X) Renderer: %s\n",data->pbuffer, + verbose (2, "pbuffer (%p) Renderer: %s\n",data->pbuffer, glGetString (GL_RENDERER)); } @@ -339,9 +339,9 @@ cglReportError (CGLSetCurrentContext (data->context)); cglReportError (CGLGetVirtualScreen ( data->old_context, &vs )); cglReportError( CGLSetPBuffer( data->context, data->pbuffer, 0, 0, vs) ); - debug ("enable Context (0x%X) Renderer: %s\n",CGLGetCurrentContext(), + debug ("enable Context (%p) Renderer: %s\n",CGLGetCurrentContext(), glGetString (GL_RENDERER)); - debug ("pBuffer Context (0x%X) Renderer: %s\n",data->context, + debug ("pBuffer Context (%p) Renderer: %s\n",data->context, glGetString (GL_RENDERER)); return; @@ -549,7 +549,35 @@ } } #else -# error do Pbuffers on your OS ! + +# warning do Pbuffers on your OS ! + +struct PBuffer_data { + int dummy; +}; + +PBuffer::PBuffer(int width,int height,int flags) + : width(width) + , height(height) + , data(nullptr) +{ + error("PBuffer::PBuffer(): no PBuffer support"); +} + +PBuffer::~PBuffer() +{ +} + +void PBuffer::enable() +{ + error("PBuffer::enable(): no PBuffer support"); +} + +void PBuffer::disable() +{ + error("PBuffer::disable(): no PBuffer support"); +} + #endif /* OS */ /* dummy implementations */ diff -Nru gem-0.94~pre1/src/Gem/PixConvertAltivec.cpp gem-0.94/src/Gem/PixConvertAltivec.cpp --- gem-0.94~pre1/src/Gem/PixConvertAltivec.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/PixConvertAltivec.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -4,7 +4,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file for AltiVec-optimized color-conversion routines // diff -Nru gem-0.94~pre1/src/Gem/PixConvertSSE2.cpp gem-0.94/src/Gem/PixConvertSSE2.cpp --- gem-0.94~pre1/src/Gem/PixConvertSSE2.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/PixConvertSSE2.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -3,7 +3,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file for SSE2-optimized color-conversion routines // diff -Nru gem-0.94~pre1/src/Gem/Rectangle.cpp gem-0.94/src/Gem/Rectangle.cpp --- gem-0.94~pre1/src/Gem/Rectangle.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Rectangle.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Gem/RTE.h gem-0.94/src/Gem/RTE.h --- gem-0.94~pre1/src/Gem/RTE.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/RTE.h 2019-02-12 13:10:01.000000000 +0000 @@ -25,5 +25,7 @@ # pragma warning( pop ) #endif +#define GEMMARK() verbose(2, "%s:%d[%s]", __FILE__, __LINE__, __FUNCTION__) + #endif /* _INCLUDE__GEM_GEM_RTE_H_ */ diff -Nru gem-0.94~pre1/src/Gem/Settings.cpp gem-0.94/src/Gem/Settings.cpp --- gem-0.94~pre1/src/Gem/Settings.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Settings.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -26,6 +26,13 @@ #include <stdlib.h> #include <errno.h> +#ifdef _WIN32 +# include <windows.h> +#else +# include <limits.h> +# include <stdlib.h> +#endif + #define GEM_SETTINGS_FILE "gem.conf" static const char*s_configdir[] = { #ifdef __linux__ @@ -214,9 +221,21 @@ t_gemclass *c = (t_gemclass*)class_new(gensym("Gem"), 0, 0, 0, 0, A_NULL); - set("gem.path", c->c_externdir->s_name); - - // print(); + char fullpath[PATH_MAX]; + const char*fp = fullpath; +#ifdef _WIN32 + char** lppPart={NULL}; + GetFullPathName(c->c_externdir->s_name, + PATH_MAX, + fullpath, + lppPart); +#else + fp = realpath(c->c_externdir->s_name, fullpath); +#endif + sys_unbashfilename(fullpath, fullpath); + if(!fp) + fp = c->c_externdir->s_name; + set("gem.path", fp); } ~PIMPL(void) diff -Nru gem-0.94~pre1/src/Gem/Setup.cpp gem-0.94/src/Gem/Setup.cpp --- gem-0.94~pre1/src/Gem/Setup.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/Setup.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -37,6 +37,7 @@ #include "Gem/Manager.h" #include "Gem/Version.h" #include "Gem/Files.h" +#include "Base/CPPExtern.h" #include <stdio.h> @@ -77,6 +78,23 @@ #endif /* HAVE_M_IMP_H */ +typedef struct class_setup_list_ { + struct class_setup_list_ *next; + const char*name; + t_class_setup setup;; +} class_setup_list_t; + +static class_setup_list_t *register_class_setup_list = 0; + +void gem_register_class_setup(const char*name, t_class_setup setup) { + class_setup_list_t*x = new class_setup_list_t; + x->next = register_class_setup_list; + x->setup = setup; + x->name = name; + register_class_setup_list = x; +} + + namespace { @@ -219,11 +237,13 @@ # define BUILD_DATE " on " __DATE__ #endif - -namespace Gem +namespace gem { void setup() { + static bool firsttime = true; + if(!firsttime) return; + firsttime = false; // startup GEM post("GEM: Graphics Environment for Multimedia"); verbose(-1, "GEM: ver: %s", GemVersion::versionString()); @@ -240,6 +260,15 @@ verbose(-1, "GEM: \tmailing-list https://lists.puredata.info/listinfo/gem-dev/"); + for(class_setup_list_t *l = register_class_setup_list; l;) { + class_setup_list_t*next = l->next; + verbose(4, "registering Gem object: %s", l->name); + l->setup(); + delete l; + l = next; + } + register_class_setup_list = 0; + gem::Settings::init(); addownpath("Gem-meta.pd"); GemMan::initGem(); @@ -256,7 +285,7 @@ { /* traditionally Gem can be loaded with wrong spelling on a case-insenstive platform * starting with 0.94 we issue a fat warning. - * however, much of Gem's loading is done via CTORs and the Gem::setup() only finishes + * however, much of Gem's loading is done via CTORs and the gem::setup() only finishes * the init phase; so we probably can never get rid of wrongly-spelled libraries ever. */ error("GEM: rejecting incorrect spelling '%s' for cross-platform reasons: use 'Gem'!", @@ -264,10 +293,11 @@ } }; + extern "C" { GEM_EXTERN void Gem_setup() { - Gem::setup(); + gem::setup(); } GEM_EXTERN void gem_setup() diff -Nru gem-0.94~pre1/src/Gem/State.cpp gem-0.94/src/Gem/State.cpp --- gem-0.94~pre1/src/Gem/State.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/State.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -37,6 +37,14 @@ # pragma warning( disable : 4996 ) #endif +#ifdef GEM_ANY_TYPEID_HACK +# if GEM_ANY_TYPEID_HACK +# warning GEM_ANY_TYPEID_HACK enabled +# else +# warning GEM_ANY_TYPEID_HACK disabled +# endif +#endif + #define CATCH_ANY(y) catch(gem::bad_any_cast&x) { ::verbose(3, "%s:%d [%s] %d:: %s", __FILE__, __LINE__, __FUNCTION__, (y), x.what()); } using namespace gem; @@ -245,106 +253,51 @@ { std::map<GemState::key_t,any>::iterator it = data->data.find(key); + if(it==data->data.end()) { - if(key==_PIX) { + /* key not stored in 'data'; fall back to legacy data */ + + switch(key) { + default: + break; + case(_PIX): value=image; return true; - } - if(key==_GL_TEX_NUMCOORDS) { + case(_GL_TEX_NUMCOORDS): value=numTexCoords; return true; - } - - return false; // FIXXME - #if 0 - if(key==_DIRTY) { + case(_DIRTY): value=dirty; return true; - } - if(key==_GL_DISPLAYLIST) { + case(_GL_DISPLAYLIST): value=inDisplayList; return true; - } - - if(key==_GL_LIGHTING) { + case(_GL_LIGHTING): value=lighting; return true; - } - if(key==_GL_SMOOTH) { + case(_GL_SMOOTH): value=smooth; return true; - } - if(key==_GL_TEX_TYPE) { + case(_GL_TEX_TYPE): value=texture; return true; - } - if(key==_GL_TEX_COORDS) { - if(!texCoords) { + case(_GL_TEX_COORDS): + if(!texCoords) return false; - } value=texCoords; return true; - } - if(key==_GL_TEX_UNITS) { + case(_GL_TEX_UNITS): value=multiTexUnits; return true; - } - if(key==_TIMING_TICK) { + case(_TIMING_TICK): value=tickTime; return true; - } - if(key==_GL_DRAWTYPE) { + case(_GL_DRAWTYPE): value=drawType; return true; - } #endif - -#if 0 - //if(key==GemState::_GL_STACKS) { value=stackDepth[4]; return true; } - - if(key=="vertex.dirty") { - value=VertexDirty; - return true; - } - if(key=="*VertexArray") { - value=*VertexArray; - return true; - } - if(key=="VertexArraySize") { - value=VertexArraySize; - return true; - } - if(key=="VertexArrayStride") { - value=VertexArrayStride; - return true; - } - if(key=="*ColorArray") { - value=*ColorArray; - return true; - } - if(key=="HaveColorArray") { - value=HaveColorArray; - return true; } - if(key=="*NormalArray") { - value=*NormalArray; - return true; - } - if(key=="HaveNormalArray") { - value=HaveNormalArray; - return true; - } - if(key=="*TexCoordArray") { - value=*TexCoordArray; - return true; - } - if(key=="HaveTexCoordArray") { - value=HaveTexCoordArray; - return true; - } -#endif - return false; } @@ -368,7 +321,7 @@ dirty=gem::any_cast<bool>(value); break; case(_PIX): - image=gem::any_cast<pixBlock*>(value); + image=gem::any_cast<pixBlock*>(value, true); break; case(_GL_TEX_NUMCOORDS): numTexCoords=gem::any_cast<int>(value); diff -Nru gem-0.94~pre1/src/Gem/State.h gem-0.94/src/Gem/State.h --- gem-0.94~pre1/src/Gem/State.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/State.h 2019-02-12 13:10:01.000000000 +0000 @@ -61,8 +61,8 @@ typedef enum { _ILLEGAL=-1, _DIRTY, /* "dirty" */ - _TIMING_TICK, /* "timing.tick" */ - _PIX, /* "pix" */ + _TIMING_TICK, /* "timing.tick" <float> */ + _PIX, /* "pix", <*pixBuffer> */ _GL_STACKS, /* "stacks" */ _GL_DISPLAYLIST, /* */ _GL_LIGHTING, /* */ @@ -208,7 +208,10 @@ // key not found return false; } - value=gem::any_cast<T>(val); + if(_PIX == key) + value=gem::any_cast<T>(val, true); + else + value=gem::any_cast<T>(val); return true; } catch (gem::bad_any_cast&x) { ::verbose(3, "%s:%d [%s] %d :: %s", __FILE__, __LINE__, __FUNCTION__, key, diff -Nru gem-0.94~pre1/src/Gem/VertexBuffer.cpp gem-0.94/src/Gem/VertexBuffer.cpp --- gem-0.94~pre1/src/Gem/VertexBuffer.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Gem/VertexBuffer.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -102,6 +102,7 @@ bool gem::VertexBuffer:: create (void) { + if(!(glGenBuffers && glBufferData && glBindBuffer)) return false; if(!vbo) { glGenBuffers(1, &vbo); } @@ -114,6 +115,7 @@ } bool gem::VertexBuffer:: render (void) { + if(!(glBufferData && glBindBuffer)) return false; // render from the VBO //::post("VertexBuffer::render: %d?", enabled); if ( enabled ) { diff -Nru gem-0.94~pre1/src/Geos/circle.cpp gem-0.94/src/Geos/circle.cpp --- gem-0.94~pre1/src/Geos/circle.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/circle.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -60,16 +60,18 @@ glLineWidth(m_linewidth); glBegin(m_drawType); if (GemShape::m_texType) { + GLfloat xsize0 = 0.f; GLfloat xsize = 1.f; GLfloat ysize0 = 0.f; GLfloat ysize = 1.f; if(GemShape::m_texNum>=3) { + xsize0 = GemShape::m_texCoords[0].s; xsize = GemShape::m_texCoords[1].s; ysize0 = GemShape::m_texCoords[2].t; ysize = GemShape::m_texCoords[1].t; } for (int n = 0; n < NUM_PNTS; n++) { - glTexCoord2f(xsize*(m_cos[n] + 1) / 2.f, + glTexCoord2f((xsize-xsize0)*(m_cos[n] + 1) / 2.f+xsize0, (ysize0-ysize)*(m_sin[n] + 1) / 2.f+ysize); glVertex3f(m_cos[n] * m_size, m_sin[n] * m_size, diff -Nru gem-0.94~pre1/src/Geos/colorSquare.cpp gem-0.94/src/Geos/colorSquare.cpp --- gem-0.94~pre1/src/Geos/colorSquare.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/colorSquare.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/cone.cpp gem-0.94/src/Geos/cone.cpp --- gem-0.94~pre1/src/Geos/cone.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/cone.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/cube.cpp gem-0.94/src/Geos/cube.cpp --- gem-0.94~pre1/src/Geos/cube.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/cube.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/cuboid.cpp gem-0.94/src/Geos/cuboid.cpp --- gem-0.94~pre1/src/Geos/cuboid.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/cuboid.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -20,7 +20,7 @@ #include "cuboid.h" #include "Gem/State.h" -#include "string.h" +#include <string.h> CPPEXTERN_NEW_WITH_THREE_ARGS(cuboid, t_floatarg, A_DEFFLOAT, t_floatarg, A_DEFFLOAT, t_floatarg, A_DEFFLOAT ); diff -Nru gem-0.94~pre1/src/Geos/curve3d.cpp gem-0.94/src/Geos/curve3d.cpp --- gem-0.94~pre1/src/Geos/curve3d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/curve3d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Curve3D : create a besier surface // made by Cyrille Henry @@ -168,13 +168,16 @@ GLfloat xsize = 1.0f; GLfloat ysize = 1.0f; + GLfloat xsize0= 0.0f; GLfloat ysize0= 0.0f; if (GemShape::m_texType && GemShape::m_texNum>=3) { - xsize = GemShape::m_texCoords[1].s; + xsize0 = GemShape::m_texCoords[1].s; + xsize = GemShape::m_texCoords[0].s; ysize0 = GemShape::m_texCoords[2].t; ysize = GemShape::m_texCoords[1].t; } + GLfloat xsizediff = xsize0 - xsize; GLfloat ysizediff = ysize0 - ysize; GLfloat affich_X=static_cast<GLfloat>(nb_pts_affich_X); @@ -189,7 +192,8 @@ for (n = 0; n < nb_pts_affich_X+1; n++) { glBegin(GL_LINE_STRIP); for (m = 0; m < nb_pts_affich_Y+1; m++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); glEvalCoord2f(n/affich_X, m/affich_Y); } glEnd(); @@ -197,7 +201,8 @@ for(m = 0; m < nb_pts_affich_Y+1; m++) { glBegin(GL_LINE_STRIP); for(n = 0; n < nb_pts_affich_X+1; n++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); glEvalCoord2f(n/affich_X, m/affich_Y); } glEnd(); @@ -225,9 +230,11 @@ for(n = 0; n < nb_pts_affich_X; n++) { glBegin(GL_TRIANGLE_STRIP); for(m = 0; m < nb_pts_affich_Y+1; m++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); glEvalCoord2f(n/affich_X, m/affich_Y); - glTexCoord2f(xsize*(n+1)/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*(n+1)/affich_X, + ysize+ysizediff*m/affich_Y); glEvalCoord2f((n+1)/affich_X, m/affich_Y); } glEnd(); @@ -247,7 +254,8 @@ if (GemShape::m_texType) for(n = 0; n < nb_pts_affich_X+1; n++) { for(m = 0; m < nb_pts_affich_Y+1; m++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); glEvalCoord2f(n/affich_X, m/affich_Y); } } else @@ -265,7 +273,8 @@ for(n = 0; n < nb_pts_affich_X; n++) { glBegin(GL_LINE_STRIP); for(m = 0; m < nb_pts_affich_Y; m++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); glEvalCoord2f(n/affich_X, m/affich_Y); } glEnd(); @@ -285,7 +294,8 @@ for(m = 0; m < nb_pts_affich_Y+1; m++) { glBegin(GL_LINE_STRIP); for(n = 0; n < nb_pts_affich_X+1; n++) { - glTexCoord2f(xsize*n/affich_X,ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); glEvalCoord2f(n/affich_X, m/affich_Y); } glEnd(); @@ -305,7 +315,8 @@ for(n = 0; n < nb_pts_affich_X; n++) { glBegin(GL_LINES); for(m = 0; m < nb_pts_affich_Y; m++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); glEvalCoord2f(n/affich_X, m/affich_Y); } glEnd(); @@ -325,7 +336,8 @@ for(m = 0; m < nb_pts_affich_Y; m++) { glBegin(GL_LINES); for(n = 0; n < nb_pts_affich_X; n++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); glEvalCoord2f(n/affich_X, m/affich_Y); } glEnd(); @@ -351,13 +363,13 @@ glNormal3fv(norm); glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+m*nb_pts_control_X]); - glTexCoord2f(xsize*(n+1.)/(control_X-1.), + glTexCoord2f(xsize+xsizediff*(n+1.)/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+m*nb_pts_control_X+1]); - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*(m+1.)/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+(m+1)*nb_pts_control_X]); glEnd(); @@ -367,13 +379,13 @@ (GLfloat*)&m_posXYZ[n+(m+1)*nb_pts_control_X], norm); glNormal3fv(norm); glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(xsize*(n+1.)/(control_X-1.), + glTexCoord2f(xsize+xsizediff*(n+1.)/(control_X-1.), ysize+ysizediff*(m+1)/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+1+(m+1)*nb_pts_control_X]); - glTexCoord2f(xsize*(n+1.)/(control_X-1.), + glTexCoord2f(xsize+xsizediff*(n+1.)/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+1+m*nb_pts_control_X]); - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*(m+1.)/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+(m+1)*nb_pts_control_X]); glEnd(); @@ -411,7 +423,7 @@ for(n = 0; n < nb_pts_control_X; n++) for(m = 0; m < nb_pts_control_Y; m++) { glBegin(GL_POINTS); - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+m*nb_pts_control_X]); glEnd(); @@ -430,7 +442,7 @@ for(n = 0; n < nb_pts_control_X; n++) { glBegin(GL_LINE_STRIP); for(m = 0; m < nb_pts_control_Y; m++) { - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+m*nb_pts_control_X]); } @@ -440,7 +452,7 @@ for(m = 0; m < nb_pts_control_Y; m++) { glBegin(GL_LINE_STRIP); for(n = 0; n < nb_pts_control_X; n++) { - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+m*nb_pts_control_X]); } @@ -470,7 +482,7 @@ for(m = 0; m < nb_pts_control_Y; m++) { glBegin(GL_LINE_STRIP); for(n = 0; n < nb_pts_control_X; n++) { - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+m*nb_pts_control_X]); } @@ -491,7 +503,7 @@ for(n = 0; n < nb_pts_control_X; n++) { glBegin(GL_LINE_STRIP); for(m = 0; m < nb_pts_control_Y; m++) { - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+m*nb_pts_control_X]); } diff -Nru gem-0.94~pre1/src/Geos/curve.cpp gem-0.94/src/Geos/curve.cpp --- gem-0.94~pre1/src/Geos/curve.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/curve.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-2000 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Geos/cylinder.cpp gem-0.94/src/Geos/cylinder.cpp --- gem-0.94~pre1/src/Geos/cylinder.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/cylinder.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/disk.cpp gem-0.94/src/Geos/disk.cpp --- gem-0.94~pre1/src/Geos/disk.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/disk.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/GemSplash.cpp gem-0.94/src/Geos/GemSplash.cpp --- gem-0.94~pre1/src/Geos/GemSplash.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/GemSplash.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,7 +15,6 @@ ///////////////////////////////////////////////////////// #include "GemSplash.h" -#include "Gem/State.h" CPPEXTERN_NEW(GemSplash); diff -Nru gem-0.94~pre1/src/Geos/gemvertexbuffer.cpp gem-0.94/src/Geos/gemvertexbuffer.cpp --- gem-0.94~pre1/src/Geos/gemvertexbuffer.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/gemvertexbuffer.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -17,7 +17,6 @@ #include "gemvertexbuffer.h" -#include "Gem/State.h" #include "Gem/Manager.h" #include "Utils/Functions.h" @@ -51,7 +50,7 @@ m_idmapper("glsl.program") { m_range[0]=0; - m_range[1]=-1; + m_range[1]=0; } ///////////////////////////////////////////////////////// @@ -68,6 +67,7 @@ ///////////////////////////////////////////////////////// void gemvertexbuffer :: renderShape(GemState *state) { + int vb_size = 0; if ( m_drawType == GL_DEFAULT_GEM ) { m_drawType = GL_POINTS; } @@ -94,6 +94,7 @@ if(m_position.render()) { glVertexPointer(m_position.dimen, GL_FLOAT, 0, 0); glEnableClientState(GL_VERTEX_ARRAY); + if(!vb_size)vb_size=m_position.size; } if(m_texture.render()) { glTexCoordPointer(m_texture.dimen, GL_FLOAT, 0, 0); @@ -111,6 +112,10 @@ unsigned int start = std::min(m_range[0], m_range[1]); unsigned int end = std::max(m_range[0], m_range[1]); + if(!end) { + end = vb_size; + } + if(start>=vbo_size) { start=vbo_size; } @@ -470,7 +475,7 @@ const bool interleaved = (0==dimen); if(offset>vb.size) { - error("offset %d is bigger than vertexbuffer size (%d)", offset, vb.size); + error("offset %d is bigger than vertexbuffer size (%d) for %s", offset, vb.size, tab_name.c_str()); return; } diff -Nru gem-0.94~pre1/src/Geos/imageVert.cpp gem-0.94/src/Geos/imageVert.cpp --- gem-0.94~pre1/src/Geos/imageVert.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/imageVert.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,11 +15,6 @@ // ///////////////////////////////////////////////////////// -#ifdef __GNUC__ -# warning LATER fix upsidedown -// LATER think about textures without images (or not: use GLSL for that) -#endif - #include "imageVert.h" #include "Gem/State.h" @@ -62,9 +57,9 @@ const int yStride = xSize * image.csize; const int xStride = image.csize; - const float yDiff = 1.f / ySize; + const float yDiff = (image.upsidedown?-1.f:1.f) / ySize; float yDown = -.5f; - float yCurrent = yDown + yDiff; + float yCurrent = yDown + yDiff + (image.upsidedown?1.f:0.f); float yTexDown = 0.f; float yTex = yTexDown + yDiff; @@ -158,9 +153,9 @@ const int yStride = xSize * image.csize; const int xStride = image.csize; - const float yDiff = 1.f / ySize; + const float yDiff = (image.upsidedown?-1.f:1.f) / ySize; float yDown = -.5f; - float yCurrent = yDown + yDiff; + float yCurrent = yDown + yDiff + (image.upsidedown?1.f:0.f); float yTexDown = 0.f; float yTex = yTexDown + yDiff; @@ -240,9 +235,9 @@ const int yStride = xSize * image.csize; const int xStride = image.csize; - const float yDiff = 1.f / ySize; + const float yDiff = (image.upsidedown?-1.f:1.f) / ySize; float yDown = -.5f; - float yCurrent = yDown + yDiff; + float yCurrent = yDown + yDiff + (image.upsidedown?1.f:0.f); float yTexDown = 0.f; float yTex = yTexDown + yDiff; diff -Nru gem-0.94~pre1/src/Geos/imageVert.h gem-0.94/src/Geos/imageVert.h --- gem-0.94~pre1/src/Geos/imageVert.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/imageVert.h 2019-02-12 13:10:01.000000000 +0000 @@ -17,6 +17,7 @@ #define _INCLUDE__GEM_GEOS_IMAGEVERT_H_ #include "Base/GemPixObj.h" +#include "Gem/GemGL.h" /*----------------------------------------------------------------- ------------------------------------------------------------------- diff -Nru gem-0.94~pre1/src/Geos/mesh_line.cpp gem-0.94/src/Geos/mesh_line.cpp --- gem-0.94~pre1/src/Geos/mesh_line.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/mesh_line.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/mesh_square.cpp gem-0.94/src/Geos/mesh_square.cpp --- gem-0.94~pre1/src/Geos/mesh_square.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/mesh_square.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/model.cpp gem-0.94/src/Geos/model.cpp --- gem-0.94~pre1/src/Geos/model.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/model.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,7 +15,6 @@ ///////////////////////////////////////////////////////// #include "model.h" -#include "Gem/State.h" #include "plugins/modelloader.h" #include <algorithm> // std::min @@ -43,10 +42,10 @@ m_loader(gem::plugins::modelloader::getInstance()), m_loaded(false), m_size_change_flag(false), - m_position(256,3), - m_texture (256,2), - m_color (256,4), - m_normal (256,3), + m_position(0,3), + m_texture (0,2), + m_color (0,4), + m_normal (0,3), m_infoOut(gem::RTE::Outlet(this)), m_drawType(GL_TRIANGLES) { @@ -88,8 +87,7 @@ result=atom_getfloat(ap); break; case A_SYMBOL: -#warning gem::any doesnt like "const char*" - result=const_cast<char*>(atom_getsymbol(ap)->s_name); + result=std::string(atom_getsymbol(ap)->s_name); break; default: result=ap->a_w.w_gpointer; @@ -532,6 +530,39 @@ return; } + if(!GLEW_VERSION_1_5) { + float*positions = m_position.size?m_position.array:0; + float*textures = m_texture.size?m_texture.array:0; + float*colors = m_color.size?m_color.array:0; + float*normals = m_normal.size?m_normal.array:0; + unsigned int size = m_position.size; + if(textures && m_texture.size < size) size = m_texture.size; + if(colors && m_color.size < size) size = m_color.size; + if(normals && m_normal.size < size) size = m_normal.size; + + glBegin(m_drawType); + for (unsigned int i=0; i<size; i++) { + if(normals) { + glNormal3fv(normals); + normals += m_normal.dimen; + } + if(textures) { + glTexCoord2fv(textures); + textures += m_texture.dimen; + } + if(colors) { + glColor4fv(colors); + colors += m_color.dimen; + } + if(positions) { + glVertex3fv(positions); + positions += m_position.dimen; + } + } + glEnd(); + return; + } + if ( !m_position.vbo || !m_texture.vbo || !m_color.vbo || !m_normal.vbo || m_size_change_flag ) { createVBO(); diff -Nru gem-0.94~pre1/src/Geos/multimodel.cpp gem-0.94/src/Geos/multimodel.cpp --- gem-0.94~pre1/src/Geos/multimodel.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/multimodel.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,7 +15,6 @@ ///////////////////////////////////////////////////////// #include "multimodel.h" -#include "Gem/State.h" #include "plugins/modelloader.h" #include <algorithm> // std::min #include <string.h> diff -Nru gem-0.94~pre1/src/Geos/newWave.cpp gem-0.94/src/Geos/newWave.cpp --- gem-0.94~pre1/src/Geos/newWave.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/newWave.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -23,8 +23,6 @@ enum {CURRENT, FLAT, SPIKE, DIAGONALWALL, SIDEWALL, HOLE, MIDDLEBLOCK, DIAGONALBLOCK, CORNERBLOCK, HILL, HILLFOUR }; -int displayMode = WIREFRAME; -int resetMode = HILLFOUR; #define SQRTOFTWOINV 1.0 / 1.414213562 @@ -47,14 +45,15 @@ ///////////////////////////////////////////////////////// newWave :: newWave( int argc, t_atom*argv)//t_floatarg widthX, t_floatarg widthY ) - : GemShape(MEDIUM), - gridX(0), gridY(0), - m_height(1.0), - m_inletH(0), m_inletM(0), - xsize(0), xsize0(0), ysize(0), ysize0(0), - K1(0.05), D1(0.1), K2(0), D2(0), K3(0), D3(0), - alreadyInit(0), - m_textureMode(0) + : GemShape(MEDIUM) + , gridX(0), gridY(0) + , m_height(1.0) + , m_inletH(0), m_inletM(0) + , xsize(0), xsize0(0), ysize(0), ysize0(0) + , K1(0.05), D1(0.1), K2(0), D2(0), K3(0), D3(0) + , alreadyInit(0) + , m_textureMode(0) + , m_resetMode(HILLFOUR) { int widthX=10; int widthY=10; @@ -175,7 +174,7 @@ setSize( gridX, gridY ); setOther(m_textureMode); - reset( resetMode ); + reset( m_resetMode ); alreadyInit = 1; } @@ -200,7 +199,7 @@ xsize0= 0; setSize( gridX, gridY); setOther(m_textureMode ); - reset( resetMode ); + reset( m_resetMode ); alreadyInit = 1; } @@ -449,7 +448,7 @@ gridX = valueX>MAXGRID?MAXGRID:valueX; gridY = valueY>MAXGRID?MAXGRID:valueY; - reset(resetMode); + reset(m_resetMode); getTexCoords(); } @@ -654,14 +653,14 @@ void newWave :: reset(int value) { if (value != CURRENT) { - resetMode = value; + m_resetMode = value; } for( int i=0; i<gridX; i++) for( int j=0; j<gridY; j++) { force[i][j]=0.0; veloc[i][j]=0.0; - switch(resetMode) { + switch(m_resetMode) { case FLAT: posit[i][j] = 0.0; break; diff -Nru gem-0.94~pre1/src/Geos/newWave.h gem-0.94/src/Geos/newWave.h --- gem-0.94~pre1/src/Geos/newWave.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/newWave.h 2019-02-12 13:10:01.000000000 +0000 @@ -115,6 +115,7 @@ int alreadyInit; int m_textureMode; // how to texture... + int m_resetMode; float force[MAXGRID][MAXGRID], veloc[MAXGRID][MAXGRID], diff -Nru gem-0.94~pre1/src/Geos/polygon.cpp gem-0.94/src/Geos/polygon.cpp --- gem-0.94~pre1/src/Geos/polygon.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/polygon.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/pqtorusknots.cpp gem-0.94/src/Geos/pqtorusknots.cpp --- gem-0.94~pre1/src/Geos/pqtorusknots.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/pqtorusknots.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -13,7 +13,6 @@ ///////////////////////////////////////////////////////// #include "pqtorusknots.h" -#include "Gem/State.h" #define PI2 3.1415926535897932384626433832795f*2 CPPEXTERN_NEW_WITH_TWO_ARGS(pqtorusknots, t_floatarg, A_DEFFLOAT, diff -Nru gem-0.94~pre1/src/Geos/primTri.cpp gem-0.94/src/Geos/primTri.cpp --- gem-0.94~pre1/src/Geos/primTri.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/primTri.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/rectangle.cpp gem-0.94/src/Geos/rectangle.cpp --- gem-0.94~pre1/src/Geos/rectangle.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/rectangle.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -16,7 +16,6 @@ #include "rectangle.h" -#include "Gem/State.h" #include <string.h> CPPEXTERN_NEW_WITH_TWO_ARGS(rectangle, t_floatarg, A_DEFFLOAT, t_floatarg, diff -Nru gem-0.94~pre1/src/Geos/scopeXYZ~.cpp gem-0.94/src/Geos/scopeXYZ~.cpp --- gem-0.94~pre1/src/Geos/scopeXYZ~.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/scopeXYZ~.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -21,8 +21,6 @@ #include <stdlib.h> #include <string.h> -#include "Gem/State.h" - #define MARK startpost("%s:%d[%s] ", __FILE__, __LINE__, __FUNCTION__); post CPPEXTERN_NEW_WITH_ONE_ARG(scopeXYZ, t_floatarg, A_DEFFLOAT); diff -Nru gem-0.94~pre1/src/Geos/slideSquares.cpp gem-0.94/src/Geos/slideSquares.cpp --- gem-0.94~pre1/src/Geos/slideSquares.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/slideSquares.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/sphere3d.cpp gem-0.94/src/Geos/sphere3d.cpp --- gem-0.94~pre1/src/Geos/sphere3d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/sphere3d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/sphere.cpp gem-0.94/src/Geos/sphere.cpp --- gem-0.94~pre1/src/Geos/sphere.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/sphere.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/square.cpp gem-0.94/src/Geos/square.cpp --- gem-0.94~pre1/src/Geos/square.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/square.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -16,8 +16,6 @@ #include "square.h" -#include "Gem/State.h" - CPPEXTERN_NEW_WITH_ONE_ARG(square, t_floatarg, A_DEFFLOAT); ///////////////////////////////////////////////////////// diff -Nru gem-0.94~pre1/src/Geos/surface3d.cpp gem-0.94/src/Geos/surface3d.cpp --- gem-0.94~pre1/src/Geos/surface3d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/surface3d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // surface3d : create a plan that can be distored. // used cubic interpolation @@ -263,13 +263,16 @@ GLfloat xsize = 1.0f; GLfloat ysize = 1.0f; + GLfloat xsize0= 0.0f; GLfloat ysize0= 0.0f; if (GemShape::m_texType && GemShape::m_texNum>=3) { - xsize = GemShape::m_texCoords[1].s; + xsize0 = GemShape::m_texCoords[1].s; + xsize = GemShape::m_texCoords[0].s; ysize0 = GemShape::m_texCoords[2].t; ysize = GemShape::m_texCoords[1].t; } + GLfloat xsizediff = xsize0 - xsize; GLfloat ysizediff = ysize0 - ysize; GLfloat affich_X=static_cast<GLfloat>(nb_pts_affich_X); @@ -285,7 +288,8 @@ for (int n = 0; n < nb_pts_affich_X+1; n++) { glBegin(GL_LINE_STRIP); for (int m = 0; m < nb_pts_affich_Y+1; m++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); interpolate(n/affich_X, m/affich_Y); } glEnd(); @@ -293,7 +297,8 @@ for(int m = 0; m < nb_pts_affich_Y+1; m++) { glBegin(GL_LINE_STRIP); for(int n = 0; n < nb_pts_affich_X+1; n++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); interpolate(n/affich_X, m/affich_Y); } glEnd(); @@ -321,10 +326,12 @@ for(int n = 0; n < nb_pts_affich_X; n++) { glBegin(GL_TRIANGLE_STRIP); for(int m = 0; m < nb_pts_affich_Y+1; m++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); - interpolate(n/affich_X, m/affich_Y); - glTexCoord2f(xsize*(n+1)/affich_X, ysize+ysizediff*m/affich_Y); - interpolate((n+1)/affich_X, m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); + interpolate (n/affich_X, m/affich_Y); + glTexCoord2f(xsize+xsizediff*(n+1)/affich_X, + ysize+ysizediff*m/affich_Y); + interpolate ((n+1)/affich_X, m/affich_Y); } glEnd(); } else @@ -343,7 +350,8 @@ if (GemShape::m_texType) for(int n = 0; n < nb_pts_affich_X+1; n++) { for(int m = 0; m < nb_pts_affich_Y+1; m++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); interpolate(n/affich_X, m/affich_Y); } } else @@ -361,7 +369,8 @@ for(int n = 0; n < nb_pts_affich_X; n++) { glBegin(GL_LINE_STRIP); for(int m = 0; m < nb_pts_affich_Y; m++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); interpolate(n/affich_X, m/affich_Y); } glEnd(); @@ -388,7 +397,8 @@ for(int m = 0; m < nb_pts_affich_Y+1; m++) { glBegin(GL_LINE_STRIP); for(int n = 0; n < nb_pts_affich_X+1; n++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); interpolate(n/affich_X, m/affich_Y); } glEnd(); @@ -401,7 +411,8 @@ for(int n = 0; n < nb_pts_affich_X; n++) { glBegin(GL_LINES); for(int m = 0; m < nb_pts_affich_Y; m++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); interpolate(n/affich_X, m/affich_Y); } glEnd(); @@ -421,7 +432,8 @@ for(int m = 0; m < nb_pts_affich_Y; m++) { glBegin(GL_LINES); for(int n = 0; n < nb_pts_affich_X; n++) { - glTexCoord2f(xsize*n/affich_X, ysize+ysizediff*m/affich_Y); + glTexCoord2f(xsize+xsizediff*n/affich_X, + ysize+ysizediff*m/affich_Y); interpolate(n/affich_X, m/affich_Y); } glEnd(); @@ -448,13 +460,13 @@ glNormal3fv(norm); glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+m*nb_pts_control_X]); - glTexCoord2f(xsize*(n+1.)/(control_X-1.), + glTexCoord2f(xsize+xsizediff*(n+1.)/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+m*nb_pts_control_X+1]); - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*(m+1.)/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+(m+1)*nb_pts_control_X]); glEnd(); @@ -464,13 +476,13 @@ (GLfloat*)&m_posXYZ[n+(m+1)*nb_pts_control_X], norm); glNormal3fv(norm); glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(xsize*(n+1.)/(control_X-1.), + glTexCoord2f(xsize+xsizediff*(n+1.)/(control_X-1.), ysize+ysizediff*(m+1)/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+1+(m+1)*nb_pts_control_X]); - glTexCoord2f(xsize*(n+1.)/(control_X-1.), + glTexCoord2f(xsize+xsizediff*(n+1.)/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+1+m*nb_pts_control_X]); - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*(m+1.)/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+(m+1)*nb_pts_control_X]); glEnd(); @@ -509,7 +521,7 @@ for(int n = 0; n < nb_pts_control_X; n++) for(int m = 0; m < nb_pts_control_Y; m++) { glBegin(GL_POINTS); - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+m*nb_pts_control_X]); glEnd(); @@ -528,7 +540,7 @@ for(int n = 0; n < nb_pts_control_X; n++) { glBegin(GL_LINE_STRIP); for(int m = 0; m < nb_pts_control_Y; m++) { - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+m*nb_pts_control_X]); } @@ -538,7 +550,7 @@ for(int m = 0; m < nb_pts_control_Y; m++) { glBegin(GL_LINE_STRIP); for(int n = 0; n < nb_pts_control_X; n++) { - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+m*nb_pts_control_X]); } @@ -568,7 +580,7 @@ for(int m = 0; m < nb_pts_control_Y; m++) { glBegin(GL_LINE_STRIP); for(int n = 0; n < nb_pts_control_X; n++) { - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+m*nb_pts_control_X]); } @@ -589,7 +601,7 @@ for(int n = 0; n < nb_pts_control_X; n++) { glBegin(GL_LINE_STRIP); for(int m = 0; m < nb_pts_control_Y; m++) { - glTexCoord2f(xsize*n/(control_X-1.), + glTexCoord2f(xsize+xsizediff*n/(control_X-1.), ysize+ysizediff*m/(control_Y-1.)); glVertex3fv((GLfloat*)&m_posXYZ[n+m*nb_pts_control_X]); } diff -Nru gem-0.94~pre1/src/Geos/teapot.cpp gem-0.94/src/Geos/teapot.cpp --- gem-0.94~pre1/src/Geos/teapot.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/teapot.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/text2d.cpp gem-0.94/src/Geos/text2d.cpp --- gem-0.94~pre1/src/Geos/text2d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/text2d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -114,7 +114,7 @@ } } m_font=selectFont(); - setModified(); + //setModified(); } ///////////////////////////////////////////////////////// diff -Nru gem-0.94~pre1/src/Geos/text3d.cpp gem-0.94/src/Geos/text3d.cpp --- gem-0.94~pre1/src/Geos/text3d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/text3d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -118,7 +118,7 @@ } m_font=selectFont(); - setModified(); + //setModified(); } diff -Nru gem-0.94~pre1/src/Geos/textextruded.cpp gem-0.94/src/Geos/textextruded.cpp --- gem-0.94~pre1/src/Geos/textextruded.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/textextruded.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -70,7 +70,7 @@ } m_font->Depth(m_fontDepth); setFontSize(); - setModified(); + //setModified(); } #else diff -Nru gem-0.94~pre1/src/Geos/textoutline.cpp gem-0.94/src/Geos/textoutline.cpp --- gem-0.94~pre1/src/Geos/textoutline.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/textoutline.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/torus.cpp gem-0.94/src/Geos/torus.cpp --- gem-0.94~pre1/src/Geos/torus.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/torus.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/trapezoid.cpp gem-0.94/src/Geos/trapezoid.cpp --- gem-0.94~pre1/src/Geos/trapezoid.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/trapezoid.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -16,8 +16,6 @@ #include "trapezoid.h" -#include "Gem/State.h" - CPPEXTERN_NEW_WITH_TWO_ARGS(trapezoid, t_floatarg, A_DEFFLOAT, t_floatarg, A_DEFFLOAT); diff -Nru gem-0.94~pre1/src/Geos/triangle.cpp gem-0.94/src/Geos/triangle.cpp --- gem-0.94~pre1/src/Geos/triangle.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/triangle.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Geos/tube.cpp gem-0.94/src/Geos/tube.cpp --- gem-0.94~pre1/src/Geos/tube.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Geos/tube.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // A tube. // diff -Nru gem-0.94~pre1/src/Manips/accumrotate.cpp gem-0.94/src/Manips/accumrotate.cpp --- gem-0.94~pre1/src/Manips/accumrotate.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/accumrotate.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "accumrotate.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(accumrotate); diff -Nru gem-0.94~pre1/src/Manips/alpha.cpp gem-0.94/src/Manips/alpha.cpp --- gem-0.94~pre1/src/Manips/alpha.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/alpha.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Manips/alpha.h gem-0.94/src/Manips/alpha.h --- gem-0.94~pre1/src/Manips/alpha.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/alpha.h 2019-02-12 13:10:01.000000000 +0000 @@ -16,6 +16,7 @@ #define _INCLUDE__GEM_MANIPS_ALPHA_H_ #include "Base/GemBase.h" +#include "Gem/GemGL.h" /*----------------------------------------------------------------- ------------------------------------------------------------------- diff -Nru gem-0.94~pre1/src/Manips/ambient.cpp gem-0.94/src/Manips/ambient.cpp --- gem-0.94~pre1/src/Manips/ambient.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/ambient.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Manips/ambient.h gem-0.94/src/Manips/ambient.h --- gem-0.94~pre1/src/Manips/ambient.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/ambient.h 2019-02-12 13:10:01.000000000 +0000 @@ -19,6 +19,7 @@ #define _INCLUDE__GEM_MANIPS_AMBIENT_H_ #include "Base/GemBase.h" +#include "Gem/GemGL.h" /*----------------------------------------------------------------- ------------------------------------------------------------------- diff -Nru gem-0.94~pre1/src/Manips/ambientRGB.cpp gem-0.94/src/Manips/ambientRGB.cpp --- gem-0.94~pre1/src/Manips/ambientRGB.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/ambientRGB.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "ambientRGB.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(ambientRGB); diff -Nru gem-0.94~pre1/src/Manips/color.cpp gem-0.94/src/Manips/color.cpp --- gem-0.94~pre1/src/Manips/color.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/color.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "color.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(color); diff -Nru gem-0.94~pre1/src/Manips/colorRGB.cpp gem-0.94/src/Manips/colorRGB.cpp --- gem-0.94~pre1/src/Manips/colorRGB.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/colorRGB.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "colorRGB.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(colorRGB); diff -Nru gem-0.94~pre1/src/Manips/depth.cpp gem-0.94/src/Manips/depth.cpp --- gem-0.94~pre1/src/Manips/depth.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/depth.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "depth.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(depth); diff -Nru gem-0.94~pre1/src/Manips/diffuse.cpp gem-0.94/src/Manips/diffuse.cpp --- gem-0.94~pre1/src/Manips/diffuse.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/diffuse.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "diffuse.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(diffuse); diff -Nru gem-0.94~pre1/src/Manips/diffuseRGB.cpp gem-0.94/src/Manips/diffuseRGB.cpp --- gem-0.94~pre1/src/Manips/diffuseRGB.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/diffuseRGB.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "diffuseRGB.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(diffuseRGB); diff -Nru gem-0.94~pre1/src/Manips/emission.cpp gem-0.94/src/Manips/emission.cpp --- gem-0.94~pre1/src/Manips/emission.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/emission.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -17,6 +17,7 @@ // 1307:forum::für::umläute:2000 #include "emission.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(emission); diff -Nru gem-0.94~pre1/src/Manips/emissionRGB.cpp gem-0.94/src/Manips/emissionRGB.cpp --- gem-0.94~pre1/src/Manips/emissionRGB.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/emissionRGB.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -17,6 +17,7 @@ // 1307:forum::für::umläute:20000 #include "emissionRGB.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(emissionRGB); diff -Nru gem-0.94~pre1/src/Manips/fragment_program.cpp gem-0.94/src/Manips/fragment_program.cpp --- gem-0.94~pre1/src/Manips/fragment_program.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/fragment_program.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -17,7 +17,7 @@ ///////////////////////////////////////////////////////// #include "fragment_program.h" -#include "string.h" +#include <string.h> CPPEXTERN_NEW_WITH_ONE_ARG(fragment_program, t_symbol *, A_DEFSYM); diff -Nru gem-0.94~pre1/src/Manips/glsl_fragment.cpp gem-0.94/src/Manips/glsl_fragment.cpp --- gem-0.94~pre1/src/Manips/glsl_fragment.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/glsl_fragment.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -17,9 +17,6 @@ #include "glsl_fragment.h" -#include <string.h> -#include <stdio.h> - CPPEXTERN_NEW_WITH_ONE_ARG(glsl_fragment, t_symbol *, A_DEFSYM); ///////////////////////////////////////////////////////// @@ -54,9 +51,11 @@ { if(GLEW_VERSION_2_0) { m_shaderTarget = GL_FRAGMENT_SHADER; + m_shaderType = GL2; return true; } else if (GLEW_ARB_fragment_shader) { m_shaderTarget = GL_FRAGMENT_SHADER_ARB; + m_shaderType = ARB; return true; } @@ -76,30 +75,26 @@ return; } if(GLEW_VERSION_2_0 || GLEW_ARB_shader_objects) { - GLint bitnum = 0; - post("glsl_fragment Hardware Info"); - post("============================"); + post("fragment shader - Hardware Info"); + post("==============================="); if(GLEW_VERSION_2_0) { - glGetIntegerv( GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, &bitnum ); - post("MAX_FRAGMENT_UNIFORM_COMPONENTS: %d", bitnum); - glGetIntegerv( GL_MAX_TEXTURE_COORDS, &bitnum ); - post("MAX_TEXTURE_COORDS: %d", bitnum); - glGetIntegerv( GL_MAX_TEXTURE_IMAGE_UNITS, &bitnum ); - post("MAX_TEXTURE_IMAGE_UNITS: %d", bitnum); + GLSL_GETPOSTINT( MAX_FRAGMENT_UNIFORM_COMPONENTS ); + GLSL_GETPOSTINT( MAX_TEXTURE_COORDS ); + GLSL_GETPOSTINT( MAX_TEXTURE_IMAGE_UNITS ); if(m_shader) { - post("compiled last shader to ID: %d", m_shader); + GLint shader = m_shader; + post("compiled last shader to ID: %d", shader); } } else { - glGetIntegerv( GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB, &bitnum ); - post("MAX_FRAGMENT_UNIFORM_COMPONENTS: %d", bitnum); - glGetIntegerv( GL_MAX_TEXTURE_COORDS_ARB, &bitnum ); - post("MAX_TEXTURE_COORDS: %d", bitnum); - glGetIntegerv( GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &bitnum ); - post("MAX_TEXTURE_IMAGE_UNITS: %d", bitnum); + GLSL_GETPOSTINT( MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB ); + GLSL_GETPOSTINT( MAX_TEXTURE_COORDS_ARB ); + GLSL_GETPOSTINT( MAX_TEXTURE_IMAGE_UNITS_ARB ); if(m_shaderARB) { - post("compiled last shaderARB to ID: %d", m_shaderARB); + GLhandleARB shader = m_shaderARB; + + post("compiled last shaderARB to ID: %d", shader); } } } else { diff -Nru gem-0.94~pre1/src/Manips/glsl_fragment.h gem-0.94/src/Manips/glsl_fragment.h --- gem-0.94~pre1/src/Manips/glsl_fragment.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/glsl_fragment.h 2019-02-12 13:10:01.000000000 +0000 @@ -20,11 +20,6 @@ #include "Manips/glsl_vertex.h" -#define GEM_shader_none 0 -#define GEM_shader_GLSL 1 -#define GEM_shader_CG 2 - - /*----------------------------------------------------------------- ------------------------------------------------------------------- CLASS diff -Nru gem-0.94~pre1/src/Manips/glsl_geometry.cpp gem-0.94/src/Manips/glsl_geometry.cpp --- gem-0.94~pre1/src/Manips/glsl_geometry.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/glsl_geometry.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -16,17 +16,6 @@ ///////////////////////////////////////////////////////// #include "glsl_geometry.h" -#include "Gem/Manager.h" - -#include <string.h> -#include <stdlib.h> -#include <stdio.h> -#ifdef _WIN32 -# include <io.h> -# define close _close -#else -# include <unistd.h> -#endif CPPEXTERN_NEW_WITH_ONE_ARG(glsl_geometry, t_symbol *, A_DEFSYM); @@ -38,37 +27,10 @@ // Constructor // ///////////////////////////////////////////////////////// -glsl_geometry :: glsl_geometry() : - m_shaderTarget(0), - m_shader(0), - m_shaderARB(0), - m_compiled(0), m_size(0), - m_shaderString(NULL), - m_shaderFilename(NULL), - m_shaderID(0), - m_outShaderID(0), - m_idmapper("glsl.shader"), - m_idmapped(0.) -{ - // create an outlet to send shader object ID - m_outShaderID = outlet_new(this->x_obj, &s_float); -} -glsl_geometry :: glsl_geometry(t_symbol *filename) : - m_shaderTarget(0), - m_shader(0), - m_shaderARB(0), - m_compiled(0), m_size(0), - m_shaderString(NULL), - m_shaderFilename(NULL), - m_shaderID(0), - m_outShaderID(0), - m_idmapper("glsl.shader"), - m_idmapped(0.) +glsl_geometry :: glsl_geometry(t_symbol *filename) + : glsl_vertex() { openMess(filename); - - // create an outlet to send shader object ID - m_outShaderID = outlet_new(this->x_obj, &s_float); } //////////////////////////////////////////////////////// @@ -81,191 +43,6 @@ } //////////////////////////////////////////////////////// -// closeMess -// -///////////////////////////////////////////////////////// -void glsl_geometry :: closeMess(void) -{ - if(m_shaderString) { - delete [] m_shaderString; - } - m_shaderString=NULL; - m_size=0; - if(m_shader) { - glDeleteShader( m_shader ); - } - if(m_shaderARB) { - glDeleteObjectARB( m_shaderARB ); - } - - m_idmapper.del(m_idmapped); - m_idmapped=0.; - - m_shader=0; - m_shaderARB = 0; - - m_compiled=0; -} - -//////////////////////////////////////////////////////// -// openMess -// -///////////////////////////////////////////////////////// -bool glsl_geometry :: openMessGL2(void) -{ - if (m_shader) { - glDeleteShader( m_shader ); - m_idmapper.del(m_idmapped); - m_idmapped=0.; - } - m_shader = glCreateShader(m_shaderTarget); - - if (!m_shader) { - error("could not create GLSL shader object"); - return false; - } - const char * vs = m_shaderString; - glShaderSource( m_shader, 1, &vs, NULL ); - glCompileShader( m_shader ); - glGetShaderiv( m_shader, GL_COMPILE_STATUS, &m_compiled ); - if (!m_compiled) { - GLint length; - GLchar* log; - glGetShaderiv( m_shader, GL_INFO_LOG_LENGTH, &length ); - log = (GLchar*)malloc( length * sizeof(GLchar) ); - glGetShaderInfoLog( m_shader, length, NULL, log ); - post("compile Info_log:"); - post("%s", log ); - error("shader not loaded"); - free(log); - return false; - } - if(m_shader) { - t_atom a; - m_idmapped=m_idmapper.set(m_shader, m_idmapped); - SETFLOAT(&a, m_idmapped); - outlet_list(m_outShaderID, gensym("list"), 1, &a); - } - return true; -} - -bool glsl_geometry :: openMessARB(void) -{ - if(m_shaderARB) { - glDeleteObjectARB( m_shaderARB ); - m_idmapper.del(m_idmapped); - m_idmapped=0.; - } - m_shaderARB = glCreateShaderObjectARB(m_shaderTarget); - - if (!m_shaderARB) { - error("could not create ARB shader object"); - return false; - } - const char * vs = m_shaderString; - glShaderSourceARB( m_shaderARB, 1, &vs, NULL ); - glCompileShaderARB( m_shaderARB ); - glGetObjectParameterivARB( m_shaderARB, GL_OBJECT_COMPILE_STATUS_ARB, - &m_compiled ); - if (!m_compiled) { - GLint length; - GLcharARB* log; - glGetObjectParameterivARB( m_shaderARB, GL_OBJECT_INFO_LOG_LENGTH_ARB, - &length ); - log = (GLcharARB*)malloc( length * sizeof(GLcharARB) ); - glGetInfoLogARB( m_shaderARB, length, NULL, log ); - post("compile Info_log:"); - post("%s", log ); - error("shader not loaded"); - free(log); - return false; - } - if(m_shaderARB) { - t_atom a; - m_idmapped=m_idmapper.set(m_shaderARB, m_idmapped); - SETFLOAT(&a, m_idmapped); - outlet_list(m_outShaderID, gensym("list"), 1, &a); - } - return true; -} - - - - -void glsl_geometry :: openMess(t_symbol *filename) -{ - if(NULL==filename || NULL==filename->s_name) { - return; - } - if(&s_==filename) { - return; - } - - m_shaderFilename=filename; - - if (getState()==RENDERING) { - loadShader(); - } - return; -} - -void glsl_geometry :: loadShader() -{ - if(NULL==m_shaderFilename || NULL==m_shaderFilename->s_name) { - return; - } - if(!isRunnable()) { - return; - } - - // Clean up any open files - closeMess(); - - std::string fn = findFile(m_shaderFilename->s_name); - const char*buf=fn.c_str(); - - FILE *file = fopen(buf,"rb"); - if(file) { - fseek(file,0,SEEK_END); - long size = ftell(file); - if(size<0) { - fclose(file); - error("error reading filesize"); - return; - } - m_shaderString = new char[size + 1]; - memset(m_shaderString,0,size + 1); - fseek(file,0,SEEK_SET); - size_t count=fread(m_shaderString,1,size,file); - m_shaderString[size]='\0'; - int err=ferror(file); - fclose(file); - if(err) { - error("error %d reading file (%d<%d)", err, count, size); - return; - } - } else { - error("could not find shader-file: '%s'", buf); - return; - /* - // assuming that the "filename" is actually a shader-program per se - m_shaderString = new char[strlen(buf) + 1]; - strcpy(m_shaderString,buf); - */ - } - m_size=strlen(m_shaderString); - - if(GLEW_EXT_geometry_shader4) { // GLEW_VERSION_2_1 - openMessGL2(); - } else if (GLEW_ARB_geometry_shader4) { - openMessARB(); - } - - verbose(1, "Loaded file: %s", buf); - m_shaderFilename=NULL; -} - -//////////////////////////////////////////////////////// // extension check // ///////////////////////////////////////////////////////// @@ -273,9 +50,11 @@ { if(GLEW_EXT_geometry_shader4) { // GLEW_VERSION_2_1 ?? m_shaderTarget = GL_GEOMETRY_SHADER_EXT; + m_shaderType = GL2; return true; } else if (GLEW_ARB_geometry_shader4) { m_shaderTarget = GL_GEOMETRY_SHADER_ARB; + m_shaderType = ARB; return true; } @@ -284,36 +63,6 @@ } //////////////////////////////////////////////////////// -// startRendering -// -///////////////////////////////////////////////////////// -void glsl_geometry :: startRendering() -{ - loadShader(); - - if (m_shaderString == NULL) { - error("need to load a shader"); - return; - } -} - -//////////////////////////////////////////////////////// -// render -// -///////////////////////////////////////////////////////// -void glsl_geometry :: render(GemState *state) -{ -} - -//////////////////////////////////////////////////////// -// postrender -// -///////////////////////////////////////////////////////// -void glsl_geometry :: postrender(GemState *state) -{ -} - -//////////////////////////////////////////////////////// // printInfo // ///////////////////////////////////////////////////////// @@ -324,40 +73,31 @@ return; } if(GLEW_EXT_geometry_shader4 || GLEW_ARB_geometry_shader4) { - GLint bitnum = 0; - post("glsl_geometry Hardware Info"); - post("==========================="); + post("geometry shader - Hardware Info"); + post("==============================="); if(GLEW_EXT_geometry_shader4) { - glGetIntegerv( GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT, &bitnum ); - post("MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT: %d", bitnum); - glGetIntegerv( GL_MAX_VARYING_FLOATS, &bitnum ); - post("MAX_VARYING_FLOATS: %d", bitnum); - glGetIntegerv( GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &bitnum ); - post("MAX_COMBINED_TEXTURE_IMAGE_UNITS: %d", bitnum); - glGetIntegerv( GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT, &bitnum ); - post("MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT: %d", bitnum); - glGetIntegerv( GL_MAX_TEXTURE_IMAGE_UNITS, &bitnum ); - post("MAX_TEXTURE_IMAGE_UNITS: %d", bitnum); - glGetIntegerv( GL_MAX_TEXTURE_COORDS, &bitnum ); - post("MAX_TEXTURE_COORDS: %d", bitnum); + GLSL_GETPOSTINT( MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT ); + GLSL_GETPOSTINT( MAX_VARYING_FLOATS ); + GLSL_GETPOSTINT( MAX_COMBINED_TEXTURE_IMAGE_UNITS ); + GLSL_GETPOSTINT( MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT ); + GLSL_GETPOSTINT( MAX_TEXTURE_IMAGE_UNITS ); + GLSL_GETPOSTINT( MAX_TEXTURE_COORDS ); + if(m_shader) { - post("compiled last shader to ID: %d", m_shader); + GLint shader = m_shader; + post("compiled last shader to ID: %d", shader); } } else { - glGetIntegerv( GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB, &bitnum ); - post("MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB: %d", bitnum); - glGetIntegerv( GL_MAX_VARYING_FLOATS_ARB, &bitnum ); - post("MAX_VARYING_FLOATS: %d", bitnum); - glGetIntegerv( GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB, &bitnum ); - post("MAX_COMBINED_TEXTURE_IMAGE_UNITS: %d", bitnum); - glGetIntegerv( GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB, &bitnum ); - post("MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: %d", bitnum); - glGetIntegerv( GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &bitnum ); - post("MAX_TEXTURE_IMAGE_UNITS: %d", bitnum); - glGetIntegerv( GL_MAX_TEXTURE_COORDS_ARB, &bitnum ); - post("MAX_TEXTURE_COORDS: %d", bitnum); + GLSL_GETPOSTINT( MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB ); + GLSL_GETPOSTINT( MAX_VARYING_FLOATS_ARB ); + GLSL_GETPOSTINT( MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB ); + GLSL_GETPOSTINT( MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB ); + GLSL_GETPOSTINT( MAX_TEXTURE_IMAGE_UNITS_ARB ); + GLSL_GETPOSTINT( MAX_TEXTURE_COORDS_ARB ); + if(m_shaderARB) { - post("compiled last shaderARB to ID: %d", m_shaderARB); + GLhandleARB shader = m_shaderARB; + post("compiled last shaderARB to ID: %d", shader); } } } else { @@ -371,6 +111,4 @@ ///////////////////////////////////////////////////////// void glsl_geometry :: obj_setupCallback(t_class *classPtr) { - CPPEXTERN_MSG1(classPtr, "open", openMess, t_symbol*); - CPPEXTERN_MSG0(classPtr, "print", printInfo); } diff -Nru gem-0.94~pre1/src/Manips/glsl_geometry.h gem-0.94/src/Manips/glsl_geometry.h --- gem-0.94~pre1/src/Manips/glsl_geometry.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/glsl_geometry.h 2019-02-12 13:10:01.000000000 +0000 @@ -18,11 +18,7 @@ #ifndef _INCLUDE__GEM_MANIPS_GLSL_GEOMETRY_H_ #define _INCLUDE__GEM_MANIPS_GLSL_GEOMETRY_H_ -#include "Manips/glsl_program.h" - -#define GEM_shader_none 0 -#define GEM_shader_GLSL 1 -#define GEM_shader_CG 2 +#include "Manips/glsl_vertex.h" /*----------------------------------------------------------------- ------------------------------------------------------------------- @@ -36,9 +32,9 @@ DESCRIPTION -----------------------------------------------------------------*/ -class GEM_EXTERN glsl_geometry : public GemBase +class GEM_EXTERN glsl_geometry : public glsl_vertex { - CPPEXTERN_HEADER(glsl_geometry, GemBase); + CPPEXTERN_HEADER(glsl_geometry, glsl_vertex); public: @@ -53,50 +49,13 @@ // Destructor virtual ~glsl_geometry(); - ////////// - // close the shader file - virtual void closeMess(void); - ////////// - // open a shader up - virtual bool openMessGL2(void); - virtual bool openMessARB(void); - virtual void openMess(t_symbol *filename); - virtual void loadShader(void); - - //////// // extension check virtual bool isRunnable(void); ////////// - // Do the rendering - virtual void render(GemState *state); - - ////////// - // Clear the dirty flag on the pixBlock - virtual void postrender(GemState *state); - - ////////// - virtual void startRendering(); - - ////////// // Print Info about Hardware limits virtual void printInfo(); - - ////////// - // - GLuint m_shaderTarget; - GLuint m_shader; - GLhandleARB m_shaderARB; - GLint m_compiled; - int m_size; - char* m_shaderString; - t_symbol* m_shaderFilename; - - GLint m_shaderID; - t_outlet *m_outShaderID; - gem::utils::gl::GLuintMap m_idmapper; - float m_idmapped; }; #endif // for header file diff -Nru gem-0.94~pre1/src/Manips/glsl_program.cpp gem-0.94/src/Manips/glsl_program.cpp --- gem-0.94~pre1/src/Manips/glsl_program.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/glsl_program.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -13,16 +13,155 @@ ///////////////////////////////////////////////////////// #include "glsl_program.h" -#include "Utils/GLUtil.h" -#include <string.h> -#include <stdlib.h> - -#include <map> using namespace gem::utils::gl; CPPEXTERN_NEW(glsl_program); +namespace { + GLenum uniform2type(GLenum type) { + /* the base type for a (complex) uniform type; + determines whether we use glUniform1f or glUniform1i + */ + switch(type) { + default: break; + case GL_FLOAT: + case GL_FLOAT_VEC2: + case GL_FLOAT_VEC3: + case GL_FLOAT_VEC4: + case GL_FLOAT_MAT2: + case GL_FLOAT_MAT3: + case GL_FLOAT_MAT4: + return GL_FLOAT; + case GL_INT: + case GL_INT_VEC2: + case GL_INT_VEC3: + case GL_INT_VEC4: + return GL_INT; + case GL_BOOL: + case GL_BOOL_VEC2: + case GL_BOOL_VEC3: + case GL_BOOL_VEC4: + return GL_INT; + case GL_SAMPLER_1D: + case GL_SAMPLER_2D: + case GL_SAMPLER_3D: + case GL_SAMPLER_CUBE: + case GL_SAMPLER_1D_SHADOW: + case GL_SAMPLER_2D_SHADOW: + case GL_SAMPLER_2D_RECT_ARB: + return GL_INT; + } + /* ARB types */ + switch(type) { + default: break; + case GL_FLOAT: + case GL_FLOAT_VEC2_ARB: + case GL_FLOAT_VEC3_ARB: + case GL_FLOAT_VEC4_ARB: + return GL_FLOAT; + case GL_INT: + case GL_INT_VEC2_ARB: + case GL_INT_VEC3_ARB: + case GL_INT_VEC4_ARB: + return GL_INT; + case GL_BOOL_ARB: + case GL_BOOL_VEC2_ARB: + case GL_BOOL_VEC3_ARB: + case GL_BOOL_VEC4_ARB: + return GL_INT; + case GL_FLOAT_MAT2_ARB: + case GL_FLOAT_MAT3_ARB: + case GL_FLOAT_MAT4_ARB: + return GL_FLOAT; + case GL_SAMPLER_1D_ARB: + case GL_SAMPLER_2D_ARB: + case GL_SAMPLER_3D_ARB: + case GL_SAMPLER_CUBE_ARB: + case GL_SAMPLER_1D_SHADOW_ARB: + case GL_SAMPLER_2D_SHADOW_ARB: + case GL_SAMPLER_2D_RECT_ARB: + return GL_INT; + } + error("[glsl_program] unknown uniform type %d, assuming float", type); + return GL_FLOAT; + } + GLint uniform2numelements(GLenum type) { + /* the base number of elements for a (complex) uniform type; + */ + switch(type) { + default: break; + case GL_FLOAT: + case GL_INT: + case GL_BOOL: + return 1; + case GL_FLOAT_VEC2: + case GL_INT_VEC2: + case GL_BOOL_VEC2: + return 2; + case GL_FLOAT_VEC3: + case GL_INT_VEC3: + case GL_BOOL_VEC3: + return 3; + case GL_FLOAT_VEC4: + case GL_INT_VEC4: + case GL_BOOL_VEC4: + return 4; + case GL_FLOAT_MAT2: + return 4; + case GL_FLOAT_MAT3: + return 9; + case GL_FLOAT_MAT4: + return 16; + case GL_SAMPLER_1D: + case GL_SAMPLER_2D: + case GL_SAMPLER_3D: + case GL_SAMPLER_CUBE: + case GL_SAMPLER_1D_SHADOW: + case GL_SAMPLER_2D_SHADOW: + case GL_SAMPLER_2D_RECT_ARB: + return 1; + } + /* ARB */ + switch(type) { + default: break; + case GL_FLOAT: + case GL_INT: + case GL_BOOL_ARB: + return 1; + case GL_FLOAT_VEC2_ARB: + case GL_INT_VEC2_ARB: + case GL_BOOL_VEC2_ARB: + return 2; + case GL_FLOAT_VEC3_ARB: + case GL_INT_VEC3_ARB: + case GL_BOOL_VEC3_ARB: + return 3; + case GL_FLOAT_VEC4_ARB: + case GL_INT_VEC4_ARB: + case GL_BOOL_VEC4_ARB: + return 4; + case GL_FLOAT_MAT2_ARB: + return 4; + case GL_FLOAT_MAT3_ARB: + return 9; + case GL_FLOAT_MAT4_ARB: + return 16; + case GL_SAMPLER_1D_ARB: + case GL_SAMPLER_2D_ARB: + case GL_SAMPLER_3D_ARB: + case GL_SAMPLER_CUBE_ARB: + case GL_SAMPLER_1D_SHADOW_ARB: + case GL_SAMPLER_2D_SHADOW_ARB: + case GL_SAMPLER_2D_RECT_ARB: + return 1; + } + + error("[glsl_program] unknown base size for uniform type %d, assuming 1", type); + return 1; + } +}; + ///////////////////////////////////////////////////////// // // glsl_program @@ -35,10 +174,10 @@ m_program(0), m_programARB(0), m_maxLength(0), m_uniformCount(0), - m_symname(NULL), m_size(NULL), m_type(NULL), m_loc(NULL), - m_param(NULL), m_flag(NULL), m_linked(0), m_wantLink(false), - m_num(0), - m_outProgramID(NULL), + m_uniform(0), + m_linked(0), + m_numShaders(0), + m_outProgramID(0), m_shadermapper("glsl.shader"), m_programmapper("glsl.program"), m_programmapped(0.), m_geoInType(GL_TRIANGLES), m_geoOutType(GL_TRIANGLE_STRIP), @@ -77,66 +216,42 @@ void glsl_program :: destroyArrays() { - if (m_param) { - int i; - for (i = 0; i < m_uniformCount; i++) { - if(m_param[i]) { - delete[]m_param[i]; - } - m_param[i]=NULL; + for(unsigned int i = 0; i<m_uniformCount; i++) { + t_uniform&uni = m_uniform[i]; + switch(uniform2type(uni.type)) { + case GL_FLOAT: { + delete[]uni.param.f; + uni.param.f = 0; + break; + } + case GL_INT: { + delete[]uni.param.i; + uni.param.i = 0; + break; + } } } - - if (m_size) { - delete[]m_size; - } - m_size =NULL; - if (m_type) { - delete[]m_type; - } - m_type =NULL; - if (m_symname) { - delete[]m_symname; - } - m_symname=NULL; - if (m_flag) { - delete[]m_flag; - } - m_flag =NULL; - if (m_loc) { - delete[]m_loc; - } - m_loc =NULL; - if (m_param) { - delete[]m_param; - } - m_param =NULL; + delete[]m_uniform; + m_uniform = 0; } void glsl_program :: createArrays() { int i; - - m_size = new GLint [m_uniformCount]; - m_type = new GLenum [m_uniformCount]; - m_symname= new t_symbol* [m_uniformCount]; - m_param = new float* [m_uniformCount]; - m_flag = new int [m_uniformCount]; - m_loc = new GLint [m_uniformCount]; + m_uniform = new t_uniform[m_uniformCount]; // allocate maximum size for a param, which is a 4x4 matrix of floats // in the future, only allocate for specific type // also, technically we should handle arrays of matrices, too...sheesh! for (i = 0; i < m_uniformCount; i++) { - int j=0; - m_size [i] = 0; - m_type [i] = 0; - m_symname[i] = 0; - m_loc [i] = 0; - m_param [i] = new float[16]; - m_flag [i] = 0; - for(j=0; j<16; j++) { - m_param[i][j]=0; - } + t_uniform&uni = m_uniform[i]; + uni.size = 0; + uni.type = 0; + uni.name = 0; + uni.loc = 0; + uni.param.f = 0; + uni.arraysize = 0; + uni.paramsize = 1; + uni.changed = false; } } @@ -160,97 +275,79 @@ if (m_linked) { glUseProgram( m_program ); for(int i=0; i<m_uniformCount; i++) { - if(m_flag[i]) { - switch (m_type[i]) { + t_uniform&uni = m_uniform[i]; + if(uni.changed) { + switch (uni.type) { /* float vectors */ case GL_FLOAT: - glUniform1f( m_loc[i], static_cast<GLfloat>(m_param[i][0]) ); + glUniform1fv( uni.loc, uni.arraysize, uni.param.f ); break; case GL_FLOAT_VEC2: - glUniform2f( m_loc[i], static_cast<GLfloat>(m_param[i][0]), - static_cast<GLfloat>(m_param[i][1]) ); + glUniform2fv( uni.loc, uni.arraysize, uni.param.f ); break; case GL_FLOAT_VEC3: - glUniform3f( m_loc[i], static_cast<GLfloat>(m_param[i][0]), - static_cast<GLfloat>(m_param[i][1]), - static_cast<GLfloat>(m_param[i][2]) ); + glUniform3fv( uni.loc, uni.arraysize, uni.param.f ); break; case GL_FLOAT_VEC4: - glUniform4f( m_loc[i], static_cast<GLfloat>(m_param[i][0]), - static_cast<GLfloat>(m_param[i][1]), - static_cast<GLfloat>(m_param[i][2]), static_cast<GLfloat>(m_param[i][3]) ); + glUniform4fv( uni.loc, uni.arraysize, uni.param.f ); break; - /* int vectors */ + + /* int vectors */ case GL_INT: - glUniform1i( m_loc[i], static_cast<GLint>(m_param[i][0]) ); + glUniform1iv( uni.loc, uni.arraysize, uni.param.i ); break; case GL_INT_VEC2: - glUniform2i( m_loc[i], static_cast<GLint>(m_param[i][0]), - static_cast<GLint>(m_param[i][1]) ); + glUniform2iv( uni.loc, uni.arraysize, uni.param.i ); break; case GL_INT_VEC3: - glUniform3i(m_loc[i], - static_cast<GLint>(m_param[i][0]), static_cast<GLint>(m_param[i][1]), - static_cast<GLint>(m_param[i][2]) ); + glUniform3iv( uni.loc, uni.arraysize, uni.param.i ); break; case GL_INT_VEC4: - glUniform4i(m_loc[i], - static_cast<GLint>(m_param[i][0]), static_cast<GLint>(m_param[i][1]), - static_cast<GLint>(m_param[i][2]), static_cast<GLint>(m_param[i][3]) ); + glUniform4iv( uni.loc, uni.arraysize, uni.param.i ); break; - /* bool vectors */ + + /* bool vectors */ case GL_BOOL: - glUniform1f( m_loc[i], static_cast<GLfloat>(m_param[i][0]) ); + glUniform1iv( uni.loc, uni.arraysize, uni.param.i ); break; case GL_BOOL_VEC2: - glUniform2f( m_loc[i], static_cast<GLfloat>(m_param[i][0]), - static_cast<GLfloat>(m_param[i][1]) ); + glUniform2iv( uni.loc, uni.arraysize, uni.param.i ); break; case GL_BOOL_VEC3: - glUniform3f( m_loc[i], - static_cast<GLfloat>(m_param[i][0]), static_cast<GLfloat>(m_param[i][1]), - static_cast<GLfloat>(m_param[i][2]) ); + glUniform3iv( uni.loc, uni.arraysize, uni.param.i ); break; case GL_BOOL_VEC4: - glUniform4f( m_loc[i], - static_cast<GLfloat>(m_param[i][0]), static_cast<GLfloat>(m_param[i][1]), - static_cast<GLfloat>(m_param[i][2]), static_cast<GLfloat>(m_param[i][3]) ); + glUniform4iv( uni.loc, uni.arraysize, uni.param.i ); break; - /* float matrices */ + /* float matrices */ case GL_FLOAT_MAT2: // GL_TRUE = row major order, GL_FALSE = column major - glUniformMatrix2fv( m_loc[i], 1, GL_FALSE, m_param[i] ); + glUniformMatrix2fv( uni.loc, uni.arraysize, GL_FALSE, uni.param.f ); break; case GL_FLOAT_MAT3: - glUniformMatrix3fv( m_loc[i], 1, GL_FALSE, m_param[i] ); + glUniformMatrix3fv( uni.loc, uni.arraysize, GL_FALSE, uni.param.f ); break; case GL_FLOAT_MAT4: - glUniformMatrix4fv( m_loc[i], 1, GL_FALSE, m_param[i] ); + glUniformMatrix4fv( uni.loc, uni.arraysize, GL_FALSE, uni.param.f ); break; /* textures */ case GL_SAMPLER_1D: - break; case GL_SAMPLER_2D: - glUniform1i(m_loc[i], m_param[i][0]); - break; case GL_SAMPLER_3D: - break; case GL_SAMPLER_CUBE: - break; case GL_SAMPLER_1D_SHADOW: - break; case GL_SAMPLER_2D_SHADOW: - break; case GL_SAMPLER_2D_RECT_ARB: - glUniform1i(m_loc[i], static_cast<GLint>(m_param[i][0])); + glUniform1iv(uni.loc, uni.arraysize, uni.param.i); break; + default: - ; + break; } // remove flag because the value is in GL's state now... - m_flag[i]=0; + uni.changed = false; } } @@ -266,99 +363,82 @@ if (m_linked) { glUseProgramObjectARB( m_programARB ); for(int i=0; i<m_uniformCount; i++) { - if(m_flag[i]) { - switch (m_type[i]) { + t_uniform&uni = m_uniform[i]; + if(uni.changed) { + switch (uni.type) { /* float vectors */ case GL_FLOAT: - glUniform1fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]) ); + glUniform1fARB( uni.loc, uni.param.f[0] ); break; case GL_FLOAT_VEC2_ARB: - glUniform2fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]), - static_cast<GLfloat>(m_param[i][1]) ); + glUniform2fARB( uni.loc, + uni.param.f[0], uni.param.f[1] ); break; case GL_FLOAT_VEC3_ARB: - glUniform3fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]), - static_cast<GLfloat>(m_param[i][1]), - static_cast<GLfloat>(m_param[i][2]) ); + glUniform3fARB( uni.loc, + uni.param.f[0], uni.param.f[1], uni.param.f[2] ); break; case GL_FLOAT_VEC4_ARB: - glUniform4fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]), - static_cast<GLfloat>(m_param[i][1]), - static_cast<GLfloat>(m_param[i][2]), static_cast<GLfloat>(m_param[i][3]) ); + glUniform4fARB( uni.loc, + uni.param.f[0], uni.param.f[1], uni.param.f[2], uni.param.f[3] ); break; /* int vectors */ case GL_INT: - glUniform1iARB( m_loc[i], static_cast<GLint>(m_param[i][0]) ); + glUniform1iARB( uni.loc, uni.param.i[0] ); break; case GL_INT_VEC2_ARB: - glUniform2iARB( m_loc[i], static_cast<GLint>(m_param[i][0]), - static_cast<GLint>(m_param[i][1]) ); + glUniform2iARB( uni.loc, uni.param.i[0], uni.param.i[1] ); break; case GL_INT_VEC3_ARB: - glUniform3iARB( m_loc[i], static_cast<GLint>(m_param[i][0]), - static_cast<GLint>(m_param[i][1]), - static_cast<GLint>(m_param[i][2]) ); + glUniform3iARB( uni.loc, + uni.param.i[0], uni.param.i[1], uni.param.i[2] ); break; case GL_INT_VEC4_ARB: - glUniform4iARB( m_loc[i], static_cast<GLint>(m_param[i][0]), - static_cast<GLint>(m_param[i][1]), - static_cast<GLint>(m_param[i][2]), static_cast<GLint>(m_param[i][3]) ); + glUniform4iARB( uni.loc, uni.param.i[0], uni.param.i[1], uni.param.i[2], uni.param.i[3] ); break; /* bool vectors */ case GL_BOOL_ARB: - glUniform1fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]) ); + glUniform1fARB( uni.loc, uni.param.f[0] ); break; case GL_BOOL_VEC2_ARB: - glUniform2fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]), - static_cast<GLfloat>(m_param[i][1]) ); + glUniform2fARB( uni.loc, uni.param.f[0], uni.param.f[1] ); break; case GL_BOOL_VEC3_ARB: - glUniform3fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]), - static_cast<GLfloat>(m_param[i][1]), - static_cast<GLfloat>(m_param[i][2]) ); + glUniform3fARB( uni.loc, uni.param.f[0], uni.param.f[1], uni.param.f[2] ); break; case GL_BOOL_VEC4_ARB: - glUniform4fARB( m_loc[i], static_cast<GLfloat>(m_param[i][0]), - static_cast<GLfloat>(m_param[i][1]), - static_cast<GLfloat>(m_param[i][2]), static_cast<GLfloat>(m_param[i][3]) ); + glUniform4fARB( uni.loc, uni.param.f[0], uni.param.f[1], uni.param.f[2], uni.param.f[3] ); break; /* float matrices */ case GL_FLOAT_MAT2_ARB: // GL_TRUE = row major order, GL_FALSE = column major - glUniformMatrix2fvARB( m_loc[i], 1, GL_FALSE, m_param[i] ); + glUniformMatrix2fvARB( uni.loc, 1, GL_FALSE, uni.param.f ); break; case GL_FLOAT_MAT3_ARB: - glUniformMatrix3fvARB( m_loc[i], 1, GL_FALSE, m_param[i] ); + glUniformMatrix3fvARB( uni.loc, 1, GL_FALSE, uni.param.f ); break; case GL_FLOAT_MAT4_ARB: - glUniformMatrix4fvARB( m_loc[i], 1, GL_FALSE, m_param[i] ); + glUniformMatrix4fvARB( uni.loc, 1, GL_FALSE, uni.param.f ); break; /* textures */ case GL_SAMPLER_1D_ARB: - break; case GL_SAMPLER_2D_ARB: - glUniform1iARB(m_loc[i], m_param[i][0]); - break; case GL_SAMPLER_3D_ARB: - break; case GL_SAMPLER_CUBE_ARB: - break; case GL_SAMPLER_1D_SHADOW_ARB: - break; case GL_SAMPLER_2D_SHADOW_ARB: - break; case GL_SAMPLER_2D_RECT_ARB: - glUniform1iARB(m_loc[i], m_param[i][0]); + glUniform1iARB(uni.loc, uni.param.f[0]); break; default: - ; + break; } // remove flag because the value is in GL's state now... - m_flag[i]=0; + uni.changed = false; } } // glUniform1iARB(glGetUniformLocationARB(program_object, "MyTex1"), 1); @@ -368,14 +448,13 @@ } } +void glsl_program :: startRendering() { + LinkProgram(); +} + void glsl_program :: render(GemState *state) { - if(m_wantLink) { - m_wantLink=0; - LinkProgram(); - } - if(GLEW_VERSION_2_0) { renderGL2(); } else { @@ -403,30 +482,42 @@ ///////////////////////////////////////////////////////// void glsl_program :: paramMess(t_symbol*s,int argc, t_atom *argv) { - if (m_program || m_programARB) { - int i=0; - for(i=0; i<m_uniformCount; i++) { - if(s==m_symname[i]) { - // post("uniform parameters #%d", i); - // don't know what to do with that... - // sketch: - // copy the values into memory and add a flag that we have them for this parameter - // in the render cycle use it - for (int j=0; j < argc; j++) { - m_param[i][j] = atom_getfloat(&argv[j]); - } - // tell the GL state that this variable has changed next render - m_flag[i] = 1; - setModified(); - // should we return here? It only allows one m_param[i] to be changed - return; + if (!(m_program || m_programARB)) + return; + + int unicount; + for(unicount=0; unicount<m_uniformCount; unicount++) { + t_uniform&uni = m_uniform[unicount]; + if(s!=uni.name) + continue; + + // don't know what to do with that... + // sketch: + // copy the values into memory and add a flag that we have them for this parameter + // in the render cycle use it + const int maxargc = uni.arraysize * uni.paramsize; + if(argc > maxargc) argc=maxargc; + switch(uniform2type(uni.type)) { + case GL_FLOAT: { + for (int j=0; j < argc; j++) { + uni.param.f[j] = atom_getfloat(&argv[j]); + } + break; + } + case GL_INT: { + for (int j=0; j < argc; j++) { + uni.param.i[j] = (GLint)atom_getfloat(&argv[j]); } } - // if we reach this, then no param-name was matching! - if(i>m_num) { - error("no method for '%s' (it's not uniform variable)", s->s_name); } + // tell the GL state that this variable has changed next render + uni.changed = true; + // should we return here? It only allows one uni.param to be changed + return; } + + // if we reach this, then no param-name was matching! + error("no method for '%s' (it's not uniform variable)", s->s_name); } ///////////////////////////////////////////////////////// @@ -442,9 +533,9 @@ return; } - m_num=0; + m_numShaders=0; for (i = 0; i < argc; i++) { - if(m_num>=MAX_NUM_SHADERS) { + if(m_numShaders>=MAX_NUM_SHADERS) { post("only %d shaders supported; skipping the rest", MAX_NUM_SHADERS); break; } @@ -453,12 +544,14 @@ try { ui=m_shadermapper.get(f); } catch(GemException&x) { - post("unable to get shader for %f", f); + error("unable to get shaderID for %f...skipping!", f); + continue; } - m_shaderObj[m_num] = ui; - m_shaderObjARB[m_num] = ui;//static_cast<GLhandleARB>(fi.i); - m_num++; + m_shaderObj[m_numShaders] = ui; + m_shaderObjARB[m_numShaders] = ui;//static_cast<GLhandleARB>(fi.i); + m_numShaders++; } + setModified(); } ///////////////////////////////////////////////////////// @@ -471,6 +564,12 @@ GLsizei length=0; int i; + int numVertexShaders = 0; + int numTessEvalShaders = 0; + int numTessControlShaders = 0; + int numGeometryShaders = 0; + int numFragmentShaders = 0; + if(m_program) { glDeleteProgram( m_program ); m_programmapper.del(m_programmapped); @@ -478,12 +577,31 @@ m_program = 0; } m_program = glCreateProgram(); - for (i = 0; i < m_num; i++) { + for (i = 0; i < m_numShaders; i++) { + GLint type; glAttachShader( m_program, m_shaderObj[i] ); + glGetShaderiv ( m_shaderObj[i], GL_SHADER_TYPE, &type); + switch(type) { + case GL_VERTEX_SHADER: + numVertexShaders++; + break; + case GL_GEOMETRY_SHADER: + numGeometryShaders++; + break; + case GL_FRAGMENT_SHADER: + numFragmentShaders++; + break; + case GL_TESS_EVALUATION_SHADER: + numTessEvalShaders++; + break; + case GL_TESS_CONTROL_SHADER: + numTessControlShaders++; + break; + } } /* setup geometry shader */ - if(glProgramParameteriEXT) { + if(numGeometryShaders>0 && glProgramParameteriEXT) { glProgramParameteriEXT(m_program,GL_GEOMETRY_INPUT_TYPE_EXT,m_geoInType); glProgramParameteriEXT(m_program,GL_GEOMETRY_OUTPUT_TYPE_EXT,m_geoOutType); @@ -494,9 +612,32 @@ glProgramParameteriEXT(m_program,GL_GEOMETRY_VERTICES_OUT_EXT,temp); } + if(numTessEvalShaders>0 && glPatchParameterfv) { + float kInnerTessellationLevel = 1.0f; + float kOuterTessellationLevel = 1.0f; + const GLfloat innerTessLevels[2] = { + kInnerTessellationLevel, // inner horizontal + kInnerTessellationLevel // inner vertical + }; + + const GLfloat outerTessLevels[4] = { + kOuterTessellationLevel, // outer left (vertical) + kOuterTessellationLevel, // outer bottom (horizontal) + kOuterTessellationLevel, // outer right (vertical) + kOuterTessellationLevel // outer top (horizontal) + }; + + // We can define the tessellation levels using glPatchParameter if we don't + // have a Tessellation Control Shader stage. + glPatchParameterfv(GL_PATCH_DEFAULT_INNER_LEVEL, innerTessLevels); + glPatchParameterfv(GL_PATCH_DEFAULT_OUTER_LEVEL, outerTessLevels); + } + + GLint linkstatus = 0; glLinkProgram( m_program ); - glGetProgramiv( m_program, GL_LINK_STATUS, &m_linked ); + glGetProgramiv( m_program, GL_LINK_STATUS, &linkstatus ); + m_linked = linkstatus; glGetProgramiv( m_program, GL_INFO_LOG_LENGTH, &infoLength ); GLchar *infoLog = new GLchar[infoLength]; @@ -511,7 +652,7 @@ if(infoLog) { delete[]infoLog; } - infoLog=NULL; + infoLog=0; // // If all went well, make the ProgramObject part of the current state @@ -543,7 +684,7 @@ m_programARB = 0; } m_programARB = glCreateProgramObjectARB(); - for (i = 0; i < m_num; i++) { + for (i = 0; i < m_numShaders; i++) { glAttachObjectARB( m_programARB, m_shaderObjARB[i] ); } @@ -560,8 +701,10 @@ } glLinkProgramARB( m_programARB ); + GLint linkstatus = 0; glGetObjectParameterivARB( m_programARB, GL_OBJECT_LINK_STATUS_ARB, - &m_linked ); + &linkstatus ); + m_linked = linkstatus; glGetObjectParameterivARB( m_programARB, GL_OBJECT_INFO_LOG_LENGTH_ARB, &infoLength ); @@ -578,7 +721,7 @@ if(infoLogARB) { delete[]infoLogARB; } - infoLogARB=NULL; + infoLogARB=0; // // If all went well, make the ProgramObject part of the current state @@ -597,7 +740,7 @@ void glsl_program :: LinkProgram() { bool success=false; - if (!m_num) { + if (!m_numShaders) { error("can't link zero shaders"); return; } @@ -653,7 +796,6 @@ if(!m_linked) { return; } - int i; // // Allocate arrays to store the answers in. For simplicity, the return // from malloc is not checked for NULL. @@ -662,19 +804,23 @@ // // Get the number of uniforms, and the length of the longest name. // + GLint maxlength = 0; + GLint uniformcount = 0; if(GLEW_VERSION_2_0) { glGetProgramiv( m_program, GL_ACTIVE_UNIFORM_MAX_LENGTH, - &m_maxLength); + &maxlength); glGetProgramiv( m_program, GL_ACTIVE_UNIFORMS, - &m_uniformCount); + &uniformcount); } else if (GLEW_ARB_shader_objects) { glGetObjectParameterivARB( m_programARB, GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB, - &m_maxLength); + &maxlength); glGetObjectParameterivARB( m_programARB, GL_OBJECT_ACTIVE_UNIFORMS_ARB, - &m_uniformCount); + &uniformcount); } + m_maxLength = maxlength; + m_uniformCount = uniformcount; createArrays(); // @@ -683,18 +829,42 @@ GLchar *name=new GLchar[m_maxLength]; GLcharARB *nameARB=new GLcharARB[m_maxLength]; GLsizei length=0; - for (i = 0; i < m_uniformCount; i++) { + for (GLuint i = 0; i < m_uniformCount; i++) { + t_uniform &uni=m_uniform[i]; if(GLEW_VERSION_2_0) { - glGetActiveUniform(m_program, i, m_maxLength, &length, &m_size[i], - &m_type[i], name); - m_loc[i] = glGetUniformLocation( m_program, name ); - m_symname[i]=gensym(name); + glGetActiveUniform(m_program, i, m_maxLength, &length, &uni.size, + &uni.type, name); + uni.loc = glGetUniformLocation( m_program, name ); + uni.name=gensym(name); + if (glGetActiveUniformsiv) + glGetActiveUniformsiv(m_program, 1, &i, GL_UNIFORM_SIZE, &uni.arraysize); + else + uni.arraysize = 1; } else if (GLEW_ARB_shader_objects) { - glGetActiveUniformARB(m_programARB, i, m_maxLength, &length, &m_size[i], - &m_type[i], nameARB); - m_loc[i] = glGetUniformLocationARB( m_programARB, nameARB ); - m_symname[i]=gensym(nameARB); + glGetActiveUniformARB(m_programARB, i, m_maxLength, &length, &uni.size, + &uni.type, nameARB); + uni.loc = glGetUniformLocationARB( m_programARB, nameARB ); + uni.name=gensym(nameARB); + uni.arraysize = 1; + } + uni.paramsize = uniform2numelements(uni.type); + switch(uniform2type(uni.type)) { + case GL_FLOAT: { + delete uni.param.f; + uni.param.f = new GLfloat[uni.arraysize * uni.paramsize]; + for(GLint n=0; n<uni.arraysize * uni.paramsize; n++) + uni.param.f[n] = 0.; + break; } + case GL_INT: { + delete uni.param.i; + uni.param.i = new GLint[uni.arraysize * uni.paramsize]; + for(GLint n=0; n<uni.arraysize * uni.paramsize; n++) + uni.param.i[n] = 0; + break; + } + } + } delete[]name; delete[]nameARB; @@ -706,8 +876,6 @@ ///////////////////////////////////////////////////////// void glsl_program :: printInfo() { - int i; - if(!m_linked) { error("no GLSL-program linked"); return; @@ -717,25 +885,27 @@ post("================="); if(GLEW_VERSION_2_0) { + GLuint program = m_program; startpost("linked shaders"); - for (i = 0; i < m_num; i++) { + for (int i = 0; i < m_numShaders; i++) { startpost( " %d", m_shaderObj[i] ); } - post("-> %d", m_program); + post("-> %d", program); } else { + GLhandleARB program = m_programARB; startpost("linked ARB-shaders"); - for (i = 0; i < m_num; i++) { + for (int i = 0; i < m_numShaders; i++) { startpost( " %d", m_shaderObjARB[i] ); } - post("-> %d", m_programARB); + post("-> %d", program); } post(""); - for (i=0; i<m_uniformCount; i++) { - startpost("uvar#%d: \"%s\": ", - i, m_symname[i]->s_name); + for (int i=0; i<m_uniformCount; i++) { + startpost("uniform#%d: \"%s\": ", + i, m_uniform[i].name->s_name); #define SWITCHPOST(label) case label: post("%s", #label); break - switch (m_type[i]) { + switch (m_uniform[i].type) { SWITCHPOST(GL_FLOAT); SWITCHPOST(GL_FLOAT_VEC2); SWITCHPOST(GL_FLOAT_VEC3); @@ -763,7 +933,7 @@ SWITCHPOST(GL_SAMPLER_2D_SHADOW); // SWITCHPOST(GL_SAMPLER_2D_RECT); default: - switch(m_type[i]) { + switch(m_uniform[i].type) { // SWITCHPOST(GL_FLOAT_ARB); SWITCHPOST(GL_FLOAT_VEC2_ARB); SWITCHPOST(GL_FLOAT_VEC3_ARB); @@ -791,7 +961,7 @@ SWITCHPOST(GL_SAMPLER_2D_SHADOW_ARB); SWITCHPOST(GL_SAMPLER_2D_RECT_ARB); default: - post("unknown (0x%X)", m_type[i]); + post("unknown uniform type (0x%X)", m_uniform[i].type); break; } break; @@ -857,7 +1027,6 @@ if(argc) { shaderMess(argc, argv); } - m_wantLink=1; } void glsl_program :: paramMessCallback(void *data, t_symbol *s, int argc, t_atom *argv) @@ -890,6 +1059,6 @@ GetMyClass(data)->outtypeMess(static_cast<GLenum>(getGLdefine(argv+1))); } else { GetMyClass( - data)->error("type must have exactly two parameters (input-type & output-type)"); + data)->error("geometry_type must have exactly two parameters (input-type & output-type)"); } } diff -Nru gem-0.94~pre1/src/Manips/glsl_program.h gem-0.94/src/Manips/glsl_program.h --- gem-0.94~pre1/src/Manips/glsl_program.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/glsl_program.h 2019-02-12 13:10:01.000000000 +0000 @@ -37,6 +37,7 @@ DESCRIPTION -----------------------------------------------------------------*/ + class GEM_EXTERN glsl_program : public GemBase { CPPEXTERN_HEADER(glsl_program, GemBase); @@ -57,6 +58,7 @@ ////////// // check openGL-extensions virtual bool isRunnable(void); + virtual void startRendering(void); ////////// // Do the rendering @@ -98,32 +100,39 @@ // Print Info about Hardware limits virtual void printInfo(void); - GLuint m_program; + gem::ContextData<GLuint>m_program; GLuint m_shaderObj[MAX_NUM_SHADERS]; - GLhandleARB m_programARB; + gem::ContextData<GLhandleARB>m_programARB; GLhandleARB m_shaderObjARB[MAX_NUM_SHADERS]; - GLint m_maxLength; + gem::ContextData<GLint>m_maxLength; ////////// // Variables for the, uh, variables - GLint m_uniformCount; - t_symbol **m_symname; - GLint *m_size; - GLenum *m_type; - GLint *m_loc; - GLfloat **m_param; - int *m_flag; - - GLint m_linked; - bool m_wantLink; - int m_num; + GLint m_uniformCount; + struct t_uniform { + t_symbol*name; + GLint size; + GLenum type; + GLint loc; + union { + GLfloat*f; + GLint*i; + } param; + GLint paramsize; /* how many elements does single parameter hold (e.g. vec2 => 2) */ + GLint arraysize; /* array size (or 1) */ + bool changed; + }; + t_uniform*m_uniform; + + gem::ContextData<GLint>m_linked; + int m_numShaders; - t_outlet *m_outProgramID; + t_outlet *m_outProgramID; gem::utils::gl::GLuintMap m_shadermapper, m_programmapper; - float m_programmapped; + float m_programmapped; //////// diff -Nru gem-0.94~pre1/src/Manips/glsl_tesscontrol.cpp gem-0.94/src/Manips/glsl_tesscontrol.cpp --- gem-0.94~pre1/src/Manips/glsl_tesscontrol.cpp 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/Manips/glsl_tesscontrol.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,102 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// Created by tigital on 10/04/2005. +// Copyright 2005 James Tittle +// +// Implementation file +// +// Copyright (c) 1997-1999 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "glsl_tesscontrol.h" + +CPPEXTERN_NEW_WITH_ONE_ARG(glsl_tesscontrol, t_symbol *, A_DEFSYM); + +///////////////////////////////////////////////////////// +// +// glsl_tesscontrol +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +glsl_tesscontrol :: glsl_tesscontrol(t_symbol *filename) + : glsl_vertex() +{ + openMess(filename); +} + +//////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +glsl_tesscontrol :: ~glsl_tesscontrol() +{ + closeMess(); +} + +//////////////////////////////////////////////////////// +// extension check +// +///////////////////////////////////////////////////////// +bool glsl_tesscontrol :: isRunnable() +{ + if(GLEW_VERSION_4_0) { + m_shaderTarget = GL_TESS_CONTROL_SHADER; + m_shaderType = GL2; + return true; + } + + error("need OpenGL-4.0 to run GLSL tesselation"); + return false; +} + +//////////////////////////////////////////////////////// +// printInfo +// +///////////////////////////////////////////////////////// +void glsl_tesscontrol :: printInfo() +{ + if(getState()==INIT) { + verbose(0, "not initialized yet with a valid context"); + return; + } + if(GLEW_VERSION_4_0) { + post("tesselation control shader - Hardware Info"); + post("=========================================="); + + GLSL_GETPOSTINT( MAX_TESS_GEN_LEVEL ); + GLSL_GETPOSTINT( MAX_PATCH_VERTICES ); + GLSL_GETPOSTINT( MAX_TESS_PATCH_COMPONENTS ); + + GLSL_GETPOSTINT( MAX_TESS_CONTROL_OUTPUT_COMPONENTS ); + GLSL_GETPOSTINT( MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS ); + GLSL_GETPOSTINT( MAX_TESS_CONTROL_UNIFORM_COMPONENTS ); + GLSL_GETPOSTINT( MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS ); + GLSL_GETPOSTINT( MAX_TESS_CONTROL_UNIFORM_BLOCKS ); + GLSL_GETPOSTINT( MAX_TESS_CONTROL_INPUT_COMPONENTS ); + GLSL_GETPOSTINT( MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS ); + + if(m_shader) { + GLint shader = m_shader; + post("compiled last shader to ID: %d", shader); + } + } else { + post("no GLSL support"); + } +} + +//////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void glsl_tesscontrol :: obj_setupCallback(t_class *classPtr) +{ +} diff -Nru gem-0.94~pre1/src/Manips/glsl_tesscontrol.h gem-0.94/src/Manips/glsl_tesscontrol.h --- gem-0.94~pre1/src/Manips/glsl_tesscontrol.h 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/Manips/glsl_tesscontrol.h 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,57 @@ +/*----------------------------------------------------------------- + +GEM - Graphics Environment for Multimedia + +Load an GLSL tesselation control shader + + * Copyright 2019 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + +For information on usage and redistribution, and for a DISCLAIMER OF ALL +WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef _INCLUDE__GEM_MANIPS_GLSL_TESSCONTROL_H_ +#define _INCLUDE__GEM_MANIPS_GLSL_TESSCONTROL_H_ + +#include "Manips/glsl_vertex.h" + +/*----------------------------------------------------------------- + ------------------------------------------------------------------- + CLASS + glsl_tesscontrol + + Loads in a tesscontrol shader + + KEYWORDS + + DESCRIPTION + + -----------------------------------------------------------------*/ +class GEM_EXTERN glsl_tesscontrol : public glsl_vertex +{ + CPPEXTERN_HEADER(glsl_tesscontrol, glsl_vertex); + +public: + + ////////// + // Constructor + glsl_tesscontrol(void); + glsl_tesscontrol(t_symbol *filename); + +protected: + + ////////// + // Destructor + virtual ~glsl_tesscontrol(); + + //////// + // extension check + virtual bool isRunnable(void); + + ////////// + // Print Info about Hardware limits + virtual void printInfo(); +}; + +#endif // for header file diff -Nru gem-0.94~pre1/src/Manips/glsl_tesseval.cpp gem-0.94/src/Manips/glsl_tesseval.cpp --- gem-0.94~pre1/src/Manips/glsl_tesseval.cpp 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/Manips/glsl_tesseval.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,101 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// Created by tigital on 10/04/2005. +// Copyright 2005 James Tittle +// +// Implementation file +// +// Copyright (c) 1997-1999 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "glsl_tesseval.h" + +CPPEXTERN_NEW_WITH_ONE_ARG(glsl_tesseval, t_symbol *, A_DEFSYM); + +///////////////////////////////////////////////////////// +// +// glsl_tesseval +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +glsl_tesseval :: glsl_tesseval(t_symbol *filename) + : glsl_vertex() +{ + openMess(filename); +} + +//////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +glsl_tesseval :: ~glsl_tesseval() +{ + closeMess(); +} + +//////////////////////////////////////////////////////// +// extension check +// +///////////////////////////////////////////////////////// +bool glsl_tesseval :: isRunnable() +{ + if(GLEW_VERSION_4_0) { + m_shaderTarget = GL_TESS_EVALUATION_SHADER; + m_shaderType = GL2; + return true; + } + + error("need OpenGL-4.0 to run GLSL tesselation"); + return false; +} + +//////////////////////////////////////////////////////// +// printInfo +// +///////////////////////////////////////////////////////// +void glsl_tesseval :: printInfo() +{ + if(getState()==INIT) { + verbose(0, "not initialized yet with a valid context"); + return; + } + if(GLEW_VERSION_4_0) { + post("tesselation evaluation shader - Hardware Info"); + post("============================================="); + + GLSL_GETPOSTINT( MAX_TESS_GEN_LEVEL ); + GLSL_GETPOSTINT( MAX_PATCH_VERTICES ); + GLSL_GETPOSTINT( MAX_TESS_PATCH_COMPONENTS ); + + GLSL_GETPOSTINT( MAX_TESS_EVALUATION_UNIFORM_COMPONENTS ); + GLSL_GETPOSTINT( MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS ); + GLSL_GETPOSTINT( MAX_TESS_EVALUATION_OUTPUT_COMPONENTS ); + GLSL_GETPOSTINT( MAX_TESS_EVALUATION_UNIFORM_BLOCKS ); + GLSL_GETPOSTINT( MAX_TESS_EVALUATION_INPUT_COMPONENTS ); + GLSL_GETPOSTINT( MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS ); + + if(m_shader) { + GLint shader = m_shader; + post("compiled last shader to ID: %d", shader); + } + } else { + post("no GLSL support"); + } +} + +//////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void glsl_tesseval :: obj_setupCallback(t_class *classPtr) +{ +} diff -Nru gem-0.94~pre1/src/Manips/glsl_tesseval.h gem-0.94/src/Manips/glsl_tesseval.h --- gem-0.94~pre1/src/Manips/glsl_tesseval.h 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/Manips/glsl_tesseval.h 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,56 @@ +/*----------------------------------------------------------------- + +GEM - Graphics Environment for Multimedia + +Load an GLSL tesselation evaluation shader + + * Copyright 2019 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +For information on usage and redistribution, and for a DISCLAIMER OF ALL +WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef _INCLUDE__GEM_MANIPS_GLSL_TESSEVAL_H_ +#define _INCLUDE__GEM_MANIPS_GLSL_TESSEVAL_H_ + +#include "Manips/glsl_vertex.h" + +/*----------------------------------------------------------------- + ------------------------------------------------------------------- + CLASS + glsl_tesseval + + Loads in a tesseval shader + + KEYWORDS + + DESCRIPTION + + -----------------------------------------------------------------*/ +class GEM_EXTERN glsl_tesseval : public glsl_vertex +{ + CPPEXTERN_HEADER(glsl_tesseval, glsl_vertex); + +public: + + ////////// + // Constructor + glsl_tesseval(void); + glsl_tesseval(t_symbol *filename); + +protected: + + ////////// + // Destructor + virtual ~glsl_tesseval(); + + //////// + // extension check + virtual bool isRunnable(void); + + ////////// + // Print Info about Hardware limits + virtual void printInfo(); +}; + +#endif // for header file diff -Nru gem-0.94~pre1/src/Manips/glsl_vertex.cpp gem-0.94/src/Manips/glsl_vertex.cpp --- gem-0.94~pre1/src/Manips/glsl_vertex.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/glsl_vertex.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -39,13 +39,10 @@ // ///////////////////////////////////////////////////////// glsl_vertex :: glsl_vertex() : + m_shaderString(""), m_shaderTarget(0), m_shader(0), m_shaderARB(0), - m_compiled(0), m_size(0), - m_shaderString(NULL), - m_shaderFilename(NULL), - m_shaderID(0), m_outShaderID(0), m_idmapper("glsl.shader"), m_idmapped(0.) @@ -57,10 +54,6 @@ m_shaderTarget(0), m_shader(0), m_shaderARB(0), - m_compiled(0), m_size(0), - m_shaderString(NULL), - m_shaderFilename(NULL), - m_shaderID(0), m_idmapper("glsl.shader"), m_idmapped(0.) { @@ -85,11 +78,7 @@ ///////////////////////////////////////////////////////// void glsl_vertex :: closeMess(void) { - if(m_shaderString) { - delete [] m_shaderString; - } - m_shaderString=NULL; - m_size=0; + m_shaderString=""; if(m_shader) { glDeleteShader( m_shader ); } @@ -102,8 +91,6 @@ m_shader=0; m_shaderARB = 0; - - m_compiled=0; } //////////////////////////////////////////////////////// @@ -123,11 +110,12 @@ error("could not create GLSL shader object"); return false; } - const char * vs = m_shaderString; + const char * vs = m_shaderString.c_str(); glShaderSource( m_shader, 1, &vs, NULL ); glCompileShader( m_shader ); - glGetShaderiv( m_shader, GL_COMPILE_STATUS, &m_compiled ); - if (!m_compiled) { + GLint compiled = 0; + glGetShaderiv( m_shader, GL_COMPILE_STATUS, &compiled ); + if (!compiled) { GLint length; GLchar* log; glGetShaderiv( m_shader, GL_INFO_LOG_LENGTH, &length ); @@ -161,12 +149,13 @@ error("could not create ARB shader object"); return false; } - const char * vs = m_shaderString; + const char * vs = m_shaderString.c_str(); glShaderSourceARB( m_shaderARB, 1, &vs, NULL ); glCompileShaderARB( m_shaderARB ); + GLint compiled = 0; glGetObjectParameterivARB( m_shaderARB, GL_OBJECT_COMPILE_STATUS_ARB, - &m_compiled ); - if (!m_compiled) { + &compiled ); + if (!compiled) { GLint length; GLcharARB* log; glGetObjectParameterivARB( m_shaderARB, GL_OBJECT_INFO_LOG_LENGTH_ARB, @@ -199,31 +188,10 @@ return; } - m_shaderFilename=filename; - - if (getState()==RENDERING) { - loadShader(); - } - return; -} + std::string fn = findFile(filename->s_name); + const char*fname=fn.c_str(); -void glsl_vertex :: loadShader() -{ - if(NULL==m_shaderFilename || NULL==m_shaderFilename->s_name) { - return; - } - - if(!isRunnable()) { - return; - } - - // Clean up any open files - closeMess(); - - std::string fn = findFile(m_shaderFilename->s_name); - const char*buf=fn.c_str(); - - FILE *file = fopen(buf,"rb"); + FILE *file = fopen(fname,"rb"); if(file) { fseek(file,0,SEEK_END); long size = ftell(file); @@ -232,36 +200,49 @@ error("error reading filesize"); return; } - m_shaderString = new char[size + 1]; - memset(m_shaderString,0,size + 1); + char*shaderString = new char[size + 1]; + memset(shaderString, 0, size + 1); fseek(file,0,SEEK_SET); - size_t count=fread(m_shaderString,1,size,file); - m_shaderString[size]='\0'; + size_t count=fread(shaderString,1,size,file); + shaderString[size]='\0'; + int err=ferror(file); fclose(file); if(err) { error("error %d reading file (%d<%d)", err, count, size); + delete[]shaderString; return; } + m_shaderString = shaderString; } else { - error("could not find shader-file: '%s'", buf); + error("could not find shader-file: '%s'", fname); return; - /* - // assuming that the "filename" is actually a shader-program per se - m_shaderString = new char[strlen(buf) + 1]; - strcpy(m_shaderString,buf); - */ } - m_size=strlen(m_shaderString); + verbose(1, "loaded shader file '%s'", fname); + setModified(); +} - if(GLEW_VERSION_2_0) { +void glsl_vertex :: loadShader() +{ + if(!isRunnable()) { + return; + } + if(m_shaderString.empty()) { + closeMess(); + return; + } + + GLuint type = m_shaderType; + switch(type) { + case GL2: openMessGL2(); - } else if (GLEW_ARB_vertex_shader) { + break; + case ARB: openMessARB(); + break; + default: + break; } - - verbose(1, "Loaded file: %s", buf); - //m_shaderFilename=NULL; } //////////////////////////////////////////////////////// @@ -272,9 +253,11 @@ { if(GLEW_VERSION_2_0) { m_shaderTarget = GL_VERTEX_SHADER; + m_shaderType = GL2; return true; } else if (GLEW_ARB_vertex_shader) { m_shaderTarget = GL_VERTEX_SHADER_ARB; + m_shaderType = ARB; return true; } @@ -290,11 +273,26 @@ { loadShader(); - if (m_shaderString == NULL) { + if (m_shaderString.empty()) { error("need to load a shader"); return; } } +void glsl_vertex :: stopRendering() { + if(m_shader) { + glDeleteShader( m_shader ); + } + GLhandleARB shaderARB = m_shaderARB; + if(shaderARB) { + glDeleteObjectARB( shaderARB ); + } + + m_idmapper.del(m_idmapped); + m_idmapped=0.; + + m_shader=0; + m_shaderARB = 0; +} //////////////////////////////////////////////////////// // render @@ -324,45 +322,32 @@ } if(GLEW_VERSION_2_0 || GLEW_ARB_vertex_shader) { - GLint bitnum = 0; - post("glsl_vertex Hardware Info"); - post("========================="); + post("vertex shader - Hardware Info"); + post("============================="); if(GLEW_VERSION_2_0) { - glGetIntegerv( GL_MAX_VERTEX_ATTRIBS, &bitnum ); - post("MAX_VERTEX_ATTRIBS: %d", bitnum); - glGetIntegerv( GL_MAX_VERTEX_UNIFORM_COMPONENTS, &bitnum ); - post("MAX_VERTEX_UNIFORM_COMPONENTS_ARB: %d", bitnum); - glGetIntegerv( GL_MAX_VARYING_FLOATS, &bitnum ); - post("MAX_VARYING_FLOATS: %d", bitnum); - glGetIntegerv( GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &bitnum ); - post("MAX_COMBINED_TEXTURE_IMAGE_UNITS: %d", bitnum); - glGetIntegerv( GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, &bitnum ); - post("MAX_VERTEX_TEXTURE_IMAGE_UNITS: %d", bitnum); - glGetIntegerv( GL_MAX_TEXTURE_IMAGE_UNITS, &bitnum ); - post("MAX_TEXTURE_IMAGE_UNITS: %d", bitnum); - glGetIntegerv( GL_MAX_TEXTURE_COORDS, &bitnum ); - post("MAX_TEXTURE_COORDS: %d", bitnum); + GLSL_GETPOSTINT( MAX_VERTEX_ATTRIBS ); + GLSL_GETPOSTINT( MAX_VERTEX_UNIFORM_COMPONENTS ); + GLSL_GETPOSTINT( MAX_VARYING_FLOATS ); + GLSL_GETPOSTINT( MAX_COMBINED_TEXTURE_IMAGE_UNITS ); + GLSL_GETPOSTINT( MAX_VERTEX_TEXTURE_IMAGE_UNITS ); + GLSL_GETPOSTINT( MAX_TEXTURE_IMAGE_UNITS ); + GLSL_GETPOSTINT( MAX_TEXTURE_COORDS ); if(m_shader) { - post("compiled last shader to ID: %d", m_shader); + GLint shader = m_shader; + post("compiled last shader to ID: %d", shader); } } else { - glGetIntegerv( GL_MAX_VERTEX_ATTRIBS_ARB, &bitnum ); - post("MAX_VERTEX_ATTRIBS: %d", bitnum); - glGetIntegerv( GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB, &bitnum ); - post("MAX_VERTEX_UNIFORM_COMPONENTS_ARB: %d", bitnum); - glGetIntegerv( GL_MAX_VARYING_FLOATS_ARB, &bitnum ); - post("MAX_VARYING_FLOATS: %d", bitnum); - glGetIntegerv( GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB, &bitnum ); - post("MAX_COMBINED_TEXTURE_IMAGE_UNITS: %d", bitnum); - glGetIntegerv( GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB, &bitnum ); - post("MAX_VERTEX_TEXTURE_IMAGE_UNITS: %d", bitnum); - glGetIntegerv( GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &bitnum ); - post("MAX_TEXTURE_IMAGE_UNITS: %d", bitnum); - glGetIntegerv( GL_MAX_TEXTURE_COORDS_ARB, &bitnum ); - post("MAX_TEXTURE_COORDS: %d", bitnum); + GLSL_GETPOSTINT( MAX_VERTEX_ATTRIBS_ARB ); + GLSL_GETPOSTINT( MAX_VERTEX_UNIFORM_COMPONENTS_ARB ); + GLSL_GETPOSTINT( MAX_VARYING_FLOATS_ARB ); + GLSL_GETPOSTINT( MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB ); + GLSL_GETPOSTINT( MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB ); + GLSL_GETPOSTINT( MAX_TEXTURE_IMAGE_UNITS_ARB ); + GLSL_GETPOSTINT( MAX_TEXTURE_COORDS_ARB ); if(m_shaderARB) { - post("compiled last shaderARB to ID: %d", m_shaderARB); + GLhandleARB shader = m_shaderARB; + post("compiled last shaderARB to ID: %d", shader); } } } else { diff -Nru gem-0.94~pre1/src/Manips/glsl_vertex.h gem-0.94/src/Manips/glsl_vertex.h --- gem-0.94~pre1/src/Manips/glsl_vertex.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/glsl_vertex.h 2019-02-12 13:10:01.000000000 +0000 @@ -21,10 +21,6 @@ #include "Base/GemBase.h" #include "Utils/GLUtil.h" -#define GEM_shader_none 0 -#define GEM_shader_GLSL 1 -#define GEM_shader_CG 2 - /*----------------------------------------------------------------- ------------------------------------------------------------------- CLASS @@ -37,6 +33,13 @@ DESCRIPTION -----------------------------------------------------------------*/ + +#define GLSL_GETPOSTINT(pname) do { \ + GLint data = 0; \ + glGetIntegerv(GL_##pname, &data); \ + post(#pname ": %d", data); \ + } while(0) + class GEM_EXTERN glsl_vertex : public GemBase { CPPEXTERN_HEADER(glsl_vertex, GemBase); @@ -79,6 +82,7 @@ ////////// virtual void startRendering(); + virtual void stopRendering(); ////////// // Print Info about Hardware limits @@ -86,15 +90,13 @@ ////////// // - GLuint m_shaderTarget; - GLuint m_shader; - GLhandleARB m_shaderARB; - GLint m_compiled; - int m_size; - char* m_shaderString; - t_symbol* m_shaderFilename; + std::string m_shaderString; + gem::ContextData<GLuint>m_shaderTarget; + enum shaderType { NONE=0, ARB=1, GL2=2 }; + gem::ContextData<shaderType>m_shaderType; + gem::ContextData<GLuint>m_shader; + gem::ContextData<GLhandleARB>m_shaderARB; - GLint m_shaderID; t_outlet *m_outShaderID; gem::utils::gl::GLuintMap m_idmapper; float m_idmapped; diff -Nru gem-0.94~pre1/src/Manips/linear_path.cpp gem-0.94/src/Manips/linear_path.cpp --- gem-0.94~pre1/src/Manips/linear_path.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/linear_path.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Manips/Makefile.am gem-0.94/src/Manips/Makefile.am --- gem-0.94~pre1/src/Manips/Makefile.am 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/Makefile.am 2019-02-12 13:10:01.000000000 +0000 @@ -52,6 +52,10 @@ glsl_program.h \ glsl_vertex.cpp \ glsl_vertex.h \ + glsl_tesscontrol.cpp \ + glsl_tesscontrol.h \ + glsl_tesseval.cpp \ + glsl_tesseval.h \ linear_path.cpp \ linear_path.h \ ortho.cpp \ diff -Nru gem-0.94~pre1/src/Manips/ortho.cpp gem-0.94/src/Manips/ortho.cpp --- gem-0.94~pre1/src/Manips/ortho.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/ortho.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Manips/polygon_smooth.cpp gem-0.94/src/Manips/polygon_smooth.cpp --- gem-0.94~pre1/src/Manips/polygon_smooth.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/polygon_smooth.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "polygon_smooth.h" +#include "Gem/GemGL.h" CPPEXTERN_NEW(polygon_smooth); diff -Nru gem-0.94~pre1/src/Manips/rotate.cpp gem-0.94/src/Manips/rotate.cpp --- gem-0.94~pre1/src/Manips/rotate.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/rotate.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "rotate.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(rotate); diff -Nru gem-0.94~pre1/src/Manips/rotateXYZ.cpp gem-0.94/src/Manips/rotateXYZ.cpp --- gem-0.94~pre1/src/Manips/rotateXYZ.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/rotateXYZ.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "rotateXYZ.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(rotateXYZ); diff -Nru gem-0.94~pre1/src/Manips/scale.cpp gem-0.94/src/Manips/scale.cpp --- gem-0.94~pre1/src/Manips/scale.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/scale.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "scale.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(scale); diff -Nru gem-0.94~pre1/src/Manips/scaleXYZ.cpp gem-0.94/src/Manips/scaleXYZ.cpp --- gem-0.94~pre1/src/Manips/scaleXYZ.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/scaleXYZ.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "scaleXYZ.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(scaleXYZ); diff -Nru gem-0.94~pre1/src/Manips/separator.cpp gem-0.94/src/Manips/separator.cpp --- gem-0.94~pre1/src/Manips/separator.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/separator.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Manips/shearXY.cpp gem-0.94/src/Manips/shearXY.cpp --- gem-0.94~pre1/src/Manips/shearXY.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/shearXY.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "shearXY.h" +#include "Gem/GemGL.h" CPPEXTERN_NEW_WITH_GIMME(shearXY); diff -Nru gem-0.94~pre1/src/Manips/shearXZ.cpp gem-0.94/src/Manips/shearXZ.cpp --- gem-0.94~pre1/src/Manips/shearXZ.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/shearXZ.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "shearXZ.h" +#include "Gem/GemGL.h" CPPEXTERN_NEW_WITH_GIMME(shearXZ); diff -Nru gem-0.94~pre1/src/Manips/shearYX.cpp gem-0.94/src/Manips/shearYX.cpp --- gem-0.94~pre1/src/Manips/shearYX.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/shearYX.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "shearYX.h" +#include "Gem/GemGL.h" CPPEXTERN_NEW_WITH_GIMME(shearYX); diff -Nru gem-0.94~pre1/src/Manips/shearYZ.cpp gem-0.94/src/Manips/shearYZ.cpp --- gem-0.94~pre1/src/Manips/shearYZ.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/shearYZ.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "shearYZ.h" +#include "Gem/GemGL.h" CPPEXTERN_NEW_WITH_GIMME(shearYZ); diff -Nru gem-0.94~pre1/src/Manips/shearZX.cpp gem-0.94/src/Manips/shearZX.cpp --- gem-0.94~pre1/src/Manips/shearZX.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/shearZX.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "shearZX.h" +#include "Gem/GemGL.h" CPPEXTERN_NEW_WITH_GIMME(shearZX); diff -Nru gem-0.94~pre1/src/Manips/shearZY.cpp gem-0.94/src/Manips/shearZY.cpp --- gem-0.94~pre1/src/Manips/shearZY.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/shearZY.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "shearZY.h" +#include "Gem/GemGL.h" CPPEXTERN_NEW_WITH_GIMME(shearZY); diff -Nru gem-0.94~pre1/src/Manips/shininess.cpp gem-0.94/src/Manips/shininess.cpp --- gem-0.94~pre1/src/Manips/shininess.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/shininess.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -17,6 +17,7 @@ // 1307:forum::für::umläute:2000 #include "shininess.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(shininess); diff -Nru gem-0.94~pre1/src/Manips/specular.cpp gem-0.94/src/Manips/specular.cpp --- gem-0.94~pre1/src/Manips/specular.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/specular.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -17,6 +17,7 @@ // 1307:forum::für::umläute:2000 #include "specular.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(specular); diff -Nru gem-0.94~pre1/src/Manips/specularRGB.cpp gem-0.94/src/Manips/specularRGB.cpp --- gem-0.94~pre1/src/Manips/specularRGB.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/specularRGB.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -17,6 +17,7 @@ // 1307:forum::für::umläute:20000 #include "specularRGB.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(specularRGB); diff -Nru gem-0.94~pre1/src/Manips/spline_path.cpp gem-0.94/src/Manips/spline_path.cpp --- gem-0.94~pre1/src/Manips/spline_path.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/spline_path.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Manips/translate.cpp gem-0.94/src/Manips/translate.cpp --- gem-0.94~pre1/src/Manips/translate.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/translate.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "translate.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(translate); diff -Nru gem-0.94~pre1/src/Manips/translateXYZ.cpp gem-0.94/src/Manips/translateXYZ.cpp --- gem-0.94~pre1/src/Manips/translateXYZ.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/translateXYZ.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "translateXYZ.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(translateXYZ); diff -Nru gem-0.94~pre1/src/Manips/vertex_program.h gem-0.94/src/Manips/vertex_program.h --- gem-0.94~pre1/src/Manips/vertex_program.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Manips/vertex_program.h 2019-02-12 13:10:01.000000000 +0000 @@ -19,6 +19,7 @@ #define _INCLUDE__GEM_MANIPS_VERTEX_PROGRAM_H_ #include "Base/GemBase.h" +#include "Gem/GemGL.h" #define GEM_PROGRAM_none 0 #define GEM_PROGRAM_NV 1 diff -Nru gem-0.94~pre1/src/Nongeos/light.cpp gem-0.94/src/Nongeos/light.cpp --- gem-0.94~pre1/src/Nongeos/light.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Nongeos/light.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -48,6 +48,7 @@ { const GLfloat size=0.2f; if (m_debug) { +#ifdef GEM_HAVE_GLU glPushMatrix(); glDisable(GL_LIGHTING); glColor3fv(m_color); @@ -55,6 +56,7 @@ gluSphere(m_thing, size, 10, 10); glEnable(GL_LIGHTING); glPopMatrix(); +#endif } } diff -Nru gem-0.94~pre1/src/Nongeos/spot_light.cpp gem-0.94/src/Nongeos/spot_light.cpp --- gem-0.94~pre1/src/Nongeos/spot_light.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Nongeos/spot_light.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -98,12 +98,14 @@ void spot_light :: renderDebug() { if (m_debug) { // display source +#ifdef GEM_HAVE_GLU glPushMatrix(); glDisable(GL_LIGHTING); glColor3fv(m_color); gluCylinder(m_thing, 0.2f, 0, 0.4f, 10, 10); glEnable(GL_LIGHTING); glPopMatrix(); +#endif } } void spot_light :: render(GemState *state) diff -Nru gem-0.94~pre1/src/Nongeos/world_light.cpp gem-0.94/src/Nongeos/world_light.cpp --- gem-0.94~pre1/src/Nongeos/world_light.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Nongeos/world_light.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -29,7 +29,10 @@ // ///////////////////////////////////////////////////////// world_light :: world_light(t_floatarg lightNum) - : m_debug(0), m_thing(NULL) + : m_debug(0) +#ifdef GEM_HAVE_GLU + , m_thing(NULL) +#endif { m_color[0] = m_color[1] = m_color[2] = m_color[3] = 1.0; @@ -87,6 +90,9 @@ //////////////////////////////////////////////////////// void world_light :: debugMess(int state) { +#ifndef GEM_HAVE_GLU + error("Gem has been compiled without GLU - disabled light debugging"); +#endif m_debug = state; m_change = 1; setModified(); @@ -133,12 +139,14 @@ //////////////////////////////////////////////////////// void world_light :: startRendering() { +#ifdef GEM_HAVE_GLU if (m_thing) { stopRendering(); } m_thing = gluNewQuadric(); gluQuadricTexture(m_thing, GL_FALSE); gluQuadricDrawStyle(m_thing, static_cast<GLenum>(GLU_FILL)); +#endif m_change = 1; } @@ -148,10 +156,12 @@ //////////////////////////////////////////////////////// void world_light :: stopRendering() { +#ifdef GEM_HAVE_GLU if (m_thing) { gluDeleteQuadric(m_thing); } m_thing = NULL; +#endif if (m_light) { glDisable(m_light); @@ -167,6 +177,7 @@ { const GLfloat size=0.2f; if (m_debug) { +#ifdef GEM_HAVE_GLU glPushMatrix(); glDisable(GL_LIGHTING); glColor3fv(m_color); @@ -174,6 +185,7 @@ gluCylinder(m_thing, size, size, size * 2.f, 10, 10); glEnable(GL_LIGHTING); glPopMatrix(); +#endif } } diff -Nru gem-0.94~pre1/src/Nongeos/world_light.h gem-0.94/src/Nongeos/world_light.h --- gem-0.94~pre1/src/Nongeos/world_light.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Nongeos/world_light.h 2019-02-12 13:10:01.000000000 +0000 @@ -15,7 +15,9 @@ #ifndef _INCLUDE__GEM_NONGEOS_WORLD_LIGHT_H_ #define _INCLUDE__GEM_NONGEOS_WORLD_LIGHT_H_ +#include "Gem/GemConfig.h" #include "Base/GemBase.h" +#include "Gem/GemGL.h" /*----------------------------------------------------------------- ------------------------------------------------------------------- @@ -106,8 +108,10 @@ // The light number with reference to OpenGL GLenum m_light; +#ifdef GEM_HAVE_GLU ////////// GLUquadricObj *m_thing; +#endif }; #endif // for header file diff -Nru gem-0.94~pre1/src/openGL/GEMglAccum.cpp gem-0.94/src/openGL/GEMglAccum.cpp --- gem-0.94~pre1/src/openGL/GEMglAccum.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglAccum.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglAccum.h gem-0.94/src/openGL/GEMglAccum.h --- gem-0.94~pre1/src/openGL/GEMglAccum.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglAccum.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglActiveTexture.cpp gem-0.94/src/openGL/GEMglActiveTexture.cpp --- gem-0.94~pre1/src/openGL/GEMglActiveTexture.cpp 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/openGL/GEMglActiveTexture.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,96 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// Implementation file +// +// Copyright (c) 2004-2005 tigital@mac.com +// For information on usage and redistribution, and for a DISCLAIMER +// * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" +// +//////////////////////////////////////////////////////// + +#include "GEMglActiveTexture.h" + +CPPEXTERN_NEW_WITH_GIMME ( GEMglActiveTexture ); + +///////////////////////////////////////////////////////// +// +// GEMglActiveTexture +// +///////////////////////////////////////////////////////// +// Constructor +// +GEMglActiveTexture :: GEMglActiveTexture (int argc, t_atom*argv) + : texUnit(0) + , maxTexUnits(0) +{ + switch(argc) { + case 0: break; + case 1: + texUnitMess(argv[0]); + break; + default: + throw(GemException("invalid number of arguments")); + } + m_inlet[0] = inlet_new(this->x_obj, &this->x_obj->ob_pd, + gensym("list"), gensym("texUnit")); +} +///////////////////////////////////////////////////////// +// Destructor +// +GEMglActiveTexture :: ~GEMglActiveTexture () +{ + inlet_free(m_inlet[0]); +} +////////////////// +// extension check +bool GEMglActiveTexture :: isRunnable(void) +{ + if(GLEW_ARB_multitexture) { + return true; + } + error("your system does not support the ARB multitexture extension"); + return false; +} +///////////////////////////////////////////////////////// +// Render +// +void GEMglActiveTexture :: render(GemState *state) +{ + if (texUnit < GL_TEXTURE0) { + /* the normal usage is 'glActiveTexture (GL_TEXTURE0 + n)' + * but the user might be inclined to just use 'glActiveTexture(n)' + */ + texUnit += GL_TEXTURE0; + } + glActiveTexture (texUnit); +} + +///////////////////////////////////////////////////////// +// Variables +// +void GEMglActiveTexture :: texUnitMess (t_atom&arg) // FUN +{ + texUnit = static_cast<GLenum>(gem::utils::gl::getGLdefine(&arg)); + setModified(); +} + +///////////////////////////////////////////////////////// +// static member functions +// + +void GEMglActiveTexture :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, + reinterpret_cast<t_method>(&GEMglActiveTexture::texUnitMessCallback), + gensym("texUnit"), A_GIMME, A_NULL); +} + +void GEMglActiveTexture :: texUnitMessCallback (void* data, + t_symbol*, int argc, t_atom*argv) +{ + if(argc==1) { + GetMyClass(data)->texUnitMess(argv[0]); + } +} diff -Nru gem-0.94~pre1/src/openGL/GEMglActiveTexture.h gem-0.94/src/openGL/GEMglActiveTexture.h --- gem-0.94~pre1/src/openGL/GEMglActiveTexture.h 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/openGL/GEMglActiveTexture.h 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,55 @@ +/* ------------------------------------------------------------------ + * GEM - Graphics Environment for Multimedia + * + * Copyright (c) 2004-2005 tigital@mac.com + * For information on usage and redistribution, and for a DISCLAIMER + * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" + * ------------------------------------------------------------------ + */ + +#ifndef _INCLUDE__GEM_OPENGL_GEMGLACTIVETEXTUREARB_H_ +#define _INCLUDE__GEM_OPENGL_GEMGLACTIVETEXTUREARB_H_ + +#include "Base/GemGLBase.h" + +/* + CLASS + GEMglActiveTexture + KEYWORDS + openGL 0 + DESCRIPTION + wrapper for the openGL-function + "glActiveTexture( GLenum target )" + */ + +class GEM_EXTERN GEMglActiveTexture : public GemGLBase +{ + CPPEXTERN_HEADER(GEMglActiveTexture, GemGLBase); + +public: + // Constructor + GEMglActiveTexture (int,t_atom*); // CON + +protected: + // Destructor + virtual ~GEMglActiveTexture (); + // check extensions + virtual bool isRunnable(void); + + // Do the rendering + virtual void render (GemState *state); + + // variables + GLenum texUnit; // VAR + GLenum maxTexUnits; // maxvar + virtual void texUnitMess(t_atom&); // FUN + +private: + + // we need some inlets + t_inlet *m_inlet[1]; + + // static member functions + static void texUnitMessCallback (void*, t_symbol*,int,t_atom*); +}; +#endif // for header file diff -Nru gem-0.94~pre1/src/openGL/GEMglAlphaFunc.cpp gem-0.94/src/openGL/GEMglAlphaFunc.cpp --- gem-0.94~pre1/src/openGL/GEMglAlphaFunc.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglAlphaFunc.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglAlphaFunc.h gem-0.94/src/openGL/GEMglAlphaFunc.h --- gem-0.94~pre1/src/openGL/GEMglAlphaFunc.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglAlphaFunc.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglAreTexturesResident.cpp gem-0.94/src/openGL/GEMglAreTexturesResident.cpp --- gem-0.94~pre1/src/openGL/GEMglAreTexturesResident.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglAreTexturesResident.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglAreTexturesResident.h gem-0.94/src/openGL/GEMglAreTexturesResident.h --- gem-0.94~pre1/src/openGL/GEMglAreTexturesResident.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglAreTexturesResident.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglArrayElement.cpp gem-0.94/src/openGL/GEMglArrayElement.cpp --- gem-0.94~pre1/src/openGL/GEMglArrayElement.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglArrayElement.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglArrayElement.h gem-0.94/src/openGL/GEMglArrayElement.h --- gem-0.94~pre1/src/openGL/GEMglArrayElement.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglArrayElement.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglBegin.cpp gem-0.94/src/openGL/GEMglBegin.cpp --- gem-0.94~pre1/src/openGL/GEMglBegin.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglBegin.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglBegin.h gem-0.94/src/openGL/GEMglBegin.h --- gem-0.94~pre1/src/openGL/GEMglBegin.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglBegin.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglBindTexture.cpp gem-0.94/src/openGL/GEMglBindTexture.cpp --- gem-0.94~pre1/src/openGL/GEMglBindTexture.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglBindTexture.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglBindTexture.h gem-0.94/src/openGL/GEMglBindTexture.h --- gem-0.94~pre1/src/openGL/GEMglBindTexture.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglBindTexture.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglBitmap.cpp gem-0.94/src/openGL/GEMglBitmap.cpp --- gem-0.94~pre1/src/openGL/GEMglBitmap.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglBitmap.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglBitmap.h gem-0.94/src/openGL/GEMglBitmap.h --- gem-0.94~pre1/src/openGL/GEMglBitmap.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglBitmap.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglBlendEquation.cpp gem-0.94/src/openGL/GEMglBlendEquation.cpp --- gem-0.94~pre1/src/openGL/GEMglBlendEquation.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglBlendEquation.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglBlendEquation.h gem-0.94/src/openGL/GEMglBlendEquation.h --- gem-0.94~pre1/src/openGL/GEMglBlendEquation.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglBlendEquation.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglBlendFunc.cpp gem-0.94/src/openGL/GEMglBlendFunc.cpp --- gem-0.94~pre1/src/openGL/GEMglBlendFunc.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglBlendFunc.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglBlendFunc.h gem-0.94/src/openGL/GEMglBlendFunc.h --- gem-0.94~pre1/src/openGL/GEMglBlendFunc.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglBlendFunc.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglCallList.cpp gem-0.94/src/openGL/GEMglCallList.cpp --- gem-0.94~pre1/src/openGL/GEMglCallList.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglCallList.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglCallList.h gem-0.94/src/openGL/GEMglCallList.h --- gem-0.94~pre1/src/openGL/GEMglCallList.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglCallList.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglClearAccum.cpp gem-0.94/src/openGL/GEMglClearAccum.cpp --- gem-0.94~pre1/src/openGL/GEMglClearAccum.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglClearAccum.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglClearAccum.h gem-0.94/src/openGL/GEMglClearAccum.h --- gem-0.94~pre1/src/openGL/GEMglClearAccum.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglClearAccum.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglClearColor.cpp gem-0.94/src/openGL/GEMglClearColor.cpp --- gem-0.94~pre1/src/openGL/GEMglClearColor.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglClearColor.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglClearColor.h gem-0.94/src/openGL/GEMglClearColor.h --- gem-0.94~pre1/src/openGL/GEMglClearColor.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglClearColor.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglClear.cpp gem-0.94/src/openGL/GEMglClear.cpp --- gem-0.94~pre1/src/openGL/GEMglClear.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglClear.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglClearDepth.cpp gem-0.94/src/openGL/GEMglClearDepth.cpp --- gem-0.94~pre1/src/openGL/GEMglClearDepth.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglClearDepth.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglClearDepth.h gem-0.94/src/openGL/GEMglClearDepth.h --- gem-0.94~pre1/src/openGL/GEMglClearDepth.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglClearDepth.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglClear.h gem-0.94/src/openGL/GEMglClear.h --- gem-0.94~pre1/src/openGL/GEMglClear.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglClear.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglClearIndex.cpp gem-0.94/src/openGL/GEMglClearIndex.cpp --- gem-0.94~pre1/src/openGL/GEMglClearIndex.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglClearIndex.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglClearIndex.h gem-0.94/src/openGL/GEMglClearIndex.h --- gem-0.94~pre1/src/openGL/GEMglClearIndex.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglClearIndex.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglClearStencil.cpp gem-0.94/src/openGL/GEMglClearStencil.cpp --- gem-0.94~pre1/src/openGL/GEMglClearStencil.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglClearStencil.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglClearStencil.h gem-0.94/src/openGL/GEMglClearStencil.h --- gem-0.94~pre1/src/openGL/GEMglClearStencil.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglClearStencil.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglClipPlane.cpp gem-0.94/src/openGL/GEMglClipPlane.cpp --- gem-0.94~pre1/src/openGL/GEMglClipPlane.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglClipPlane.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglClipPlane.h gem-0.94/src/openGL/GEMglClipPlane.h --- gem-0.94~pre1/src/openGL/GEMglClipPlane.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglClipPlane.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3b.cpp gem-0.94/src/openGL/GEMglColor3b.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3b.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3b.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3b.h gem-0.94/src/openGL/GEMglColor3b.h --- gem-0.94~pre1/src/openGL/GEMglColor3b.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3b.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3bv.cpp gem-0.94/src/openGL/GEMglColor3bv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3bv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3bv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3bv.h gem-0.94/src/openGL/GEMglColor3bv.h --- gem-0.94~pre1/src/openGL/GEMglColor3bv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3bv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3d.cpp gem-0.94/src/openGL/GEMglColor3d.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3d.h gem-0.94/src/openGL/GEMglColor3d.h --- gem-0.94~pre1/src/openGL/GEMglColor3d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3dv.cpp gem-0.94/src/openGL/GEMglColor3dv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3dv.h gem-0.94/src/openGL/GEMglColor3dv.h --- gem-0.94~pre1/src/openGL/GEMglColor3dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3f.cpp gem-0.94/src/openGL/GEMglColor3f.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3f.h gem-0.94/src/openGL/GEMglColor3f.h --- gem-0.94~pre1/src/openGL/GEMglColor3f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3fv.cpp gem-0.94/src/openGL/GEMglColor3fv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3fv.h gem-0.94/src/openGL/GEMglColor3fv.h --- gem-0.94~pre1/src/openGL/GEMglColor3fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3i.cpp gem-0.94/src/openGL/GEMglColor3i.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3i.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3i.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3i.h gem-0.94/src/openGL/GEMglColor3i.h --- gem-0.94~pre1/src/openGL/GEMglColor3i.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3i.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3iv.cpp gem-0.94/src/openGL/GEMglColor3iv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3iv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3iv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3iv.h gem-0.94/src/openGL/GEMglColor3iv.h --- gem-0.94~pre1/src/openGL/GEMglColor3iv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3iv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3s.cpp gem-0.94/src/openGL/GEMglColor3s.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3s.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3s.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3s.h gem-0.94/src/openGL/GEMglColor3s.h --- gem-0.94~pre1/src/openGL/GEMglColor3s.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3s.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3sv.cpp gem-0.94/src/openGL/GEMglColor3sv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3sv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3sv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3sv.h gem-0.94/src/openGL/GEMglColor3sv.h --- gem-0.94~pre1/src/openGL/GEMglColor3sv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3sv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3ub.cpp gem-0.94/src/openGL/GEMglColor3ub.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3ub.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3ub.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3ub.h gem-0.94/src/openGL/GEMglColor3ub.h --- gem-0.94~pre1/src/openGL/GEMglColor3ub.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3ub.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3ubv.cpp gem-0.94/src/openGL/GEMglColor3ubv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3ubv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3ubv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3ubv.h gem-0.94/src/openGL/GEMglColor3ubv.h --- gem-0.94~pre1/src/openGL/GEMglColor3ubv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3ubv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3ui.cpp gem-0.94/src/openGL/GEMglColor3ui.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3ui.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3ui.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3ui.h gem-0.94/src/openGL/GEMglColor3ui.h --- gem-0.94~pre1/src/openGL/GEMglColor3ui.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3ui.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3uiv.cpp gem-0.94/src/openGL/GEMglColor3uiv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3uiv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3uiv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3uiv.h gem-0.94/src/openGL/GEMglColor3uiv.h --- gem-0.94~pre1/src/openGL/GEMglColor3uiv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3uiv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3us.cpp gem-0.94/src/openGL/GEMglColor3us.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3us.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3us.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3us.h gem-0.94/src/openGL/GEMglColor3us.h --- gem-0.94~pre1/src/openGL/GEMglColor3us.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3us.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3usv.cpp gem-0.94/src/openGL/GEMglColor3usv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor3usv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3usv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor3usv.h gem-0.94/src/openGL/GEMglColor3usv.h --- gem-0.94~pre1/src/openGL/GEMglColor3usv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor3usv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4b.cpp gem-0.94/src/openGL/GEMglColor4b.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4b.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4b.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4b.h gem-0.94/src/openGL/GEMglColor4b.h --- gem-0.94~pre1/src/openGL/GEMglColor4b.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4b.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4bv.cpp gem-0.94/src/openGL/GEMglColor4bv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4bv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4bv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4bv.h gem-0.94/src/openGL/GEMglColor4bv.h --- gem-0.94~pre1/src/openGL/GEMglColor4bv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4bv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4d.cpp gem-0.94/src/openGL/GEMglColor4d.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4d.h gem-0.94/src/openGL/GEMglColor4d.h --- gem-0.94~pre1/src/openGL/GEMglColor4d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4dv.cpp gem-0.94/src/openGL/GEMglColor4dv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4dv.h gem-0.94/src/openGL/GEMglColor4dv.h --- gem-0.94~pre1/src/openGL/GEMglColor4dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4f.cpp gem-0.94/src/openGL/GEMglColor4f.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4f.h gem-0.94/src/openGL/GEMglColor4f.h --- gem-0.94~pre1/src/openGL/GEMglColor4f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4fv.cpp gem-0.94/src/openGL/GEMglColor4fv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4fv.h gem-0.94/src/openGL/GEMglColor4fv.h --- gem-0.94~pre1/src/openGL/GEMglColor4fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4i.cpp gem-0.94/src/openGL/GEMglColor4i.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4i.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4i.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4i.h gem-0.94/src/openGL/GEMglColor4i.h --- gem-0.94~pre1/src/openGL/GEMglColor4i.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4i.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4iv.cpp gem-0.94/src/openGL/GEMglColor4iv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4iv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4iv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4iv.h gem-0.94/src/openGL/GEMglColor4iv.h --- gem-0.94~pre1/src/openGL/GEMglColor4iv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4iv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4s.cpp gem-0.94/src/openGL/GEMglColor4s.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4s.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4s.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4s.h gem-0.94/src/openGL/GEMglColor4s.h --- gem-0.94~pre1/src/openGL/GEMglColor4s.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4s.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4sv.cpp gem-0.94/src/openGL/GEMglColor4sv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4sv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4sv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4sv.h gem-0.94/src/openGL/GEMglColor4sv.h --- gem-0.94~pre1/src/openGL/GEMglColor4sv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4sv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4ub.cpp gem-0.94/src/openGL/GEMglColor4ub.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4ub.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4ub.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4ub.h gem-0.94/src/openGL/GEMglColor4ub.h --- gem-0.94~pre1/src/openGL/GEMglColor4ub.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4ub.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4ubv.cpp gem-0.94/src/openGL/GEMglColor4ubv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4ubv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4ubv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4ubv.h gem-0.94/src/openGL/GEMglColor4ubv.h --- gem-0.94~pre1/src/openGL/GEMglColor4ubv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4ubv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4ui.cpp gem-0.94/src/openGL/GEMglColor4ui.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4ui.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4ui.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4ui.h gem-0.94/src/openGL/GEMglColor4ui.h --- gem-0.94~pre1/src/openGL/GEMglColor4ui.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4ui.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4uiv.cpp gem-0.94/src/openGL/GEMglColor4uiv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4uiv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4uiv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4uiv.h gem-0.94/src/openGL/GEMglColor4uiv.h --- gem-0.94~pre1/src/openGL/GEMglColor4uiv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4uiv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4us.cpp gem-0.94/src/openGL/GEMglColor4us.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4us.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4us.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4us.h gem-0.94/src/openGL/GEMglColor4us.h --- gem-0.94~pre1/src/openGL/GEMglColor4us.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4us.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4usv.cpp gem-0.94/src/openGL/GEMglColor4usv.cpp --- gem-0.94~pre1/src/openGL/GEMglColor4usv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4usv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColor4usv.h gem-0.94/src/openGL/GEMglColor4usv.h --- gem-0.94~pre1/src/openGL/GEMglColor4usv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColor4usv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColorMask.cpp gem-0.94/src/openGL/GEMglColorMask.cpp --- gem-0.94~pre1/src/openGL/GEMglColorMask.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColorMask.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColorMask.h gem-0.94/src/openGL/GEMglColorMask.h --- gem-0.94~pre1/src/openGL/GEMglColorMask.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColorMask.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglColorMaterial.cpp gem-0.94/src/openGL/GEMglColorMaterial.cpp --- gem-0.94~pre1/src/openGL/GEMglColorMaterial.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColorMaterial.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglColorMaterial.h gem-0.94/src/openGL/GEMglColorMaterial.h --- gem-0.94~pre1/src/openGL/GEMglColorMaterial.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglColorMaterial.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglCopyPixels.cpp gem-0.94/src/openGL/GEMglCopyPixels.cpp --- gem-0.94~pre1/src/openGL/GEMglCopyPixels.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglCopyPixels.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglCopyPixels.h gem-0.94/src/openGL/GEMglCopyPixels.h --- gem-0.94~pre1/src/openGL/GEMglCopyPixels.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglCopyPixels.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglCopyTexImage1D.cpp gem-0.94/src/openGL/GEMglCopyTexImage1D.cpp --- gem-0.94~pre1/src/openGL/GEMglCopyTexImage1D.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglCopyTexImage1D.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglCopyTexImage1D.h gem-0.94/src/openGL/GEMglCopyTexImage1D.h --- gem-0.94~pre1/src/openGL/GEMglCopyTexImage1D.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglCopyTexImage1D.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglCopyTexImage2D.cpp gem-0.94/src/openGL/GEMglCopyTexImage2D.cpp --- gem-0.94~pre1/src/openGL/GEMglCopyTexImage2D.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglCopyTexImage2D.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglCopyTexImage2D.h gem-0.94/src/openGL/GEMglCopyTexImage2D.h --- gem-0.94~pre1/src/openGL/GEMglCopyTexImage2D.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglCopyTexImage2D.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglCopyTexSubImage1D.cpp gem-0.94/src/openGL/GEMglCopyTexSubImage1D.cpp --- gem-0.94~pre1/src/openGL/GEMglCopyTexSubImage1D.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglCopyTexSubImage1D.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglCopyTexSubImage1D.h gem-0.94/src/openGL/GEMglCopyTexSubImage1D.h --- gem-0.94~pre1/src/openGL/GEMglCopyTexSubImage1D.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglCopyTexSubImage1D.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglCopyTexSubImage2D.cpp gem-0.94/src/openGL/GEMglCopyTexSubImage2D.cpp --- gem-0.94~pre1/src/openGL/GEMglCopyTexSubImage2D.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglCopyTexSubImage2D.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglCopyTexSubImage2D.h gem-0.94/src/openGL/GEMglCopyTexSubImage2D.h --- gem-0.94~pre1/src/openGL/GEMglCopyTexSubImage2D.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglCopyTexSubImage2D.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglCullFace.cpp gem-0.94/src/openGL/GEMglCullFace.cpp --- gem-0.94~pre1/src/openGL/GEMglCullFace.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglCullFace.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglCullFace.h gem-0.94/src/openGL/GEMglCullFace.h --- gem-0.94~pre1/src/openGL/GEMglCullFace.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglCullFace.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglDeleteTextures.cpp gem-0.94/src/openGL/GEMglDeleteTextures.cpp --- gem-0.94~pre1/src/openGL/GEMglDeleteTextures.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDeleteTextures.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglDeleteTextures.h gem-0.94/src/openGL/GEMglDeleteTextures.h --- gem-0.94~pre1/src/openGL/GEMglDeleteTextures.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDeleteTextures.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglDepthFunc.cpp gem-0.94/src/openGL/GEMglDepthFunc.cpp --- gem-0.94~pre1/src/openGL/GEMglDepthFunc.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDepthFunc.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglDepthFunc.h gem-0.94/src/openGL/GEMglDepthFunc.h --- gem-0.94~pre1/src/openGL/GEMglDepthFunc.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDepthFunc.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglDepthMask.cpp gem-0.94/src/openGL/GEMglDepthMask.cpp --- gem-0.94~pre1/src/openGL/GEMglDepthMask.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDepthMask.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglDepthMask.h gem-0.94/src/openGL/GEMglDepthMask.h --- gem-0.94~pre1/src/openGL/GEMglDepthMask.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDepthMask.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglDepthRange.cpp gem-0.94/src/openGL/GEMglDepthRange.cpp --- gem-0.94~pre1/src/openGL/GEMglDepthRange.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDepthRange.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglDepthRange.h gem-0.94/src/openGL/GEMglDepthRange.h --- gem-0.94~pre1/src/openGL/GEMglDepthRange.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDepthRange.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglDisableClientState.cpp gem-0.94/src/openGL/GEMglDisableClientState.cpp --- gem-0.94~pre1/src/openGL/GEMglDisableClientState.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDisableClientState.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglDisableClientState.h gem-0.94/src/openGL/GEMglDisableClientState.h --- gem-0.94~pre1/src/openGL/GEMglDisableClientState.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDisableClientState.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglDisable.cpp gem-0.94/src/openGL/GEMglDisable.cpp --- gem-0.94~pre1/src/openGL/GEMglDisable.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDisable.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglDisable.h gem-0.94/src/openGL/GEMglDisable.h --- gem-0.94~pre1/src/openGL/GEMglDisable.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDisable.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglDrawArrays.cpp gem-0.94/src/openGL/GEMglDrawArrays.cpp --- gem-0.94~pre1/src/openGL/GEMglDrawArrays.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDrawArrays.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglDrawArrays.h gem-0.94/src/openGL/GEMglDrawArrays.h --- gem-0.94~pre1/src/openGL/GEMglDrawArrays.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDrawArrays.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglDrawBuffer.cpp gem-0.94/src/openGL/GEMglDrawBuffer.cpp --- gem-0.94~pre1/src/openGL/GEMglDrawBuffer.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDrawBuffer.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglDrawBuffer.h gem-0.94/src/openGL/GEMglDrawBuffer.h --- gem-0.94~pre1/src/openGL/GEMglDrawBuffer.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDrawBuffer.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglDrawElements.cpp gem-0.94/src/openGL/GEMglDrawElements.cpp --- gem-0.94~pre1/src/openGL/GEMglDrawElements.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDrawElements.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglDrawElements.h gem-0.94/src/openGL/GEMglDrawElements.h --- gem-0.94~pre1/src/openGL/GEMglDrawElements.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglDrawElements.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEdgeFlag.cpp gem-0.94/src/openGL/GEMglEdgeFlag.cpp --- gem-0.94~pre1/src/openGL/GEMglEdgeFlag.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEdgeFlag.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEdgeFlag.h gem-0.94/src/openGL/GEMglEdgeFlag.h --- gem-0.94~pre1/src/openGL/GEMglEdgeFlag.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEdgeFlag.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEnableClientState.cpp gem-0.94/src/openGL/GEMglEnableClientState.cpp --- gem-0.94~pre1/src/openGL/GEMglEnableClientState.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEnableClientState.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEnableClientState.h gem-0.94/src/openGL/GEMglEnableClientState.h --- gem-0.94~pre1/src/openGL/GEMglEnableClientState.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEnableClientState.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEnable.cpp gem-0.94/src/openGL/GEMglEnable.cpp --- gem-0.94~pre1/src/openGL/GEMglEnable.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEnable.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEnable.h gem-0.94/src/openGL/GEMglEnable.h --- gem-0.94~pre1/src/openGL/GEMglEnable.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEnable.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEnd.cpp gem-0.94/src/openGL/GEMglEnd.cpp --- gem-0.94~pre1/src/openGL/GEMglEnd.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEnd.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEnd.h gem-0.94/src/openGL/GEMglEnd.h --- gem-0.94~pre1/src/openGL/GEMglEnd.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEnd.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEndList.cpp gem-0.94/src/openGL/GEMglEndList.cpp --- gem-0.94~pre1/src/openGL/GEMglEndList.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEndList.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEndList.h gem-0.94/src/openGL/GEMglEndList.h --- gem-0.94~pre1/src/openGL/GEMglEndList.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEndList.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord1d.cpp gem-0.94/src/openGL/GEMglEvalCoord1d.cpp --- gem-0.94~pre1/src/openGL/GEMglEvalCoord1d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord1d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord1d.h gem-0.94/src/openGL/GEMglEvalCoord1d.h --- gem-0.94~pre1/src/openGL/GEMglEvalCoord1d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord1d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord1dv.cpp gem-0.94/src/openGL/GEMglEvalCoord1dv.cpp --- gem-0.94~pre1/src/openGL/GEMglEvalCoord1dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord1dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord1dv.h gem-0.94/src/openGL/GEMglEvalCoord1dv.h --- gem-0.94~pre1/src/openGL/GEMglEvalCoord1dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord1dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord1f.cpp gem-0.94/src/openGL/GEMglEvalCoord1f.cpp --- gem-0.94~pre1/src/openGL/GEMglEvalCoord1f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord1f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord1f.h gem-0.94/src/openGL/GEMglEvalCoord1f.h --- gem-0.94~pre1/src/openGL/GEMglEvalCoord1f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord1f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord1fv.cpp gem-0.94/src/openGL/GEMglEvalCoord1fv.cpp --- gem-0.94~pre1/src/openGL/GEMglEvalCoord1fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord1fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord1fv.h gem-0.94/src/openGL/GEMglEvalCoord1fv.h --- gem-0.94~pre1/src/openGL/GEMglEvalCoord1fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord1fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord2d.cpp gem-0.94/src/openGL/GEMglEvalCoord2d.cpp --- gem-0.94~pre1/src/openGL/GEMglEvalCoord2d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord2d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord2d.h gem-0.94/src/openGL/GEMglEvalCoord2d.h --- gem-0.94~pre1/src/openGL/GEMglEvalCoord2d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord2d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord2dv.cpp gem-0.94/src/openGL/GEMglEvalCoord2dv.cpp --- gem-0.94~pre1/src/openGL/GEMglEvalCoord2dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord2dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord2dv.h gem-0.94/src/openGL/GEMglEvalCoord2dv.h --- gem-0.94~pre1/src/openGL/GEMglEvalCoord2dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord2dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord2f.cpp gem-0.94/src/openGL/GEMglEvalCoord2f.cpp --- gem-0.94~pre1/src/openGL/GEMglEvalCoord2f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord2f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord2f.h gem-0.94/src/openGL/GEMglEvalCoord2f.h --- gem-0.94~pre1/src/openGL/GEMglEvalCoord2f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord2f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord2fv.cpp gem-0.94/src/openGL/GEMglEvalCoord2fv.cpp --- gem-0.94~pre1/src/openGL/GEMglEvalCoord2fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord2fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalCoord2fv.h gem-0.94/src/openGL/GEMglEvalCoord2fv.h --- gem-0.94~pre1/src/openGL/GEMglEvalCoord2fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalCoord2fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalMesh1.cpp gem-0.94/src/openGL/GEMglEvalMesh1.cpp --- gem-0.94~pre1/src/openGL/GEMglEvalMesh1.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalMesh1.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalMesh1.h gem-0.94/src/openGL/GEMglEvalMesh1.h --- gem-0.94~pre1/src/openGL/GEMglEvalMesh1.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalMesh1.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalMesh2.cpp gem-0.94/src/openGL/GEMglEvalMesh2.cpp --- gem-0.94~pre1/src/openGL/GEMglEvalMesh2.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalMesh2.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalMesh2.h gem-0.94/src/openGL/GEMglEvalMesh2.h --- gem-0.94~pre1/src/openGL/GEMglEvalMesh2.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalMesh2.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalPoint1.cpp gem-0.94/src/openGL/GEMglEvalPoint1.cpp --- gem-0.94~pre1/src/openGL/GEMglEvalPoint1.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalPoint1.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalPoint1.h gem-0.94/src/openGL/GEMglEvalPoint1.h --- gem-0.94~pre1/src/openGL/GEMglEvalPoint1.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalPoint1.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalPoint2.cpp gem-0.94/src/openGL/GEMglEvalPoint2.cpp --- gem-0.94~pre1/src/openGL/GEMglEvalPoint2.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalPoint2.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglEvalPoint2.h gem-0.94/src/openGL/GEMglEvalPoint2.h --- gem-0.94~pre1/src/openGL/GEMglEvalPoint2.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglEvalPoint2.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglFeedbackBuffer.cpp gem-0.94/src/openGL/GEMglFeedbackBuffer.cpp --- gem-0.94~pre1/src/openGL/GEMglFeedbackBuffer.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFeedbackBuffer.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglFeedbackBuffer.h gem-0.94/src/openGL/GEMglFeedbackBuffer.h --- gem-0.94~pre1/src/openGL/GEMglFeedbackBuffer.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFeedbackBuffer.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglFinish.cpp gem-0.94/src/openGL/GEMglFinish.cpp --- gem-0.94~pre1/src/openGL/GEMglFinish.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFinish.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglFinish.h gem-0.94/src/openGL/GEMglFinish.h --- gem-0.94~pre1/src/openGL/GEMglFinish.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFinish.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglFlush.cpp gem-0.94/src/openGL/GEMglFlush.cpp --- gem-0.94~pre1/src/openGL/GEMglFlush.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFlush.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglFlush.h gem-0.94/src/openGL/GEMglFlush.h --- gem-0.94~pre1/src/openGL/GEMglFlush.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFlush.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglFogf.cpp gem-0.94/src/openGL/GEMglFogf.cpp --- gem-0.94~pre1/src/openGL/GEMglFogf.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFogf.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglFogf.h gem-0.94/src/openGL/GEMglFogf.h --- gem-0.94~pre1/src/openGL/GEMglFogf.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFogf.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglFogfv.cpp gem-0.94/src/openGL/GEMglFogfv.cpp --- gem-0.94~pre1/src/openGL/GEMglFogfv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFogfv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglFogfv.h gem-0.94/src/openGL/GEMglFogfv.h --- gem-0.94~pre1/src/openGL/GEMglFogfv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFogfv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglFogi.cpp gem-0.94/src/openGL/GEMglFogi.cpp --- gem-0.94~pre1/src/openGL/GEMglFogi.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFogi.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglFogi.h gem-0.94/src/openGL/GEMglFogi.h --- gem-0.94~pre1/src/openGL/GEMglFogi.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFogi.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglFogiv.cpp gem-0.94/src/openGL/GEMglFogiv.cpp --- gem-0.94~pre1/src/openGL/GEMglFogiv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFogiv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglFogiv.h gem-0.94/src/openGL/GEMglFogiv.h --- gem-0.94~pre1/src/openGL/GEMglFogiv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFogiv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglFrontFace.cpp gem-0.94/src/openGL/GEMglFrontFace.cpp --- gem-0.94~pre1/src/openGL/GEMglFrontFace.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFrontFace.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglFrontFace.h gem-0.94/src/openGL/GEMglFrontFace.h --- gem-0.94~pre1/src/openGL/GEMglFrontFace.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFrontFace.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglFrustum.cpp gem-0.94/src/openGL/GEMglFrustum.cpp --- gem-0.94~pre1/src/openGL/GEMglFrustum.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFrustum.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglFrustum.h gem-0.94/src/openGL/GEMglFrustum.h --- gem-0.94~pre1/src/openGL/GEMglFrustum.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglFrustum.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglGenerateMipmap.cpp gem-0.94/src/openGL/GEMglGenerateMipmap.cpp --- gem-0.94~pre1/src/openGL/GEMglGenerateMipmap.cpp 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGenerateMipmap.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,95 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// Implementation file +// +// Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +// zmoelnig@iem.at +// For information on usage and redistribution, and for a DISCLAIMER +// * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" +// +// this file has been generated... +//////////////////////////////////////////////////////// + +#include "GEMglGenerateMipmap.h" +#include "Gem/Exception.h" + +CPPEXTERN_NEW_WITH_GIMME ( GEMglGenerateMipmap ); +using namespace gem::utils::gl; + +///////////////////////////////////////////////////////// +// +// GEMglViewport +// +///////////////////////////////////////////////////////// +// Constructor +// +GEMglGenerateMipmap :: GEMglGenerateMipmap (int argc, t_atom*argv) : + target(0) +{ + switch(argc) { + case 0: break; + case 1: + targetMess(argv[0]); + break; + default: + throw(GemException("invalid number of arguments")); + } + m_inlet[0] = inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, + gensym("target")); +} +///////////////////////////////////////////////////////// +// Destructor +// +GEMglGenerateMipmap :: ~GEMglGenerateMipmap () +{ + inlet_free(m_inlet[0]); +} +////////////////// +// extension check +bool GEMglGenerateMipmap:: isRunnable(void) +{ + if(GLEW_VERSION_1_3) { + return true; + } + error("your system does not support OpenGL-1.3"); + return false; +} + +///////////////////////////////////////////////////////// +// Render +// +void GEMglGenerateMipmap :: render(GemState *state) +{ + glGenerateMipmap (target); +} + +///////////////////////////////////////////////////////// +// Variables +// +void GEMglGenerateMipmap :: targetMess (t_atom&arg) // FUN +{ + target = static_cast<GLenum>(getGLdefine(&arg)); + setModified(); +} + + +///////////////////////////////////////////////////////// +// static member functions +// + +void GEMglGenerateMipmap :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, + reinterpret_cast<t_method>(&GEMglGenerateMipmap::targetMessCallback), gensym("target"), + A_GIMME, A_NULL); +}; + +void GEMglGenerateMipmap :: targetMessCallback (void* data, t_symbol*, int argc, + t_atom*argv) +{ + if(argc==1) { + GetMyClass(data)->targetMess ( argv[0]); + } +} diff -Nru gem-0.94~pre1/src/openGL/GEMglGenerateMipmap.h gem-0.94/src/openGL/GEMglGenerateMipmap.h --- gem-0.94~pre1/src/openGL/GEMglGenerateMipmap.h 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGenerateMipmap.h 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,55 @@ +/* ------------------------------------------------------------------ + * GEM - Graphics Environment for Multimedia + * + * Copyright (c) 2002-2018 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + * zmoelnig@iem.at + * For information on usage and redistribution, and for a DISCLAIMER + * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" + * + * this file has been generated... + * ------------------------------------------------------------------ + */ + +#ifndef _INCLUDE__GEM_OPENGL_GEMGLGENERATEMIPMAP_H_ +#define _INCLUDE__GEM_OPENGL_GEMGLGENERATEMIPMAP_H_ + +#include "Base/GemGLBase.h" + +/* + CLASS + GEMglGenerateMipmap + KEYWORDS + openGL 0 + DESCRIPTION + wrapper for the openGL-function + "glGenerateMipmap( GLenum target)" + */ + +class GEM_EXTERN GEMglGenerateMipmap : public GemGLBase +{ + CPPEXTERN_HEADER(GEMglGenerateMipmap, GemGLBase); + +public: + // Constructor + GEMglGenerateMipmap (int, t_atom*); // CON + +protected: + // Destructor + virtual ~GEMglGenerateMipmap (); + // Do the rendering + virtual bool isRunnable(void); + virtual void render (GemState *state); + + // variables + GLenum target; // VAR + virtual void targetMess(t_atom&); // FUN + +private: + + // we need some inlets + t_inlet *m_inlet[1]; + + // static member functions + static void targetMessCallback (void*,t_symbol*,int,t_atom*); +}; +#endif // for header file diff -Nru gem-0.94~pre1/src/openGL/GEMglGenLists.cpp gem-0.94/src/openGL/GEMglGenLists.cpp --- gem-0.94~pre1/src/openGL/GEMglGenLists.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGenLists.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglGenLists.h gem-0.94/src/openGL/GEMglGenLists.h --- gem-0.94~pre1/src/openGL/GEMglGenLists.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGenLists.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglGenTextures.cpp gem-0.94/src/openGL/GEMglGenTextures.cpp --- gem-0.94~pre1/src/openGL/GEMglGenTextures.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGenTextures.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglGenTextures.h gem-0.94/src/openGL/GEMglGenTextures.h --- gem-0.94~pre1/src/openGL/GEMglGenTextures.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGenTextures.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglGetError.cpp gem-0.94/src/openGL/GEMglGetError.cpp --- gem-0.94~pre1/src/openGL/GEMglGetError.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetError.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglGetError.h gem-0.94/src/openGL/GEMglGetError.h --- gem-0.94~pre1/src/openGL/GEMglGetError.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetError.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglGetFloatv.cpp gem-0.94/src/openGL/GEMglGetFloatv.cpp --- gem-0.94~pre1/src/openGL/GEMglGetFloatv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetFloatv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglGetFloatv.h gem-0.94/src/openGL/GEMglGetFloatv.h --- gem-0.94~pre1/src/openGL/GEMglGetFloatv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetFloatv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglGetIntegerv.cpp gem-0.94/src/openGL/GEMglGetIntegerv.cpp --- gem-0.94~pre1/src/openGL/GEMglGetIntegerv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetIntegerv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglGetIntegerv.h gem-0.94/src/openGL/GEMglGetIntegerv.h --- gem-0.94~pre1/src/openGL/GEMglGetIntegerv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetIntegerv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglGetMapdv.cpp gem-0.94/src/openGL/GEMglGetMapdv.cpp --- gem-0.94~pre1/src/openGL/GEMglGetMapdv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetMapdv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglGetMapdv.h gem-0.94/src/openGL/GEMglGetMapdv.h --- gem-0.94~pre1/src/openGL/GEMglGetMapdv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetMapdv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglGetMapfv.cpp gem-0.94/src/openGL/GEMglGetMapfv.cpp --- gem-0.94~pre1/src/openGL/GEMglGetMapfv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetMapfv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglGetMapfv.h gem-0.94/src/openGL/GEMglGetMapfv.h --- gem-0.94~pre1/src/openGL/GEMglGetMapfv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetMapfv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglGetMapiv.cpp gem-0.94/src/openGL/GEMglGetMapiv.cpp --- gem-0.94~pre1/src/openGL/GEMglGetMapiv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetMapiv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglGetMapiv.h gem-0.94/src/openGL/GEMglGetMapiv.h --- gem-0.94~pre1/src/openGL/GEMglGetMapiv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetMapiv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglGetPointerv.cpp gem-0.94/src/openGL/GEMglGetPointerv.cpp --- gem-0.94~pre1/src/openGL/GEMglGetPointerv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetPointerv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglGetPointerv.h gem-0.94/src/openGL/GEMglGetPointerv.h --- gem-0.94~pre1/src/openGL/GEMglGetPointerv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetPointerv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglGetString.cpp gem-0.94/src/openGL/GEMglGetString.cpp --- gem-0.94~pre1/src/openGL/GEMglGetString.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetString.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglGetString.h gem-0.94/src/openGL/GEMglGetString.h --- gem-0.94~pre1/src/openGL/GEMglGetString.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglGetString.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglHint.cpp gem-0.94/src/openGL/GEMglHint.cpp --- gem-0.94~pre1/src/openGL/GEMglHint.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglHint.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglHint.h gem-0.94/src/openGL/GEMglHint.h --- gem-0.94~pre1/src/openGL/GEMglHint.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglHint.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexd.cpp gem-0.94/src/openGL/GEMglIndexd.cpp --- gem-0.94~pre1/src/openGL/GEMglIndexd.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexd.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexd.h gem-0.94/src/openGL/GEMglIndexd.h --- gem-0.94~pre1/src/openGL/GEMglIndexd.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexd.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexdv.cpp gem-0.94/src/openGL/GEMglIndexdv.cpp --- gem-0.94~pre1/src/openGL/GEMglIndexdv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexdv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexdv.h gem-0.94/src/openGL/GEMglIndexdv.h --- gem-0.94~pre1/src/openGL/GEMglIndexdv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexdv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexf.cpp gem-0.94/src/openGL/GEMglIndexf.cpp --- gem-0.94~pre1/src/openGL/GEMglIndexf.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexf.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexf.h gem-0.94/src/openGL/GEMglIndexf.h --- gem-0.94~pre1/src/openGL/GEMglIndexf.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexf.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexfv.cpp gem-0.94/src/openGL/GEMglIndexfv.cpp --- gem-0.94~pre1/src/openGL/GEMglIndexfv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexfv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexfv.h gem-0.94/src/openGL/GEMglIndexfv.h --- gem-0.94~pre1/src/openGL/GEMglIndexfv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexfv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexi.cpp gem-0.94/src/openGL/GEMglIndexi.cpp --- gem-0.94~pre1/src/openGL/GEMglIndexi.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexi.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexi.h gem-0.94/src/openGL/GEMglIndexi.h --- gem-0.94~pre1/src/openGL/GEMglIndexi.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexi.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexiv.cpp gem-0.94/src/openGL/GEMglIndexiv.cpp --- gem-0.94~pre1/src/openGL/GEMglIndexiv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexiv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexiv.h gem-0.94/src/openGL/GEMglIndexiv.h --- gem-0.94~pre1/src/openGL/GEMglIndexiv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexiv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexMask.cpp gem-0.94/src/openGL/GEMglIndexMask.cpp --- gem-0.94~pre1/src/openGL/GEMglIndexMask.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexMask.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexMask.h gem-0.94/src/openGL/GEMglIndexMask.h --- gem-0.94~pre1/src/openGL/GEMglIndexMask.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexMask.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexs.cpp gem-0.94/src/openGL/GEMglIndexs.cpp --- gem-0.94~pre1/src/openGL/GEMglIndexs.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexs.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexs.h gem-0.94/src/openGL/GEMglIndexs.h --- gem-0.94~pre1/src/openGL/GEMglIndexs.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexs.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexsv.cpp gem-0.94/src/openGL/GEMglIndexsv.cpp --- gem-0.94~pre1/src/openGL/GEMglIndexsv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexsv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexsv.h gem-0.94/src/openGL/GEMglIndexsv.h --- gem-0.94~pre1/src/openGL/GEMglIndexsv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexsv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexub.cpp gem-0.94/src/openGL/GEMglIndexub.cpp --- gem-0.94~pre1/src/openGL/GEMglIndexub.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexub.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexub.h gem-0.94/src/openGL/GEMglIndexub.h --- gem-0.94~pre1/src/openGL/GEMglIndexub.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexub.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexubv.cpp gem-0.94/src/openGL/GEMglIndexubv.cpp --- gem-0.94~pre1/src/openGL/GEMglIndexubv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexubv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglIndexubv.h gem-0.94/src/openGL/GEMglIndexubv.h --- gem-0.94~pre1/src/openGL/GEMglIndexubv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIndexubv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglInitNames.cpp gem-0.94/src/openGL/GEMglInitNames.cpp --- gem-0.94~pre1/src/openGL/GEMglInitNames.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglInitNames.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglInitNames.h gem-0.94/src/openGL/GEMglInitNames.h --- gem-0.94~pre1/src/openGL/GEMglInitNames.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglInitNames.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglIsEnabled.cpp gem-0.94/src/openGL/GEMglIsEnabled.cpp --- gem-0.94~pre1/src/openGL/GEMglIsEnabled.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIsEnabled.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglIsEnabled.h gem-0.94/src/openGL/GEMglIsEnabled.h --- gem-0.94~pre1/src/openGL/GEMglIsEnabled.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIsEnabled.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglIsList.cpp gem-0.94/src/openGL/GEMglIsList.cpp --- gem-0.94~pre1/src/openGL/GEMglIsList.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIsList.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglIsList.h gem-0.94/src/openGL/GEMglIsList.h --- gem-0.94~pre1/src/openGL/GEMglIsList.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIsList.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglIsTexture.cpp gem-0.94/src/openGL/GEMglIsTexture.cpp --- gem-0.94~pre1/src/openGL/GEMglIsTexture.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIsTexture.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglIsTexture.h gem-0.94/src/openGL/GEMglIsTexture.h --- gem-0.94~pre1/src/openGL/GEMglIsTexture.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglIsTexture.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglLightf.cpp gem-0.94/src/openGL/GEMglLightf.cpp --- gem-0.94~pre1/src/openGL/GEMglLightf.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLightf.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglLightf.h gem-0.94/src/openGL/GEMglLightf.h --- gem-0.94~pre1/src/openGL/GEMglLightf.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLightf.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglLighti.cpp gem-0.94/src/openGL/GEMglLighti.cpp --- gem-0.94~pre1/src/openGL/GEMglLighti.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLighti.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglLighti.h gem-0.94/src/openGL/GEMglLighti.h --- gem-0.94~pre1/src/openGL/GEMglLighti.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLighti.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglLightModelf.cpp gem-0.94/src/openGL/GEMglLightModelf.cpp --- gem-0.94~pre1/src/openGL/GEMglLightModelf.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLightModelf.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglLightModelf.h gem-0.94/src/openGL/GEMglLightModelf.h --- gem-0.94~pre1/src/openGL/GEMglLightModelf.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLightModelf.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglLightModeli.cpp gem-0.94/src/openGL/GEMglLightModeli.cpp --- gem-0.94~pre1/src/openGL/GEMglLightModeli.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLightModeli.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglLightModeli.h gem-0.94/src/openGL/GEMglLightModeli.h --- gem-0.94~pre1/src/openGL/GEMglLightModeli.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLightModeli.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglLineStipple.cpp gem-0.94/src/openGL/GEMglLineStipple.cpp --- gem-0.94~pre1/src/openGL/GEMglLineStipple.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLineStipple.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglLineStipple.h gem-0.94/src/openGL/GEMglLineStipple.h --- gem-0.94~pre1/src/openGL/GEMglLineStipple.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLineStipple.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglLineWidth.cpp gem-0.94/src/openGL/GEMglLineWidth.cpp --- gem-0.94~pre1/src/openGL/GEMglLineWidth.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLineWidth.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglLineWidth.h gem-0.94/src/openGL/GEMglLineWidth.h --- gem-0.94~pre1/src/openGL/GEMglLineWidth.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLineWidth.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglLoadIdentity.cpp gem-0.94/src/openGL/GEMglLoadIdentity.cpp --- gem-0.94~pre1/src/openGL/GEMglLoadIdentity.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLoadIdentity.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglLoadIdentity.h gem-0.94/src/openGL/GEMglLoadIdentity.h --- gem-0.94~pre1/src/openGL/GEMglLoadIdentity.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLoadIdentity.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglLoadName.cpp gem-0.94/src/openGL/GEMglLoadName.cpp --- gem-0.94~pre1/src/openGL/GEMglLoadName.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLoadName.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglLoadName.h gem-0.94/src/openGL/GEMglLoadName.h --- gem-0.94~pre1/src/openGL/GEMglLoadName.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLoadName.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglLogicOp.cpp gem-0.94/src/openGL/GEMglLogicOp.cpp --- gem-0.94~pre1/src/openGL/GEMglLogicOp.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLogicOp.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglLogicOp.h gem-0.94/src/openGL/GEMglLogicOp.h --- gem-0.94~pre1/src/openGL/GEMglLogicOp.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglLogicOp.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglMap1d.cpp gem-0.94/src/openGL/GEMglMap1d.cpp --- gem-0.94~pre1/src/openGL/GEMglMap1d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMap1d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglMap1d.h gem-0.94/src/openGL/GEMglMap1d.h --- gem-0.94~pre1/src/openGL/GEMglMap1d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMap1d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglMap1f.cpp gem-0.94/src/openGL/GEMglMap1f.cpp --- gem-0.94~pre1/src/openGL/GEMglMap1f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMap1f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglMap1f.h gem-0.94/src/openGL/GEMglMap1f.h --- gem-0.94~pre1/src/openGL/GEMglMap1f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMap1f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglMap2d.cpp gem-0.94/src/openGL/GEMglMap2d.cpp --- gem-0.94~pre1/src/openGL/GEMglMap2d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMap2d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglMap2d.h gem-0.94/src/openGL/GEMglMap2d.h --- gem-0.94~pre1/src/openGL/GEMglMap2d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMap2d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglMap2f.cpp gem-0.94/src/openGL/GEMglMap2f.cpp --- gem-0.94~pre1/src/openGL/GEMglMap2f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMap2f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglMap2f.h gem-0.94/src/openGL/GEMglMap2f.h --- gem-0.94~pre1/src/openGL/GEMglMap2f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMap2f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglMapGrid1d.cpp gem-0.94/src/openGL/GEMglMapGrid1d.cpp --- gem-0.94~pre1/src/openGL/GEMglMapGrid1d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMapGrid1d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglMapGrid1d.h gem-0.94/src/openGL/GEMglMapGrid1d.h --- gem-0.94~pre1/src/openGL/GEMglMapGrid1d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMapGrid1d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglMapGrid1f.cpp gem-0.94/src/openGL/GEMglMapGrid1f.cpp --- gem-0.94~pre1/src/openGL/GEMglMapGrid1f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMapGrid1f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglMapGrid1f.h gem-0.94/src/openGL/GEMglMapGrid1f.h --- gem-0.94~pre1/src/openGL/GEMglMapGrid1f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMapGrid1f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglMapGrid2d.cpp gem-0.94/src/openGL/GEMglMapGrid2d.cpp --- gem-0.94~pre1/src/openGL/GEMglMapGrid2d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMapGrid2d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglMapGrid2d.h gem-0.94/src/openGL/GEMglMapGrid2d.h --- gem-0.94~pre1/src/openGL/GEMglMapGrid2d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMapGrid2d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglMapGrid2f.cpp gem-0.94/src/openGL/GEMglMapGrid2f.cpp --- gem-0.94~pre1/src/openGL/GEMglMapGrid2f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMapGrid2f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglMapGrid2f.h gem-0.94/src/openGL/GEMglMapGrid2f.h --- gem-0.94~pre1/src/openGL/GEMglMapGrid2f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMapGrid2f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglMaterialf.cpp gem-0.94/src/openGL/GEMglMaterialf.cpp --- gem-0.94~pre1/src/openGL/GEMglMaterialf.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMaterialf.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglMaterialf.h gem-0.94/src/openGL/GEMglMaterialf.h --- gem-0.94~pre1/src/openGL/GEMglMaterialf.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMaterialf.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglMaterialfv.cpp gem-0.94/src/openGL/GEMglMaterialfv.cpp --- gem-0.94~pre1/src/openGL/GEMglMaterialfv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMaterialfv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglMaterialfv.h gem-0.94/src/openGL/GEMglMaterialfv.h --- gem-0.94~pre1/src/openGL/GEMglMaterialfv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMaterialfv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglMateriali.cpp gem-0.94/src/openGL/GEMglMateriali.cpp --- gem-0.94~pre1/src/openGL/GEMglMateriali.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMateriali.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglMateriali.h gem-0.94/src/openGL/GEMglMateriali.h --- gem-0.94~pre1/src/openGL/GEMglMateriali.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMateriali.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglMatrixMode.cpp gem-0.94/src/openGL/GEMglMatrixMode.cpp --- gem-0.94~pre1/src/openGL/GEMglMatrixMode.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMatrixMode.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglMatrixMode.h gem-0.94/src/openGL/GEMglMatrixMode.h --- gem-0.94~pre1/src/openGL/GEMglMatrixMode.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMatrixMode.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglMultiTexCoord2f.cpp gem-0.94/src/openGL/GEMglMultiTexCoord2f.cpp --- gem-0.94~pre1/src/openGL/GEMglMultiTexCoord2f.cpp 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMultiTexCoord2f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,119 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// Implementation file +// +// Copyright (c) 2004-2005 tigital@mac.com +// For information on usage and redistribution, and for a DISCLAIMER +// * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" +// +//////////////////////////////////////////////////////// + +#include "GEMglMultiTexCoord2f.h" + +CPPEXTERN_NEW_WITH_THREE_ARGS ( GEMglMultiTexCoord2f, t_floatarg, + A_DEFFLOAT, t_floatarg, A_DEFFLOAT, t_floatarg, A_DEFFLOAT); + +///////////////////////////////////////////////////////// +// +// GEMglMultiTexCoord2f +// +///////////////////////////////////////////////////////// +// Constructor +// +GEMglMultiTexCoord2f :: GEMglMultiTexCoord2f (t_floatarg arg0, + t_floatarg arg1, t_floatarg arg2) : + texUnit(static_cast<GLenum>(arg0)), + s(static_cast<GLfloat>(arg1)), + t(static_cast<GLfloat>(arg2)) +{ + m_inlet[0] = inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, + gensym("texUnit")); + m_inlet[1] = inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, + gensym("s")); + m_inlet[2] = inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, + gensym("t")); +} +///////////////////////////////////////////////////////// +// Destructor +// +GEMglMultiTexCoord2f :: ~GEMglMultiTexCoord2f () +{ + inlet_free(m_inlet[0]); + inlet_free(m_inlet[1]); + inlet_free(m_inlet[2]); +} + +////////////////// +// extension check +bool GEMglMultiTexCoord2f :: isRunnable(void) +{ + if(GLEW_ARB_multitexture) { + return true; + } + error("your system does not support the ARB multitexture extension"); + return false; +} + + +///////////////////////////////////////////////////////// +// Render +// +void GEMglMultiTexCoord2f :: render(GemState *state) +{ + glMultiTexCoord2f (texUnit, s, t); +} + +///////////////////////////////////////////////////////// +// Variables +// +void GEMglMultiTexCoord2f :: texUnitMess (t_float arg1) // FUN +{ + texUnit = static_cast<GLenum>(arg1); + setModified(); +} + +void GEMglMultiTexCoord2f :: sMess (t_float arg1) // FUN +{ + s = static_cast<GLfloat>(arg1); + setModified(); +} + +void GEMglMultiTexCoord2f :: tMess (t_float arg1) // FUN +{ + t = static_cast<GLfloat>(arg1); + setModified(); +} + + +///////////////////////////////////////////////////////// +// static member functions +// + +void GEMglMultiTexCoord2f :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, + reinterpret_cast<t_method>(&GEMglMultiTexCoord2f::texUnitMessCallback), + gensym("texUnit"), A_DEFFLOAT, A_NULL); + class_addmethod(classPtr, + reinterpret_cast<t_method>(&GEMglMultiTexCoord2f::sMessCallback), + gensym("s"), A_DEFFLOAT, A_NULL); + class_addmethod(classPtr, + reinterpret_cast<t_method>(&GEMglMultiTexCoord2f::tMessCallback), + gensym("t"), A_DEFFLOAT, A_NULL); +}; + +void GEMglMultiTexCoord2f :: texUnitMessCallback (void* data, + t_float arg0) +{ + GetMyClass(data)->texUnitMess ( static_cast<t_float>(arg0)); +} +void GEMglMultiTexCoord2f :: sMessCallback (void* data, t_float arg0) +{ + GetMyClass(data)->sMess ( static_cast<t_float>(arg0)); +} +void GEMglMultiTexCoord2f :: tMessCallback (void* data, t_float arg0) +{ + GetMyClass(data)->tMess ( static_cast<t_float>(arg0)); +} diff -Nru gem-0.94~pre1/src/openGL/GEMglMultiTexCoord2f.h gem-0.94/src/openGL/GEMglMultiTexCoord2f.h --- gem-0.94~pre1/src/openGL/GEMglMultiTexCoord2f.h 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/openGL/GEMglMultiTexCoord2f.h 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,64 @@ +/* ------------------------------------------------------------------ + * GEM - Graphics Environment for Multimedia + * + * Copyright (c) 2004-2005 tigital@mac.com + * For information on usage and redistribution, and for a DISCLAIMER + * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" + * + * ------------------------------------------------------------------ + */ + +#ifndef _INCLUDE__GEM_OPENGL_GEMGLMULTITEXCOORD2FARB_H_ +#define _INCLUDE__GEM_OPENGL_GEMGLMULTITEXCOORD2FARB_H_ + +#include "Base/GemGLBase.h" + +/* + CLASS + GEMglMultiTexCoord2f + KEYWORDS + openGL 0 + DESCRIPTION + wrapper for the openGL-function + "glMultiTexCoord2f( GLenum texUnit, GLfloat s, GLfloat t )" + */ + +class GEM_EXTERN GEMglMultiTexCoord2f : public GemGLBase +{ + CPPEXTERN_HEADER(GEMglMultiTexCoord2f, GemGLBase); + +public: + // Constructor + GEMglMultiTexCoord2f (t_float, t_float, t_float); // CON + +protected: + // Destructor + virtual ~GEMglMultiTexCoord2f (); + // check extensions + virtual bool isRunnable(void); + + // Do the rendering + virtual void render (GemState *state); + + // variables + GLenum texUnit; // VAR + virtual void texUnitMess(t_float); // FUN + + GLfloat s; // VAR + virtual void sMess(t_float); // FUN + + GLfloat t; // VAR + virtual void tMess(t_float); // FUN + + +private: + + // we need some inlets + t_inlet *m_inlet[3]; + + // static member functions + static void texUnitMessCallback (void*, t_float); + static void sMessCallback (void*, t_float); + static void tMessCallback (void*, t_float); +}; +#endif // for header file diff -Nru gem-0.94~pre1/src/openGL/GEMglNewList.cpp gem-0.94/src/openGL/GEMglNewList.cpp --- gem-0.94~pre1/src/openGL/GEMglNewList.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNewList.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglNewList.h gem-0.94/src/openGL/GEMglNewList.h --- gem-0.94~pre1/src/openGL/GEMglNewList.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNewList.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3b.cpp gem-0.94/src/openGL/GEMglNormal3b.cpp --- gem-0.94~pre1/src/openGL/GEMglNormal3b.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3b.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3b.h gem-0.94/src/openGL/GEMglNormal3b.h --- gem-0.94~pre1/src/openGL/GEMglNormal3b.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3b.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3bv.cpp gem-0.94/src/openGL/GEMglNormal3bv.cpp --- gem-0.94~pre1/src/openGL/GEMglNormal3bv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3bv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3bv.h gem-0.94/src/openGL/GEMglNormal3bv.h --- gem-0.94~pre1/src/openGL/GEMglNormal3bv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3bv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3d.cpp gem-0.94/src/openGL/GEMglNormal3d.cpp --- gem-0.94~pre1/src/openGL/GEMglNormal3d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3d.h gem-0.94/src/openGL/GEMglNormal3d.h --- gem-0.94~pre1/src/openGL/GEMglNormal3d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3dv.cpp gem-0.94/src/openGL/GEMglNormal3dv.cpp --- gem-0.94~pre1/src/openGL/GEMglNormal3dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3dv.h gem-0.94/src/openGL/GEMglNormal3dv.h --- gem-0.94~pre1/src/openGL/GEMglNormal3dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3f.cpp gem-0.94/src/openGL/GEMglNormal3f.cpp --- gem-0.94~pre1/src/openGL/GEMglNormal3f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3f.h gem-0.94/src/openGL/GEMglNormal3f.h --- gem-0.94~pre1/src/openGL/GEMglNormal3f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3fv.cpp gem-0.94/src/openGL/GEMglNormal3fv.cpp --- gem-0.94~pre1/src/openGL/GEMglNormal3fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3fv.h gem-0.94/src/openGL/GEMglNormal3fv.h --- gem-0.94~pre1/src/openGL/GEMglNormal3fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3i.cpp gem-0.94/src/openGL/GEMglNormal3i.cpp --- gem-0.94~pre1/src/openGL/GEMglNormal3i.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3i.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3i.h gem-0.94/src/openGL/GEMglNormal3i.h --- gem-0.94~pre1/src/openGL/GEMglNormal3i.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3i.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3iv.cpp gem-0.94/src/openGL/GEMglNormal3iv.cpp --- gem-0.94~pre1/src/openGL/GEMglNormal3iv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3iv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3iv.h gem-0.94/src/openGL/GEMglNormal3iv.h --- gem-0.94~pre1/src/openGL/GEMglNormal3iv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3iv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3s.cpp gem-0.94/src/openGL/GEMglNormal3s.cpp --- gem-0.94~pre1/src/openGL/GEMglNormal3s.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3s.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3s.h gem-0.94/src/openGL/GEMglNormal3s.h --- gem-0.94~pre1/src/openGL/GEMglNormal3s.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3s.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3sv.cpp gem-0.94/src/openGL/GEMglNormal3sv.cpp --- gem-0.94~pre1/src/openGL/GEMglNormal3sv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3sv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglNormal3sv.h gem-0.94/src/openGL/GEMglNormal3sv.h --- gem-0.94~pre1/src/openGL/GEMglNormal3sv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglNormal3sv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglOrtho.cpp gem-0.94/src/openGL/GEMglOrtho.cpp --- gem-0.94~pre1/src/openGL/GEMglOrtho.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglOrtho.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglOrtho.h gem-0.94/src/openGL/GEMglOrtho.h --- gem-0.94~pre1/src/openGL/GEMglOrtho.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglOrtho.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPassThrough.cpp gem-0.94/src/openGL/GEMglPassThrough.cpp --- gem-0.94~pre1/src/openGL/GEMglPassThrough.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPassThrough.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPassThrough.h gem-0.94/src/openGL/GEMglPassThrough.h --- gem-0.94~pre1/src/openGL/GEMglPassThrough.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPassThrough.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPixelStoref.cpp gem-0.94/src/openGL/GEMglPixelStoref.cpp --- gem-0.94~pre1/src/openGL/GEMglPixelStoref.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPixelStoref.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPixelStoref.h gem-0.94/src/openGL/GEMglPixelStoref.h --- gem-0.94~pre1/src/openGL/GEMglPixelStoref.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPixelStoref.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPixelStorei.cpp gem-0.94/src/openGL/GEMglPixelStorei.cpp --- gem-0.94~pre1/src/openGL/GEMglPixelStorei.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPixelStorei.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPixelStorei.h gem-0.94/src/openGL/GEMglPixelStorei.h --- gem-0.94~pre1/src/openGL/GEMglPixelStorei.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPixelStorei.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPixelTransferf.cpp gem-0.94/src/openGL/GEMglPixelTransferf.cpp --- gem-0.94~pre1/src/openGL/GEMglPixelTransferf.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPixelTransferf.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPixelTransferf.h gem-0.94/src/openGL/GEMglPixelTransferf.h --- gem-0.94~pre1/src/openGL/GEMglPixelTransferf.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPixelTransferf.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPixelTransferi.cpp gem-0.94/src/openGL/GEMglPixelTransferi.cpp --- gem-0.94~pre1/src/openGL/GEMglPixelTransferi.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPixelTransferi.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPixelTransferi.h gem-0.94/src/openGL/GEMglPixelTransferi.h --- gem-0.94~pre1/src/openGL/GEMglPixelTransferi.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPixelTransferi.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPixelZoom.cpp gem-0.94/src/openGL/GEMglPixelZoom.cpp --- gem-0.94~pre1/src/openGL/GEMglPixelZoom.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPixelZoom.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPixelZoom.h gem-0.94/src/openGL/GEMglPixelZoom.h --- gem-0.94~pre1/src/openGL/GEMglPixelZoom.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPixelZoom.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPointSize.cpp gem-0.94/src/openGL/GEMglPointSize.cpp --- gem-0.94~pre1/src/openGL/GEMglPointSize.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPointSize.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPointSize.h gem-0.94/src/openGL/GEMglPointSize.h --- gem-0.94~pre1/src/openGL/GEMglPointSize.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPointSize.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPolygonMode.cpp gem-0.94/src/openGL/GEMglPolygonMode.cpp --- gem-0.94~pre1/src/openGL/GEMglPolygonMode.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPolygonMode.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPolygonMode.h gem-0.94/src/openGL/GEMglPolygonMode.h --- gem-0.94~pre1/src/openGL/GEMglPolygonMode.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPolygonMode.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPolygonOffset.cpp gem-0.94/src/openGL/GEMglPolygonOffset.cpp --- gem-0.94~pre1/src/openGL/GEMglPolygonOffset.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPolygonOffset.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPolygonOffset.h gem-0.94/src/openGL/GEMglPolygonOffset.h --- gem-0.94~pre1/src/openGL/GEMglPolygonOffset.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPolygonOffset.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPopAttrib.cpp gem-0.94/src/openGL/GEMglPopAttrib.cpp --- gem-0.94~pre1/src/openGL/GEMglPopAttrib.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPopAttrib.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPopAttrib.h gem-0.94/src/openGL/GEMglPopAttrib.h --- gem-0.94~pre1/src/openGL/GEMglPopAttrib.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPopAttrib.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPopClientAttrib.cpp gem-0.94/src/openGL/GEMglPopClientAttrib.cpp --- gem-0.94~pre1/src/openGL/GEMglPopClientAttrib.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPopClientAttrib.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPopClientAttrib.h gem-0.94/src/openGL/GEMglPopClientAttrib.h --- gem-0.94~pre1/src/openGL/GEMglPopClientAttrib.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPopClientAttrib.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPopMatrix.cpp gem-0.94/src/openGL/GEMglPopMatrix.cpp --- gem-0.94~pre1/src/openGL/GEMglPopMatrix.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPopMatrix.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPopMatrix.h gem-0.94/src/openGL/GEMglPopMatrix.h --- gem-0.94~pre1/src/openGL/GEMglPopMatrix.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPopMatrix.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPopName.cpp gem-0.94/src/openGL/GEMglPopName.cpp --- gem-0.94~pre1/src/openGL/GEMglPopName.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPopName.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPopName.h gem-0.94/src/openGL/GEMglPopName.h --- gem-0.94~pre1/src/openGL/GEMglPopName.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPopName.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPrioritizeTextures.cpp gem-0.94/src/openGL/GEMglPrioritizeTextures.cpp --- gem-0.94~pre1/src/openGL/GEMglPrioritizeTextures.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPrioritizeTextures.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPrioritizeTextures.h gem-0.94/src/openGL/GEMglPrioritizeTextures.h --- gem-0.94~pre1/src/openGL/GEMglPrioritizeTextures.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPrioritizeTextures.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPushAttrib.cpp gem-0.94/src/openGL/GEMglPushAttrib.cpp --- gem-0.94~pre1/src/openGL/GEMglPushAttrib.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPushAttrib.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPushAttrib.h gem-0.94/src/openGL/GEMglPushAttrib.h --- gem-0.94~pre1/src/openGL/GEMglPushAttrib.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPushAttrib.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPushClientAttrib.cpp gem-0.94/src/openGL/GEMglPushClientAttrib.cpp --- gem-0.94~pre1/src/openGL/GEMglPushClientAttrib.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPushClientAttrib.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPushClientAttrib.h gem-0.94/src/openGL/GEMglPushClientAttrib.h --- gem-0.94~pre1/src/openGL/GEMglPushClientAttrib.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPushClientAttrib.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPushMatrix.cpp gem-0.94/src/openGL/GEMglPushMatrix.cpp --- gem-0.94~pre1/src/openGL/GEMglPushMatrix.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPushMatrix.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPushMatrix.h gem-0.94/src/openGL/GEMglPushMatrix.h --- gem-0.94~pre1/src/openGL/GEMglPushMatrix.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPushMatrix.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglPushName.cpp gem-0.94/src/openGL/GEMglPushName.cpp --- gem-0.94~pre1/src/openGL/GEMglPushName.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPushName.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglPushName.h gem-0.94/src/openGL/GEMglPushName.h --- gem-0.94~pre1/src/openGL/GEMglPushName.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglPushName.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2d.cpp gem-0.94/src/openGL/GEMglRasterPos2d.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos2d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2d.h gem-0.94/src/openGL/GEMglRasterPos2d.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos2d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2dv.cpp gem-0.94/src/openGL/GEMglRasterPos2dv.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos2dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2dv.h gem-0.94/src/openGL/GEMglRasterPos2dv.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos2dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2f.cpp gem-0.94/src/openGL/GEMglRasterPos2f.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos2f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2f.h gem-0.94/src/openGL/GEMglRasterPos2f.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos2f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2fv.cpp gem-0.94/src/openGL/GEMglRasterPos2fv.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos2fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2fv.h gem-0.94/src/openGL/GEMglRasterPos2fv.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos2fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2i.cpp gem-0.94/src/openGL/GEMglRasterPos2i.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos2i.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2i.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2i.h gem-0.94/src/openGL/GEMglRasterPos2i.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos2i.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2i.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2iv.cpp gem-0.94/src/openGL/GEMglRasterPos2iv.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos2iv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2iv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2iv.h gem-0.94/src/openGL/GEMglRasterPos2iv.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos2iv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2iv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2s.cpp gem-0.94/src/openGL/GEMglRasterPos2s.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos2s.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2s.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2s.h gem-0.94/src/openGL/GEMglRasterPos2s.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos2s.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2s.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2sv.cpp gem-0.94/src/openGL/GEMglRasterPos2sv.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos2sv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2sv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos2sv.h gem-0.94/src/openGL/GEMglRasterPos2sv.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos2sv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos2sv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3d.cpp gem-0.94/src/openGL/GEMglRasterPos3d.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos3d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3d.h gem-0.94/src/openGL/GEMglRasterPos3d.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos3d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3dv.cpp gem-0.94/src/openGL/GEMglRasterPos3dv.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos3dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3dv.h gem-0.94/src/openGL/GEMglRasterPos3dv.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos3dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3f.cpp gem-0.94/src/openGL/GEMglRasterPos3f.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos3f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3f.h gem-0.94/src/openGL/GEMglRasterPos3f.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos3f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3fv.cpp gem-0.94/src/openGL/GEMglRasterPos3fv.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos3fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3fv.h gem-0.94/src/openGL/GEMglRasterPos3fv.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos3fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3i.cpp gem-0.94/src/openGL/GEMglRasterPos3i.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos3i.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3i.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3i.h gem-0.94/src/openGL/GEMglRasterPos3i.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos3i.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3i.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3iv.cpp gem-0.94/src/openGL/GEMglRasterPos3iv.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos3iv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3iv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3iv.h gem-0.94/src/openGL/GEMglRasterPos3iv.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos3iv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3iv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3s.cpp gem-0.94/src/openGL/GEMglRasterPos3s.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos3s.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3s.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3s.h gem-0.94/src/openGL/GEMglRasterPos3s.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos3s.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3s.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3sv.cpp gem-0.94/src/openGL/GEMglRasterPos3sv.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos3sv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3sv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos3sv.h gem-0.94/src/openGL/GEMglRasterPos3sv.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos3sv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos3sv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4d.cpp gem-0.94/src/openGL/GEMglRasterPos4d.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos4d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4d.h gem-0.94/src/openGL/GEMglRasterPos4d.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos4d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4dv.cpp gem-0.94/src/openGL/GEMglRasterPos4dv.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos4dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4dv.h gem-0.94/src/openGL/GEMglRasterPos4dv.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos4dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4f.cpp gem-0.94/src/openGL/GEMglRasterPos4f.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos4f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4f.h gem-0.94/src/openGL/GEMglRasterPos4f.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos4f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4fv.cpp gem-0.94/src/openGL/GEMglRasterPos4fv.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos4fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4fv.h gem-0.94/src/openGL/GEMglRasterPos4fv.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos4fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4i.cpp gem-0.94/src/openGL/GEMglRasterPos4i.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos4i.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4i.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4i.h gem-0.94/src/openGL/GEMglRasterPos4i.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos4i.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4i.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4iv.cpp gem-0.94/src/openGL/GEMglRasterPos4iv.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos4iv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4iv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4iv.h gem-0.94/src/openGL/GEMglRasterPos4iv.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos4iv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4iv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4s.cpp gem-0.94/src/openGL/GEMglRasterPos4s.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos4s.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4s.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4s.h gem-0.94/src/openGL/GEMglRasterPos4s.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos4s.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4s.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4sv.cpp gem-0.94/src/openGL/GEMglRasterPos4sv.cpp --- gem-0.94~pre1/src/openGL/GEMglRasterPos4sv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4sv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRasterPos4sv.h gem-0.94/src/openGL/GEMglRasterPos4sv.h --- gem-0.94~pre1/src/openGL/GEMglRasterPos4sv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRasterPos4sv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRectd.cpp gem-0.94/src/openGL/GEMglRectd.cpp --- gem-0.94~pre1/src/openGL/GEMglRectd.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRectd.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRectd.h gem-0.94/src/openGL/GEMglRectd.h --- gem-0.94~pre1/src/openGL/GEMglRectd.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRectd.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRectf.cpp gem-0.94/src/openGL/GEMglRectf.cpp --- gem-0.94~pre1/src/openGL/GEMglRectf.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRectf.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRectf.h gem-0.94/src/openGL/GEMglRectf.h --- gem-0.94~pre1/src/openGL/GEMglRectf.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRectf.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRecti.cpp gem-0.94/src/openGL/GEMglRecti.cpp --- gem-0.94~pre1/src/openGL/GEMglRecti.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRecti.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRecti.h gem-0.94/src/openGL/GEMglRecti.h --- gem-0.94~pre1/src/openGL/GEMglRecti.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRecti.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRects.cpp gem-0.94/src/openGL/GEMglRects.cpp --- gem-0.94~pre1/src/openGL/GEMglRects.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRects.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRects.h gem-0.94/src/openGL/GEMglRects.h --- gem-0.94~pre1/src/openGL/GEMglRects.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRects.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRenderMode.cpp gem-0.94/src/openGL/GEMglRenderMode.cpp --- gem-0.94~pre1/src/openGL/GEMglRenderMode.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRenderMode.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRenderMode.h gem-0.94/src/openGL/GEMglRenderMode.h --- gem-0.94~pre1/src/openGL/GEMglRenderMode.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRenderMode.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglReportError.cpp gem-0.94/src/openGL/GEMglReportError.cpp --- gem-0.94~pre1/src/openGL/GEMglReportError.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglReportError.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglReportError.h gem-0.94/src/openGL/GEMglReportError.h --- gem-0.94~pre1/src/openGL/GEMglReportError.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglReportError.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRotated.cpp gem-0.94/src/openGL/GEMglRotated.cpp --- gem-0.94~pre1/src/openGL/GEMglRotated.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRotated.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRotated.h gem-0.94/src/openGL/GEMglRotated.h --- gem-0.94~pre1/src/openGL/GEMglRotated.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRotated.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglRotatef.cpp gem-0.94/src/openGL/GEMglRotatef.cpp --- gem-0.94~pre1/src/openGL/GEMglRotatef.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRotatef.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglRotatef.h gem-0.94/src/openGL/GEMglRotatef.h --- gem-0.94~pre1/src/openGL/GEMglRotatef.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglRotatef.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglScaled.cpp gem-0.94/src/openGL/GEMglScaled.cpp --- gem-0.94~pre1/src/openGL/GEMglScaled.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglScaled.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglScaled.h gem-0.94/src/openGL/GEMglScaled.h --- gem-0.94~pre1/src/openGL/GEMglScaled.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglScaled.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglScalef.cpp gem-0.94/src/openGL/GEMglScalef.cpp --- gem-0.94~pre1/src/openGL/GEMglScalef.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglScalef.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglScalef.h gem-0.94/src/openGL/GEMglScalef.h --- gem-0.94~pre1/src/openGL/GEMglScalef.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglScalef.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglScissor.cpp gem-0.94/src/openGL/GEMglScissor.cpp --- gem-0.94~pre1/src/openGL/GEMglScissor.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglScissor.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglScissor.h gem-0.94/src/openGL/GEMglScissor.h --- gem-0.94~pre1/src/openGL/GEMglScissor.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglScissor.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglSelectBuffer.cpp gem-0.94/src/openGL/GEMglSelectBuffer.cpp --- gem-0.94~pre1/src/openGL/GEMglSelectBuffer.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglSelectBuffer.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglSelectBuffer.h gem-0.94/src/openGL/GEMglSelectBuffer.h --- gem-0.94~pre1/src/openGL/GEMglSelectBuffer.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglSelectBuffer.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglShadeModel.cpp gem-0.94/src/openGL/GEMglShadeModel.cpp --- gem-0.94~pre1/src/openGL/GEMglShadeModel.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglShadeModel.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglShadeModel.h gem-0.94/src/openGL/GEMglShadeModel.h --- gem-0.94~pre1/src/openGL/GEMglShadeModel.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglShadeModel.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglStencilFunc.cpp gem-0.94/src/openGL/GEMglStencilFunc.cpp --- gem-0.94~pre1/src/openGL/GEMglStencilFunc.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglStencilFunc.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglStencilFunc.h gem-0.94/src/openGL/GEMglStencilFunc.h --- gem-0.94~pre1/src/openGL/GEMglStencilFunc.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglStencilFunc.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglStencilMask.cpp gem-0.94/src/openGL/GEMglStencilMask.cpp --- gem-0.94~pre1/src/openGL/GEMglStencilMask.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglStencilMask.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglStencilMask.h gem-0.94/src/openGL/GEMglStencilMask.h --- gem-0.94~pre1/src/openGL/GEMglStencilMask.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglStencilMask.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglStencilOp.cpp gem-0.94/src/openGL/GEMglStencilOp.cpp --- gem-0.94~pre1/src/openGL/GEMglStencilOp.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglStencilOp.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglStencilOp.h gem-0.94/src/openGL/GEMglStencilOp.h --- gem-0.94~pre1/src/openGL/GEMglStencilOp.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglStencilOp.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1d.cpp gem-0.94/src/openGL/GEMglTexCoord1d.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord1d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1d.h gem-0.94/src/openGL/GEMglTexCoord1d.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord1d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1dv.cpp gem-0.94/src/openGL/GEMglTexCoord1dv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord1dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1dv.h gem-0.94/src/openGL/GEMglTexCoord1dv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord1dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1f.cpp gem-0.94/src/openGL/GEMglTexCoord1f.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord1f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1f.h gem-0.94/src/openGL/GEMglTexCoord1f.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord1f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1fv.cpp gem-0.94/src/openGL/GEMglTexCoord1fv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord1fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1fv.h gem-0.94/src/openGL/GEMglTexCoord1fv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord1fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1i.cpp gem-0.94/src/openGL/GEMglTexCoord1i.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord1i.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1i.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1i.h gem-0.94/src/openGL/GEMglTexCoord1i.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord1i.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1i.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1iv.cpp gem-0.94/src/openGL/GEMglTexCoord1iv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord1iv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1iv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1iv.h gem-0.94/src/openGL/GEMglTexCoord1iv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord1iv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1iv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1s.cpp gem-0.94/src/openGL/GEMglTexCoord1s.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord1s.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1s.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1s.h gem-0.94/src/openGL/GEMglTexCoord1s.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord1s.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1s.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1sv.cpp gem-0.94/src/openGL/GEMglTexCoord1sv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord1sv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1sv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord1sv.h gem-0.94/src/openGL/GEMglTexCoord1sv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord1sv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord1sv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2d.cpp gem-0.94/src/openGL/GEMglTexCoord2d.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord2d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2d.h gem-0.94/src/openGL/GEMglTexCoord2d.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord2d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2dv.cpp gem-0.94/src/openGL/GEMglTexCoord2dv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord2dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2dv.h gem-0.94/src/openGL/GEMglTexCoord2dv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord2dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2f.cpp gem-0.94/src/openGL/GEMglTexCoord2f.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord2f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2f.h gem-0.94/src/openGL/GEMglTexCoord2f.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord2f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2fv.cpp gem-0.94/src/openGL/GEMglTexCoord2fv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord2fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2fv.h gem-0.94/src/openGL/GEMglTexCoord2fv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord2fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2i.cpp gem-0.94/src/openGL/GEMglTexCoord2i.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord2i.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2i.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2i.h gem-0.94/src/openGL/GEMglTexCoord2i.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord2i.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2i.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2iv.cpp gem-0.94/src/openGL/GEMglTexCoord2iv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord2iv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2iv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2iv.h gem-0.94/src/openGL/GEMglTexCoord2iv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord2iv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2iv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2s.cpp gem-0.94/src/openGL/GEMglTexCoord2s.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord2s.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2s.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2s.h gem-0.94/src/openGL/GEMglTexCoord2s.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord2s.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2s.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2sv.cpp gem-0.94/src/openGL/GEMglTexCoord2sv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord2sv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2sv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord2sv.h gem-0.94/src/openGL/GEMglTexCoord2sv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord2sv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord2sv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3d.cpp gem-0.94/src/openGL/GEMglTexCoord3d.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord3d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3d.h gem-0.94/src/openGL/GEMglTexCoord3d.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord3d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3dv.cpp gem-0.94/src/openGL/GEMglTexCoord3dv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord3dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3dv.h gem-0.94/src/openGL/GEMglTexCoord3dv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord3dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3f.cpp gem-0.94/src/openGL/GEMglTexCoord3f.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord3f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3f.h gem-0.94/src/openGL/GEMglTexCoord3f.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord3f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3fv.cpp gem-0.94/src/openGL/GEMglTexCoord3fv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord3fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3fv.h gem-0.94/src/openGL/GEMglTexCoord3fv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord3fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3i.cpp gem-0.94/src/openGL/GEMglTexCoord3i.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord3i.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3i.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3i.h gem-0.94/src/openGL/GEMglTexCoord3i.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord3i.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3i.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3iv.cpp gem-0.94/src/openGL/GEMglTexCoord3iv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord3iv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3iv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3iv.h gem-0.94/src/openGL/GEMglTexCoord3iv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord3iv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3iv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3s.cpp gem-0.94/src/openGL/GEMglTexCoord3s.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord3s.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3s.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3s.h gem-0.94/src/openGL/GEMglTexCoord3s.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord3s.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3s.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3sv.cpp gem-0.94/src/openGL/GEMglTexCoord3sv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord3sv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3sv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord3sv.h gem-0.94/src/openGL/GEMglTexCoord3sv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord3sv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord3sv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4d.cpp gem-0.94/src/openGL/GEMglTexCoord4d.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord4d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4d.h gem-0.94/src/openGL/GEMglTexCoord4d.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord4d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4dv.cpp gem-0.94/src/openGL/GEMglTexCoord4dv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord4dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4dv.h gem-0.94/src/openGL/GEMglTexCoord4dv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord4dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4f.cpp gem-0.94/src/openGL/GEMglTexCoord4f.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord4f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4f.h gem-0.94/src/openGL/GEMglTexCoord4f.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord4f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4fv.cpp gem-0.94/src/openGL/GEMglTexCoord4fv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord4fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4fv.h gem-0.94/src/openGL/GEMglTexCoord4fv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord4fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4i.cpp gem-0.94/src/openGL/GEMglTexCoord4i.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord4i.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4i.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4i.h gem-0.94/src/openGL/GEMglTexCoord4i.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord4i.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4i.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4iv.cpp gem-0.94/src/openGL/GEMglTexCoord4iv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord4iv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4iv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4iv.h gem-0.94/src/openGL/GEMglTexCoord4iv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord4iv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4iv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4s.cpp gem-0.94/src/openGL/GEMglTexCoord4s.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord4s.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4s.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4s.h gem-0.94/src/openGL/GEMglTexCoord4s.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord4s.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4s.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4sv.cpp gem-0.94/src/openGL/GEMglTexCoord4sv.cpp --- gem-0.94~pre1/src/openGL/GEMglTexCoord4sv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4sv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexCoord4sv.h gem-0.94/src/openGL/GEMglTexCoord4sv.h --- gem-0.94~pre1/src/openGL/GEMglTexCoord4sv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexCoord4sv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexEnvf.cpp gem-0.94/src/openGL/GEMglTexEnvf.cpp --- gem-0.94~pre1/src/openGL/GEMglTexEnvf.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexEnvf.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexEnvf.h gem-0.94/src/openGL/GEMglTexEnvf.h --- gem-0.94~pre1/src/openGL/GEMglTexEnvf.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexEnvf.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexEnvi.cpp gem-0.94/src/openGL/GEMglTexEnvi.cpp --- gem-0.94~pre1/src/openGL/GEMglTexEnvi.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexEnvi.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexEnvi.h gem-0.94/src/openGL/GEMglTexEnvi.h --- gem-0.94~pre1/src/openGL/GEMglTexEnvi.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexEnvi.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexGend.cpp gem-0.94/src/openGL/GEMglTexGend.cpp --- gem-0.94~pre1/src/openGL/GEMglTexGend.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexGend.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexGend.h gem-0.94/src/openGL/GEMglTexGend.h --- gem-0.94~pre1/src/openGL/GEMglTexGend.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexGend.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexGenf.cpp gem-0.94/src/openGL/GEMglTexGenf.cpp --- gem-0.94~pre1/src/openGL/GEMglTexGenf.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexGenf.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexGenf.h gem-0.94/src/openGL/GEMglTexGenf.h --- gem-0.94~pre1/src/openGL/GEMglTexGenf.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexGenf.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexGenfv.h gem-0.94/src/openGL/GEMglTexGenfv.h --- gem-0.94~pre1/src/openGL/GEMglTexGenfv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexGenfv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexGeni.cpp gem-0.94/src/openGL/GEMglTexGeni.cpp --- gem-0.94~pre1/src/openGL/GEMglTexGeni.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexGeni.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexGeni.h gem-0.94/src/openGL/GEMglTexGeni.h --- gem-0.94~pre1/src/openGL/GEMglTexGeni.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexGeni.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexImage2D.cpp gem-0.94/src/openGL/GEMglTexImage2D.cpp --- gem-0.94~pre1/src/openGL/GEMglTexImage2D.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexImage2D.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexImage2D.h gem-0.94/src/openGL/GEMglTexImage2D.h --- gem-0.94~pre1/src/openGL/GEMglTexImage2D.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexImage2D.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexParameterf.cpp gem-0.94/src/openGL/GEMglTexParameterf.cpp --- gem-0.94~pre1/src/openGL/GEMglTexParameterf.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexParameterf.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexParameterf.h gem-0.94/src/openGL/GEMglTexParameterf.h --- gem-0.94~pre1/src/openGL/GEMglTexParameterf.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexParameterf.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexParameteri.cpp gem-0.94/src/openGL/GEMglTexParameteri.cpp --- gem-0.94~pre1/src/openGL/GEMglTexParameteri.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexParameteri.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexParameteri.h gem-0.94/src/openGL/GEMglTexParameteri.h --- gem-0.94~pre1/src/openGL/GEMglTexParameteri.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexParameteri.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexSubImage1D.cpp gem-0.94/src/openGL/GEMglTexSubImage1D.cpp --- gem-0.94~pre1/src/openGL/GEMglTexSubImage1D.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexSubImage1D.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexSubImage1D.h gem-0.94/src/openGL/GEMglTexSubImage1D.h --- gem-0.94~pre1/src/openGL/GEMglTexSubImage1D.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexSubImage1D.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTexSubImage2D.cpp gem-0.94/src/openGL/GEMglTexSubImage2D.cpp --- gem-0.94~pre1/src/openGL/GEMglTexSubImage2D.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexSubImage2D.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTexSubImage2D.h gem-0.94/src/openGL/GEMglTexSubImage2D.h --- gem-0.94~pre1/src/openGL/GEMglTexSubImage2D.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTexSubImage2D.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTranslated.cpp gem-0.94/src/openGL/GEMglTranslated.cpp --- gem-0.94~pre1/src/openGL/GEMglTranslated.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTranslated.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTranslated.h gem-0.94/src/openGL/GEMglTranslated.h --- gem-0.94~pre1/src/openGL/GEMglTranslated.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTranslated.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglTranslatef.cpp gem-0.94/src/openGL/GEMglTranslatef.cpp --- gem-0.94~pre1/src/openGL/GEMglTranslatef.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTranslatef.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglTranslatef.h gem-0.94/src/openGL/GEMglTranslatef.h --- gem-0.94~pre1/src/openGL/GEMglTranslatef.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglTranslatef.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMgluLookAt.cpp gem-0.94/src/openGL/GEMgluLookAt.cpp --- gem-0.94~pre1/src/openGL/GEMgluLookAt.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMgluLookAt.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -9,6 +9,7 @@ // OF ALL WARRANTIES, see the file "GEM.LICENSE.TERMS" // +#include "Gem/GemConfig.h" #include "GEMgluLookAt.h" #include "Gem/Exception.h" @@ -105,6 +106,9 @@ // void GEMgluLookAt :: render(GemState *state) { +#ifndef GEM_HAVE_GLU + gem::utils::gl:: +#endif gluLookAt (m_eyeX, m_eyeY, m_eyeZ, m_centerX, m_centerY, m_centerZ, m_upX, m_upY, m_upZ); } diff -Nru gem-0.94~pre1/src/openGL/GEMglUniform1fARB.cpp gem-0.94/src/openGL/GEMglUniform1fARB.cpp --- gem-0.94~pre1/src/openGL/GEMglUniform1fARB.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglUniform1fARB.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglUniform1fARB.h gem-0.94/src/openGL/GEMglUniform1fARB.h --- gem-0.94~pre1/src/openGL/GEMglUniform1fARB.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglUniform1fARB.h 2019-02-12 13:10:01.000000000 +0000 @@ -3,7 +3,7 @@ * * Copyright (c) 2005 James Tittle. tigital @ mac.com * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglUniform1f.cpp gem-0.94/src/openGL/GEMglUniform1f.cpp --- gem-0.94~pre1/src/openGL/GEMglUniform1f.cpp 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/openGL/GEMglUniform1f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,101 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// Implementation file +// +// Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +// zmoelnig@iem.at +// For information on usage and redistribution, and for a DISCLAIMER +// * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" +// +//////////////////////////////////////////////////////// + +#include "GEMglUniform1f.h" + +CPPEXTERN_NEW_WITH_TWO_ARGS ( GEMglUniform1f, t_floatarg, A_DEFFLOAT, + t_floatarg, A_DEFFLOAT); + +///////////////////////////////////////////////////////// +// +// GEMglUniform1f +// +///////////////////////////////////////////////////////// +// Constructor +// +GEMglUniform1f :: GEMglUniform1f (t_floatarg arg0, + t_floatarg arg1) : + location(static_cast<GLint>(arg0)), + val(static_cast<GLfloat>(arg1)) +{ + m_inlet[0] = inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, + gensym("location")); + m_inlet[1] = inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, + gensym("val")); +} +///////////////////////////////////////////////////////// +// Destructor +// +GEMglUniform1f :: ~GEMglUniform1f () +{ + inlet_free(m_inlet[0]); + inlet_free(m_inlet[1]); +} + +////////////////// +// extension check +bool GEMglUniform1f :: isRunnable(void) +{ + if(GLEW_ARB_shader_objects) { + return true; + } + error("ARB shader_objects not supported by this system"); + return false; +} + +///////////////////////////////////////////////////////// +// Render +// +void GEMglUniform1f :: render(GemState *state) +{ + glUniform1f (location, val); +} + +///////////////////////////////////////////////////////// +// Variables +// +void GEMglUniform1f :: locMess (t_float arg1) // FUN +{ + location = static_cast<GLint>(arg1); + setModified(); +} + +void GEMglUniform1f :: valMess (t_float arg1) // FUN +{ + val = static_cast<GLfloat>(arg1); + setModified(); +} + + +///////////////////////////////////////////////////////// +// static member functions +// + +void GEMglUniform1f :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, + reinterpret_cast<t_method>(&GEMglUniform1f::locMessCallback), + gensym("location"), A_DEFFLOAT, A_NULL); + class_addmethod(classPtr, + reinterpret_cast<t_method>(&GEMglUniform1f::valMessCallback), + gensym("val"), A_DEFFLOAT, A_NULL); +}; + +void GEMglUniform1f :: locMessCallback (void* data, t_float arg0) +{ + GetMyClass(data)->locMess ( static_cast<t_float>(arg0)); +} +void GEMglUniform1f :: valMessCallback (void* data, t_float arg0) +{ + GetMyClass(data)->valMess ( static_cast<t_float>(arg0)); +} diff -Nru gem-0.94~pre1/src/openGL/GEMglUniform1f.h gem-0.94/src/openGL/GEMglUniform1f.h --- gem-0.94~pre1/src/openGL/GEMglUniform1f.h 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/openGL/GEMglUniform1f.h 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,62 @@ +/* ------------------------------------------------------------------ + * GEM - Graphics Environment for Multimedia + * + * Copyright (c) 2005 James Tittle. tigital @ mac.com + * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + * zmoelnig@iem.at + * For information on usage and redistribution, and for a DISCLAIMER + * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" + * + * ------------------------------------------------------------------ + */ + +#ifndef _INCLUDE__GEM_OPENGL_GEMGLUNIFORM1FARB_H_ +#define _INCLUDE__GEM_OPENGL_GEMGLUNIFORM1FARB_H_ + +#include "Base/GemGLBase.h" + +/* + CLASS + GEMglUniform1f + KEYWORDS + openGL 0 + DESCRIPTION + wrapper for the openGL-function + "glUniform1f( GLint location, GLfloat val)" + */ + +class GEM_EXTERN GEMglUniform1f : public GemGLBase +{ + CPPEXTERN_HEADER(GEMglUniform1f, GemGLBase); + +public: + // Constructor + GEMglUniform1f (t_float, t_float); // CON + +protected: + // Destructor + virtual ~GEMglUniform1f (); + // check extensions + virtual bool isRunnable(void); + + // Do the rendering + virtual void render (GemState *state); + + // variables + GLint location; // VAR + virtual void locMess(t_float); // FUN + + GLfloat val; // VAR + virtual void valMess(t_float); // FUN + + +private: + + // we need some inlets + t_inlet *m_inlet[2]; + + // static member functions + static void locMessCallback (void*, t_float); + static void valMessCallback (void*, t_float); +}; +#endif // for header file diff -Nru gem-0.94~pre1/src/openGL/GEMgluPerspective.cpp gem-0.94/src/openGL/GEMgluPerspective.cpp --- gem-0.94~pre1/src/openGL/GEMgluPerspective.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMgluPerspective.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -54,6 +54,9 @@ // void GEMgluPerspective :: render(GemState *state) { +#ifndef GEM_HAVE_GLU + gem::utils::gl:: +#endif gluPerspective (fovy, aspect, m_near, m_far); } diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2d.cpp gem-0.94/src/openGL/GEMglVertex2d.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex2d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2d.h gem-0.94/src/openGL/GEMglVertex2d.h --- gem-0.94~pre1/src/openGL/GEMglVertex2d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2dv.cpp gem-0.94/src/openGL/GEMglVertex2dv.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex2dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2dv.h gem-0.94/src/openGL/GEMglVertex2dv.h --- gem-0.94~pre1/src/openGL/GEMglVertex2dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2f.cpp gem-0.94/src/openGL/GEMglVertex2f.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex2f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2f.h gem-0.94/src/openGL/GEMglVertex2f.h --- gem-0.94~pre1/src/openGL/GEMglVertex2f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2fv.cpp gem-0.94/src/openGL/GEMglVertex2fv.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex2fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2fv.h gem-0.94/src/openGL/GEMglVertex2fv.h --- gem-0.94~pre1/src/openGL/GEMglVertex2fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2i.cpp gem-0.94/src/openGL/GEMglVertex2i.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex2i.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2i.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2i.h gem-0.94/src/openGL/GEMglVertex2i.h --- gem-0.94~pre1/src/openGL/GEMglVertex2i.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2i.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2iv.cpp gem-0.94/src/openGL/GEMglVertex2iv.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex2iv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2iv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2iv.h gem-0.94/src/openGL/GEMglVertex2iv.h --- gem-0.94~pre1/src/openGL/GEMglVertex2iv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2iv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2s.cpp gem-0.94/src/openGL/GEMglVertex2s.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex2s.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2s.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2s.h gem-0.94/src/openGL/GEMglVertex2s.h --- gem-0.94~pre1/src/openGL/GEMglVertex2s.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2s.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2sv.cpp gem-0.94/src/openGL/GEMglVertex2sv.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex2sv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2sv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex2sv.h gem-0.94/src/openGL/GEMglVertex2sv.h --- gem-0.94~pre1/src/openGL/GEMglVertex2sv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex2sv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3d.cpp gem-0.94/src/openGL/GEMglVertex3d.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex3d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3d.h gem-0.94/src/openGL/GEMglVertex3d.h --- gem-0.94~pre1/src/openGL/GEMglVertex3d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3dv.cpp gem-0.94/src/openGL/GEMglVertex3dv.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex3dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3dv.h gem-0.94/src/openGL/GEMglVertex3dv.h --- gem-0.94~pre1/src/openGL/GEMglVertex3dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3f.cpp gem-0.94/src/openGL/GEMglVertex3f.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex3f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3f.h gem-0.94/src/openGL/GEMglVertex3f.h --- gem-0.94~pre1/src/openGL/GEMglVertex3f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3fv.cpp gem-0.94/src/openGL/GEMglVertex3fv.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex3fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3fv.h gem-0.94/src/openGL/GEMglVertex3fv.h --- gem-0.94~pre1/src/openGL/GEMglVertex3fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3i.cpp gem-0.94/src/openGL/GEMglVertex3i.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex3i.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3i.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3i.h gem-0.94/src/openGL/GEMglVertex3i.h --- gem-0.94~pre1/src/openGL/GEMglVertex3i.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3i.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3iv.cpp gem-0.94/src/openGL/GEMglVertex3iv.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex3iv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3iv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3iv.h gem-0.94/src/openGL/GEMglVertex3iv.h --- gem-0.94~pre1/src/openGL/GEMglVertex3iv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3iv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3s.cpp gem-0.94/src/openGL/GEMglVertex3s.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex3s.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3s.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3s.h gem-0.94/src/openGL/GEMglVertex3s.h --- gem-0.94~pre1/src/openGL/GEMglVertex3s.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3s.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3sv.cpp gem-0.94/src/openGL/GEMglVertex3sv.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex3sv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3sv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex3sv.h gem-0.94/src/openGL/GEMglVertex3sv.h --- gem-0.94~pre1/src/openGL/GEMglVertex3sv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex3sv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4d.cpp gem-0.94/src/openGL/GEMglVertex4d.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex4d.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4d.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4d.h gem-0.94/src/openGL/GEMglVertex4d.h --- gem-0.94~pre1/src/openGL/GEMglVertex4d.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4d.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4dv.cpp gem-0.94/src/openGL/GEMglVertex4dv.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex4dv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4dv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4dv.h gem-0.94/src/openGL/GEMglVertex4dv.h --- gem-0.94~pre1/src/openGL/GEMglVertex4dv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4dv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4f.cpp gem-0.94/src/openGL/GEMglVertex4f.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex4f.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4f.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4f.h gem-0.94/src/openGL/GEMglVertex4f.h --- gem-0.94~pre1/src/openGL/GEMglVertex4f.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4f.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4fv.cpp gem-0.94/src/openGL/GEMglVertex4fv.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex4fv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4fv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4fv.h gem-0.94/src/openGL/GEMglVertex4fv.h --- gem-0.94~pre1/src/openGL/GEMglVertex4fv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4fv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4i.cpp gem-0.94/src/openGL/GEMglVertex4i.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex4i.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4i.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4i.h gem-0.94/src/openGL/GEMglVertex4i.h --- gem-0.94~pre1/src/openGL/GEMglVertex4i.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4i.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4iv.cpp gem-0.94/src/openGL/GEMglVertex4iv.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex4iv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4iv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4iv.h gem-0.94/src/openGL/GEMglVertex4iv.h --- gem-0.94~pre1/src/openGL/GEMglVertex4iv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4iv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4s.cpp gem-0.94/src/openGL/GEMglVertex4s.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex4s.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4s.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4s.h gem-0.94/src/openGL/GEMglVertex4s.h --- gem-0.94~pre1/src/openGL/GEMglVertex4s.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4s.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4sv.cpp gem-0.94/src/openGL/GEMglVertex4sv.cpp --- gem-0.94~pre1/src/openGL/GEMglVertex4sv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4sv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglVertex4sv.h gem-0.94/src/openGL/GEMglVertex4sv.h --- gem-0.94~pre1/src/openGL/GEMglVertex4sv.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglVertex4sv.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GEMglViewport.cpp gem-0.94/src/openGL/GEMglViewport.cpp --- gem-0.94~pre1/src/openGL/GEMglViewport.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglViewport.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GEMglViewport.h gem-0.94/src/openGL/GEMglViewport.h --- gem-0.94~pre1/src/openGL/GEMglViewport.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GEMglViewport.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/GLdefine.cpp gem-0.94/src/openGL/GLdefine.cpp --- gem-0.94~pre1/src/openGL/GLdefine.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GLdefine.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -5,7 +5,7 @@ // Implementation file // // Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // For information on usage and redistribution, and for a DISCLAIMER // * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" // diff -Nru gem-0.94~pre1/src/openGL/GLdefine.h gem-0.94/src/openGL/GLdefine.h --- gem-0.94~pre1/src/openGL/GLdefine.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/GLdefine.h 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ * GEM - Graphics Environment for Multimedia * * Copyright (c) 2002-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at - * zmoelnig@iem.kug.ac.at + * zmoelnig@iem.at * For information on usage and redistribution, and for a DISCLAIMER * OF ALL WARRANTIES, see the file, "GEM.LICENSE.TERMS" * diff -Nru gem-0.94~pre1/src/openGL/Makefile.am gem-0.94/src/openGL/Makefile.am --- gem-0.94~pre1/src/openGL/Makefile.am 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/openGL/Makefile.am 2019-02-12 13:10:01.000000000 +0000 @@ -17,9 +17,12 @@ libopenGL_la_LIBADD += $(GEM_RTE_LIBS) libopenGL_la_LDFLAGS += $(GEM_ARCH_LDFLAGS) + libopenGL_la_SOURCES= \ GEMglAccum.cpp \ GEMglAccum.h \ + GEMglActiveTexture.h \ + GEMglActiveTexture.cpp \ GEMglActiveTextureARB.cpp \ GEMglActiveTextureARB.h \ GEMglAlphaFunc.cpp \ @@ -212,6 +215,8 @@ GEMglGenProgramsARB.h \ GEMglGenTextures.cpp \ GEMglGenTextures.h \ + GEMglGenerateMipmap.cpp \ + GEMglGenerateMipmap.h \ GEMglGetError.cpp \ GEMglGetError.h \ GEMglGetFloatv.cpp \ @@ -310,6 +315,8 @@ GEMglMateriali.h \ GEMglMatrixMode.cpp \ GEMglMatrixMode.h \ + GEMglMultiTexCoord2f.h \ + GEMglMultiTexCoord2f.cpp \ GEMglMultiTexCoord2fARB.cpp \ GEMglMultiTexCoord2fARB.h \ GEMglMultMatrixd.cpp \ @@ -560,6 +567,8 @@ GEMglTranslatef.h \ GEMgluLookAt.cpp \ GEMgluLookAt.h \ + GEMglUniform1f.h \ + GEMglUniform1f.cpp \ GEMglUniform1fARB.cpp \ GEMglUniform1fARB.h \ GEMgluPerspective.cpp \ diff -Nru gem-0.94~pre1/src/Output/gemcocoawindow.mm gem-0.94/src/Output/gemcocoawindow.mm --- gem-0.94~pre1/src/Output/gemcocoawindow.mm 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Output/gemcocoawindow.mm 2019-02-12 13:10:01.000000000 +0000 @@ -3,7 +3,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Output/gemglfw2window.cpp gem-0.94/src/Output/gemglfw2window.cpp --- gem-0.94~pre1/src/Output/gemglfw2window.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Output/gemglfw2window.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -303,16 +303,19 @@ } void gemglfw2window::keyCallback(int key, int action) { - t_atom ap[3]; - SETSYMBOL(ap+0, gensym("key")); - SETFLOAT (ap+1, key); - SETFLOAT (ap+2, action); + int devID=0; + t_atom ap[4]; + SETFLOAT (ap+0, devID); + SETSYMBOL(ap+1, gensym("key")); + SETFLOAT (ap+2, key); + SETFLOAT (ap+3, action); - info(gensym("keyboard"), 3, ap); + info(gensym("keyboard"), 4, ap); } void gemglfw2window::charCallback(int character, int action) { - t_atom ap[3]; + int devID=0; + t_atom ap[4]; std::string sid; switch(character) { case 32: @@ -321,11 +324,12 @@ default: sid += character; } - SETSYMBOL(ap+0, gensym("keyname")); - SETSYMBOL(ap+1, gensym(sid.c_str())); - SETFLOAT (ap+2, action); + SETFLOAT (ap+0, devID); + SETSYMBOL(ap+1, gensym("keyname")); + SETSYMBOL(ap+2, gensym(sid.c_str())); + SETFLOAT (ap+3, action); - info(gensym("keyboard"), 3, ap); + info(gensym("keyboard"), 4, ap); } void gemglfw2window::mousebuttonCallback(int button, int action) { diff -Nru gem-0.94~pre1/src/Output/gemglfw3window.cpp gem-0.94/src/Output/gemglfw3window.cpp --- gem-0.94~pre1/src/Output/gemglfw3window.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Output/gemglfw3window.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -33,8 +33,16 @@ static std::map<GLFWwindow *, gemglfw3window*>s_windowmap; +static void error_callback(int err, const char* description) +{ + error("[glfw3window]: %s", description); +} + CPPEXTERN_NEW(gemglfw3window); +/* starting with GLFW-3.2, we can use glfwGetKeyName() */ +#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) + ///////////////////////////////////////////////////////// // // gemglfw3window @@ -49,6 +57,7 @@ m_gles(false) { if(s_instances==0) { + glfwSetErrorCallback(error_callback); if(!glfwInit()) { throw(GemException("could not initialize GLFW infrastructure")); } @@ -238,14 +247,13 @@ glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, m_profile_minor); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); } - m_window=glfwCreateWindow(m_width, m_height, m_title.c_str(), monitor, NULL); if (!m_window) { - error("glfw couldn't create window"); + error("glfw3 couldn't create window"); return false; } s_windowmap[m_window]=this; @@ -268,7 +276,11 @@ glfwSetWindowCloseCallback (m_window, windowcloseCb); glfwSetWindowRefreshCallback(m_window, windowrefreshCb); glfwSetKeyCallback (m_window, keyCb); +#if KERNEL_VERSION(GLFW_VERSION_MAJOR, GLFW_VERSION_MINOR, GLFW_VERSION_REVISION) >= KERNEL_VERSION(3,2,0) + /* we use glfwGetKeyName() in they KeyCallback */ +#else glfwSetCharCallback (m_window, charCb); +#endif glfwSetMouseButtonCallback (m_window, mousebuttonCb); glfwSetCursorPosCallback (m_window, mouseposCb); glfwSetScrollCallback (m_window, scrollCb); @@ -333,18 +345,24 @@ void gemglfw3window::keyCallback(int key, int scancode, int action, int mods) { - t_atom ap[3]; - SETSYMBOL(ap+0, gensym("key")); - SETFLOAT (ap+1, key); - SETFLOAT (ap+2, action); +#if KERNEL_VERSION(GLFW_VERSION_MAJOR, GLFW_VERSION_MINOR, GLFW_VERSION_REVISION) >= KERNEL_VERSION(3,2,0) + const char*sid = glfwGetKeyName(key, scancode); + gemglfw3window::key(0, std::string(sid?sid:"<unknown>"), key, action); +#else + t_atom ap[4]; + SETFLOAT (ap+0, 0); + SETSYMBOL(ap+1, gensym("key")); + SETFLOAT (ap+2, key); + SETFLOAT (ap+3, action); - info(gensym("keyboard"), 3, ap); + info(gensym("keyboard"), 4, ap); +#endif } void gemglfw3window::charCallback(unsigned int character) { - t_atom ap[3]; + t_atom ap[4]; std::string sid; - int action=-1; // ???? + int action=1; // ???? switch(character) { case 32: sid = "Space"; @@ -352,11 +370,12 @@ default: sid += character; } - SETSYMBOL(ap+0, gensym("keyname")); - SETSYMBOL(ap+1, gensym(sid.c_str())); - SETFLOAT (ap+2, action); + SETFLOAT (ap+0, 0); + SETSYMBOL(ap+1, gensym("keyname")); + SETSYMBOL(ap+2, gensym(sid.c_str())); + SETFLOAT (ap+3, action); - info(gensym("keyboard"), 3, ap); + info(gensym("keyboard"), 4, ap); } void gemglfw3window::mousebuttonCallback(int button, int action, int mods) { diff -Nru gem-0.94~pre1/src/Output/gemglutwindow.cpp gem-0.94/src/Output/gemglutwindow.cpp --- gem-0.94~pre1/src/Output/gemglutwindow.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Output/gemglutwindow.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -395,6 +395,14 @@ } else { mode|=GLUT_SINGLE; } + if(!m_border) { +#ifdef GLUT_BORDERLESS + mode|=GLUT_BORDERLESS; +#endif +#ifdef GLUT_CAPTIONLESS + mode|=GLUT_CAPTIONLESS; +#endif + } glutInitDisplayMode(mode); diff -Nru gem-0.94~pre1/src/Output/gemglxwindow.cpp gem-0.94/src/Output/gemglxwindow.cpp --- gem-0.94~pre1/src/Output/gemglxwindow.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Output/gemglxwindow.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -623,7 +623,6 @@ } } fs = fullscreen; - win = XCreateWindow(dpy, RootWindow(dpy, vi->screen), x, y, w, h, 0, vi->depth, InputOutput, @@ -714,7 +713,8 @@ Window winDummy; unsigned int depthDummy; unsigned int borderDummy; - int x, y; + //int x, y; + XGetGeometry(dpy, win, &winDummy, &x, &y, @@ -915,7 +915,7 @@ * when disabled, we don't get textures on two screens */ //~#warning context-sharing disabled - bool context_sharing=true; + bool context_sharing=false; if(!m_context && context_sharing) { /* gemglxwindow::PIMPL::s_shared.count(m_display)>0 */ @@ -926,16 +926,16 @@ unsigned int w=1, h=1; success=sharedPimpl->create(m_display, 2, false, false, x, y, w, h, m_transparent); - } catch (GemException&x) { - error("creation of shared glxcontext failed: %s", x.what()); + } catch (GemException&ex) { + error("creation of shared glxcontext failed: %s", ex.what()); verbose(0, "continuing at your own risk!"); } if(!sharedPimpl->gemcontext) { try { sharedPimpl->gemcontext = createContext(); - } catch (GemException&x) { + } catch (GemException&ex) { sharedPimpl->gemcontext = NULL; - error("creation of shared gem::context failed: %s", x.what()); + error("creation of shared gem::context failed: %s", ex.what()); } } } diff -Nru gem-0.94~pre1/src/Output/gemmacwindow.cpp gem-0.94/src/Output/gemmacwindow.cpp --- gem-0.94~pre1/src/Output/gemmacwindow.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Output/gemmacwindow.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -1089,6 +1089,10 @@ bool gemmacwindow::init(void) { +#if 0 + /* JMZ20180117: skip QT check, it's done by the plugins that need QT + */ + // Check QuickTime installed long QDfeature; if (OSErr err = ::Gestalt(gestaltQuickTime, &QDfeature)) { @@ -1100,6 +1104,7 @@ return false; } } +#endif // check existence of OpenGL libraries if (reinterpret_cast<Ptr>(kUnresolvedCFragSymbolAddress) == reinterpret_cast<Ptr>(aglChoosePixelFormat)) { diff -Nru gem-0.94~pre1/src/Output/gemsdl2window.cpp gem-0.94/src/Output/gemsdl2window.cpp --- gem-0.94~pre1/src/Output/gemsdl2window.cpp 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/Output/gemsdl2window.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,814 @@ +/////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2012 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// +#include "Gem/GemConfig.h" + +#include "gemsdl2window.h" +#include "Gem/GemGL.h" + +#include "RTE/MessageCallbacks.h" +#include "Gem/Exception.h" + +#define DEBUG ::startpost("%s:%d [%s]:: ", __FILE__, __LINE__, __FUNCTION__), ::post + +#include <map> + +CPPEXTERN_NEW(gemsdl2window); + +namespace +{ + static unsigned int sdl_count = 0; + static std::map<Uint32, gemsdl2window*>s_windowmap; + static SDL_GLContext s_context = 0; +}; + +#ifdef __APPLE__ +#include <dlfcn.h> +//This must be called before playing with SDL, else it won't work on osx. + +namespace +{ +static void pre_init() +{ + void* cocoa_lib; + + cocoa_lib = dlopen( "/System/Library/Frameworks/Cocoa.framework/Cocoa", + RTLD_LAZY ); + if(!cocoa_lib) { + return; + } + void (*nsappload)(void); + nsappload = (void(*)()) dlsym( cocoa_lib, "NSApplicationLoad"); + if(!nsappload) { + return; + } + nsappload(); +} +}; +#else /* __APPLE__ */ +namespace +{ +void pre_init() {;} +}; +#endif /* __APPLE__ */ + + +namespace +{ + template <class T> + struct autoidmap { + std::map<T, unsigned int> m_map; + unsigned int operator[] (T x) { + unsigned int result = m_map[x]; + if(!result) { + /* wrap it so that single precision float can represent the value */ + result = m_map.size() % 16777216; + m_map[x] = result; + } + return result; + } + }; + + static autoidmap<SDL_TouchID> s_touchId; + static autoidmap<SDL_FingerID> s_fingerId; + static autoidmap<SDL_GestureID> s_gestureId; +}; + +///////////////////////////////////////////////////////// +// +// gemsdl2window +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +gemsdl2window :: gemsdl2window(void) + : m_window(0) + , m_context(0) + , m_videoFlags(0) + , m_grabmouse(false) + , m_relativemouse(false) + , m_opacity(1.) +{ + if(!sdl_count) { + pre_init(); + if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) { + throw(GemException("could not initialize SDL window infrastructure")); + } + } + sdl_count++; +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +gemsdl2window :: ~gemsdl2window() +{ + destroyMess(); + + sdl_count--; + if(!sdl_count) { + SDL_Quit(); // ???? + } +} + + +bool gemsdl2window :: makeCurrent(void) +{ + if(!m_window) { + return false; + } + // ???? + return(true); +} + +void gemsdl2window :: swapBuffers(void) +{ + if(makeCurrent()) { // FIXME: is this needed? + SDL_GL_SwapWindow(m_window); + } +} + +void gemsdl2window :: doRender() +{ + // FIXME: ????? + bang(); +} + + +static std::map<SDL_Keycode, std::string>s_key2symbol; +static std::map<SDL_Keycode, std::string>s_worldkey2symbol; +static std::string key2symbol(SDL_Keycode k) +{ + if(0==s_key2symbol.size()) { + s_key2symbol[SDLK_BACKSPACE]="BackSpace"; + s_key2symbol[SDLK_TAB]="Tab"; + s_key2symbol[SDLK_CLEAR]="Clear"; + s_key2symbol[SDLK_RETURN]="Return"; + s_key2symbol[SDLK_PAUSE]="Pause"; + s_key2symbol[SDLK_ESCAPE]="Escape"; + s_key2symbol[SDLK_SPACE]="Space"; + s_key2symbol[SDLK_EXCLAIM]="!"; + s_key2symbol[SDLK_QUOTEDBL]="\""; + s_key2symbol[SDLK_HASH]="#"; + s_key2symbol[SDLK_DOLLAR]="$"; + s_key2symbol[SDLK_AMPERSAND]="&"; + s_key2symbol[SDLK_QUOTE]="'"; + s_key2symbol[SDLK_LEFTPAREN]="("; + s_key2symbol[SDLK_RIGHTPAREN]=")"; + s_key2symbol[SDLK_ASTERISK]="*"; + s_key2symbol[SDLK_PLUS]="+"; + s_key2symbol[SDLK_COMMA]=","; + s_key2symbol[SDLK_MINUS]="-"; + s_key2symbol[SDLK_PERIOD]="."; + s_key2symbol[SDLK_SLASH]="/"; + s_key2symbol[SDLK_0]="0"; + s_key2symbol[SDLK_1]="1"; + s_key2symbol[SDLK_2]="2"; + s_key2symbol[SDLK_3]="3"; + s_key2symbol[SDLK_4]="4"; + s_key2symbol[SDLK_5]="5"; + s_key2symbol[SDLK_6]="6"; + s_key2symbol[SDLK_7]="7"; + s_key2symbol[SDLK_8]="8"; + s_key2symbol[SDLK_9]="9"; + s_key2symbol[SDLK_COLON]=":"; + s_key2symbol[SDLK_SEMICOLON]=";"; + s_key2symbol[SDLK_LESS]="<"; + s_key2symbol[SDLK_EQUALS]="="; + s_key2symbol[SDLK_GREATER]=">"; + s_key2symbol[SDLK_QUESTION]="?"; + s_key2symbol[SDLK_AT]="@"; + s_key2symbol[SDLK_LEFTBRACKET]="]"; + s_key2symbol[SDLK_BACKSLASH]="\\"; + s_key2symbol[SDLK_RIGHTBRACKET]="]"; + s_key2symbol[SDLK_CARET]="^"; + s_key2symbol[SDLK_UNDERSCORE]="_"; + s_key2symbol[SDLK_BACKQUOTE]="`"; + s_key2symbol[SDLK_a]="a"; + s_key2symbol[SDLK_b]="b"; + s_key2symbol[SDLK_c]="c"; + s_key2symbol[SDLK_d]="d"; + s_key2symbol[SDLK_e]="e"; + s_key2symbol[SDLK_f]="f"; + s_key2symbol[SDLK_g]="g"; + s_key2symbol[SDLK_h]="h"; + s_key2symbol[SDLK_i]="i"; + s_key2symbol[SDLK_j]="j"; + s_key2symbol[SDLK_k]="k"; + s_key2symbol[SDLK_l]="l"; + s_key2symbol[SDLK_m]="m"; + s_key2symbol[SDLK_n]="n"; + s_key2symbol[SDLK_o]="o"; + s_key2symbol[SDLK_p]="p"; + s_key2symbol[SDLK_q]="q"; + s_key2symbol[SDLK_r]="r"; + s_key2symbol[SDLK_s]="s"; + s_key2symbol[SDLK_t]="t"; + s_key2symbol[SDLK_u]="u"; + s_key2symbol[SDLK_v]="v"; + s_key2symbol[SDLK_w]="w"; + s_key2symbol[SDLK_x]="x"; + s_key2symbol[SDLK_y]="y"; + s_key2symbol[SDLK_z]="z"; + s_key2symbol[SDLK_DELETE]="Delete"; + + + s_key2symbol[SDLK_KP_0]="KeyPad_0"; + s_key2symbol[SDLK_KP_1]="KeyPad_1"; + s_key2symbol[SDLK_KP_2]="KeyPad_2"; + s_key2symbol[SDLK_KP_3]="KeyPad_3"; + s_key2symbol[SDLK_KP_4]="KeyPad_4"; + s_key2symbol[SDLK_KP_5]="KeyPad_5"; + s_key2symbol[SDLK_KP_6]="KeyPad_6"; + s_key2symbol[SDLK_KP_7]="KeyPad_7"; + s_key2symbol[SDLK_KP_8]="KeyPad_8"; + s_key2symbol[SDLK_KP_9]="KeyPad_9"; + s_key2symbol[SDLK_KP_PERIOD]="KeyPad_."; + s_key2symbol[SDLK_KP_DIVIDE]="KeyPad_/"; + s_key2symbol[SDLK_KP_MULTIPLY]="KeyPad_*"; + s_key2symbol[SDLK_KP_MINUS]="KeyPad_-"; + s_key2symbol[SDLK_KP_PLUS]="KeyPad_+"; + s_key2symbol[SDLK_KP_ENTER]="KeyPad_Enter"; + s_key2symbol[SDLK_KP_EQUALS]="KeyPad_="; + s_key2symbol[SDLK_UP]="Up"; + s_key2symbol[SDLK_DOWN]="Down"; + s_key2symbol[SDLK_RIGHT]="Right"; + s_key2symbol[SDLK_LEFT]="Left"; + s_key2symbol[SDLK_INSERT]="Insert"; + s_key2symbol[SDLK_HOME]="Home"; + s_key2symbol[SDLK_END]="End"; + s_key2symbol[SDLK_PAGEUP]="Prior"; + s_key2symbol[SDLK_PAGEDOWN]="Next"; + s_key2symbol[SDLK_F1]="F1"; + s_key2symbol[SDLK_F2]="F2"; + s_key2symbol[SDLK_F3]="F3"; + s_key2symbol[SDLK_F4]="F4"; + s_key2symbol[SDLK_F5]="F5"; + s_key2symbol[SDLK_F6]="F6"; + s_key2symbol[SDLK_F7]="F7"; + s_key2symbol[SDLK_F8]="F8"; + s_key2symbol[SDLK_F9]="F9"; + s_key2symbol[SDLK_F10]="F10"; + s_key2symbol[SDLK_F11]="F11"; + s_key2symbol[SDLK_F12]="F12"; + s_key2symbol[SDLK_F13]="F13"; + s_key2symbol[SDLK_F14]="F14"; + s_key2symbol[SDLK_F15]="F15"; + s_key2symbol[SDLK_NUMLOCKCLEAR]="Num_Lock"; + s_key2symbol[SDLK_CAPSLOCK]="Caps_Lock"; + s_key2symbol[SDLK_SCROLLLOCK]="Scroll_Lock"; + s_key2symbol[SDLK_RSHIFT]="Shift_R"; + s_key2symbol[SDLK_LSHIFT]="Shift_L"; + s_key2symbol[SDLK_RCTRL]="Control_R"; + s_key2symbol[SDLK_LCTRL]="Control_L"; + s_key2symbol[SDLK_RALT]="AltGr"; + s_key2symbol[SDLK_LALT]="Alt_L"; + s_key2symbol[SDLK_RGUI]="Meta_R"; + s_key2symbol[SDLK_LGUI]="Meta_L"; + s_key2symbol[SDLK_MODE]="Mode"; + s_key2symbol[SDLK_APPLICATION]="Compose"; + s_key2symbol[SDLK_HELP]="Help"; + s_key2symbol[SDLK_PRINTSCREEN]="Print"; + s_key2symbol[SDLK_SYSREQ]="SysRq"; + s_key2symbol[SDLK_PAUSE]="Break"; + s_key2symbol[SDLK_MENU]="Menu"; + s_key2symbol[SDLK_POWER]="Power"; +#if 0 + s_key2symbol[SDLK_LSUPER]="Super_L"; + s_key2symbol[SDLK_RSUPER]="Super_R"; + s_key2symbol[SDLK_EURO]="€"; +#endif + s_key2symbol[SDLK_UNDO]="Undo"; + } + std::string s = s_key2symbol[k]; + if(s.empty()) { + const char*keyname = SDL_GetKeyName(k); + s = keyname?keyname:""; + } + if(s.empty()) { + s="<unknown>"; + } + + return s; +} + +void gemsdl2window :: dispatch() +{ + if(!m_window) { + return; + } + + SDL_Event event; + while (SDL_PollEvent(&event)) { + Uint32 winid = 0; + switch(event.type) { + default: break; + case SDL_WINDOWEVENT: + winid = event.window.windowID; + break; + case SDL_KEYUP: case SDL_KEYDOWN: + winid = event.key.windowID; + break; + case SDL_TEXTEDITING: + winid = event.edit.windowID; + break; + case SDL_TEXTINPUT: + winid = event.text.windowID; + break; + case SDL_MOUSEMOTION: + winid = event.motion.windowID; + break; + case SDL_MOUSEBUTTONUP: case SDL_MOUSEBUTTONDOWN: + winid = event.button.windowID; + break; + case SDL_MOUSEWHEEL: + winid = event.wheel.windowID; + break; + case SDL_USEREVENT: + winid = event.user.windowID; + break; + case SDL_DROPFILE: +#if SDL_VERSION_ATLEAST(2, 0, 5) + case SDL_DROPTEXT: + case SDL_DROPBEGIN: + case SDL_DROPCOMPLETE: +#endif + winid = event.drop.windowID; + } + if(winid) { + auto it = s_windowmap.find(winid); + if (it != s_windowmap.end()) { + gemsdl2window*that = it->second; + if(that) + that->dispatch(event); + } + } else { + /* dispatch to all windows(?) */ + for (auto it = s_windowmap.begin(); it != s_windowmap.end(); ++it) { + gemsdl2window*that = it->second; + if(that) + that->dispatch(event); + } + } + } +} + +void gemsdl2window :: dispatch(SDL_Event&event) { +#define PUSHATOM_F(atomlist, tmpatom, value) { \ + SETFLOAT(&tmpatom, value); \ + atomlist.push_back(tmpatom); \ + } +#define PUSHATOM_S(atomlist, tmpatom, value) { \ + SETSYMBOL(&tmpatom, gensym(value)); \ + atomlist.push_back(tmpatom); \ + } + + unsigned long devID=0; + switch(event.type) { + default: { + std::vector<t_atom>alist; + t_atom a; + PUSHATOM_S(alist, a, "unknown"); + PUSHATOM_S(alist, a, "event"); + PUSHATOM_F(alist, a, event.type); + info(alist); + } + break; + case SDL_WINDOWEVENT: + switch (event.window.event) { + case SDL_WINDOWEVENT_SHOWN: + info("visible", 1); + break; + case SDL_WINDOWEVENT_HIDDEN: + info("visible", 0); + break; + case SDL_WINDOWEVENT_EXPOSED: + info("window", "exposed"); + break; + case SDL_WINDOWEVENT_MOVED: + position(event.window.data1, event.window.data2); + break; + case SDL_WINDOWEVENT_RESIZED: + /* nop: this event always follows the SIZE_CHANGED event */ + break; + case SDL_WINDOWEVENT_SIZE_CHANGED: + dimension(event.window.data1, event.window.data2); + break; + case SDL_WINDOWEVENT_MINIMIZED: + info("window", "minimized"); + break; + case SDL_WINDOWEVENT_MAXIMIZED: + info("window", "maximized"); + break; + case SDL_WINDOWEVENT_RESTORED: + info("window", "restored"); + break; + case SDL_WINDOWEVENT_ENTER: + entry(devID, 1); // "mouse" <devID> "entry" 1 + break; + case SDL_WINDOWEVENT_LEAVE: + entry(devID, 0); // "mouse" <devID> "entry" 0 + break; + case SDL_WINDOWEVENT_FOCUS_GAINED: + info("inputentry", 1); + break; + case SDL_WINDOWEVENT_FOCUS_LOST: + info("inputentry", 0); + break; + case SDL_WINDOWEVENT_CLOSE: + info("window", "close"); + break; +#if SDL_VERSION_ATLEAST(2, 0, 5) + case SDL_WINDOWEVENT_TAKE_FOCUS: + //SDL_Log("Window %d is offered a focus", event.window.windowID); + break; + case SDL_WINDOWEVENT_HIT_TEST: + //SDL_Log("Window %d has a special hit test", event.window.windowID); + break; +#endif + break; + } + break; + case SDL_KEYUP: + case SDL_KEYDOWN: + /* FIXME: event.key.repeat */ + key + ( + /* SDL2 dropped event.key.which */ + devID + , key2symbol(event.key.keysym.sym) + , event.key.keysym.scancode + , event.key.state==SDL_PRESSED + ); + break; + case SDL_MOUSEMOTION: + motion(event.motion.which, event.motion.x, event.motion.y); + break; + case SDL_MOUSEBUTTONUP: + case SDL_MOUSEBUTTONDOWN: + motion(event.button.which, event.button.x, event.button.y); + button(event.button.which, event.button.button-SDL_BUTTON_LEFT, + event.button.state==SDL_PRESSED); + break; + case SDL_DROPFILE: { +#if SDL_VERSION_ATLEAST(2, 0, 5) + case SDL_DROPTEXT: + case SDL_DROPBEGIN: + case SDL_DROPCOMPLETE: +#endif + const char*droptype = 0; + switch(event.type) { +#if SDL_VERSION_ATLEAST(2, 0, 5) + case SDL_DROPTEXT: + droptype = "text"; + break; + case SDL_DROPBEGIN: + droptype = "begin"; + break; + case SDL_DROPCOMPLETE: + droptype = "end"; + break; +#endif + default: + droptype = "file"; + break; + } + char*dropped = event.drop.file; + std::vector<t_atom>alist; + t_atom a; + PUSHATOM_S(alist, a, "drop"); + PUSHATOM_S(alist, a, droptype); + if(dropped) { + PUSHATOM_S(alist, a, dropped); + } + info(alist); + SDL_free(dropped); + } + break; + case SDL_QUIT: + info("window", "destroy"); + break; + case SDL_FINGERDOWN: case SDL_FINGERUP: case SDL_FINGERMOTION: { + std::vector<t_atom>alist; + t_atom a; + const char*direction = "unknown"; + switch(event.type) { + case SDL_FINGERDOWN: + direction = "down"; + break; + case SDL_FINGERUP: + direction = "up"; + break; + case SDL_FINGERMOTION: + direction = "motion"; + break; + default: + break; + } + PUSHATOM_S(alist, a, "finger"); + PUSHATOM_F(alist, a, s_touchId[event.tfinger.touchId]); + PUSHATOM_F(alist, a, s_fingerId[event.tfinger.fingerId]); + PUSHATOM_S(alist, a, direction); + + PUSHATOM_F(alist, a, event.tfinger.x); + PUSHATOM_F(alist, a, event.tfinger.y); + PUSHATOM_F(alist, a, event.tfinger.pressure); + info(alist); + + if(SDL_FINGERMOTION == event.type) { + SETSYMBOL(&alist[3], gensym("relative_motion")); + SETFLOAT (&alist[4], event.tfinger.dx); + SETFLOAT (&alist[5], event.tfinger.dy); + info(alist); + } + } + break; + case SDL_MULTIGESTURE: { + std::vector<t_atom>alist; + t_atom a; + PUSHATOM_S(alist, a, "gesture"); + PUSHATOM_F(alist, a, s_touchId[event.mgesture.touchId]); + PUSHATOM_F(alist, a, event.mgesture.x); + PUSHATOM_F(alist, a, event.mgesture.y); + PUSHATOM_F(alist, a, event.mgesture.numFingers); + PUSHATOM_F(alist, a, event.mgesture.dTheta); + PUSHATOM_F(alist, a, event.mgesture.dDist); + info(alist); + } + break; + case SDL_DOLLARGESTURE: { + std::vector<t_atom>alist; + t_atom a; + PUSHATOM_S(alist, a, "usergesture"); + PUSHATOM_F(alist, a, s_touchId[event.dgesture.touchId]); + PUSHATOM_F(alist, a, s_gestureId[event.dgesture.gestureId]); + PUSHATOM_F(alist, a, event.dgesture.x); + PUSHATOM_F(alist, a, event.dgesture.y); + PUSHATOM_F(alist, a, event.dgesture.numFingers); + PUSHATOM_F(alist, a, event.dgesture.error); + info(alist); + } + break; + case SDL_DOLLARRECORD: { + std::vector<t_atom>alist; + t_atom a; + PUSHATOM_S(alist, a, "usergesture"); + PUSHATOM_F(alist, a, event.dgesture.touchId); + PUSHATOM_F(alist, a, event.dgesture.gestureId); + info(alist); + } + break; + } +} + + +///////////////////////////////////////////////////////// +// bufferMess +// +///////////////////////////////////////////////////////// +void gemsdl2window :: bufferMess(int buf) +{ + switch(buf) { + case 1: + case 2: + m_buffer=buf; + if(m_window) { + post("changing buffer type will only effect newly created windows"); + } + break; + default: + error("buffer can only be '1' (single) or '2' (double) buffered"); + break; + } +} + +///////////////////////////////////////////////////////// +// titleMess +// +///////////////////////////////////////////////////////// +void gemsdl2window :: titleMess(const std::string&s) +{ + m_title = s; + if(m_window) { + SDL_SetWindowTitle(m_window, m_title.c_str()); + } +} +///////////////////////////////////////////////////////// +// dimensionsMess +// +///////////////////////////////////////////////////////// +void gemsdl2window :: dimensionsMess(unsigned int width, + unsigned int height) +{ + if (width < 1) { + error("width must be greater than 0"); + return; + } + + if (height < 1) { + error ("height must be greater than 0"); + return; + } + m_width = width; + m_height = height; + if(m_window) { + SDL_SetWindowSize(m_window, m_width, m_height); + } +} +void gemsdl2window :: offsetMess(int x, int y) +{ + m_xoffset = x; + m_yoffset = y; + if(m_window) { + SDL_SetWindowPosition(m_window, x, y); + } +} +///////////////////////////////////////////////////////// +// fullscreenMess +// +///////////////////////////////////////////////////////// +void gemsdl2window :: fullscreenMess(int on) +{ + m_fullscreen = on; + if(!m_window) + return; + if(!SDL_SetWindowFullscreen(m_window, m_fullscreen?SDL_WINDOW_FULLSCREEN:0)) { + const char*errstr = SDL_GetError(); + error("fullscreen failed: %s", (errstr&&*errstr)?errstr:"unknown reason"); + } +} +void gemsdl2window :: borderMess(bool on) +{ + m_border = on; + if(m_window) + SDL_SetWindowBordered(m_window, m_border?SDL_TRUE:SDL_FALSE); +} +void gemsdl2window :: cursorMess(bool state) +{ + m_cursor=state; + SDL_ShowCursor(state?SDL_ENABLE:SDL_DISABLE); +} +void gemsdl2window :: topmostMess(bool state) +{ + if(m_window) + SDL_RaiseWindow(m_window); +} +void gemsdl2window :: grabmouseMess(bool state) +{ + m_grabmouse = state; + if(m_window) { + SDL_SetWindowGrab(m_window, m_grabmouse?SDL_TRUE:SDL_FALSE); + } +} +void gemsdl2window :: relativemouseMess(bool state) +{ + m_relativemouse = state; + SDL_SetRelativeMouseMode(m_relativemouse?SDL_TRUE:SDL_FALSE); +} +void gemsdl2window :: opacityMess(float opacity) +{ + m_opacity = opacity; + if(m_window) + SDL_SetWindowOpacity(m_window, m_opacity); +} +void gemsdl2window :: userGestureMess(t_symbol*, int argc, t_atom*argv) +{ + error("user gesture recording/saving/restoring not implemented"); +} + +///////////////////////////////////////////////////////// +// createMess +// +///////////////////////////////////////////////////////// +bool gemsdl2window :: create(void) +{ + if(m_window) { + error("window already made!"); + return false; + } + + if ( SDL_InitSubSystem( SDL_INIT_VIDEO ) < 0 ) { + error("could not (re)initialize SDL window infrastructure"); + return false; + } + + Uint32 flags = SDL_WINDOW_OPENGL; + flags |= SDL_WINDOW_RESIZABLE; /* Enable window resizing */ + flags |= SDL_WINDOW_INPUT_GRABBED; + if(m_fullscreen) + flags |= SDL_WINDOW_FULLSCREEN; + if(!m_border) + flags |= SDL_WINDOW_BORDERLESS; + + /* get a SDL surface */ + m_window = SDL_CreateWindow( + m_title.c_str(), + m_xoffset, m_yoffset, + m_width, m_height, + flags ); + + if(!m_window) { + return false; + } + s_windowmap[SDL_GetWindowID(m_window)] = this; + if(s_context) { + if (SDL_GL_MakeCurrent(m_window, s_context)) { + error("unable to make shared openGL context currect: %s", SDL_GetError()); + destroyMess(); + return false; + } + SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 1); + } + + m_context = SDL_GL_CreateContext(m_window); + SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 0); + + + if(!m_context) { + error("unable to create OpenGL context: %s", SDL_GetError()); + destroyMess(); + return false; + } + + if (SDL_GL_MakeCurrent(m_window, m_context)) { + error("unable to make OpenGL context current: %s", SDL_GetError()); + destroyMess(); + return false; + } + + if(!createGemWindow()) { + destroyMess(); + return false; + } + + m_videoFlags = flags; + + SDL_DisableScreenSaver(); + SDL_RaiseWindow(m_window); + SDL_CaptureMouse(SDL_TRUE); + grabmouseMess(m_grabmouse); + relativemouseMess(m_relativemouse); + opacityMess(m_opacity); + dispatch(); + return true; +} +void gemsdl2window :: createMess(const std::string&) +{ + create(); +} + + +///////////////////////////////////////////////////////// +// destroy window +// +///////////////////////////////////////////////////////// +void gemsdl2window :: destroy(void) +{ + destroyGemWindow(); + s_windowmap.erase(SDL_GetWindowID(m_window)); + if(m_window) + SDL_DestroyWindow(m_window); + m_window=NULL; + info("window", "closed"); +} +void gemsdl2window :: destroyMess(void) +{ + if(makeCurrent()) { + if(m_context) + SDL_GL_DeleteContext(m_context); + if(s_context == m_context) + s_context = 0; + m_context = 0; + } + destroy(); + SDL_QuitSubSystem( SDL_INIT_VIDEO ); +} + + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void gemsdl2window :: obj_setupCallback(t_class *classPtr) +{ + CPPEXTERN_MSG1(classPtr, "topmost", topmostMess, bool); + CPPEXTERN_MSG1(classPtr, "grabmouse", grabmouseMess, bool); + CPPEXTERN_MSG1(classPtr, "relativemouse", relativemouseMess, bool); + CPPEXTERN_MSG1(classPtr, "opacity", opacityMess, float); + + CPPEXTERN_MSG(classPtr, "usergesture", userGestureMess); +} diff -Nru gem-0.94~pre1/src/Output/gemsdl2window.h gem-0.94/src/Output/gemsdl2window.h --- gem-0.94~pre1/src/Output/gemsdl2window.h 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/Output/gemsdl2window.h 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,128 @@ +/*----------------------------------------------------------------- + LOG + GEM - Graphics Environment for Multimedia + + Interface for the window manager + + Copyright (c) 2009-2012 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + + -----------------------------------------------------------------*/ + +#ifndef _INCLUDE__GEM_OUTPUT_GEMSDL2WINDOW_H_ +#define _INCLUDE__GEM_OUTPUT_GEMSDL2WINDOW_H_ + +#include "Base/GemWindow.h" +#include <SDL.h> + +/*----------------------------------------------------------------- + ------------------------------------------------------------------- + CLASS + gemsdl2window + + The window manager + + DESCRIPTION + + Access to GemMan. + + "bang" - swap the buffers + "render" - render a frame now + + "create" - create a graphics window + "destroy" - destroy the graphics window + + + "buffer" - single or double buffered + "fsaa" - full screen anti-aliasing + + "title" - set a title for the graphics window + "border" - whether we want a border as decoration or not + + "dimen" - the window dimensions + "fullscreen" - fullscreen mode + "offset" - the window offset + "secondscreen" - render to the secondscreen (auto-offset) + + "cursor" - whether we want a cursor or not + "menubar" - hide notorious menubars + "topmost" - set the window to stay on top + + -----------------------------------------------------------------*/ + + +class GEM_EXPORT gemsdl2window : public GemWindow +{ + CPPEXTERN_HEADER(gemsdl2window, GemWindow); + +public: + + ////////// + // Constructor + gemsdl2window(void); + +private: + + ////////// + // Destructor + virtual ~gemsdl2window(void); + + void doRender(void); + + /* rendering */ + void renderMess(void); + + /* render context (pre creation) */ + void bufferMess(int buf); + + /* window decoration (pre creation) */ + virtual void titleMess(const std::string&s); + + /* window position/dimension (pre creation) */ + virtual void dimensionsMess(unsigned int width, unsigned int height); + virtual void offsetMess(int x, int y); + virtual void fullscreenMess(int on); + virtual void borderMess(bool on); + virtual void cursorMess(bool on); + virtual void topmostMess(bool on); + virtual void grabmouseMess(bool on); + virtual void relativemouseMess(bool on); + virtual void opacityMess(float); + virtual void userGestureMess(t_symbol*s, int, t_atom*); + + /* creation/destruction */ + virtual bool create(void); + virtual void destroy(void); + + virtual void createMess(const std::string&); + virtual void destroyMess(void); + + /* post creation */ + void menuMess(void); + void addMenuMess(t_symbol*, int, t_atom*); + + + // check whether we have a window and if so, make it current + virtual bool makeCurrent(void); + // swap buffers + virtual void swapBuffers(void); + // dispatch events + virtual void dispatch(void); + virtual void dispatch(SDL_Event&event); + +private: + + /* the SDL surface */ + SDL_Window*m_window; + SDL_GLContext m_context; + + /* hints how to create the window */ + int m_videoFlags; + + bool m_grabmouse; + bool m_relativemouse; + float m_opacity; +}; + +#endif // for header file diff -Nru gem-0.94~pre1/src/Output/gemsdlwindow.cpp gem-0.94/src/Output/gemsdlwindow.cpp --- gem-0.94~pre1/src/Output/gemsdlwindow.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Output/gemsdlwindow.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -24,7 +24,6 @@ #define DEBUG ::startpost("%s:%d [%s]:: ", __FILE__, __LINE__, __FUNCTION__), ::post #include <map> -static std::map<int, gemsdlwindow*>s_windowmap; CPPEXTERN_NEW(gemsdlwindow); @@ -202,6 +201,7 @@ s_key2symbol[SDLK_z]="z"; s_key2symbol[SDLK_DELETE]="Delete"; +#ifndef __EMSCRIPTEN__ s_worldkey2symbol[SDLK_WORLD_0]="World_0"; s_worldkey2symbol[SDLK_WORLD_1]="World_1"; s_worldkey2symbol[SDLK_WORLD_2]="World_2"; @@ -298,6 +298,7 @@ s_worldkey2symbol[SDLK_WORLD_93]="World_93"; s_worldkey2symbol[SDLK_WORLD_94]="World_94"; s_worldkey2symbol[SDLK_WORLD_95]="World_95"; +#endif s_key2symbol[SDLK_KP0]="KeyPad_0"; s_key2symbol[SDLK_KP1]="KeyPad_1"; @@ -411,9 +412,13 @@ break; case SDL_KEYUP: case SDL_KEYDOWN: - key(event.key.which, key2symbol(event.key.keysym.sym, - event.key.keysym.unicode), event.key.keysym.scancode, - event.key.state==SDL_PRESSED); + key + ( + event.key.which + , key2symbol(event.key.keysym.sym, event.key.keysym.unicode) + , event.key.keysym.scancode + , event.key.state==SDL_PRESSED + ); break; case SDL_MOUSEMOTION: motion(event.motion.which, event.motion.x, event.motion.y); diff -Nru gem-0.94~pre1/src/Output/gemw32window.cpp gem-0.94/src/Output/gemw32window.cpp --- gem-0.94~pre1/src/Output/gemw32window.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Output/gemw32window.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -85,6 +85,8 @@ dc(NULL), context(NULL) { + if(fullscreen) + border = false; try { create(hInstance, buffer, fullscreen, border, title, x, y, w, h); } catch(GemException&x) { @@ -432,7 +434,10 @@ ///////////////////////////////////////////////////////// void gemw32window::cursorMess(bool state) { - ShowCursor(state); + /* ShowCursor() increments/decrements a counter + * only if the counter falls below 0, the cursor is hidden... + */ + while ((ShowCursor(state) < 0) == state) {;} } void gemw32window::fullscreenMess(int state) @@ -459,6 +464,8 @@ w, h); } catch (GemException&x) { error("unable to toggle fullscreen mode: %s", x.what()); + post("fullscreen will effect newly created windows."); + return; } if(tmpwin) { delete m_win; diff -Nru gem-0.94~pre1/src/Output/Makefile.am gem-0.94/src/Output/Makefile.am --- gem-0.94~pre1/src/Output/Makefile.am 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Output/Makefile.am 2019-02-12 13:10:01.000000000 +0000 @@ -37,6 +37,10 @@ pkglib_LTLIBRARIES += gemsdlwindow.la endif +if HAVE_LIB_SDL2 +pkglib_LTLIBRARIES += gemsdl2window.la +endif + if HAVE_LIB_LIBGLFW pkglib_LTLIBRARIES += gemglfw2window.la endif @@ -111,7 +115,7 @@ ###################################### # ObjC++ nastiness { -SUFFIXES=.mm +.SUFFIXES=.mm am_gemcocoawindow_la_OBJECTS = gemcocoawindow_la-gemcocoawindow.lo gemcocoawindow_la-gemcocoawindow.lo: gemcocoawindow.mm @@ -241,6 +245,34 @@ +########### gemsdl2window ########### +# some default flags +gemsdl2window_la_CXXFLAGS = +gemsdl2window_la_LDFLAGS = $(COMMON_LDFLAGS) +gemsdl2window_la_LIBADD = +# RTE flags +gemsdl2window_la_CXXFLAGS += $(GEM_RTE_CFLAGS) +gemsdl2window_la_LIBADD += $(GEM_RTE_LIBS) +# arch flags +gemsdl2window_la_CXXFLAGS += $(GEM_ARCH_CXXFLAGS) +gemsdl2window_la_LDFLAGS += $(GEM_ARCH_LDFLAGS) +# flags for building Gem externals +gemsdl2window_la_CXXFLAGS += $(GEM_EXTERNAL_CFLAGS) +gemsdl2window_la_LIBADD += -L$(top_builddir) $(GEM_EXTERNAL_LIBS) +# gemsdl2window_la @MOREFLAGS@ + +# object specific libraries +gemsdl2window_la_CXXFLAGS += $(GEM_LIB_SDL2_CFLAGS) +gemsdl2window_la_LIBADD += $(GEM_LIB_SDL2_LIBS) +gemsdl2window_la_LDFLAGS += + +## SOURCES +gemsdl2window_la_SOURCES = \ + gemsdl2window.cpp \ + gemsdl2window.h + + + ########### gemw32window ########### # some default flags gemw32window_la_CXXFLAGS = @@ -264,6 +296,9 @@ ## QuickTime support #gemw32window_la_CXXFLAGS += $(GEM_FRAMEWORK_QUICKTIME_CFLAGS) #gemw32window_la_LIBADD += $(GEM_FRAMEWORK_QUICKTIME_LIBS) +if WINDOWS +gemw32window_la_LIBADD += -lgdi32 +endif ## SOURCES gemw32window_la_SOURCES = \ diff -Nru gem-0.94~pre1/src/Particles/part_color.cpp gem-0.94/src/Particles/part_color.cpp --- gem-0.94~pre1/src/Particles/part_color.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_color.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-2000 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Particles/part_damp.cpp gem-0.94/src/Particles/part_damp.cpp --- gem-0.94~pre1/src/Particles/part_damp.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_damp.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Particles/part_draw.cpp gem-0.94/src/Particles/part_draw.cpp --- gem-0.94~pre1/src/Particles/part_draw.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_draw.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-2000 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Particles/part_follow.cpp gem-0.94/src/Particles/part_follow.cpp --- gem-0.94~pre1/src/Particles/part_follow.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_follow.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-1999 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Particles/part_gravity.cpp gem-0.94/src/Particles/part_gravity.cpp --- gem-0.94~pre1/src/Particles/part_gravity.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_gravity.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Particles/part_head.cpp gem-0.94/src/Particles/part_head.cpp --- gem-0.94~pre1/src/Particles/part_head.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_head.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Particles/part_info.cpp gem-0.94/src/Particles/part_info.cpp --- gem-0.94~pre1/src/Particles/part_info.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_info.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-2000 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Particles/part_killold.cpp gem-0.94/src/Particles/part_killold.cpp --- gem-0.94~pre1/src/Particles/part_killold.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_killold.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-1999 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Particles/part_killslow.cpp gem-0.94/src/Particles/part_killslow.cpp --- gem-0.94~pre1/src/Particles/part_killslow.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_killslow.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-1999 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Particles/partlib_base.cpp gem-0.94/src/Particles/partlib_base.cpp --- gem-0.94~pre1/src/Particles/partlib_base.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/partlib_base.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-2000 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Particles/part_orbitpoint.cpp gem-0.94/src/Particles/part_orbitpoint.cpp --- gem-0.94~pre1/src/Particles/part_orbitpoint.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_orbitpoint.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-1999 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Particles/part_render.cpp gem-0.94/src/Particles/part_render.cpp --- gem-0.94~pre1/src/Particles/part_render.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_render.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-2000 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Particles/part_render.h gem-0.94/src/Particles/part_render.h --- gem-0.94~pre1/src/Particles/part_render.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_render.h 2019-02-12 13:10:01.000000000 +0000 @@ -16,6 +16,7 @@ #define _INCLUDE__GEM_PARTICLES_PART_RENDER_H_ #include "Particles/partlib_base.h" +#include "Gem/GemGL.h" /*----------------------------------------------------------------- ------------------------------------------------------------------- diff -Nru gem-0.94~pre1/src/Particles/part_sink.cpp gem-0.94/src/Particles/part_sink.cpp --- gem-0.94~pre1/src/Particles/part_sink.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_sink.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-1999 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Particles/part_size.cpp gem-0.94/src/Particles/part_size.cpp --- gem-0.94~pre1/src/Particles/part_size.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_size.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-1999 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Particles/part_source.cpp gem-0.94/src/Particles/part_source.cpp --- gem-0.94~pre1/src/Particles/part_source.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_source.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-1999 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Particles/part_targetcolor.cpp gem-0.94/src/Particles/part_targetcolor.cpp --- gem-0.94~pre1/src/Particles/part_targetcolor.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_targetcolor.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-2000 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Particles/part_targetsize.cpp gem-0.94/src/Particles/part_targetsize.cpp --- gem-0.94~pre1/src/Particles/part_targetsize.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_targetsize.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-2000 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Particles/part_velcone.cpp gem-0.94/src/Particles/part_velcone.cpp --- gem-0.94~pre1/src/Particles/part_velcone.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_velcone.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Particles/part_velocity.cpp gem-0.94/src/Particles/part_velocity.cpp --- gem-0.94~pre1/src/Particles/part_velocity.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_velocity.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Particles/part_velsphere.cpp gem-0.94/src/Particles/part_velsphere.cpp --- gem-0.94~pre1/src/Particles/part_velsphere.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_velsphere.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Particles/part_vertex.cpp gem-0.94/src/Particles/part_vertex.cpp --- gem-0.94~pre1/src/Particles/part_vertex.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Particles/part_vertex.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Copyright (c) 1997-1999 Mark Danks. // Copyright (c) Günther Geiger. diff -Nru gem-0.94~pre1/src/Pixes/Makefile.am gem-0.94/src/Pixes/Makefile.am --- gem-0.94~pre1/src/Pixes/Makefile.am 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/Makefile.am 2019-02-12 13:10:01.000000000 +0000 @@ -234,26 +234,5 @@ pix_zoom.cpp \ pix_zoom.h - - -# deprecated stuff -EXTRA_DIST = \ - pix_filmOS.cpp \ - pix_filmOS.h \ - pix_filmDarwin.cpp \ - pix_filmDarwin.h \ - pix_movieOS.cpp \ - pix_movieOS.h \ - pix_movieDarwin.cpp \ - pix_movieDarwin.h \ - pix_movieDS.cpp \ - pix_movieDS.h \ - pix_videoDarwin.cpp \ - pix_videoDarwin.h \ - pix_videoOS.cpp \ - pix_videoOS.h \ - pix_recordQT.cpp \ - pix_recordQT.h - CHECKUNUSED_IGNORE=$(EXTRA_DIST) diff -Nru gem-0.94~pre1/src/Pixes/pix_2grey.cpp gem-0.94/src/Pixes/pix_2grey.cpp --- gem-0.94~pre1/src/Pixes/pix_2grey.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_2grey.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -17,6 +17,7 @@ #include "pix_2grey.h" #include "Gem/PixConvert.h" +#include "Utils/Functions.h" CPPEXTERN_NEW(pix_2grey); diff -Nru gem-0.94~pre1/src/Pixes/pix_a_2grey.cpp gem-0.94/src/Pixes/pix_a_2grey.cpp --- gem-0.94~pre1/src/Pixes/pix_a_2grey.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_a_2grey.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_add.cpp gem-0.94/src/Pixes/pix_add.cpp --- gem-0.94~pre1/src/Pixes/pix_add.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_add.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -298,8 +298,8 @@ void pix_add :: processDualImage(imageStruct &image, imageStruct &right) { if (image.format!=right.format) { - error("no method to combine (0x%X) and (0x%X)", image.format, - right.format); + error("no method to combine (0x%X) and (0x%X)", + image.format, right.format); return; } int datasize = (image.xsize * image.ysize * image.csize)>>5; diff -Nru gem-0.94~pre1/src/Pixes/pix_aging.cpp gem-0.94/src/Pixes/pix_aging.cpp --- gem-0.94~pre1/src/Pixes/pix_aging.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_aging.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_alpha.cpp gem-0.94/src/Pixes/pix_alpha.cpp --- gem-0.94~pre1/src/Pixes/pix_alpha.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_alpha.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_background.cpp gem-0.94/src/Pixes/pix_background.cpp --- gem-0.94~pre1/src/Pixes/pix_background.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_background.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -29,7 +29,7 @@ m_savedImage.xsize=320; m_savedImage.ysize=240; - m_savedImage.setCsizeByFormat(GL_RGBA_GEM); + m_savedImage.setCsizeByFormat(GEM_RGBA); m_savedImage.reallocate(); switch(argc) { case 4: diff -Nru gem-0.94~pre1/src/Pixes/pix_biquad.cpp gem-0.94/src/Pixes/pix_biquad.cpp --- gem-0.94~pre1/src/Pixes/pix_biquad.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_biquad.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -20,7 +20,7 @@ // pix_biquad // // IOhannes m zmoelnig -// mailto:zmoelnig@iem.kug.ac.at +// mailto:zmoelnig@iem.at // // this code is published under the Gnu GeneralPublicLicense that should be distributed with gem & pd // @@ -45,13 +45,13 @@ { prev.xsize = 64; prev.ysize = 64; - prev.setCsizeByFormat(GL_RGBA_GEM); + prev.setCsizeByFormat(GEM_RGBA); prev.reallocate(); prev.setBlack(); last.xsize = 64; last.ysize = 64; - last.setCsizeByFormat(GL_RGBA_GEM); + last.setCsizeByFormat(GEM_RGBA); last.reallocate(); last.setBlack(); diff -Nru gem-0.94~pre1/src/Pixes/pix_biquad.h gem-0.94/src/Pixes/pix_biquad.h --- gem-0.94~pre1/src/Pixes/pix_biquad.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_biquad.h 2019-02-12 13:10:01.000000000 +0000 @@ -16,7 +16,7 @@ tv_biquad IOhannes m zmoelnig - mailto:zmoelnig@iem.kug.ac.at + mailto:zmoelnig@iem.at this code is published under the Gnu GeneralPublicLicense that should be distributed with gem & pd diff -Nru gem-0.94~pre1/src/Pixes/pix_bitmask.cpp gem-0.94/src/Pixes/pix_bitmask.cpp --- gem-0.94~pre1/src/Pixes/pix_bitmask.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_bitmask.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_blob.cpp gem-0.94/src/Pixes/pix_blob.cpp --- gem-0.94~pre1/src/Pixes/pix_blob.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_blob.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -20,7 +20,7 @@ // // 0409:forum::für::umläute:2000 // IOhannes m zmoelnig -// mailto:zmoelnig@iem.kug.ac.at +// mailto:zmoelnig@iem.at // ///////////////////////////////////////////////////////// diff -Nru gem-0.94~pre1/src/Pixes/pix_blob.h gem-0.94/src/Pixes/pix_blob.h --- gem-0.94~pre1/src/Pixes/pix_blob.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_blob.h 2019-02-12 13:10:01.000000000 +0000 @@ -17,7 +17,7 @@ 0409:forum::für::umläute:2000 IOhannes m zmoelnig - mailto:zmoelnig@iem.kug.ac.at + mailto:zmoelnig@iem.at -----------------------------------------------------------------*/ #ifndef _INCLUDE__GEM_PIXES_PIX_BLOB_H_ diff -Nru gem-0.94~pre1/src/Pixes/pix_buf.cpp gem-0.94/src/Pixes/pix_buf.cpp --- gem-0.94~pre1/src/Pixes/pix_buf.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_buf.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_buffer.cpp gem-0.94/src/Pixes/pix_buffer.cpp --- gem-0.94~pre1/src/Pixes/pix_buffer.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_buffer.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -36,8 +36,7 @@ result=atom_getfloat(ap); break; case A_SYMBOL: -#warning gem::any doesnt like "const char*" - result=const_cast<char*>(atom_getsymbol(ap)->s_name); + result=std::string(atom_getsymbol(ap)->s_name); break; default: result=ap->a_w.w_gpointer; @@ -150,16 +149,16 @@ switch (c) { case 1: - format=GL_LUMINANCE; + format=GEM_GRAY; break; case 2: - format=GL_YUV422_GEM; + format=GEM_YUV; break; case 3: - format=GL_RGB; + format=GEM_RGB; break; case 4: - format=GL_RGBA_GEM; + format=GEM_RGBA; break; default: format=0; diff -Nru gem-0.94~pre1/src/Pixes/pix_buffer_read.cpp gem-0.94/src/Pixes/pix_buffer_read.cpp --- gem-0.94~pre1/src/Pixes/pix_buffer_read.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_buffer_read.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_buffer_write.cpp gem-0.94/src/Pixes/pix_buffer_write.cpp --- gem-0.94~pre1/src/Pixes/pix_buffer_write.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_buffer_write.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_clearblock.cpp gem-0.94/src/Pixes/pix_clearblock.cpp --- gem-0.94~pre1/src/Pixes/pix_clearblock.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_clearblock.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_coloralpha.cpp gem-0.94/src/Pixes/pix_coloralpha.cpp --- gem-0.94~pre1/src/Pixes/pix_coloralpha.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_coloralpha.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_colorclassify.cpp gem-0.94/src/Pixes/pix_colorclassify.cpp --- gem-0.94~pre1/src/Pixes/pix_colorclassify.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_colorclassify.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_color.cpp gem-0.94/src/Pixes/pix_color.cpp --- gem-0.94~pre1/src/Pixes/pix_color.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_color.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_colormatrix.cpp gem-0.94/src/Pixes/pix_colormatrix.cpp --- gem-0.94~pre1/src/Pixes/pix_colormatrix.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_colormatrix.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_colorreduce.cpp gem-0.94/src/Pixes/pix_colorreduce.cpp --- gem-0.94~pre1/src/Pixes/pix_colorreduce.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_colorreduce.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -52,7 +52,7 @@ tempImage.xsize=0; tempImage.ysize=0; - tempImage.setCsizeByFormat(GL_RGBA_GEM); + tempImage.setCsizeByFormat(GEM_RGBA); } ///////////////////////////////////////////////////////// diff -Nru gem-0.94~pre1/src/Pixes/pix_composite.cpp gem-0.94/src/Pixes/pix_composite.cpp --- gem-0.94~pre1/src/Pixes/pix_composite.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_composite.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_convert.cpp gem-0.94/src/Pixes/pix_convert.cpp --- gem-0.94~pre1/src/Pixes/pix_convert.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_convert.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -34,7 +34,7 @@ m_image.xsize=128; m_image.ysize=128; int fmt = getPixFormat(s->s_name); - m_image.setCsizeByFormat(fmt?fmt:GL_RGBA_GEM); + m_image.setCsizeByFormat(fmt?fmt:GEM_RGBA); m_image.reallocate(); } @@ -56,38 +56,16 @@ if (image.format==m_image.format) { return; } - m_image.xsize=image.xsize; - m_image.ysize=image.ysize; - - switch(image.format) { - case GL_RGB: - m_image.fromRGB (image.data); - break; - case GL_BGR: - m_image.fromBGR (image.data); - break; - case GL_BGRA: - m_image.fromBGRA (image.data); - break; - case GL_RGBA: - m_image.fromRGBA (image.data); - break; - case GL_YUV422_GEM: - m_image.fromYUV422 (image.data); - break; - case GL_LUMINANCE: - m_image.fromGray (image.data); - break; - default: + if(!m_image.convertFrom(&image)) { post("no method for this format !!!"); post("if you know how to convert this format (0x%X) to (0x%X),\n" - "please contact the authors of this software", image.format, - m_image.format); + "please contact the authors of this software", + image.format, m_image.format); return; } - image.data =m_image.data; - image.csize =m_image.csize; - image.format=m_image.format; + image.data = m_image.data; + image.notowned = true; + image.setCsizeByFormat(m_image.format); } diff -Nru gem-0.94~pre1/src/Pixes/pix_convolve.cpp gem-0.94/src/Pixes/pix_convolve.cpp --- gem-0.94~pre1/src/Pixes/pix_convolve.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_convolve.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_coordinate.cpp gem-0.94/src/Pixes/pix_coordinate.cpp --- gem-0.94~pre1/src/Pixes/pix_coordinate.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_coordinate.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_crop.cpp gem-0.94/src/Pixes/pix_crop.cpp --- gem-0.94~pre1/src/Pixes/pix_crop.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_crop.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_cubemap.cpp gem-0.94/src/Pixes/pix_cubemap.cpp --- gem-0.94~pre1/src/Pixes/pix_cubemap.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_cubemap.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_curve.cpp gem-0.94/src/Pixes/pix_curve.cpp --- gem-0.94~pre1/src/Pixes/pix_curve.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_curve.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -20,7 +20,7 @@ // pix_curve // // IOhannes m zmoelnig -// mailto:zmoelnig@iem.kug.ac.at +// mailto:zmoelnig@iem.at // // this code is published under the Gnu GeneralPublicLicense that should be distributed with gem & pd // diff -Nru gem-0.94~pre1/src/Pixes/pix_curve.h gem-0.94/src/Pixes/pix_curve.h --- gem-0.94~pre1/src/Pixes/pix_curve.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_curve.h 2019-02-12 13:10:01.000000000 +0000 @@ -17,7 +17,7 @@ pix_curve IOhannes m zmoelnig - mailto:zmoelnig@iem.kug.ac.at + mailto:zmoelnig@iem.at this code is published under the Gnu GeneralPublicLicense that should be distributed with gem & pd diff -Nru gem-0.94~pre1/src/Pixes/pix_data.cpp gem-0.94/src/Pixes/pix_data.cpp --- gem-0.94~pre1/src/Pixes/pix_data.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_data.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_deinterlace.cpp gem-0.94/src/Pixes/pix_deinterlace.cpp --- gem-0.94~pre1/src/Pixes/pix_deinterlace.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_deinterlace.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -25,7 +25,7 @@ { m_savedImage.xsize=320; m_savedImage.ysize=240; - m_savedImage.setCsizeByFormat(GL_RGBA_GEM); + m_savedImage.setCsizeByFormat(GEM_RGBA); m_savedImage.reallocate(); m_savedImage.setBlack(); } diff -Nru gem-0.94~pre1/src/Pixes/pix_delay.cpp gem-0.94/src/Pixes/pix_delay.cpp --- gem-0.94~pre1/src/Pixes/pix_delay.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_delay.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_diff.cpp gem-0.94/src/Pixes/pix_diff.cpp --- gem-0.94~pre1/src/Pixes/pix_diff.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_diff.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_dot.cpp gem-0.94/src/Pixes/pix_dot.cpp --- gem-0.94~pre1/src/Pixes/pix_dot.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_dot.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -86,7 +86,7 @@ // draw a basic Dot // ///////////////////////////////////////////////////////// -void pix_dot :: makePattern(int format) +void pix_dot :: makePattern(unsigned int format) { switch(format) { default: { // RGBA @@ -116,7 +116,7 @@ } } break; - case GL_LUMINANCE: { + case GEM_GRAY: { for (int i=0; i<DOTMAX; i++) { /* Generated pattern is a quadrant of a disk. */ unsigned char *pat = (reinterpret_cast<unsigned char*>(pattern)) + @@ -144,7 +144,7 @@ } } break; - case GL_YUV422_GEM: { + case GEM_YUV: { const unsigned char chroma = 128; for (int i=0; i<DOTMAX; i++) { @@ -429,7 +429,7 @@ if (sampx == NULL || sampy == NULL ) { return; } - makePattern(GL_YUV422_GEM); + makePattern(GEM_YUV); sampxy_table_init(); } @@ -496,7 +496,7 @@ if (sampx == NULL || sampy == NULL ) { return; } - makePattern(GL_LUMINANCE); + makePattern(GEM_GRAY); sampxy_table_init(); } diff -Nru gem-0.94~pre1/src/Pixes/pix_dot.h gem-0.94/src/Pixes/pix_dot.h --- gem-0.94~pre1/src/Pixes/pix_dot.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_dot.h 2019-02-12 13:10:01.000000000 +0000 @@ -57,7 +57,7 @@ unsigned char *dest ); virtual void sampxy_table_init(); virtual void yuv_init(); - virtual void makePattern(int format=GL_RGBA); + virtual void makePattern(unsigned int format=GEM_RGBA); virtual void sizeMess(int width, int height); virtual void scaleMess( float state ); int sharedbuffer_init(); diff -Nru gem-0.94~pre1/src/Pixes/pix_draw.cpp gem-0.94/src/Pixes/pix_draw.cpp --- gem-0.94~pre1/src/Pixes/pix_draw.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_draw.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_dump.cpp gem-0.94/src/Pixes/pix_dump.cpp --- gem-0.94~pre1/src/Pixes/pix_dump.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_dump.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -21,7 +21,7 @@ // // 0409:forum::für::umläute:2000 // IOhannes m zmoelnig -// mailto:zmoelnig@iem.kug.ac.at +// mailto:zmoelnig@iem.at // ///////////////////////////////////////////////////////// @@ -49,7 +49,7 @@ m_xstep(1), m_ystep(1), m_data(0), m_bytemode(false), - m_mode(GL_RGBA) + m_mode(GEM_RGBA) { xsize = static_cast<int>(fx); ysize = static_cast<int>(fy); @@ -211,7 +211,7 @@ b = static_cast<float>(data[chBlue]) / 255.f; SETFLOAT(&m_buffer[i], b); i++; - if ( m_mode == GL_RGBA ) { + if ( m_mode == GEM_RGBA ) { float a = static_cast<float>(data[chAlpha]) / 255.f; SETFLOAT(&m_buffer[i], a); i++; @@ -227,7 +227,7 @@ b = static_cast<unsigned char>(data[chBlue]); SETFLOAT(&m_buffer[i], b); i++; - if ( m_mode == GL_RGBA ) { + if ( m_mode == GEM_RGBA ) { unsigned char a = static_cast<unsigned char>(data[chAlpha]); SETFLOAT(&m_buffer[i], a); i++; @@ -256,7 +256,7 @@ v = static_cast<float>(data[2]) / 255.f; SETFLOAT(&m_buffer[i], v); i++; - if ( m_mode == GL_RGBA ) { + if ( m_mode == GEM_RGBA ) { float y1 = static_cast<float>(data[3]) / 255.f; SETFLOAT(&m_buffer[i], y1); i++; @@ -272,7 +272,7 @@ v = static_cast<unsigned char>(data[2]); SETFLOAT(&m_buffer[i], v); i++; - if ( m_mode == GL_RGBA ) { + if ( m_mode == GEM_RGBA ) { unsigned char y1 = static_cast<unsigned char>(data[3]); SETFLOAT(&m_buffer[i], y1); i++; @@ -300,7 +300,7 @@ v = static_cast<float>(data[2]) / 255.f; SETFLOAT(&m_buffer[i+2], v); i+=3; - if ( m_mode == GL_RGBA ) { + if ( m_mode == GEM_RGBA ) { v = static_cast<float>(data[3]) / 255.f; SETFLOAT(&m_buffer[i], v); i++; @@ -321,7 +321,7 @@ v = static_cast<unsigned char>(data[2]); SETFLOAT(&m_buffer[i+2], v); i+=3; - if ( m_mode == GL_RGBA ) { + if ( m_mode == GEM_RGBA ) { v = static_cast<unsigned char>(data[3]); SETFLOAT(&m_buffer[i], v); i++; @@ -359,7 +359,7 @@ ///////////////////////////////////////////////////////// void pix_dump :: RGBAMess(void) { - m_mode = GL_RGBA; + m_mode = GEM_RGBA; } ///////////////////////////////////////////////////////// // RGBMess @@ -367,7 +367,7 @@ ///////////////////////////////////////////////////////// void pix_dump :: RGBMess(void) { - m_mode = GL_RGB; + m_mode = GEM_RGB; } void pix_dump :: bytemodeMess(bool v) diff -Nru gem-0.94~pre1/src/Pixes/pix_dump.h gem-0.94/src/Pixes/pix_dump.h --- gem-0.94~pre1/src/Pixes/pix_dump.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_dump.h 2019-02-12 13:10:01.000000000 +0000 @@ -18,7 +18,7 @@ 0409:forum::für::umläute:2000 IOhannes m zmoelnig - mailto:zmoelnig@iem.kug.ac.at + mailto:zmoelnig@iem.at -----------------------------------------------------------------*/ #ifndef _INCLUDE__GEM_PIXES_PIX_DUMP_H_ diff -Nru gem-0.94~pre1/src/Pixes/pix_duotone.cpp gem-0.94/src/Pixes/pix_duotone.cpp --- gem-0.94~pre1/src/Pixes/pix_duotone.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_duotone.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_equal.cpp gem-0.94/src/Pixes/pix_equal.cpp --- gem-0.94~pre1/src/Pixes/pix_equal.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_equal.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_film.cpp gem-0.94/src/Pixes/pix_film.cpp --- gem-0.94~pre1/src/Pixes/pix_film.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_film.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,7 +15,6 @@ // ///////////////////////////////////////////////////////// #include "Gem/GemConfig.h" -#ifndef GEM_FILMBACKEND #include "pix_film.h" #include "Gem/Image.h" @@ -191,7 +190,7 @@ ///////////////////////////////////////////////////////// pix_film :: pix_film(t_symbol *filename) : m_haveMovie(0), - m_auto(0), m_format(GL_RGBA_GEM), + m_auto(0), m_format(GEM_RGBA), m_numFrames(0), m_reqFrame(0), m_curFrame(0), m_numTracks(0), m_reqTrack(0), m_curTrack(0), m_handle(NULL), @@ -575,18 +574,18 @@ switch (c) { case 'g': case 'G': - m_format=GL_LUMINANCE; + m_format=GEM_GRAY; break; case 'y': case 'Y': - m_format=GL_YCBCR_422_GEM; + m_format=GEM_YUV; break; case 'r': case 'R': if(gensym("RGB")==s||gensym("rgb")==s) { m_format=GL_RGB; } else { - m_format=GL_RGBA_GEM; + m_format=GEM_RGBA; } break; default: @@ -786,4 +785,3 @@ GetMyClass(data)->changeImage((argc<1)?0:atom_getint(argv), (argc<2)?0:atom_getint(argv+1)); } -#endif /*OS-specific GEM_FILMBACKEND */ diff -Nru gem-0.94~pre1/src/Pixes/pix_filmDarwin.cpp gem-0.94/src/Pixes/pix_filmDarwin.cpp --- gem-0.94~pre1/src/Pixes/pix_filmDarwin.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_filmDarwin.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,606 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// tigital@mac.com -// -// Implementation file -// -// Copyright (c) 1997-1999 Mark Danks. -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// -#include "Gem/GemConfig.h" - -#if defined __APPLE__ && !defined __x86_64__ -// with OSX10.6, apple has removed loads of Carbon functionality (in 64bit mode) -// LATER make this a real check in configure -# define HAVE_CARBONQUICKTIME -#endif - -#if !defined HAVE_CARBONQUICKTIME && defined GEM_FILMBACKEND && GEM_FILMBACKEND == GEM_FILMBACKEND_Darwin -# undef GEM_FILMBACKEND -#endif - -#if defined GEM_FILMBACKEND && GEM_FILMBACKEND == GEM_FILMBACKEND_Darwin - -#define HELPSYMBOL "pix_film" -#include "pix_filmDarwin.h" - -CPPEXTERN_NEW_WITH_ONE_ARG(pix_filmDarwin, t_symbol *, A_DEFSYM); - -///////////////////////////////////////////////////////// -// -// pix_filmDarwin -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// - -pix_filmDarwin :: pix_filmDarwin(t_symbol *filename) : - pix_filmOS(filename), - m_srcGWorld(NULL), - m_hiquality(1), - m_play(0), - m_rate(1.0), - prevTime(0), curTime(0), - m_Task(0), - m_volume(0.f), - m_movie(NULL) -{ - m_colorspace = GL_YUV422_GEM; - - // make sure that there are some characters - if (filename && filename->s_name && filename->s_name[0]) { - openMess(filename); - } -} - -//////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_filmDarwin :: ~pix_filmDarwin() -{ - closeMess(); - deleteBuffer(); - - outlet_free(m_outNumFrames); - outlet_free(m_outEnd); -} - -void pix_filmDarwin :: closeMess(void) -{ - switch (m_haveMovie) { - case GEM_MOVIE_MOV: - case GEM_MOVIE_AVI: - case GEM_MOVIE_MPG: - ::DisposeMovie(m_movie); - ::DisposeGWorld(m_srcGWorld); - m_srcGWorld = NULL; - m_haveMovie = GEM_MOVIE_NONE; - break; - case GEM_MOVIE_NONE: - default: - break; - } -} -///////////////////////////////////////////////////////// -// really open the file ! (OS dependent) -// -///////////////////////////////////////////////////////// -void pix_filmDarwin :: realOpen(char *filename) -{ - FSSpec theFSSpec; - OSErr err = noErr; - FSRef ref; - - Track movieTrack, audioTrack; - Media trackMedia; - - long sampleCount; - - long m_rowBytes; - - MatrixRecord matrix; - - if (!filename[0]) { - error("no filename passed"); - } else { - UInt8*filename8=reinterpret_cast<UInt8*>(filename); - err = ::FSPathMakeRef(filename8, &ref, NULL); - err = ::FSGetCatalogInfo(&ref, kFSCatInfoNone, NULL, NULL, &theFSSpec, - NULL); - - if (err) { - error("unable to find file: %s", filename); - return; - } - m_haveMovie = GEM_MOVIE_MOV; - } - - short refnum = 0; - err = ::OpenMovieFile(&theFSSpec, &refnum, fsRdPerm); - if (err) { - error("couldn't open the movie file: %#s (%d)", theFSSpec.name, err); - if (refnum) { - ::CloseMovieFile(refnum); - } - return; - } - - - - ::NewMovieFromFile(&m_movie, refnum, NULL, NULL, newMovieActive, NULL); - if (refnum) { - ::CloseMovieFile(refnum); - } - - m_reqFrame = 0; - m_curFrame = -1; - m_numTracks = static_cast<int>(GetMovieTrackCount(m_movie)); - - movieTrack = GetMovieIndTrackType(m_movie,1,VideoMediaType, - movieTrackMediaType); //get first video track - - trackMedia = GetTrackMedia(movieTrack); - - sampleCount = GetMediaSampleCount(trackMedia); - - m_numFrames = sampleCount; - - audioTrack = GetMovieIndTrackType(m_movie,1,SoundMediaType, - movieTrackMediaType); - - SetTrackEnabled(audioTrack, FALSE); - - // Get the length of the movie - - movieDur = static_cast<long>(GetMovieDuration(m_movie)); - movieScale = static_cast<long>(GetMovieTimeScale(m_movie)); - - - durationf = static_cast<double>(movieDur)/static_cast<double>(m_numFrames); - - // Get the bounds for the movie - ::GetMovieBox(m_movie, &m_srcRect); - OffsetRect(&m_srcRect, -m_srcRect.left, -m_srcRect.top); - SetMovieBox(m_movie, &m_srcRect); - m_xsize = m_srcRect.right - m_srcRect.left; - m_ysize = m_srcRect.bottom - m_srcRect.top; - - //long index; - - //special code for trapping HD formats which have pixel dimensions which are different from what QT reports - //this is undocumented anywhere by Apple - thanks to Marc Van Olmen for helping sort this out - - ImageDescriptionHandle desc = NULL; - - desc = reinterpret_cast<ImageDescriptionHandle>(NewHandle(0)); - - GetMediaSampleDescription(trackMedia,1, - reinterpret_cast<SampleDescriptionHandle>(desc)); -# ifdef kDVCPROHD720pCodecType - //DVCPRO720p - if ((*desc)->cType == kDVCPROHD720pCodecType) { - - post("kDVCPROHD720pCodecType"); - - m_xsize = 960; - SetRect( &m_srcRect, 0, 0, m_xsize, m_ysize ); - SetMovieBox(m_movie, &m_srcRect); - ScaleMatrix(&matrix,FloatToFixed(0.75),FloatToFixed(1.),FloatToFixed(1.), - FloatToFixed(1.)); - - SetMovieMatrix(m_movie,&matrix); - } - - - //DVCPRO 1080i60 - if ((*desc)->cType == kDVCPROHD1080i60CodecType) { - - post("kDVCPROHD1080i60CodecType"); - m_hiquality = 0; - - m_xsize = 1280; - SetRect( &m_srcRect, 0, 0, m_xsize, m_ysize ); - - ScaleMatrix(&matrix,FloatToFixed(2.f/3.f),FloatToFixed(1.), - FloatToFixed(1.),FloatToFixed(1.)); - SetMovieBox(m_movie, &m_srcRect); - SetMovieMatrix(m_movie,&matrix); - - } - -# endif - //DVCPRO 1080i - - //HDV - - //post("image description width %d heigh %d hRes %d vRes %d",(*desc)->width,(*desc)->height,Fix2Long((*desc)->hRes),Fix2Long((*desc)->vRes)); - - // We will use a YUV GWorld/Texture to get the fastest performance - // 16 bits per pixel for 4:2:2 - // RowBytes should be a multiple of 32 for GL_STORAGE_SHARED_APPLE to work - // This means movie width for 16bits need to be a multiple of 16 - // (and for rgba/32bits width needs to be a multiple of 32) - // we pad out to that. The texture coords ensure we do not use the extra bytes. - int bpp; - if (m_colorspace == GL_RGBA_GEM) { - bpp = 32; - } else { - bpp = 16; - } - - UInt32 thePadOffset = m_xsize % bpp; - if( thePadOffset != 0 ) { - m_xsize += (bpp - thePadOffset); - SetRect( &m_srcRect, 0, 0, m_xsize, m_ysize ); - } - - if (m_colorspace == GL_RGBA_GEM) { - m_format = GL_RGBA_GEM; - createBuffer(); - prepareTexture(); - m_rowBytes = m_xsize * 4; - if (m_hiquality) { - SetMoviePlayHints(m_movie, hintsHighQuality, hintsHighQuality); - } - err = QTNewGWorldFromPtr( &m_srcGWorld, - k32ARGBPixelFormat, // gives noErr - &m_srcRect, - NULL, - NULL, - 0, - m_pixBlock.image.data, - m_rowBytes); - - } else { - m_format=GL_YUV422_GEM; - createBuffer(); - // prepareTexture(); - m_rowBytes = m_xsize * 2; - if (m_hiquality) { - SetMoviePlayHints(m_movie, hintsHighQuality | hintsDeinterlaceFields, - hintsHighQuality | hintsDeinterlaceFields); - } - err = QTNewGWorldFromPtr( &m_srcGWorld, - k422YpCbCr8CodecType, - &m_srcRect, - NULL, - NULL, - 0, - m_pixBlock.image.data, - m_rowBytes); - } - if (err) { - error("couldn't make QTNewGWorldFromPtr %d", err); - m_haveMovie = 0; - return; - } - - - - /* movies task method */ - m_movieTime = GetMovieTime(m_movie,nil); - playRate = GetMoviePreferredRate(m_movie); - - // *** set the graphics world for displaying the movie *** - ::SetMovieGWorld(m_movie, m_srcGWorld, GetGWorldDevice(m_srcGWorld)); - - if (m_auto) { - SetMovieRate(m_movie,X2Fix(1.0)); - m_play = 1; - - } else { - SetMovieRate(m_movie,X2Fix(0.0)); - } - - SetMovieVolume(m_movie,FloatToFixed(m_volume)); - ::MoviesTask(m_movie, - 0); // *** this does the actual drawing into the GWorld *** - curTime = GetMovieTime(m_movie,NULL); - prevTime = 0; - newImage = 1; -} - -///////////////////////////////////////////////////////// -// render -// -///////////////////////////////////////////////////////// -void pix_filmDarwin :: getFrame() -{ - short flags = nextTimeStep; - OSType whichMediaType = VisualMediaCharacteristic; - if (!m_haveMovie) { - return; - } - - m_Task = 0; - if (m_curFrame >= m_numFrames) { - m_curFrame = 0; - } - - // *********************************** - // - //what follows is some of the worst hack work i've ever done to get QT to 'work' - // - //the problem is that QT is very good a playing media if it manages everything itself internally. - //however, that doesn't fit well with GEM because GEM has it's own internal tasking callbacks, so - //in order to get the two to play nice, a bunch of ugly, shit code has to be done. below is a way to - //track the internal state of QT MoviesTask() and figure out which frame it is currently processing. - //this avoids the frame being processed twice by the GEM render chain by managing the newImage flag - // - //note all of the crap to check for the direction of the playback and loop points. - // - // THERE MUST BE A BETTER WAY!!!!!!!!!!!!!! - // - // ************************************ - - if (m_auto) { - //play the startmovie() way - if (!m_play) { - SetMovieRate(m_movie,X2Fix(m_rate)); - m_play = 1; - newImage = 0; - return; - // post("curTime %d prevTime %d",curTime,prevTime); - // SetMovieVolume(m_movie, kFullVolume); - } - - if (m_rate > 0.f) { - if (IsMovieDone(m_movie)) { - outlet_bang(m_outEnd); - GoToBeginningOfMovie(m_movie); - prevTime = 0; - flags |= nextTimeEdgeOK; - m_reqFrame = 0; - } - - m_Task = 1; - MoviesTask(m_movie, - 0); // *** this does the actual drawing into the GWorld *** - curTime = GetMovieTime(m_movie,NULL); - - //check to see if the current position is past our next frame - if (prevTime < curTime) { - //if (prevTime != curTime){ - newImage = 1; - prevTime = curTime; - - //find next frame bounds using GetMovieNextIntertestingTime() - GetMovieNextInterestingTime(m_movie, - flags, - 1, - &whichMediaType, - curTime, - 0, - &prevTime, - // NULL, - nil); - - } else { - //if it's still the same frame then don't process - newImage = 0; - } - } else { - - if (GetMovieTime(m_movie,nil) <= 0) { - GoToEndOfMovie(m_movie); - prevTime = GetMovieTime(m_movie,NULL); - curTime = prevTime; - // get the frame prior to the last frame - GetMovieNextInterestingTime(m_movie, - flags, - 1, - &whichMediaType, - prevTime, - -1, - &prevTime, - NULL); - - - } else { - - m_Task = 1; - MoviesTask(m_movie, - 0); // *** this does the actual drawing into the GWorld *** - curTime = GetMovieTime(m_movie,NULL); - - if (prevTime >= curTime) { - newImage = 1; - prevTime = curTime; - //find next frame bounds using GetMovieNextIntertestingTime() - GetMovieNextInterestingTime(m_movie, - flags, - 1, - &whichMediaType, - prevTime, - -1, - &prevTime, - NULL); - - } else { - newImage = 0; - } - } - } - if (m_newFilm) { - newImage = 1; - MoviesTask(m_movie, - 0); // *** this does the actual drawing into the GWorld *** - // curTime = GetMovieTime(m_movie,NULL); - } - - } else { - //play the manual way - if (m_play) { - SetMovieRate(m_movie,X2Fix(0.0)); - m_play = 0; //turn off play - newImage = 0; - m_movieTime = GetMovieTime(m_movie,NULL); - // SetMovieVolume(m_movie, kNoVolume); - return; //not sure about this - } else { - - m_movieTime = m_reqFrame * duration; - m_movieTime = static_cast<long>(static_cast<double>(m_reqFrame) * - durationf); - - m_movieTime-=9; //total hack!! subtract an arbitrary amount and have nextinterestingtime find the exact place - ::GetMovieNextInterestingTime( m_movie, - flags, - 1, - &whichMediaType, - m_movieTime, - 0, - &m_movieTime, - NULL); - } - - SetMovieTimeValue(m_movie, m_movieTime); - m_Task = 1; - newImage = 1; - MoviesTask(m_movie, 0); - curTime = GetMovieTime(m_movie,NULL); - } - //I suppose if you roll your own YUV->ARGB it would go here? -} - -void pix_filmDarwin :: postrender(GemState *state) -{ -} - -void pix_filmDarwin :: startRendering() -{ - //bit of a hack related to stopRendering() - if (m_auto && m_haveMovie) { - SetMovieVolume(m_movie, static_cast<short>(m_volume * 255.f)); - } -} - -void pix_filmDarwin :: stopRendering() -{ - //bit of a hack to keep the sound from playing after rendering stops - if (m_auto && m_haveMovie) { - SetMovieVolume(m_movie, kNoVolume); - } -} - -void pix_filmDarwin :: LoadRam() -{ - TimeValue length; - OSErr err; - if (m_haveMovie) { - m_movieTime = 0; - length = GetMovieDuration(m_movie); - err = LoadMovieIntoRam(m_movie,m_movieTime,length,keepInRam); - if (err) { - error("LoadMovieIntoRam failed miserably"); - } - } else { - error("no movie to load into RAM!"); - } -} - -void pix_filmDarwin :: MovRate(float rate) -{ - m_rate = static_cast<float>(rate); - if (m_auto && m_haveMovie) { - SetMovieRate(m_movie,X2Fix(static_cast<double>(m_rate))); - } -} - -void pix_filmDarwin :: MovVolume(float volume) -{ - m_volume = static_cast<float>(volume); - if (m_auto && m_haveMovie) { - SetMovieVolume(m_movie,static_cast<short>(m_volume * 255.f)); - } -} - - -void pix_filmDarwin :: doDebug() -{ - post("---------- pix_filmDarwin doDebug start----------"); - post("m_numTracks = %d",m_numTracks); - post("Movie duration = %d timescale = %d timebase = %d", movieDur, - movieScale, reinterpret_cast<long>(GetMovieTimeBase(m_movie))); - post("rect rt:%d lt:%d", m_srcRect.right, m_srcRect.left); - post("rect top:%d bottom:%d", m_srcRect.top, m_srcRect.bottom); - post("movie size x:%d y:%d", m_xsize, m_ysize); - if (m_colorspace == GL_BGRA_EXT) { - post("color space ARGB"); - } else { - post("color space YUV"); - } - post("Preferred rate fixed: %d int: %d float %f", playRate, - Fix2Long(playRate),static_cast<float>(Fix2X(playRate))); - - post("---------- pix_filmDarwin doDebug end----------"); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_filmDarwin :: obj_setupCallback(t_class *classPtr) -{ - class_addcreator(reinterpret_cast<t_newmethod>(create_pix_filmDarwin), - gensym("pix_film"), A_DEFSYM, A_NULL); - pix_filmOS::real_obj_setupCallback(classPtr); - - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_filmDarwin::openMessCallback), - gensym("open"), A_SYMBOL, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_filmDarwin::ramCallback), - gensym("ram"), A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_filmDarwin::hiqualityCallback), - gensym("hiquality"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_filmDarwin::rateCallback), - gensym("rate"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_filmDarwin::debugCallback), - gensym("debug"), A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_filmDarwin::volumeCallback), - gensym("volume"), A_DEFFLOAT, A_NULL); - -} - -void pix_filmDarwin :: openMessCallback(void *data, t_symbol *filename) -{ - GetMyClass(data)->openMess(filename); -} - -void pix_filmDarwin :: ramCallback(void *data) -{ - GetMyClass(data)->LoadRam(); -} - -void pix_filmDarwin :: hiqualityCallback(void *data, t_float state) -{ - GetMyClass(data)->m_hiquality=static_cast<int>(state); -} - -void pix_filmDarwin :: rateCallback(void *data, t_float state) -{ - GetMyClass(data)->MovRate(state); -} - -void pix_filmDarwin :: volumeCallback(void *data, t_float state) -{ - GetMyClass(data)->MovVolume(state); -} - -void pix_filmDarwin :: debugCallback(void *data) -{ - GetMyClass(data)->doDebug(); -} -#endif // GEM_FILMBACKEND_Darwin diff -Nru gem-0.94~pre1/src/Pixes/pix_filmDarwin.h gem-0.94/src/Pixes/pix_filmDarwin.h --- gem-0.94~pre1/src/Pixes/pix_filmDarwin.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_filmDarwin.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,126 +0,0 @@ -/*----------------------------------------------------------------- - -GEM - Graphics Environment for Multimedia - -Load an digital video (like AVI, Mpeg, Quicktime) into a pix block (Linux) - -Copyright (c) 1997-1999 Mark Danks. mark@danks.org -Copyright (c) 2002 James Tittle. tigital@mac.com -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - - ------------------------------------------------------------------*/ -#ifndef _INCLUDE__GEM_PIXES_PIX_FILMDARWIN_H_ -#define _INCLUDE__GEM_PIXES_PIX_FILMDARWIN_H_ - -#include "pix_filmOS.h" - -#include <Carbon/Carbon.h> -#include <QuickTime/QuickTime.h> - -/*----------------------------------------------------------------- - ------------------------------------------------------------------- - CLASS - pix_filmDarwin - - Loads in a film - - KEYWORDS - pix - - DESCRIPTION - - -----------------------------------------------------------------*/ -class GEM_EXTERN pix_filmDarwin : public pix_filmOS -{ - CPPEXTERN_HEADER(pix_filmDarwin, GemBase); - -public: - - ////////// - // Constructor - pix_filmDarwin(t_symbol *filename); - -protected: - - ////////// - // Destructor - virtual ~pix_filmDarwin(); - - ////////// - // close the movie file - virtual void closeMess(void); - ////////// - // open a movie up - virtual void realOpen(char *filename); - - ////////// - // Do the rendering - virtual void getFrame(); - - virtual void postrender(GemState *state); - - virtual void startRendering(); - - virtual void stopRendering(); - - ////////// - // load film into RAM - virtual void LoadRam(); - - ////////// - // set the playback rate - virtual void MovRate(float rate); - - ////////// - // set the audio volume - virtual void MovVolume(float volume); - - ////////// - // dumps debug info - virtual void doDebug(); - - //----------------------------------- - // GROUP: Movie data - //----------------------------------- - - GWorldPtr m_srcGWorld; - Rect m_srcRect; - TimeValue m_movieTime; - Track m_movieTrack; - TimeValue m_timeScale; - TimeValue duration; - float durationf; - long movieDur, movieScale; - int m_hiquality; - int m_play; - float m_rate; - Fixed playRate; - TimeValue prevTime; - TimeValue curTime; -// int newImage; - int m_Task; - float m_volume; - -private: - Movie m_movie; - - //----------------------------------- - // GROUP: Texturing - //----------------------------------- - -protected: - - ////////// - // static member functions - static void openMessCallback (void *data, t_symbol *filename); - static void ramCallback(void *data); - static void hiqualityCallback(void *data, t_float state); - static void rateCallback(void *data, t_float state); - static void debugCallback(void *data); - static void volumeCallback(void *data, t_float state); - -}; - -#endif // for header file diff -Nru gem-0.94~pre1/src/Pixes/pix_filmOS.cpp gem-0.94/src/Pixes/pix_filmOS.cpp --- gem-0.94~pre1/src/Pixes/pix_filmOS.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_filmOS.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,354 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-1999 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// -#include "Gem/GemConfig.h" - -#define NO_AUTO_REGISTER_CLASS - -#include "pix_filmOS.h" -#include "Gem/State.h" - -#include <ctype.h> - -CPPEXTERN_NEW_WITH_ONE_ARG(pix_filmOS, t_symbol *, A_DEFSYM); - -///////////////////////////////////////////////////////// -// -// pix_filmOS -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_filmOS :: pix_filmOS(t_symbol *filename) : - m_oldImage(NULL), - m_haveMovie(0), m_auto(0), - m_numFrames(0), m_reqFrame(0), m_curFrame(0), - m_numTracks(0), m_track(0), m_frame(NULL), m_data(NULL), m_film(true), - m_newFilm(0), - m_colorspace(GL_RGBA_GEM), m_format(GL_RGBA_GEM) -{ - // setting the current frame - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), - gensym("img_num")); - // create an outlet to send out how many frames are in the movie + bang when we reached the end - m_outNumFrames = outlet_new(this->x_obj, 0); - m_outEnd = outlet_new(this->x_obj, 0); - - // initialize the pix block data - m_pixBlock.image=m_imageStruct; - m_pixBlock.image.setCsizeByFormat(m_format); - - // make sure that there are some characters - x_filename=gensym(""); -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_filmOS :: ~pix_filmOS() -{ - // Clean up the movie - closeMess(); - deleteBuffer(); -} - -void pix_filmOS :: deleteBuffer() -{ - //post("deleting buffer %x", m_data); - if (m_data) { - delete [] m_data; - //post("deleted"); - } - - m_pixBlock.image.data=NULL; - m_frame=m_data=NULL; - m_pixBlock.image.xsize=m_pixBlock.image.ysize=m_pixBlock.image.csize=0; -} - -void pix_filmOS :: createBuffer() -{ - const int neededXSize = m_xsize; - const int neededYSize = m_ysize; - int oldx, oldy; - - oldx = 0; - oldy = 0; - - if (neededXSize != oldx || neededYSize != oldy) { - m_pixBlock.image.setCsizeByFormat(m_format); - m_pixBlock.image.xsize = neededXSize; - m_pixBlock.image.ysize = neededYSize; - - int dataSize = m_pixBlock.image.xsize * m_pixBlock.image.ysize * - m_pixBlock.image.csize+4; /* +4 from MPEG */ - - m_data = new unsigned char[dataSize]; - // memset(m_data, 0, dataSize); - - m_pixBlock.image.data = m_data; - m_pixBlock.image.notowned = 1; - m_frame = m_data; - - oldx = m_pixBlock.image.xsize; - oldy = m_pixBlock.image.ysize; - } - //post("created buffer @ %x", m_data); -} - -///////////////////////////////////////////////////////// -// openMess -// -///////////////////////////////////////////////////////// - -void pix_filmOS :: openMess(t_symbol *filename, int format) -{ - // if (filename==x_filename)return; - x_filename=filename; - if (format) { - m_colorspace=format; - } - - char buf[MAXPDSTRING]; - canvas_makefilename(const_cast<t_canvas*>(getCanvas()), filename->s_name, - buf, MAXPDSTRING); - - // Clean up any open files - closeMess(); - - m_haveMovie = GEM_MOVIE_NONE; - realOpen(buf); - if (m_haveMovie == GEM_MOVIE_NONE) { - return; - } - -#ifndef __APPLE__ - createBuffer(); - prepareTexture(); -#endif - - t_atom ap[3]; - SETFLOAT(ap, m_numFrames); - SETFLOAT(ap+1, m_xsize); - SETFLOAT(ap+2, m_ysize); - - m_newFilm = 1; - post("loaded file: %s with %d frames (%dx%d)", buf, m_numFrames, m_xsize, - m_ysize); - outlet_list(m_outNumFrames, 0, 3, ap); -} - -///////////////////////////////////////////////////////// -// render -// -///////////////////////////////////////////////////////// -void pix_filmOS :: startRendering() -{ - m_pixBlock.newimage = 1; - m_pixBlock.newfilm = 0; - -} -void pix_filmOS :: render(GemState *state) -{ - if(!state) { - return; - } - // m_oldImage = state->image; - m_oldImage=NULL; - state->get(GemState::_PIX, m_oldImage); - - /* get the current frame from the file */ - newImage = 0; - if (!m_haveMovie || !m_pixBlock.image.data) { - return; - } - // do we actually need to get a new frame from the movie ? - - if (m_reqFrame != m_curFrame) { - //newImage = 1; - getFrame(); - m_curFrame = m_reqFrame; - if (m_film) { - m_pixBlock.image.data = m_frame; // this is mainly for windows - } - } else { - newImage = 0; - } - - if (m_newFilm) { - m_pixBlock.newfilm = 1; - m_newFilm = 0; - } - - //state->image = &m_pixBlock; - state->set(GemState::_PIX, m_pixBlock); - - // whoa: the following construct seems to be a bug - // i don't dare to "fix" it now - -#ifdef __APPLE__ - if (m_reqFrame == m_curFrame) - - // ::MoviesTask(NULL, 0); -#endif - - - /* texture it, if needed */ - texFrame(state, newImage); - m_pixBlock.newimage = newImage; - // automatic proceeding - if (m_auto) { - m_reqFrame++; - } -} - -///////////////////////////////////////////////////////// -// postrender -// -///////////////////////////////////////////////////////// -void pix_filmOS :: postrender(GemState *state) -{ - if(state) { - // state->image=m_oldImage; - state->set(GemState::_PIX, m_oldImage); - } - m_pixBlock.newimage = 0; - if (m_numFrames>0 && m_reqFrame>m_numFrames) { - m_reqFrame = m_numFrames; - outlet_bang(m_outEnd); - } - - m_newFilm = 0; - m_pixBlock.newfilm = m_newFilm; -} - -///////////////////////////////////////////////////////// -// changeImage -// -///////////////////////////////////////////////////////// -void pix_filmOS :: changeImage(int imgNum, int trackNum) -{ - if (imgNum < 0) { - error("selection number must be > 0"); - imgNum=0; - } - if (trackNum < 0) { - error("track number must be > 0"); - trackNum=0; - } - - - switch (m_haveMovie) { - case GEM_MOVIE_MPG: -#ifdef HAVE_LIBMPEG3 -#else -#ifdef HAVE_LIBMPEG - m_reqFrame=(imgNum)?(m_curFrame==1)?2:1:0; - break; -#endif -#endif - case GEM_MOVIE_MOV: - if (trackNum > m_numTracks-1) { - error("track %d number too high (max %d) ", trackNum, m_numTracks-1); - } else { - m_track = trackNum; - } - case GEM_MOVIE_AVI: - default: - if (imgNum > m_numFrames) { - if (m_numFrames<0) { - m_reqFrame = imgNum; - } else { - m_reqFrame=m_numFrames; - } - // else error("frame %d exceeds max (%d)", imgNum, m_numFrames); - //m_reqFrame = imgNum; - return; - } else { - m_reqFrame = imgNum; - } - } -} - -///////////////////////////////////////////////////////// -// changeImage -// -///////////////////////////////////////////////////////// -void pix_filmOS :: csMess(int format) -{ - if(format && format != m_colorspace) { - m_colorspace=format; - post("colorspace change will take effect the next time you load a film"); - } -} - - - - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_filmOS :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_filmOS::openMessCallback), - gensym("open"), A_GIMME, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_filmOS::changeImageCallback), - gensym("img_num"), A_GIMME, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_filmOS::autoCallback), - gensym("auto"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_filmOS::colorspaceCallback), - gensym("colorspace"), A_SYMBOL, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_filmOS::colorspaceCallback), - gensym("colourspace"), A_SYMBOL, A_NULL); -} -void pix_filmOS :: openMessCallback(void *data, t_symbol*, int argc, - t_atom*argv) -{ - int format=0; - switch(argc) { - case 2: - format=getPixFormat(atom_getsymbol(argv+1)->s_name); - case 1: - GetMyClass(data)->openMess(atom_getsymbol(argv), format); - break; - default: - GetMyClass(data)->error("open <filename> [<format>]"); - } -} - -void pix_filmOS :: changeImageCallback(void *data, t_symbol *, int argc, - t_atom *argv) -{ - GetMyClass(data)->changeImage((argc<1)?0:atom_getint(argv), - (argc<2)?0:atom_getint(argv+1)); -} - -void pix_filmOS :: autoCallback(void *data, t_float state) -{ - GetMyClass(data)->m_auto=!(!(int)state); -} - -void pix_filmOS :: colorspaceCallback(void *data, t_symbol *state) -{ - GetMyClass(data)->csMess(getPixFormat(state->s_name)); -} diff -Nru gem-0.94~pre1/src/Pixes/pix_filmOS.h gem-0.94/src/Pixes/pix_filmOS.h --- gem-0.94~pre1/src/Pixes/pix_filmOS.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_filmOS.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,172 +0,0 @@ -/*----------------------------------------------------------------- - -GEM - Graphics Environment for Multimedia - -Load an digital video (like AVI, Mpeg, Quicktime) into a pix block -(OS independent parent-class) - -Copyright (c) 1997-1999 Mark Danks. mark@danks.org -Copyright (c) Günther Geiger. geiger@epy.co.at -Copyright (c) 2001-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - - ------------------------------------------------------------------*/ - -#ifndef _INCLUDE__GEM_PIXES_PIX_FILMOS_H_ -#define _INCLUDE__GEM_PIXES_PIX_FILMOS_H_ - -#define GEM_MOVIE_NONE 0 -#define GEM_MOVIE_AVI 1 -#define GEM_MOVIE_MPG 2 -#define GEM_MOVIE_MOV 3 - -#include <string.h> -#include <stdio.h> - -#include "Base/GemBase.h" -#include "Gem/Image.h" - -/*----------------------------------------------------------------- - ------------------------------------------------------------------- - CLASS - pix_filmOS - - Loads in a movie - - KEYWORDS - pix - - DESCRIPTION - - -----------------------------------------------------------------*/ -class GEM_EXTERN pix_filmOS : public GemBase -{ - CPPEXTERN_HEADER(pix_filmOS, GemBase); - -public: - - ////////// - // Constructor - pix_filmOS(t_symbol *filename); - // pix_filmOS(); - -protected: - - ////////// - // Destructor - virtual ~pix_filmOS(); - - ////////// - // create and delete buffers - virtual void createBuffer(); - virtual void deleteBuffer(); - - ////////// - // close the movie file - virtual void closeMess(void) {} - ////////// - // open a movie up - virtual void openMess(t_symbol *filename, int colorspace=0); - - // really open the file ! (OS dependent) - virtual void realOpen(char *filename) {} - - ////////// - // prepare for texturing (on open) - virtual void prepareTexture() {} - - ////////// - // Do the rendering - virtual void render(GemState *state); - virtual void getFrame() {} - virtual void texFrame(GemState *state, int doit) {} - - - ////////// - // Clear the dirty flag on the pixBlock - virtual void postrender(GemState *state); - - ////////// - virtual void startRendering(); - - ////////// - // Delete texture object - virtual void stopRendering() {} - - ////////// - virtual void setUpTextureState() {} - - ////////// - // Change which image to display - virtual void changeImage(int imgNum, int trackNum); - ////////// - // change the colorspace - virtual void csMess(int format); - //----------------------------------- - // GROUP: Movie data - //----------------------------------- - - ////////// - // what we got from upstream - pixBlock* m_oldImage; - - ////////// - // the current file - t_symbol *x_filename; - - ////////// - // If a movie was loaded and what kind of Movie this is - int m_haveMovie; - - int m_auto; - - ////////// - // frame information - int m_numFrames; - int m_reqFrame; - int m_curFrame; - - ////////// - // track information - int m_numTracks; - int m_track; - - ////////// - // frame data - unsigned char*m_frame; /* this points to the main texture (might be black) */ - unsigned char*m_data; /* this points always to the real data */ - - pixBlock m_pixBlock; - imageStruct m_imageStruct; - - - int m_xsize; - int m_ysize; - int m_csize; - - - bool m_film; // are we in film- or in movie-mode - int m_newFilm; - int newImage; - int m_colorspace; - int m_format; - - ////////// - // a outlet for information like #frames and "reached end" - t_outlet *m_outNumFrames; - t_outlet *m_outEnd; - -protected: - - ////////// - // static member functions - static void openMessCallback (void *data, t_symbol *, int, t_atom*); - static void changeImageCallback(void *data, t_symbol *, int argc, - t_atom *argv); - static void autoCallback (void *data, t_float state); - // static void colorspaceCallback(void *data, t_float state); - static void colorspaceCallback(void *data, t_symbol *state); -}; -#endif // for header file diff -Nru gem-0.94~pre1/src/Pixes/pix_flip.cpp gem-0.94/src/Pixes/pix_flip.cpp --- gem-0.94~pre1/src/Pixes/pix_flip.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_flip.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_freeframe.cpp gem-0.94/src/Pixes/pix_freeframe.cpp --- gem-0.94~pre1/src/Pixes/pix_freeframe.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_freeframe.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -100,7 +100,7 @@ } return 0; } - static inline FFUInt32 updown2orientation(GLboolean updown) + static inline FFUInt32 updown2orientation(bool updown) { return (updown?1:2); } @@ -743,9 +743,9 @@ close(); } - GLenum GLformat() + unsigned int GLformat() { - GLenum format = (m_rgba?GL_RGBA_GEM:GL_RGB); + unsigned int format = (m_rgba?GEM_RGBA:GEM_RGB); return format; } @@ -1000,6 +1000,7 @@ ///////////////////////////////////////////////////////// void pix_freeframe :: processImage(imageStruct &image) { + unsigned int orgformat = image.format; unsigned int format=m_image.format; unsigned char*data=image.data; @@ -1008,58 +1009,14 @@ } // convert the current image into a format that suits the FreeFrame-plugin - if(image.format!=format) { - switch (image.format) { - case GL_RGBA: - m_image.fromRGBA(image.data); - break; - case GL_BGRA_EXT: /* "RGBA" on apple */ - m_image.fromBGRA(image.data); - break; - case GL_LUMINANCE: // greyscale - m_image.fromGray(image.data); - break; - case GL_YUV422_GEM: // YUV - m_image.fromYUV422(image.data); - break; + if(orgformat != format) { + if(m_image.convertFrom(&image)) { + m_plugin->processFrame(m_image); + m_image.convertTo(&image); } - m_plugin->processFrame(m_image); - data=m_image.data; } else { m_plugin->processFrame(image); - data=image.data; } - - // check whether we have converted our image data - if(image.data!=data) - // it seems, like we did: convert it back - - // just copied the code from [pix_rgba] - switch(format) { - case GL_RGBA: - image.fromRGBA(m_image.data); - break; - case GL_RGB: - image.fromRGB(m_image.data); - break; - case GL_BGR_EXT: - image.fromBGR(m_image.data); - break; - case GL_BGRA_EXT: /* "RGBA" on apple */ - image.fromBGRA(m_image.data); - break; - case GL_LUMINANCE: - image.fromGray(m_image.data); - break; - case GL_YCBCR_422_GEM: // YUV - image.fromUYVY(m_image.data); - break; - default: - error("no method for this format !!!"); - error("if you know how to convert this format (%X),\n" - "please contact the authors of this software", image.format); - return; - } } @@ -1081,8 +1038,7 @@ v=atom_getfloat(value); break; case (A_SYMBOL): -#warning gem::any doesnt like "const char*" - v=const_cast<char*>(atom_getsymbol(value)->s_name); + v=std::string(atom_getsymbol(value)->s_name); break; default: return; diff -Nru gem-0.94~pre1/src/Pixes/pix_frei0r.cpp gem-0.94/src/Pixes/pix_frei0r.cpp --- gem-0.94~pre1/src/Pixes/pix_frei0r.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_frei0r.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -373,7 +373,7 @@ { // throw(GemException("Gem has been compiled without Frei0r-support!")); int can_rgba=0; - m_image.setCsizeByFormat(GL_RGBA_GEM); + m_image.setCsizeByFormat(GEM_RGBA); if(!s || s==&s_) { m_canopen=true; diff -Nru gem-0.94~pre1/src/Pixes/pix_gain.cpp gem-0.94/src/Pixes/pix_gain.cpp --- gem-0.94~pre1/src/Pixes/pix_gain.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_gain.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_grey.cpp gem-0.94/src/Pixes/pix_grey.cpp --- gem-0.94~pre1/src/Pixes/pix_grey.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_grey.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -31,7 +31,7 @@ ///////////////////////////////////////////////////////// pix_grey :: pix_grey() { - m_image.setCsizeByFormat(GL_LUMINANCE); + m_image.setCsizeByFormat(GEM_GRAY); } ///////////////////////////////////////////////////////// diff -Nru gem-0.94~pre1/src/Pixes/pix_histo.cpp gem-0.94/src/Pixes/pix_histo.cpp --- gem-0.94~pre1/src/Pixes/pix_histo.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_histo.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -20,7 +20,7 @@ // pix_histo // // IOhannes m zmoelnig -// mailto:zmoelnig@iem.kug.ac.at +// mailto:zmoelnig@iem.at // // this code is published under the Gnu GeneralPublicLicense that should be distributed with gem & pd // diff -Nru gem-0.94~pre1/src/Pixes/pix_histo.h gem-0.94/src/Pixes/pix_histo.h --- gem-0.94~pre1/src/Pixes/pix_histo.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_histo.h 2019-02-12 13:10:01.000000000 +0000 @@ -17,7 +17,7 @@ pix_histo IOhannes m zmoelnig - mailto:zmoelnig@iem.kug.ac.at + mailto:zmoelnig@iem.at this code is published under the Gnu GeneralPublicLicense that should be distributed with gem & pd diff -Nru gem-0.94~pre1/src/Pixes/pix_hsv2rgb.cpp gem-0.94/src/Pixes/pix_hsv2rgb.cpp --- gem-0.94~pre1/src/Pixes/pix_hsv2rgb.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_hsv2rgb.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_image.cpp gem-0.94/src/Pixes/pix_image.cpp --- gem-0.94~pre1/src/Pixes/pix_image.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_image.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_imageInPlace.cpp gem-0.94/src/Pixes/pix_imageInPlace.cpp --- gem-0.94~pre1/src/Pixes/pix_imageInPlace.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_imageInPlace.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_imageInPlace.h gem-0.94/src/Pixes/pix_imageInPlace.h --- gem-0.94~pre1/src/Pixes/pix_imageInPlace.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_imageInPlace.h 2019-02-12 13:10:01.000000000 +0000 @@ -16,6 +16,7 @@ #define _INCLUDE__GEM_PIXES_PIX_IMAGEINPLACE_H_ #include "Pixes/pix_multiimage.h" +#include "Gem/GemGL.h" /*----------------------------------------------------------------- ------------------------------------------------------------------- diff -Nru gem-0.94~pre1/src/Pixes/pix_info.cpp gem-0.94/src/Pixes/pix_info.cpp --- gem-0.94~pre1/src/Pixes/pix_info.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_info.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_invert.cpp gem-0.94/src/Pixes/pix_invert.cpp --- gem-0.94~pre1/src/Pixes/pix_invert.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_invert.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_levels.cpp gem-0.94/src/Pixes/pix_levels.cpp --- gem-0.94~pre1/src/Pixes/pix_levels.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_levels.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -100,7 +100,7 @@ pOutput = reinterpret_cast<U32*>(myImage.data); if(m_DoAuto) { - Pete_Levels_CalculateAutoLevels(GL_YUV422_GEM); + Pete_Levels_CalculateAutoLevels(GEM_YUV); } Pete_Levels_SetupCFSettings(); Pete_ChannelFunction_RenderYUV(); @@ -126,7 +126,7 @@ pOutput = reinterpret_cast<U32*>(myImage.data); if(m_DoAuto) { - Pete_Levels_CalculateAutoLevels(GL_RGBA); + Pete_Levels_CalculateAutoLevels(GEM_RGBA); } Pete_Levels_SetupCFSettings(); Pete_ChannelFunction_Render(); @@ -365,7 +365,7 @@ nBlueHistogram[nSourceBlue]+=1; nAlphaHistogram[nSourceAlpha]+=1; break; - case (GL_LUMINANCE): + case (GEM_GRAY): nRedHistogram [nSourceRed] +=1; nRedHistogram [nSourceGreen]+=1; nRedHistogram [nSourceBlue]+=1; @@ -383,7 +383,7 @@ nAlphaHistogram[nSourceBlue]+=1; nAlphaHistogram[nSourceAlpha]+=1; break; - case (GL_YUV422_GEM): + case (GEM_YUV): nRedHistogram[nSourceRed]+=1; // U nGreenHistogram[nSourceGreen]+=1; // Y0 nAlphaHistogram[nSourceGreen]+=1; // Y0 diff -Nru gem-0.94~pre1/src/Pixes/pix_levels.h gem-0.94/src/Pixes/pix_levels.h --- gem-0.94~pre1/src/Pixes/pix_levels.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_levels.h 2019-02-12 13:10:01.000000000 +0000 @@ -100,8 +100,8 @@ int m_nBlueTable[nChannelFunction_Levels]; int m_nAlphaTable[nChannelFunction_Levels]; - void Pete_Levels_SetupCFSettings(int colour=GL_RGBA); - void Pete_Levels_CalculateAutoLevels(int colour=GL_RGBA); + void Pete_Levels_SetupCFSettings(int colour=GEM_RGBA); + void Pete_Levels_CalculateAutoLevels(int colour=GEM_RGBA); void Pete_ChannelFunction_Render(); void Pete_ChannelFunction_RenderYUV(); diff -Nru gem-0.94~pre1/src/Pixes/pix_mask.cpp gem-0.94/src/Pixes/pix_mask.cpp --- gem-0.94~pre1/src/Pixes/pix_mask.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_mask.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_mix.cpp gem-0.94/src/Pixes/pix_mix.cpp --- gem-0.94~pre1/src/Pixes/pix_mix.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_mix.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_motionblur.cpp gem-0.94/src/Pixes/pix_motionblur.cpp --- gem-0.94~pre1/src/Pixes/pix_motionblur.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_motionblur.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -33,7 +33,7 @@ m_savedImage.xsize=320; m_savedImage.ysize=240; - m_savedImage.setCsizeByFormat(GL_RGBA_GEM); + m_savedImage.setCsizeByFormat(GEM_RGBA); m_savedImage.reallocate(); m_savedImage.setBlack(); if(argc) diff -Nru gem-0.94~pre1/src/Pixes/pix_movement2.cpp gem-0.94/src/Pixes/pix_movement2.cpp --- gem-0.94~pre1/src/Pixes/pix_movement2.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_movement2.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "pix_movement2.h" + #include <string.h> #include "Utils/Functions.h" @@ -33,22 +34,22 @@ while(i--) { m_frame[i].xsize=0; m_frame[i].ysize=0; - m_frame[i].setCsizeByFormat(GL_LUMINANCE); + m_frame[i].setCsizeByFormat(GEM_GRAY); m_frame[i].reallocate(); } m_output.xsize=0; m_output.ysize=0; - m_output.setCsizeByFormat(GL_LUMINANCE); + m_output.setCsizeByFormat(GEM_GRAY); m_output.reallocate(); m_background.xsize=0; m_background.ysize=0; - m_background.setCsizeByFormat(GL_LUMINANCE); + m_background.setCsizeByFormat(GEM_GRAY); m_background.reallocate(); m_threshold.xsize=0; m_threshold.ysize=0; - m_threshold.setCsizeByFormat(GL_LUMINANCE); + m_threshold.setCsizeByFormat(GEM_GRAY); m_threshold.reallocate(); m_lowthresh=CLAMP(255.f*MIN(lothresh, hithresh)); @@ -124,20 +125,7 @@ } // 1. store the current frame as gray-image in the appropriate buffer - switch (image.format) { - case GL_RGBA: - m_frame[m_frameIndex].fromRGBA(image.data); - break; - case GL_BGRA_EXT: - m_frame[m_frameIndex].fromBGRA(image.data); - break; - case GL_YCBCR_422_GEM: - m_frame[m_frameIndex].fromUYVY(image.data); - break; - case GL_LUMINANCE: - m_frame[m_frameIndex].fromGray(image.data); - break; - default: + if(!m_frame[m_frameIndex].convertFrom(&image)) { error("no method for this kind of color"); return; } diff -Nru gem-0.94~pre1/src/Pixes/pix_movement.cpp gem-0.94/src/Pixes/pix_movement.cpp --- gem-0.94~pre1/src/Pixes/pix_movement.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_movement.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -40,10 +40,10 @@ pix_movement :: pix_movement(t_floatarg f) { buffer.xsize = buffer.ysize = 64; - buffer.setCsizeByFormat(GL_LUMINANCE); + buffer.setCsizeByFormat(GEM_GRAY); buffer.reallocate(); buffer2.xsize = buffer2.ysize = 64; - buffer2.setCsizeByFormat(GL_LUMINANCE); + buffer2.setCsizeByFormat(GEM_GRAY); buffer2.reallocate(); if(f<=0.) { diff -Nru gem-0.94~pre1/src/Pixes/pix_movement.h gem-0.94/src/Pixes/pix_movement.h --- gem-0.94~pre1/src/Pixes/pix_movement.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_movement.h 2019-02-12 13:10:01.000000000 +0000 @@ -22,7 +22,7 @@ 0409:forum::für::umläute:2000 1801:forum::für::umläute:2001 added the second mode IOhannes m zmoelnig - mailto:zmoelnig@iem.kug.ac.at + mailto:zmoelnig@iem.at this code is published under the Gnu GeneralPublicLicense that should be distributed with gem & pd diff -Nru gem-0.94~pre1/src/Pixes/pix_movie.cpp gem-0.94/src/Pixes/pix_movie.cpp --- gem-0.94~pre1/src/Pixes/pix_movie.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_movie.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -17,7 +17,6 @@ ///////////////////////////////////////////////////////// #include "Gem/GemConfig.h" -#ifndef GEM_FILMBACKEND #include "pix_movie.h" #include "Gem/State.h" @@ -196,5 +195,3 @@ { GetMyClass(data)->modeMess(static_cast<int>(quality)); } - -#endif /* no OS-specific GEM_FILMBACKEND */ diff -Nru gem-0.94~pre1/src/Pixes/pix_movieDarwin.cpp gem-0.94/src/Pixes/pix_movieDarwin.cpp --- gem-0.94~pre1/src/Pixes/pix_movieDarwin.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_movieDarwin.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,999 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// tigital@mac.com & cgc@humboldtblvd.com -// -// Implementation file -// -// Copyright (c) 1997-1999 Mark Danks. -// Copyright (c) 2002 James Tittle & Chris Clepper -// -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "Gem/GemConfig.h" -#if defined __APPLE__ && !defined __x86_64__ -// with OSX10.6, apple has removed loads of Carbon functionality (in 64bit mode) -// LATER make this a real check in configure -# define HAVE_CARBONQUICKTIME -#endif - -#if !defined HAVE_CARBONQUICKTIME && defined GEM_FILMBACKEND && GEM_FILMBACKEND == GEM_FILMBACKEND_Darwin -# undef GEM_FILMBACKEND -#endif - -#if defined GEM_FILMBACKEND && GEM_FILMBACKEND == GEM_FILMBACKEND_Darwin - -// as long as there is no special help-file, fallback to the [pix_movie] -#define HELPSYMBOL "pix_movie" - -#include "pix_movieDarwin.h" -#include "Gem/Manager.h" - -CPPEXTERN_NEW_WITH_ONE_ARG(pix_movieDarwin, t_symbol *, A_DEFSYM); - -///////////////////////////////////////////////////////// -// -// pix_movie -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_movieDarwin :: pix_movieDarwin(t_symbol *filename) : - m_oldTexCoords(NULL), m_oldNumCoords(0), m_oldTexture(0), m_oldImage(NULL), - m_textureObj(0), m_xRatio(1.f), m_yRatio(1.f), upsidedown(true), - m_textureType(GL_TEXTURE_RECTANGLE_EXT), - x_filename(NULL), - m_frame(NULL), m_data(NULL), - m_haveMovie(0), m_auto(0), - m_numFrames(0), m_reqFrame(0), m_curFrame(0), m_track(0), - m_xsize(0), m_ysize(0), m_csize(0), - m_film(false), m_newFilm(0), newImage(0), - m_colorspace(GL_YCBCR_422_GEM), m_format(0), m_rectangle(1), - m_hiquality(1), - m_play(0), m_rate(1.f) -{ - prevTime = 0; - curTime = 0; - - - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), - gensym("img_num")); - - m_outNumFrames = outlet_new(this->x_obj, 0); - m_outEnd = outlet_new(this->x_obj, 0); - m_outTex = outlet_new(this->x_obj, 0); - -} - -//////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_movieDarwin :: ~pix_movieDarwin() -{ - // Clean up the movie - closeMess(); - deleteBuffer(); - - if(m_outNumFrames) { - outlet_free(m_outNumFrames); - } - if(m_outEnd) { - outlet_free(m_outEnd); - } - if(m_outTex) { - outlet_free(m_outTex); - } - - m_outNumFrames = NULL; - m_outEnd = NULL; - m_outTex = NULL; -} - -void pix_movieDarwin :: deleteBuffer() -{ - if (m_data) { - delete [] m_data; - } - - m_pixBlock.image.data=NULL; - m_frame=m_data=NULL; - m_pixBlock.image.xsize=m_pixBlock.image.ysize=m_pixBlock.image.csize=0; -} - -void pix_movieDarwin :: createBuffer() -{ - const int neededXSize = m_xsize; - const int neededYSize = m_ysize; - int oldx, oldy; - - oldx = 0; - oldy = 0; - - if (neededXSize != oldx || neededYSize != oldy) { - deleteBuffer(); - - m_pixBlock.image.xsize = neededXSize; - m_pixBlock.image.ysize = neededYSize; - m_pixBlock.image.csize = m_csize; - m_pixBlock.image.format= m_format; - - int dataSize = m_pixBlock.image.xsize * m_pixBlock.image.ysize * - m_pixBlock.image.csize; - - m_data = new unsigned char[dataSize]; - - m_pixBlock.image.data = m_data; - m_frame = m_data; - - m_pixBlock.image.csize = m_csize; - m_pixBlock.image.format= m_format; - - oldx = m_pixBlock.image.xsize; - oldy = m_pixBlock.image.ysize; - } -} - - -void pix_movieDarwin :: closeMess(void) -{ - switch (m_haveMovie) { - case GEM_MOVIE_MOV: - ::DisposeMovie(m_movie); - ::DisposeGWorld(m_srcGWorld); - m_srcGWorld = NULL; - m_haveMovie = GEM_MOVIE_NONE; - break; - case GEM_MOVIE_AVI: - ::DisposeMovie(m_movie); - ::DisposeGWorld(m_srcGWorld); - m_srcGWorld = NULL; - m_haveMovie = GEM_MOVIE_NONE; - break; - case GEM_MOVIE_MPG: - ::DisposeMovie(m_movie); - ::DisposeGWorld(m_srcGWorld); - m_srcGWorld = NULL; - m_haveMovie = GEM_MOVIE_NONE; - break; - case GEM_MOVIE_NONE: - default: - break; - } -} - -///////////////////////////////////////////////////////// -// openMess -// -///////////////////////////////////////////////////////// - -void pix_movieDarwin :: openMess(t_symbol *filename, int format) -{ - // if (filename==x_filename)return; - x_filename=filename; - if (format) { - m_colorspace=format; - } - - char buf[MAXPDSTRING]; -#if 0 - canvas_makefilename(getCanvas(), filename->s_name, buf, MAXPDSTRING); -#else - snprintf(buf, MAXPDSTRING, "%s", findFile(filename->s_name).c_str()); -#endif - - // Clean up any open files - closeMess(); - - m_haveMovie = GEM_MOVIE_NONE; - realOpen(buf); - if (m_haveMovie == GEM_MOVIE_NONE) { - return; - } - - t_atom ap[3]; - SETFLOAT(ap, m_numFrames); - SETFLOAT(ap+1, m_xsize); - SETFLOAT(ap+2, m_ysize); - - m_newFilm = 1; - //outlet_float(m_outNumFrames, ((float)) *([a-zA-Z0-9._])); - post("Loaded file: %s with %d frames (%dx%d)", buf, m_numFrames, m_xsize, - m_ysize); - outlet_list(m_outNumFrames, 0, 3, ap); -} - -///////////////////////////////////////////////////////// -// really open the file ! (OS dependent) -// -///////////////////////////////////////////////////////// -void pix_movieDarwin :: realOpen(char *filename) -{ - FSSpec theFSSpec; - OSErr err = noErr; - FSRef ref; - - Track movieTrack, audioTrack; - Media trackMedia; - - long sampleCount; - - long m_rowBytes; - - MatrixRecord matrix; - - if (!filename[0]) { - error("no filename passed"); - } else { - UInt8*filename8=reinterpret_cast<UInt8*>(filename); - err = ::FSPathMakeRef(filename8, &ref, NULL); - err = ::FSGetCatalogInfo(&ref, kFSCatInfoNone, NULL, NULL, &theFSSpec, - NULL); - - if (err) { - error("Unable to find file: %s", filename); - return; - } - m_haveMovie = GEM_MOVIE_MOV; - } - - short refnum = 0; - err = ::OpenMovieFile(&theFSSpec, &refnum, fsRdPerm); - if (err) { - error("Couldn't open the movie file: %#s (%d)", theFSSpec.name, err); - if (refnum) { - ::CloseMovieFile(refnum); - } - return; - } - - ::NewMovieFromFile(&m_movie, refnum, NULL, NULL, newMovieActive, NULL); - if (refnum) { - ::CloseMovieFile(refnum); - } - - m_reqFrame = 0; - m_curFrame = -1; - m_numTracks = static_cast<int>(GetMovieTrackCount(m_movie)); - - // Get the length of the movie - - movieTrack = GetMovieIndTrackType(m_movie,1,VideoMediaType, - movieTrackMediaType); //get first video track - - trackMedia = GetTrackMedia(movieTrack); - - sampleCount = GetMediaSampleCount(trackMedia); - - m_numFrames = sampleCount; - - audioTrack = GetMovieIndTrackType(m_movie,1,SoundMediaType, - movieTrackMediaType); - - SetTrackEnabled(audioTrack, FALSE); - - movieDur = static_cast<long>(GetMovieDuration(m_movie)); - movieScale = static_cast<long>(GetMovieTimeScale(m_movie)); - - /* //old method for getting length - OSType whichMediaType = VisualMediaCharacteristic; - short flags = nextTimeMediaSample + nextTimeEdgeOK; - - TimeValue theTime = 0; - - m_numFrames = -1; - while (theTime >= 0) { - m_numFrames++; - ::GetMovieNextInterestingTime(m_movie, - flags, - 1, - &whichMediaType, - theTime, - 0, - &theTime, - &duration); - // after the first interesting time, don't include the time we - // are currently at. - flags = nextTimeMediaSample; - } - */ - durationf = static_cast<float>(movieDur)/static_cast<float>(m_numFrames); - - // Get the bounds for the movie - ::GetMovieBox(m_movie, &m_srcRect); - OffsetRect(&m_srcRect, -m_srcRect.left, -m_srcRect.top); - SetMovieBox(m_movie, &m_srcRect); - m_xsize = m_srcRect.right - m_srcRect.left; - m_ysize = m_srcRect.bottom - m_srcRect.top; - - - ImageDescriptionHandle desc = NULL; - - desc = (ImageDescriptionHandle)NewHandle(0); - - GetMediaSampleDescription(trackMedia,1,(SampleDescriptionHandle)desc); - - //DVCPRO 720p - if ((*desc)->cType == kDVCPROHD720pCodecType) { - - post("kDVCPROHD720pCodecType"); - m_hiquality = 0; - //SetMoviePlayHints(m_movie, hintsHighQuality, hintsHighQuality); - //SetMoviePlayHints(m_movie, hintsDeinterlaceFields, 0); - - - m_xsize = 960; - SetRect( &m_srcRect, 0, 0, m_xsize, m_ysize ); - - ScaleMatrix(&matrix,FloatToFixed(0.75),FloatToFixed(1.),FloatToFixed(1.), - FloatToFixed(1.)); - SetMovieBox(m_movie, &m_srcRect); - SetMovieMatrix(m_movie,&matrix); - - } - - - - //DVCPRO 1080i60 - if ((*desc)->cType == kDVCPROHD1080i60CodecType) { - - post("kDVCPROHD1080i60CodecType"); - m_hiquality = 0; - //SetMoviePlayHints(m_movie, hintsHighQuality, hintsHighQuality); - //SetMoviePlayHints(m_movie, hintsDeinterlaceFields, 0); - - //kICMImageDescriptionPropertyID_CleanApertureClipRect - - SInt32 clap; - ICMImageDescriptionGetProperty(desc,kQTPropertyClass_ImageDescription, - kICMImageDescriptionPropertyID_CleanAperture, - sizeof(clap),&clap,NULL); - - m_xsize = 1280; - SetRect( &m_srcRect, 0, 0, m_xsize, m_ysize ); - - ScaleMatrix(&matrix,FloatToFixed(2.f/3.f),FloatToFixed(1.), - FloatToFixed(1.),FloatToFixed(1.)); - SetMovieBox(m_movie, &m_srcRect); - SetMovieMatrix(m_movie,&matrix); - - } - - //HDV - //I have no idea what to test for HDV - - int bpp; - if (m_colorspace == GL_BGRA_EXT) { - bpp = 32; - } else { - bpp = 16; - } - UInt32 thePadOffset = m_xsize % bpp; - if( thePadOffset != 0 ) { - m_xsize += (bpp - thePadOffset); - SetRect( &m_srcRect, 0, 0, m_xsize, m_ysize ); - } - - - if (m_colorspace == GL_BGRA_EXT) { - m_csize = 4; - m_format = GL_BGRA_EXT; - m_pixBlock.image.type = GL_UNSIGNED_INT_8_8_8_8_REV; - - createBuffer(); - prepareTexture(); - m_rowBytes = m_xsize * 4; - if (m_hiquality) { - SetMoviePlayHints(m_movie, hintsHighQuality | hintsDeinterlaceFields, - hintsHighQuality | hintsDeinterlaceFields); - } - err = QTNewGWorldFromPtr( &m_srcGWorld, - k32ARGBPixelFormat, - &m_srcRect, - NULL, - NULL, - 0, - m_pixBlock.image.data, - m_rowBytes); - - } else { - m_csize = 2; - m_format = GL_YCBCR_422_APPLE; -#ifndef i386 - m_pixBlock.image.type = GL_UNSIGNED_SHORT_8_8_REV_APPLE; -#else - m_pixBlock.image.type = GL_UNSIGNED_SHORT_8_8_APPLE; -#endif - - - createBuffer(); - prepareTexture(); - m_rowBytes = m_xsize * 2; - if (m_hiquality) { - SetMoviePlayHints(m_movie, hintsHighQuality | hintsDeinterlaceFields, - hintsHighQuality | hintsDeinterlaceFields); - } - err = QTNewGWorldFromPtr( &m_srcGWorld, - k422YpCbCr8CodecType, - // kComponentVideoUnsigned, - &m_srcRect, - NULL, - NULL, - 0, - m_pixBlock.image.data, - m_rowBytes); - } - if (err) { - error("Couldn't make QTNewGWorldFromPtr %d", err); - m_haveMovie = 0; - return; - } - - /* movies task method */ - m_movieTime = GetMovieTime(m_movie,nil); - playRate = GetMoviePreferredRate(m_movie); - - // *** set the graphics world for displaying the movie *** - ::SetMovieGWorld(m_movie, m_srcGWorld, GetGWorldDevice(m_srcGWorld)); - - if (m_auto) { - // SetMovieRate(m_movie,X2Fix(m_rate)); - SetMovieRate(m_movie,X2Fix(1.0)); - m_play = 1; - } else { - SetMovieRate(m_movie,X2Fix(0.0)); - } - - SetMovieVolume(m_movie,FloatToFixed(m_volume)); - ::MoviesTask(m_movie, - 0); // *** this does the actual drawing into the GWorld *** - curTime = GetMovieTime(m_movie,NULL); - prevTime = 0; - newImage = 1; - m_newFilm = 1; - //StartMovie(m_movie); - -} - -///////////////////////////////////////////////////////// -// render -// -///////////////////////////////////////////////////////// -void pix_movieDarwin :: getFrame() -{ - short flags = nextTimeStep; - OSType whichMediaType = VisualMediaCharacteristic; - if (!m_haveMovie) { - return; - } - - if (m_curFrame >= m_numFrames) { - m_curFrame = 0; - } - - // ********************************** - // - // what follows is some of the worst hack work i've ever done to get QT to 'work' - // - // the problem is that QT is very good a playing media if it manages everything itself internally. - // however, that doesn't fit well with GEM because GEM has it's own internal tasking callbacks, so - // in order to get the two to play nice, a bunch of ugly, shit code has to be done. below is a way to - // track the internal state of QT MoviesTask() and figure out which frame it is currently processing. - // this avoids the frame being processed twice by the GEM render chain by managing the newImage flag - // - // note all of the crap to check for the direction of the playback and loop points. - // - // THERE MUST BE A BETTER WAY!!!!!!!!!!!!!! - // - // ************************************ - if (m_auto) { - //play the startmovie() way - if (!m_play) { - SetMovieRate(m_movie,X2Fix(m_rate)); - } - m_play = 1; - - if (m_rate > 0.f) { - if (IsMovieDone(m_movie)) { - outlet_bang(m_outEnd); - GoToBeginningOfMovie(m_movie); - prevTime = 0; - flags |= nextTimeEdgeOK; - } - - MoviesTask(m_movie, - 0); // *** this does the actual drawing into the GWorld *** - curTime = GetMovieTime(m_movie,NULL); - - //check to see if the current position is past our next frame - if (prevTime < curTime) { - newImage = 1; - prevTime = curTime; - - //find next frame bounds using GetMovieNextIntertestingTime() - GetMovieNextInterestingTime(m_movie, - flags, - 1, - &whichMediaType, - prevTime, - 0, - &prevTime, - nil); - - } else { - //if it's still the same frame then don't process - newImage = 0; - } - - } else { - - if (GetMovieTime(m_movie,nil) <= 0) { - GoToEndOfMovie(m_movie); - prevTime = GetMovieTime(m_movie,NULL); - curTime = prevTime; - // get the frame prior to the last frame - GetMovieNextInterestingTime(m_movie, - flags, - 1, - &whichMediaType, - prevTime, - -1, - &prevTime, - NULL); - - - } else { - - MoviesTask(m_movie, - 0); // *** this does the actual drawing into the GWorld *** - curTime = GetMovieTime(m_movie,NULL); - - if (prevTime >= curTime) { - newImage = 1; - prevTime = curTime; - //find next frame bounds using GetMovieNextIntertestingTime() - GetMovieNextInterestingTime(m_movie, - flags, - 1, - &whichMediaType, - prevTime, - -1, - &prevTime, - NULL); - - } else { - newImage = 0; - } - } - } - if (m_newFilm) { - newImage = 1; - //MoviesTask(m_movie, 0); // *** this does the actual drawing into the GWorld *** - // curTime = GetMovieTime(m_movie,NULL); - } - - } else { - //play the manual way - if (m_play) { - SetMovieRate(m_movie,X2Fix(0.0)); - m_play = 0; //turn off play - return; - } - - //m_movieTime = m_reqFrame * duration; - m_movieTime = static_cast<long>(static_cast<float>(m_reqFrame) * - durationf); - - m_movieTime-=9; //total hack!! subtract an arbitrary amount and have nextinterestingtime find the exact place - ::GetMovieNextInterestingTime( m_movie, - flags, - 1, - &whichMediaType, - m_movieTime, - 0, - &m_movieTime, - NULL); - // &durationf); - - SetMovieTimeValue(m_movie, m_movieTime); - MoviesTask(m_movie, 0); - - } - -} - -void pix_movieDarwin :: render(GemState *state) -{ - m_oldImage = state->image; - - texFrame(state,1); - getFrame(); - // MoviesTask(m_movie,0); - - if (m_textureObj) { - t_atom ap[5]; - SETFLOAT(ap, (t_float)m_textureObj); // OK - SETFLOAT(ap+1, (t_float)m_xRatio); // constructor - SETFLOAT(ap+2, (t_float)m_yRatio); // constructor - SETFLOAT(ap+3, (t_float)m_textureType); - SETFLOAT(ap+4, (t_float) - upsidedown); // always TRUE on Darwin (with QT backend) - outlet_list(m_outTex, &s_list, 5, ap); - } -} - - -///////////////////////////////////////////////////////// -// on opening a file, prepare for texturing -// -///////////////////////////////////////////////////////// -void pix_movieDarwin :: prepareTexture() -{ - float x2,y2; - float xratio, yratio; - - x2 = powerOfTwo(m_pixBlock.image.xsize); - y2 = powerOfTwo(m_pixBlock.image.ysize); - xratio = x2 / m_pixBlock.image.xsize; - yratio = y2 / m_pixBlock.image.ysize; - - if (m_rectangle) { - - m_coords[3].s = 0.f; - m_coords[3].t = 0.f; - - m_coords[2].s = m_pixBlock.image.xsize; - m_coords[2].t = 0.f; - - m_coords[1].s = m_pixBlock.image.xsize; - m_coords[1].t = m_pixBlock.image.ysize; - - m_coords[0].s = 0.f; - m_coords[0].t = m_pixBlock.image.ysize; - - } else { - m_coords[3].s = 0.f; - m_coords[3].t = 0.f; - - m_coords[2].s = xratio; - m_coords[2].t = 0.f; - - m_coords[1].s = xratio; - m_coords[1].t = yratio; - - m_coords[0].s = 0.f; - m_coords[0].t = yratio; - } -} - -///////////////////////////////////////////////////////// -// setUpTextureState -// -///////////////////////////////////////////////////////// -void pix_movieDarwin :: setUpTextureState() -{ - if (m_rectangle && GemMan::texture_rectangle_supported) { - verbose(1, "using rectangle textures"); - m_textureType = GL_TEXTURE_RECTANGLE_ARB; - } else { - m_textureType = GL_TEXTURE_2D; - verbose(1,"using power of two textures"); - } - - glTexParameterf(m_textureType, GL_TEXTURE_PRIORITY, 0.0); - - glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE); - - glTexParameteri(m_textureType, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(m_textureType, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(m_textureType, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(m_textureType, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - -} - - - -///////////////////////////////////////////////////////// -// render -// -///////////////////////////////////////////////////////// -void pix_movieDarwin :: texFrame(GemState *state, int doit) -{ - m_oldTexCoords = state->texCoords; - m_oldNumCoords = state->numTexCoords; - m_oldTexture = state->texture; - - state->texture = 2; - state->texCoords = m_coords; - state->numTexCoords = 4; - - state->image = &m_pixBlock; - - glActiveTexture(GL_TEXTURE0_ARB); - - if (GL_TEXTURE_2D == m_textureType) { - glEnable(m_textureType); - glBindTexture(m_textureType, m_textureObj); - - if (m_pixBlock.image.csize != m_dataSize[0] || - m_pixBlock.image.xsize != m_dataSize[1] || - m_pixBlock.image.ysize != m_dataSize[2]) { - m_dataSize[0] = m_pixBlock.image.csize; - m_dataSize[1] = m_pixBlock.image.xsize; - m_dataSize[2] = m_pixBlock.image.ysize; - glTexImage2D(m_textureType, 0, - GL_RGBA, - m_pixBlock.image.xsize, - m_pixBlock.image.ysize, 0, - m_pixBlock.image.format,// GL_YCBCR_422_APPLE, - m_pixBlock.image.type,// GL_YCBCR_422_APPLE, - m_pixBlock.image.data); - - verbose(1, "new power-of-two texture size - glTexImage2D"); - } - m_xRatio = 1.0; - m_yRatio = 1.0; - - glTexSubImage2D(m_textureType, 0, - 0, 0, // position - m_xsize, // the x size of the data - m_ysize, // the y size of the data - m_pixBlock.image.format, // the format, e.g. GL_YCBCR_422_APPLE, - m_pixBlock.image.type, // the type, e.g. GL_UNSIGNED_SHORT_8_8_REV_APPLE, - m_frame); // m_pixBlock.image.data); - } else if (GL_TEXTURE_RECTANGLE_ARB == m_textureType) { - glEnable(m_textureType); - glBindTexture(m_textureType, m_textureObj); - - if (m_newFilm ) { - glTextureRangeAPPLE( m_textureType, - m_pixBlock.image.xsize * m_pixBlock.image.ysize * m_pixBlock.image.csize, - m_pixBlock.image.data ); - - glTexParameteri(m_textureType, GL_TEXTURE_STORAGE_HINT_APPLE, - GL_STORAGE_SHARED_APPLE ); - - glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE); - - glTexImage2D(m_textureType, 0, - GL_RGBA, - m_pixBlock.image.xsize, - m_pixBlock.image.ysize, 0, - m_pixBlock.image.format, // GL_YCBCR_422_APPLE, - m_pixBlock.image.type, // GL_UNSIGNED_SHORT_8_8_REV_APPLE, //GL_UNSIGNED_SHORT_8_8_APPLE, - m_pixBlock.image.data); - - verbose(1, "new film"); - m_newFilm = 0; //just to be sure - } - - m_xRatio = m_xsize; - m_yRatio = m_ysize; - - glTexSubImage2D(m_textureType, 0, - 0, 0, // position - m_xsize, // the x size of the data - m_ysize, // the y size of the data - GL_YCBCR_422_APPLE, // m_pixBlock.image.format, // the format - GL_UNSIGNED_SHORT_8_8_REV_APPLE, // m_pixBlock.image.type, // the type - m_pixBlock.image.data); // m_frame); // the data + header offset - } -} - -///////////////////////////////////////////////////////// -// postrender -// -///////////////////////////////////////////////////////// -void pix_movieDarwin :: postrender(GemState *state) -{ - state->texCoords = m_oldTexCoords; - state->numTexCoords= m_oldNumCoords; - state->texture = m_oldTexture; - - state->image = m_oldImage; - - - m_pixBlock.newimage = 0; - - glActiveTexture(GL_TEXTURE0_ARB); - - glDisable(m_textureType); - - if (m_numFrames>0 && m_reqFrame>m_numFrames) { - m_reqFrame = m_numFrames; - //outlet_bang(m_outEnd); - } -} - - -///////////////////////////////////////////////////////// -// startRendering -// -///////////////////////////////////////////////////////// -void pix_movieDarwin :: startRendering() -{ - glGenTextures(1, &m_textureObj); - - if ( ! m_rectangle ) { - glBindTexture(GL_TEXTURE_2D, m_textureObj); - } else { - glBindTexture(GL_TEXTURE_RECTANGLE_ARB, m_textureObj); - } - - setUpTextureState(); - - m_pixBlock.newimage = 1; - m_newFilm = 1; - m_dataSize[0] = m_dataSize[1] = m_dataSize[2] = -1; - - if (m_auto && m_haveMovie) { - SetMovieVolume(m_movie, (short)(m_volume * 255.f)); - } -} - -///////////////////////////////////////////////////////// -// stopRendering -// -///////////////////////////////////////////////////////// -void pix_movieDarwin :: stopRendering() -{ - if (m_textureObj) { - glDeleteTextures(1, &m_textureObj); - } - m_textureObj = 0; - m_dataSize[0] = m_dataSize[1] = m_dataSize[2] = 0; - - if (m_auto && m_haveMovie) { - SetMovieVolume(m_movie, kNoVolume); - } -} - - -void pix_movieDarwin :: MovRate(float rate) -{ - m_rate = rate; - if (m_auto && m_haveMovie) { - SetMovieRate(m_movie,X2Fix((double)m_rate)); - } -} - -void pix_movieDarwin :: MovVolume(float volume) -{ - m_volume = volume; - if (m_auto && m_haveMovie) { - SetMovieVolume(m_movie,(short)(m_volume * 255.f)); - } -} - -///////////////////////////////////////////////////////// -// changeImage -// -///////////////////////////////////////////////////////// -void pix_movieDarwin :: changeImage(int imgNum, int trackNum) -{ - if (imgNum < 0) { - // error("selection number must be > 0"); - imgNum=0; - } - if (trackNum < 0) { - error("track number must be > 0"); - trackNum=0; - } - - if (m_haveMovie) { - if (imgNum > m_numFrames) { - if (m_numFrames<0) { - m_reqFrame = imgNum; - } else { - m_reqFrame=m_numFrames; - } - // else error("frame %d exceeds max (%d)", imgNum, m_numFrames); - //m_reqFrame = imgNum; - return; - } else { - m_reqFrame = imgNum; - } - } -} - -void pix_movieDarwin :: LoadRam() -{ - TimeValue length; - OSErr err; - if (m_haveMovie) { - m_movieTime = 0; - length = GetMovieDuration(m_movie); - err =LoadMovieIntoRam(m_movie,m_movieTime,length,keepInRam); - if (err) { - error("LoadMovieIntoRam failed miserably"); - } - } else { - error("no movie to load into RAM!"); - } -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_movieDarwin :: obj_setupCallback(t_class *classPtr) -{ - class_addcreator(reinterpret_cast<t_newmethod>(create_pix_movieDarwin), - gensym("pix_movie"), - A_DEFSYM,A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieDarwin::openMessCallback), - gensym("open"), A_SYMBOL, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieDarwin::changeImageCallback), - gensym("img_num"), A_GIMME, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieDarwin::autoCallback), - gensym("auto"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieDarwin::rateCallback), - gensym("rate"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieDarwin::ramCallback), - gensym("ram"), A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieDarwin::hiqualityCallback), - gensym("hiquality"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieDarwin::rectangleCallback), - gensym("rectangle"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieDarwin::volumeCallback), - gensym("volume"), A_DEFFLOAT, A_NULL); -} - -void pix_movieDarwin :: openMessCallback(void *data, t_symbol *filename) -{ - GetMyClass(data)->openMess(filename,0); -} - -void pix_movieDarwin :: changeImageCallback(void *data, t_symbol *, - int argc, t_atom *argv) -{ - // GetMyClass(data)->changeImage(static_cast<int>imgNum); - GetMyClass(data)->changeImage((argc<1)?0:atom_getint(argv), - (argc<2)?0:atom_getint(argv+1)); -} - -void pix_movieDarwin :: autoCallback(void *data, t_float state) -{ - GetMyClass(data)->m_auto=!(!static_cast<int>(state)); -} - -void pix_movieDarwin :: rateCallback(void *data, t_float state) -{ - GetMyClass(data)->MovRate(state); -} - -void pix_movieDarwin :: volumeCallback(void *data, t_float state) -{ - GetMyClass(data)->MovVolume(state); -} - -void pix_movieDarwin :: ramCallback(void *data) -{ - GetMyClass(data)->LoadRam(); -} - -void pix_movieDarwin :: hiqualityCallback(void *data, t_float state) -{ - GetMyClass(data)->m_hiquality=static_cast<int>(state); -} - -void pix_movieDarwin :: rectangleCallback(void *data, t_float state) -{ - GetMyClass(data)->m_rectangle=static_cast<int>(state); -} - - -#endif /* __APPLE__ */ diff -Nru gem-0.94~pre1/src/Pixes/pix_movieDarwin.h gem-0.94/src/Pixes/pix_movieDarwin.h --- gem-0.94~pre1/src/Pixes/pix_movieDarwin.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_movieDarwin.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,228 +0,0 @@ -/*----------------------------------------------------------------- - -GEM - Graphics Environment for Multimedia - -Load an digital video (like AVI, Mpeg, Quicktime) into a texture - -Copyright (c) 1997-1999 Mark Danks. mark@danks.org -Copyright (c) 2002 James Tittle & Chris Clepper -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef _INCLUDE__GEM_PIXES_PIX_MOVIEDARWIN_H_ -#define _INCLUDE__GEM_PIXES_PIX_MOVIEDARWIN_H_ - - -#ifdef __APPLE__ -# include "pix_filmDarwin.h" -#else -# error Define pix_movieDarwin for this OS -#endif - -#include "Gem/State.h" - -/*----------------------------------------------------------------- - ------------------------------------------------------------------- - CLASS - pix_movie - - Loads in a movie - - KEYWORDS - pix - - DESCRIPTION - - -----------------------------------------------------------------*/ - -class GEM_EXTERN pix_movieDarwin : public GemBase -{ - - CPPEXTERN_HEADER(pix_movieDarwin, GemBase); - - -public: - - ////////// - // Constructor - pix_movieDarwin(t_symbol *filename); - -protected: - - ////////// - // Destructor - virtual ~pix_movieDarwin(); - - ////////// - // Do the rendering - virtual void texFrame(GemState *state, int doit); - - ////////// - virtual void setUpTextureState(); - - - ////////// - // create and delete buffers - virtual void createBuffer(); - - virtual void deleteBuffer(); - - ////////// - // prepare for texturing (on open) - virtual void prepareTexture(); - - ////////// - // Clear the dirty flag on the pixBlock - virtual void postrender(GemState *state); - - virtual void render(GemState *state); - - ////////// - virtual void startRendering(); - - ////////// - // Delete texture object - virtual void stopRendering(); - - virtual void closeMess(); - - ////////// - // open a movie up - virtual void openMess(t_symbol *filename, int format); - - ////////// - // open a movie up - virtual void realOpen(char *filename); - - ////////// - // Do the rendering - virtual void getFrame(); - - virtual void MovRate(float rate); - - virtual void changeImage(int imgNum, int trackNum); - - ////////// - // load film into RAM - virtual void LoadRam(); - - ////////// - // set the audio volume - virtual void MovVolume(float volume); - - - //----------------------------------- - // GROUP: Texture data - //----------------------------------- - - ////////// - // The texture coordinates - TexCoord m_coords[4]; - ////////// - // The size of the texture (so we can use sub image) - int m_dataSize[3]; - - ////////// - // this is what we get from upstream - TexCoord *m_oldTexCoords; - int m_oldNumCoords; - int m_oldTexture; - pixBlock *m_oldImage; - - GLuint m_textureObj; - float m_xRatio; - float m_yRatio; - bool upsidedown; - GLint m_textureType; - - ////////// - // the current file - t_symbol *x_filename; - - ////////// - // a outlet for information like #frames and "reached end" - t_outlet *m_outNumFrames; - t_outlet *m_outEnd; - t_outlet *m_outTex; /* for texture sharing */ - - ////////// - // frame data - unsigned char*m_frame; /* this points to the main texture (might be black) */ - unsigned char*m_data; /* this points always to the real data */ - - - ////////// - // If a movie was loaded and what kind of Movie this is - int m_haveMovie; - - int m_auto; - - ////////// - // frame information - int m_numFrames; - int m_reqFrame; - int m_curFrame; - - ////////// - // track information - int m_numTracks; - int m_track; - - - pixBlock m_pixBlock; - imageStruct m_imageStruct; - - - int m_xsize; - int m_ysize; - int m_csize; - - - bool m_film; // are we in film- or in movie-mode - int m_newFilm; - int newImage; - int m_colorspace; - int m_format; - int m_rectangle; - - //----------------------------------- - // GROUP: Movie data - //----------------------------------- - - GWorldPtr m_srcGWorld; - Rect m_srcRect; - TimeValue m_movieTime; - Track m_movieTrack; - TimeValue m_timeScale; - TimeValue duration; - float durationf; - long movieDur, movieScale; - int m_hiquality; - int m_play; - float m_rate; - Fixed playRate; - TimeValue prevTime; - TimeValue curTime; - float m_volume; - -private: - Movie m_movie; - -protected: - - ////////// - // static member functions - static void openMessCallback (void *data, t_symbol *filename); - static void changeImageCallback(void *data, t_symbol *, int argc, - t_atom *argv); - static void autoCallback (void *data, t_float state); - static void rateCallback (void *data, t_float state); - static void ramCallback(void *data); - static void hiqualityCallback(void *data, t_float state); - static void rectangleCallback(void *data, t_float state); - static void volumeCallback(void *data, t_float state); -}; - -#endif // for header file diff -Nru gem-0.94~pre1/src/Pixes/pix_movieDS.cpp gem-0.94/src/Pixes/pix_movieDS.cpp --- gem-0.94~pre1/src/Pixes/pix_movieDS.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_movieDS.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,879 +0,0 @@ -#include "Gem/GemConfig.h" - -#if defined GEM_FILMBACKEND && GEM_FILMBACKEND == GEM_FILMBACKEND_DS - -#include <atlbase.h> -#include <atlconv.h> -#include <streams.h> -#include <dvdmedia.h> - -#pragma comment(lib, "strmbase.lib") -#pragma comment(lib, "strmiids.lib") - -#include "pix_movieDS.h" -#include "Gem/Manager.h" - -CPPEXTERN_NEW_WITH_ONE_ARG(pix_movieDS, t_symbol *, A_DEFSYM); - -pix_movieDS :: pix_movieDS(t_symbol *filename) : - m_haveMovie(FALSE), - m_frame(NULL), - m_csize(0), - m_xsize(0), - m_ysize(0), - FilterGraph(NULL), - VideoFilter(NULL), - SampleFilter(NULL), - NullFilter(NULL), - SampleGrabber(NULL), - MediaControl(NULL), - MediaSeeking(NULL), - MediaPosition(NULL) -{ - HRESULT RetVal; - - m_dataSize[0] = m_csize; - m_dataSize[1] = m_xsize; - m_dataSize[2] = m_ysize; - - // Initialize COM - CoInitialize(NULL); - - // Create the base object of a filter graph - RetVal = CoCreateInstance(CLSID_FilterGraph, NULL, - CLSCTX_INPROC_SERVER, - IID_IGraphBuilder, (void **)&FilterGraph); - - if (RetVal != S_OK || NULL == FilterGraph) { - error("Unable to create FilterGraph interface %d", RetVal); - - return; - } - - // Get the IMediaControl interface for Run, Stop, Pause and keeps control states - RetVal = FilterGraph->QueryInterface(IID_IMediaControl, - (void **)&MediaControl); - - if (RetVal != S_OK || NULL == MediaControl) { - error("Unable to create MediaControl interface %d", RetVal); - - return; - } - - // Get the IMediaSeeking interface for rewinding video at loop point - // and set time format to frames - RetVal = FilterGraph->QueryInterface(IID_IMediaSeeking, - (void **)&MediaSeeking); - - if (RetVal != S_OK || NULL == MediaSeeking) { - error("Unable to create MediaSeeking interface %d", RetVal); - - return; - } - - // Get the IMediaPosition interface for getting the current position of the clip - RetVal = FilterGraph->QueryInterface(IID_IMediaPosition, - (void **)&MediaPosition); - - if (RetVal != S_OK || NULL == MediaPosition) { - error("Unable to create MediaPosition interface %d", RetVal); - - return; - } - - if (strlen(filename->s_name) > 0) { - openMess(filename, GL_RGBA); - } -} - -pix_movieDS::~pix_movieDS(void) -{ - closeMess(); - - // Release IMediaControl interface - if (MediaControl != NULL) { - MediaControl->Release(); - - MediaControl = NULL; - } - - // Release IMediaSeeking interface - if (MediaSeeking != NULL) { - MediaSeeking->Release(); - - MediaSeeking = NULL; - } - - // Release IMediaPosition interface - if (MediaPosition != NULL) { - MediaPosition->Release(); - - MediaPosition = NULL; - } - - // Release base FilterGraph - if (FilterGraph != NULL) { - FilterGraph->Release(); - - FilterGraph = NULL; - } - - // Release COM - CoUninitialize(); -} - -void pix_movieDS::deleteBuffer() -{ -} - -void pix_movieDS::createBuffer() -{ -} - -// cleanup DS -void pix_movieDS::closeMess(void) -{ - // Mark movie as unavailable - m_haveMovie = FALSE; - - // Stop the video. Filters cannot be remove until video is stopped - if (MediaControl != NULL) { - MediaControl->Stop(); - } - - // Release ISampleGrabber interface - if (SampleGrabber != NULL) { - SampleGrabber->Release(); - - SampleGrabber = NULL; - } - - // Remove and release SampleFilter (IBaseFilter) interface - if (SampleFilter != NULL) { - FilterGraph->RemoveFilter(SampleFilter); - SampleFilter->Release(); - - SampleFilter = NULL; - } - - // Remove and release VideoFilter (IBaseFilter) interface - if (VideoFilter != NULL) { - FilterGraph->RemoveFilter(VideoFilter); - VideoFilter->Release(); - - VideoFilter = NULL; - } - - // Remove and release NullFilter (IBaseFilter) interface - if (NullFilter != NULL) { - FilterGraph->RemoveFilter(NullFilter); - NullFilter->Release(); - - NullFilter = NULL; - } - - // Delete the graphics buffer - if (m_frame != NULL) { - delete [] m_frame; - - m_frame = NULL; - } -} - -///////////////////////////////////////////////////////// -// openMess -// -///////////////////////////////////////////////////////// - -void pix_movieDS::openMess(t_symbol *filename, int format) -{ -// if (filename == x_filename) -// { -// return; -// } - - x_filename = filename; - - if (format) { - m_colorspace = format; - } - - char buf[MAXPDSTRING]; - canvas_makefilename(getCanvas(), filename->s_name, buf, MAXPDSTRING); - - // Clean up any open files - closeMess(); - - realOpen(buf); - - if (FALSE == m_haveMovie) { - return; - } - - t_atom ap[3]; - - SETFLOAT(ap, m_numFrames); - SETFLOAT(ap+1, m_xsize); - SETFLOAT(ap+2, m_ysize); - - m_newFilm = 1; -} - -///////////////////////////////////////////////////////// -// really open the file ! (OS dependent) -// -///////////////////////////////////////////////////////// -void pix_movieDS::realOpen(char *filename) -{ - WCHAR WideFileName[MAXPDSTRING]; - HRESULT RetVal; - AM_MEDIA_TYPE MediaType; - BOOL bFrameTime = TRUE; - GUID Guid; - - // Convert c-string to Wide string. - memset(&WideFileName, 0, MAXPDSTRING * 2); - - if (0 == MultiByteToWideChar(CP_ACP, 0, filename, strlen(filename), - WideFileName, - MAXPDSTRING)) { - error("Unable to load %s", filename); - - return; - } - - // Add a file source filter to the filter graph. - RetVal = FilterGraph->AddSourceFilter(WideFileName, L"SOURCE", - &VideoFilter); - - if (RetVal != S_OK || NULL == VideoFilter) { - error("Unable to render %s", filename); - - return; - } - - // Create an instance of the sample grabber filter. The filter allows frames to be - // buffered from a video source. - RetVal = CoCreateInstance(CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER, - IID_IBaseFilter, (void**)&SampleFilter); - - if (RetVal != S_OK || NULL == SampleFilter) { - error("Unable to create SampleFilter interface %d", RetVal); - - return; - } - - // Add sample grabber filter to the filter graph. - RetVal = FilterGraph->AddFilter(SampleFilter, L"Sample Grabber"); - - if (RetVal != S_OK) { - error("Unable to add SampleFilter %d", RetVal); - - return; - } - - // Find an interface to the SampleGrabber from the SampleGrabber filter. The - // SampleGrabber allows frames to be grabbed from the filter. SetBufferSamples(TRUE) - // tells the SampleGrabber to buffer the frames. SetOneShot(FALSE) tells the - // SampleGrabber to continuously grab frames. has GetCurrentBuffer() method - RetVal = SampleFilter->QueryInterface(IID_ISampleGrabber, - (void **)&SampleGrabber); - - if (RetVal != S_OK || NULL == SampleGrabber) { - error("Unable to create SampleGrabber interface %d", RetVal); - - return; - } - - // Set the media type that the SampleGrabber wants. - // MEDIATYPE_Video selects only video and not interleaved audio and video - // MEDIASUBTYPE_RGB24 is the colorspace and format to deliver frames - // MediaType.formattype is GUID_NULLsince it is handled later to get file info - memset(&MediaType, 0, sizeof(AM_MEDIA_TYPE)); - MediaType.majortype = MEDIATYPE_Video; - MediaType.subtype = MEDIASUBTYPE_RGB24; - MediaType.formattype = GUID_NULL; - RetVal = SampleGrabber->SetMediaType( - &MediaType); - - // Set the SampleGrabber to return continuous frames - RetVal = SampleGrabber->SetOneShot(FALSE); - - if (RetVal != S_OK) { - error("Unable to setup sample grabber %d", RetVal); - - return; - } - - // Set the SampleGrabber to copy the data to a buffer. This only set to FALSE when a - // callback is used. - RetVal = SampleGrabber->SetBufferSamples(TRUE); - - if (RetVal != S_OK) { - error("Unable to setup sample grabber %d", RetVal); - - return; - } - - // Create the Null Renderer interface. The Null Renderer is used to disable rendering of a - // video stream to a window. - RetVal = CoCreateInstance(CLSID_NullRenderer, NULL, CLSCTX_INPROC_SERVER, - IID_IBaseFilter, (void**)&NullFilter); - - if (RetVal != S_OK || NULL == NullFilter) { - error("Unable to create NullFilter interface %d", RetVal); - - return; - } - - // Add the Null Renderer filter to the FilterGraph - RetVal = FilterGraph->AddFilter(NullFilter, L"NullRenderer"); - - if (RetVal != S_OK) { - error("Unable to add NullFilter %d", RetVal); - - return; - } - - // DS filter chain is FileSource -> SampleGrabber -> NullRenderer - // DS can put any needed filters in the chain for format or colorspace conversion - // decompression or other transforms - - // Connect the SampleFilter to the VideoFilter - RetVal = movieConnectFilters(FilterGraph, VideoFilter, SampleFilter); - - if (RetVal != S_OK) { - error("Unable to connect filters %d", RetVal); - - return; - } - - // Connect the NullFilter to the SampleFilter - RetVal = movieConnectFilters(FilterGraph, SampleFilter, NullFilter); - - if (RetVal != S_OK) { - error("Unable to connect filters %d", RetVal); - - return; - } - - // Set the time format to frames - Guid = TIME_FORMAT_FRAME; - - RetVal = MediaSeeking->SetTimeFormat(&Guid); - - if (RetVal != S_OK) { - // If frame time format not available, default to 100 nanosecond increments. - bFrameTime = FALSE; - - Guid = TIME_FORMAT_MEDIA_TIME; - - RetVal = MediaSeeking->SetTimeFormat(&Guid); - - if (RetVal != S_OK) { - error("Unable to set video time format %d", RetVal); - - return; - } - } - - // Get the duration of the video. Format will be in previously set time format. This is - // compatible with the value returned from GetCurrentPosition - RetVal = MediaSeeking->GetDuration(&m_Duration); - - if (RetVal != S_OK) { - error("Unable to get video duration %d", RetVal); - - return; - } - - // Set the number of frames based on the time format used. - if (TRUE == bFrameTime) { - m_numFrames = m_Duration; - } - - else { - LONGLONG OutFormat; - GUID OutGuid; - - OutGuid = TIME_FORMAT_FRAME; - Guid = TIME_FORMAT_MEDIA_TIME; - - //converts from 100 nanosecond format to number of frames - MediaSeeking->ConvertTimeFormat(&OutFormat, &OutGuid, m_Duration, &Guid); - - m_numFrames = OutFormat; - } - - // Get the format of the connected media. - RetVal = SampleGrabber->GetConnectedMediaType(&MediaType); - - if (RetVal != S_OK) { - error("Unable to get media type %d", RetVal); - - return; - } - - // The SampleGrabber will only return video of the the 'FORMAT_VideoInfo' type. - if (FORMAT_VideoInfo == MediaType.formattype - && MediaType.pbFormat != NULL) { - // Format returned is specific to the formattype. - VIDEOINFOHEADER *VideoInfo = (VIDEOINFOHEADER *)MediaType.pbFormat; - - // Get size of the image from the BitmapInfoHeader returned in the VIDEOINFOHEADER. - m_xsize = VideoInfo->bmiHeader.biWidth; - m_ysize = VideoInfo->bmiHeader.biHeight; - m_csize = 3; - } - - else { - error("Invalid media type returned %s", filename); - - return; - } - - // Allocate video buffer if valid sizes returned. - if (m_xsize > 0 && m_ysize > 0 && m_csize > 0) { - if (m_frame != NULL) { - delete [] m_frame; - } - - m_frame = new BYTE[m_xsize * m_ysize * m_csize]; - - if (NULL == m_frame) { - error("Unable to allocate memory for the video buffer %s", filename); - - return; - } - } - - // Release the MediaType.pbFormat data - FreeMediaType(MediaType); - - IBaseFilter *DVFilter; - - // If DV video is used, set the quality to 720 x 480. - RetVal = FilterGraph->FindFilterByName(L"DV Video Decoder", &DVFilter); - - if (S_OK == RetVal && DVFilter != NULL) { - IIPDVDec *IPDVDec; - - // Find the IIPDVDec interface - RetVal = DVFilter->QueryInterface(IID_IIPDVDec, (void **)&IPDVDec); - - if (S_OK == RetVal && IPDVDec != NULL) { - // Set the property to DVRESOLUTION_FULL - IPDVDec->put_IPDisplay(DVRESOLUTION_FULL); - - // Release the interface - IPDVDec->Release(); - } - - // Release the interface - DVFilter->Release(); - } - - post("xsize %d ysize %d csize %",m_xsize, m_ysize, m_csize); - - // Setup the pixBlock data based on the media type. - // this is a guess at the fast past for pixels on Windows - m_pixBlock.image.xsize = m_xsize; - m_pixBlock.image.ysize = m_ysize; - m_pixBlock.image.csize = m_csize; - m_pixBlock.image.format = GL_BGR_EXT; - m_pixBlock.image.type = GL_UNSIGNED_BYTE; - - // Start the video stream - RetVal = MediaControl->Run(); - - if (RetVal != S_OK && RetVal != S_FALSE) { - error("Unable to start video %d", RetVal); - - return; - } - - // Wait for the video to begin playing. - while (TRUE) { - OAFilterState FilterState; - - // Get the state and ensure it's not in an intermediate state - RetVal = MediaControl->GetState(0, &FilterState); - - if (RetVal != S_OK && RetVal != VFW_S_STATE_INTERMEDIATE) { - error("Unable to run video %d", RetVal); - - return; - } - - // Ensure the video is running - else if (RetVal == S_OK && State_Running == FilterState) { - break; - } - } - - // Sets the tex coords - prepareTexture(); - - // Set the last frame to -1 so it will show the first frame. - m_LastFrame = -1; - - m_haveMovie = TRUE; -} - -///////////////////////////////////////////////////////// -// render -// -///////////////////////////////////////////////////////// -void pix_movieDS::getFrame() -{ - long frameSize = m_ysize * m_xsize * m_csize; - HRESULT RetVal; - OAFilterState State; - - // Initially set the image as unchanged - m_pixBlock.newimage = FALSE; - - // If the MediaControl interface is unavailable return. - if (NULL == MediaControl) { - return; - } - - // Ensure the video is running - RetVal = MediaControl->GetState(0, &State); - - if (SampleGrabber != NULL && State == State_Running) { - // Get the current position of the video - if (MediaSeeking != NULL) { - LONGLONG CurrentPosition; - - RetVal = MediaSeeking->GetCurrentPosition(&CurrentPosition); - - if (S_OK == RetVal) { - // If the current position is >= the duration, reset the position to the - // beginning - if (CurrentPosition >= m_Duration) { - LONGLONG Current = 0; - - // Set the start position to 0, do not change the end position. - RetVal = MediaSeeking->SetPositions(&Current, - AM_SEEKING_AbsolutePositioning | AM_SEEKING_NoFlush, - NULL, AM_SEEKING_NoPositioning); - - m_pixBlock.newimage = TRUE; - } - - // Indicate the the image has changed. - else if (CurrentPosition > m_LastFrame) { - m_pixBlock.newimage = TRUE; - } - } - } - - // If the video image has changed, copy it to the pixBlock buffer. - if (TRUE == m_pixBlock.newimage) { - RetVal = SampleGrabber->GetCurrentBuffer(&frameSize, (long *)m_frame); - - if (RetVal != S_OK) { - m_pixBlock.image.data = NULL; - } - - else { - m_pixBlock.image.data = m_frame; - } - } - } -} - -void pix_movieDS::render(GemState *state) -{ - if (!m_haveMovie) { - return; - } - - getFrame(); - texFrame(state,1); -} - -///////////////////////////////////////////////////////// -// on opening a file, prepare for texturing -// -///////////////////////////////////////////////////////// -void pix_movieDS::prepareTexture() -{ - - //needs to be right side up - m_coords[3].s = m_xsize; - m_coords[3].t = 0.f; - - m_coords[2].s = 0.f; - m_coords[2].t = 0.f; - - m_coords[1].s = 0.f; - m_coords[1].t = m_ysize; - - m_coords[0].s = m_xsize; - m_coords[0].t = m_ysize; -} - -///////////////////////////////////////////////////////// -// setUpTextureState -// -///////////////////////////////////////////////////////// -void pix_movieDS::setUpTextureState() -{ - glTexParameterf(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_PRIORITY, 0.0); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, - GL_LINEAR); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, - GL_LINEAR); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, - GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, - GL_CLAMP_TO_EDGE); -} - -///////////////////////////////////////////////////////// -// render -// -///////////////////////////////////////////////////////// -void pix_movieDS::texFrame(GemState *state, int doit) -{ - state->texture = 1; - state->texCoords = m_coords; - state->numTexCoords = 4; - - -//check to see if rectangle textures are fast path currently - glEnable(GL_TEXTURE_RECTANGLE_EXT); - glBindTexture(GL_TEXTURE_RECTANGLE_EXT, m_textureObj); - - if (m_pixBlock.image.csize != m_dataSize[0] || - m_pixBlock.image.xsize != m_dataSize[1] || - m_pixBlock.image.ysize != m_dataSize[2]) { - m_dataSize[0] = m_pixBlock.image.csize; - m_dataSize[1] = m_pixBlock.image.xsize; - m_dataSize[2] = m_pixBlock.image.ysize; - - glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, - GL_RGBA, - m_pixBlock.image.xsize, - m_pixBlock.image.ysize, - 0, - m_pixBlock.image.format, - m_pixBlock.image.type, - m_pixBlock.image.data); - - post("new rectangle texture size - glTexImage2D"); - } - /* - if - (m_newFilm ){ - glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, - GL_RGBA, - m_pixBlock.image.xsize, - m_pixBlock.image.ysize, 0, - //m_pixBlock.image.format, - //m_pixBlock.image.type, - GL_YCBCR_422_APPLE, - GL_UNSIGNED_SHORT_8_8_REV_APPLE, - m_pixBlock.image.data); - post("new film"); - m_newFilm = 0; //just to be sure - } - */ - glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, - 0, 0, // position - m_pixBlock.image.xsize, // the x size of the data - m_pixBlock.image.ysize, // the y size of the data - m_pixBlock.image.format, - m_pixBlock.image.type, - m_pixBlock.image.data); // the data + header offset -} - -///////////////////////////////////////////////////////// -// postrender -// -///////////////////////////////////////////////////////// -void pix_movieDS::postrender(GemState *state) -{ - glDisable(GL_TEXTURE_RECTANGLE_EXT); -} - -void pix_movieDS::MovRate(float rate) -{ - HRESULT RetVal; - - // If rate is set to 0.0, pause the video. MediaControl will not accept a rate of 0.0 - //need to have a way to unpause the video. probably set a flag? - if (0.0f == rate) { - if (MediaControl != NULL) { - RetVal = MediaControl->Pause(); - } - } - - // Set the playback speed. - else { - if (MediaSeeking != NULL) { - //might need MediaControl->Run() if paused? - RetVal = MediaControl->Run(); //should un pause - RetVal = MediaSeeking->SetRate(rate); - } - } -} - -///////////////////////////////////////////////////////// -// changeImage -// -///////////////////////////////////////////////////////// -void pix_movieDS::changeImage(int imgNum, int trackNum) -{ -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_movieDS::obj_setupCallback(t_class *classPtr) -{ - class_addcreator(reinterpret_cast<t_newmethod>(create_pix_movieDS, - gensym("pix_movieDS"),A_DEFSYM,A_NULL)); - - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieDS::openMessCallback), - gensym("open"), A_SYMBOL, A_NULL); - - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieDS::changeImageCallback), - gensym("img_num"), A_GIMME, A_NULL); - - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieDS::autoCallback), - gensym("auto"), A_DEFFLOAT, A_NULL); - - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieDS::rateCallback), - gensym("rate"), A_DEFFLOAT, A_NULL); -} - -void pix_movieDS::openMessCallback(void *data, t_symbol *filename) -{ - GetMyClass(data)->openMess(filename,0); -} - -void pix_movieDS::changeImageCallback(void *data, t_symbol *, int argc, - t_atom *argv) -{ - // GetMyClass(data)->changeImage((int)imgNum); - GetMyClass(data)->changeImage((argc<1)?0:atom_getint(argv), - (argc<2)?0:atom_getint(argv+1)); -} - -void pix_movieDS::autoCallback(void *data, t_float state) -{ - GetMyClass(data)->m_auto=!(!(int)state); -} - -void pix_movieDS::rateCallback(void *data, t_float state) -{ - GetMyClass(data)->MovRate(state); -} - -void pix_movieDS::rectangleCallback(void *data, t_float state) -{ - GetMyClass(data)->m_rectangle=(int)state; -} - -HRESULT movieGetPin(IBaseFilter *pFilter, PIN_DIRECTION PinDir, - IPin **ppPin) -{ - IEnumPins *pEnum; - IPin *pPin; - - // Enumerate the pins on the filter - pFilter->EnumPins(&pEnum); - - if (NULL == pEnum) { - return E_FAIL; - } - - // Get the next pin. Needs to be called initially to get the first pin. - while (pEnum->Next(1, &pPin, 0) == S_OK) { - PIN_DIRECTION PinDirThis; - - // Get the direction of a pin - pPin->QueryDirection(&PinDirThis); - - // Check if pin is the same type of pin requested. Will only return the first pin - // of a certain direction. - if (PinDir == PinDirThis) { - // Release the interface - pEnum->Release(); - - // Return the pin, since it's the same direction as requested. - *ppPin = pPin; - - return S_OK; - } - - // Release the pin, since it's not the correct direction. - pPin->Release(); - } - - - // Release the interface - pEnum->Release(); - - return E_FAIL; -} - -HRESULT movieConnectFilters(IGraphBuilder *pGraph, IBaseFilter *pFirst, - IBaseFilter *pSecond) -{ - IPin *pOut = NULL; - IPin *pIn = NULL; - - // Find the first output pin on the first filter - HRESULT RetVal = movieGetPin(pFirst, PINDIR_OUTPUT, &pOut); - - if (RetVal != S_OK) { - return RetVal; - } - - if (NULL == pOut) { - return E_FAIL; - } - - // Find the first input pin on the second filter - RetVal = movieGetPin(pSecond, PINDIR_INPUT, &pIn); - - if (RetVal != S_OK) { - return RetVal; - } - - if (NULL == pIn) { - return E_FAIL; - } - - if (RetVal != S_OK) { - pOut->Release(); - - return E_FAIL; - } - - // Attempt to connect the two pins. - RetVal = pGraph->Connect(pOut, pIn); - - // A filter having audio and video will return a VFW_S_PARTIAL_RENDER when attempting - // to connect to a filter only having video (ie. the SampleGrabber filter) - if (VFW_S_PARTIAL_RENDER == RetVal) { - return S_OK; - } - - // Release the pins - pIn->Release(); - pOut->Release(); - - return RetVal; -} - -#endif /* HAVE_DIRECTSHOW */ diff -Nru gem-0.94~pre1/src/Pixes/pix_movieDS.h gem-0.94/src/Pixes/pix_movieDS.h --- gem-0.94~pre1/src/Pixes/pix_movieDS.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_movieDS.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,194 +0,0 @@ -#ifndef _INCLUDE__GEM_PIXES_PIX_MOVIEDS_H_ -#define _INCLUDE__GEM_PIXES_PIX_MOVIEDS_H_ - -#ifndef HAVE_DIRECTSHOW -# error pix_movieDS without DirectShow -#endif - -#pragma warning (disable : 4251) - -#include <dshow.h> -#include <qedit.h> - - -#include "Base/GemBase.h" -#include "Gem/Image.h" - -class GEM_EXTERN pix_movieDS : public GemBase -{ - - CPPEXTERN_HEADER(pix_movieDS, GemBase); - - -public: - ////////// - // Constructor - pix_movieDS(t_symbol *filename); - ~pix_movieDS(void); - -protected: - - ////////// - // Do the rendering - virtual void texFrame(GemState *state, int doit); - - ////////// - virtual void setUpTextureState(); - - - ////////// - // create and delete buffers - virtual void createBuffer(); - - virtual void deleteBuffer(); - - ////////// - // prepare for texturing (on open) - virtual void prepareTexture(); - - ////////// - // Clear the dirty flag on the pixBlock - virtual void postrender(GemState *state); - - virtual void render(GemState *state); - - ////////// - // open a movie up - virtual void openMess(t_symbol *filename, int format); - virtual void realOpen(char *filename); - virtual void closeMess(); - - ////////// - // Do the rendering - virtual void getFrame(); - - virtual void MovRate(float rate); - - virtual void changeImage(int imgNum, int trackNum); - - ////////// - // load film into RAM - //virtual void LoadRam(); - - - //----------------------------------- - // GROUP: Texture data - //----------------------------------- - - ////////// - // The texture coordinates - TexCoord m_coords[4]; - ////////// - // The size of the texture (so we can use sub image) - int m_dataSize[3]; - - GLuint m_textureObj; - float m_xRatio; - float m_yRatio; - - ////////// - // the current file - t_symbol *x_filename; - - ////////// - // a outlet for information like #frames and "reached end" - t_outlet *m_outNumFrames; - t_outlet *m_outEnd; - - ////////// - // frame data - unsigned char - *m_frame; /* this points to the main texture (might be black) */ - unsigned char *m_data; /* this points always to the real data */ - - - ////////// - // If a movie was loaded and what kind of Movie this is - int m_haveMovie; - - int m_auto; - - ////////// - // frame information - int m_numFrames; - int m_reqFrame; - int m_curFrame; - - ////////// - // track information - int m_numTracks; - int m_track; - - - pixBlock m_pixBlock; - imageStruct m_imageStruct; - - - int m_xsize; - int m_ysize; - int m_csize; - - - bool m_film; // are we in film- or in movie-mode - int m_newFilm; - int newImage; - int m_colorspace; - int m_format; - int m_rectangle; - - //----------------------------------- - // GROUP: Movie data - //----------------------------------- - -// Rect m_srcRect; -// TimeValue m_movieTime; -// Track m_movieTrack; -// TimeValue m_timeScale; -// TimeValue duration; - float durationf; - long movieDur, movieScale; - int m_play; - float m_rate; -// Fixed playRate; -// TimeValue prevTime; -// TimeValue curTime; - -private: - IBaseFilter - *VideoFilter; // Base Filter for video - IBaseFilter - *SampleFilter; // Sample filter - IBaseFilter - *NullFilter; // Null render base Filter for video - ISampleGrabber *SampleGrabber; // Sample grabber - IGraphBuilder - *FilterGraph; // Filter Graph for movie playback - ISampleGrabber *VideoGrabber; // Video grabber - IMediaControl - *MediaControl; // MediaControl interface - IMediaSeeking - *MediaSeeking; // MediaSeeking interface - IMediaPosition - *MediaPosition; // MediaPosition interface - LONGLONG - m_Duration; // Duration of video - LONGLONG - m_LastFrame; // Last frame - -protected: - ////////// - // static member functions - static void openMessCallback(void *data, t_symbol *filename); - static void changeImageCallback(void *data, t_symbol *, int argc, - t_atom *argv); - static void autoCallback(void *data, t_float state); - static void rateCallback(void *data, t_float state); - static void rectangleCallback(void *data, t_float state); -}; - -HRESULT movieGetPin(IBaseFilter *pFilter, PIN_DIRECTION PinDir, - IPin **ppPin); -HRESULT movieConnectFilters(IGraphBuilder *pGraph, IBaseFilter *pFirst, - IBaseFilter *pSecond); - -#endif diff -Nru gem-0.94~pre1/src/Pixes/pix_movieOS.cpp gem-0.94/src/Pixes/pix_movieOS.cpp --- gem-0.94~pre1/src/Pixes/pix_movieOS.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_movieOS.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,333 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-1999 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// Copyright (c) 2002 James Tittle -// -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// -#include "Gem/GemConfig.h" - -#if defined GEM_FILMBACKEND && GEM_FILMBACKEND != GEM_FILMBACKEND_Darwin - -#include "pix_movieOS.h" - -#include "Gem/Manager.h" - -CPPEXTERN_NEW_WITH_ONE_ARG(pix_movieOS, t_symbol *, A_DEFSYM); - -///////////////////////////////////////////////////////// -// -// pix_movieOS -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_movieOS :: pix_movieOS(t_symbol *filename) : -#if __APPLE__ - pix_filmDarwin(filename) -#else -# error define pix_film for your OS -#endif - , - m_oldTexCoords(NULL), m_oldNumCoords(0), m_oldTexture(0), - m_textureObj(0), m_xRatio(1.f), m_yRatio(1.f) -{ - m_film=false; - post("I should never be called on a Mac"); -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_movieOS :: ~pix_movieOS() -{ - // Clean up the movie - closeMess(); - deleteBuffer(); -} - -///////////////////////////////////////////////////////// -// Buffer for Frames -// -///////////////////////////////////////////////////////// -void pix_movieOS :: createBuffer() -{ - int neededXSize = powerOfTwo(m_xsize); - int neededYSize = powerOfTwo(m_ysize); - - deleteBuffer(); - int dataSize = neededXSize * neededYSize * m_csize; - m_pixBlock.image.data = new unsigned char[dataSize]; - m_data=m_pixBlock.image.data; // ?????????????? - memset(m_pixBlock.image.data, 0, dataSize); - m_frame =/*(char*)*/m_pixBlock.image.data; - - m_pixBlock.image.xsize = neededXSize; - m_pixBlock.image.ysize = neededYSize; - m_pixBlock.image.csize = m_csize; - m_pixBlock.image.format = m_format; -} - -///////////////////////////////////////////////////////// -// on opening a file, prepare for texturing -// -///////////////////////////////////////////////////////// -void pix_movieOS :: prepareTexture() -{ - if (!GemMan::texture_rectangle_supported) { - int neededXSize = m_pixBlock.image.xsize; - int neededYSize = m_pixBlock.image.ysize; - post("prepareTexture: x : %d, y : %d", neededXSize, neededYSize ); - - // ratio for the texture map coordinates - m_xRatio = (float)m_xsize / (float)neededXSize; - m_yRatio = (float)m_ysize / (float)neededYSize; -#ifndef __APPLE__ - m_coords[0].s = 0.f; - m_coords[0].t = 0.f; - - m_coords[1].s = m_xRatio; - m_coords[1].t = 0.f; - - m_coords[2].s = m_xRatio; - m_coords[2].t = m_yRatio; - - m_coords[3].s = 0.f; - m_coords[3].t = m_yRatio; -#else - m_coords[3].s = 0.f; - m_coords[3].t = 0.f; - - m_coords[2].s = m_xRatio; - m_coords[2].t = 0.f; - - m_coords[1].s = m_xRatio; - m_coords[1].t = m_yRatio; - - m_coords[0].s = 0.f; - m_coords[0].t = m_yRatio; -#endif - } else { -#ifndef __APPLE__ - m_coords[0].s = 0.f; - m_coords[0].t = 0.f; - - m_coords[1].s = m_pixBlock.image.xsize; - m_coords[1].t = 0.f; - - m_coords[2].s = m_pixBlock.image.xsize; - m_coords[2].t = m_pixBlock.image.ysize; - - m_coords[3].s = 0.f; - m_coords[3].t = m_pixBlock.image.ysize; -#else - m_coords[3].s = 0.f; - m_coords[3].t = 0.f; - - m_coords[2].s = m_pixBlock.image.xsize; - m_coords[2].t = 0.f; - - m_coords[1].s = m_pixBlock.image.xsize; - m_coords[1].t = m_pixBlock.image.ysize; - - m_coords[0].s = 0.f; - m_coords[0].t = m_pixBlock.image.ysize; -#endif - } -} - -///////////////////////////////////////////////////////// -// render -// -///////////////////////////////////////////////////////// -void pix_movieOS :: texFrame(GemState *state, int doit) -{ - GLenum target = GL_TEXTURE_2D; - - m_oldTexCoords=state->texCoords; - m_oldNumCoords=state->numTexCoords; - m_oldTexture =state->texture; - - state->texture = 1; - state->texCoords = m_coords; - state->numTexCoords = 4; - // enable to texture binding - if (!GemMan::texture_rectangle_supported) { //tigital - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, m_textureObj); - } else { - glEnable(GL_TEXTURE_RECTANGLE_EXT); - glBindTexture(GL_TEXTURE_RECTANGLE_EXT, m_textureObj); - - target = GL_TEXTURE_RECTANGLE_EXT; - } - - if (doit) { - // if the size changed, then reset the texture - if (m_pixBlock.image.csize != m_dataSize[0] || - m_pixBlock.image.xsize != m_dataSize[1] || - m_pixBlock.image.ysize != m_dataSize[2]) { - m_dataSize[0] = m_pixBlock.image.csize; - m_dataSize[1] = m_pixBlock.image.xsize; - m_dataSize[2] = m_pixBlock.image.ysize; - glTexImage2D(target, 0, - m_pixBlock.image.csize, - m_pixBlock.image.xsize, - m_pixBlock.image.ysize, 0, - m_pixBlock.image.format, - m_pixBlock.image.type, - m_pixBlock.image.data); - } - // okay, load in the actual pixel data - glTexSubImage2D(target, 0, - 0, 0, // position - m_xsize, // the x size of the data - m_ysize, // the y size of the data - m_pixBlock.image.format, // the format - m_pixBlock.image.type, // the type - m_frame); // the data + header offset - } -} - -///////////////////////////////////////////////////////// -// postrender -// -///////////////////////////////////////////////////////// -void pix_movieOS :: postrender(GemState *state) -{ - state->texCoords = m_oldTexCoords; - state->numTexCoords= m_oldNumCoords; - state->texture = m_oldTexture; - - state->image = m_oldImage; - - // post("postrender"); - m_pixBlock.newimage = 0; - - if ( !GemMan::texture_rectangle_supported) { - glDisable(GL_TEXTURE_2D); - } else { - glDisable(GL_TEXTURE_RECTANGLE_EXT); - } - - if (m_numFrames>0 && m_reqFrame>m_numFrames) { - m_reqFrame = m_numFrames; - outlet_bang(m_outEnd); - } -} - - -///////////////////////////////////////////////////////// -// startRendering -// -///////////////////////////////////////////////////////// -void pix_movieOS :: startRendering() -{ - glGenTextures(1, &m_textureObj); - if ( ! GemMan::texture_rectangle_supported ) { - glBindTexture(GL_TEXTURE_2D, m_textureObj); - } else { - glBindTexture(GL_TEXTURE_RECTANGLE_EXT, m_textureObj); - } - - setUpTextureState(); - - m_pixBlock.newimage = 1; - m_dataSize[0] = m_dataSize[1] = m_dataSize[2] = -1; -} - -///////////////////////////////////////////////////////// -// stopRendering -// -///////////////////////////////////////////////////////// -void pix_movieOS :: stopRendering() -{ - if (m_textureObj) { - glDeleteTextures(1, &m_textureObj); - } - m_textureObj = 0; - m_dataSize[0] = m_dataSize[1] = m_dataSize[2] = 0; -} - -///////////////////////////////////////////////////////// -// setUpTextureState -// -///////////////////////////////////////////////////////// -void pix_movieOS :: setUpTextureState() -{ - if ( !GemMan::texture_rectangle_supported ) { //tigital - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - } else { - glTexParameterf(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_PRIORITY, 0.0); - if (GLEW_APPLE_client_storage) { - glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, 1); - } else { - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - } - - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, - GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, - GL_NEAREST); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, - GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, - GL_CLAMP_TO_EDGE); - } -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_movieOS :: obj_setupCallback(t_class *classPtr) -{ - class_addcreator(reinterpret_cast<t_newmethod>(create_pix_movieOS), - gensym("pix_movie"), A_DEFSYM, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieOS::openMessCallback), - gensym("open"), A_SYMBOL, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieOS::changeImageCallback), - gensym("img_num"), A_GIMME, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_movieOS::autoCallback), - gensym("auto"), A_DEFFLOAT, A_NULL); -} - -void pix_movieOS :: openMessCallback(void *data, t_symbol *filename) -{ - GetMyClass(data)->openMess(filename); -} - -void pix_movieOS :: changeImageCallback(void *data, t_symbol *, int argc, - t_atom *argv) -{ - // GetMyClass(data)->changeImage((int)imgNum); - GetMyClass(data)->changeImage((argc<1)?0:atom_getint(argv), - (argc<2)?0:atom_getint(argv+1)); -} - -void pix_movieOS :: autoCallback(void *data, t_float state) -{ - GetMyClass(data)->m_auto=!(!(int)state); -} - -#endif /* GEM_FILMBACKEND defined */ diff -Nru gem-0.94~pre1/src/Pixes/pix_movieOS.h gem-0.94/src/Pixes/pix_movieOS.h --- gem-0.94~pre1/src/Pixes/pix_movieOS.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_movieOS.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,112 +0,0 @@ -/*----------------------------------------------------------------- - -GEM - Graphics Environment for Multimedia - -Load an digital video (like AVI, Mpeg, Quicktime) into a texture - -Copyright (c) 1997-1999 Mark Danks. mark@danks.org -Copyright (c) Günther Geiger. geiger@epy.co.at -Copyright (c) 2001-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -Copyright (c) 2002 James Tittle & Chris Clepper -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef _INCLUDE__GEM_PIXES_PIX_MOVIEOS_H_ -#define _INCLUDE__GEM_PIXES_PIX_MOVIEOS_H_ - -#ifdef __APPLE__ -# include "pix_filmDarwin.h" -#else -# error Define pix_filmOS for this OS -#endif - -/*----------------------------------------------------------------- - ------------------------------------------------------------------- - CLASS - pix_movieOS - - Loads in a movie - - KEYWORDS - pix - - DESCRIPTION - - -----------------------------------------------------------------*/ -class GEM_EXTERN pix_movieOS : public pix_filmDarwin -{ - CPPEXTERN_HEADER(pix_movieOS, pix_filmDarwin); - -public: - - ////////// - // Constructor - pix_movieOS(t_symbol *filename); - -protected: - - ////////// - // Destructor - virtual ~pix_movieOS(); - - ////////// - // create and delete buffers - virtual void createBuffer(); - - ////////// - // prepare for texturing (on open) - virtual void prepareTexture(); - - ////////// - // Do the rendering - virtual void texFrame(GemState *state, int doit); - - ////////// - // Clear the dirty flag on the pixBlock - virtual void postrender(GemState *state); - - ////////// - virtual void startRendering(); - - ////////// - // Delete texture object - virtual void stopRendering(); - - ////////// - virtual void setUpTextureState(); - - //----------------------------------- - // GROUP: Texture data - //----------------------------------- - - ////////// - // The texture coordinates - TexCoord m_coords[4]; - - ////////// - // this is what we get from upstream - TexCoord *m_oldTexCoords; - int m_oldNumCoords; - int m_oldTexture; - - ////////// - // The size of the texture (so we can use sub image) - int m_dataSize[3]; - - GLuint m_textureObj; - float m_xRatio; - float m_yRatio; - -protected: - - ////////// - // static member functions - static void openMessCallback (void *data, t_symbol *filename); - static void changeImageCallback(void *data, t_symbol *, int argc, - t_atom *argv); - static void autoCallback (void *data, t_float state); -}; - -#endif // for header file diff -Nru gem-0.94~pre1/src/Pixes/pix_multiblob.cpp gem-0.94/src/Pixes/pix_multiblob.cpp --- gem-0.94~pre1/src/Pixes/pix_multiblob.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_multiblob.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -121,7 +121,7 @@ // initialize image m_image.xsize=320; m_image.ysize=240; - m_image.setCsizeByFormat(GL_LUMINANCE); + m_image.setCsizeByFormat(GEM_GRAY); m_image.allocate(); // outlets @@ -323,31 +323,7 @@ { // store the image in greyscale // since the algorithm is destructive we do it in a sandbox... - - m_image.xsize=image.xsize; - m_image.ysize=image.ysize; - - switch (image.format) { - case GL_RGBA: - m_image.fromRGBA(image.data); - break; - case GL_RGB: - m_image.fromRGB(image.data); - break; - case GL_BGR_EXT: - m_image.fromBGR(image.data); - break; - case GL_BGRA_EXT: /* "RGBA" on apple */ - m_image.fromBGRA(image.data); - break; - case GL_LUMINANCE: - m_image.fromGray(image.data); - break; - case GL_YCBCR_422_GEM: // YUV - m_image.fromUYVY(image.data); - break; - } - + m_image.convertFrom(&image); doProcessing(); } diff -Nru gem-0.94~pre1/src/Pixes/pix_multiimage.cpp gem-0.94/src/Pixes/pix_multiimage.cpp --- gem-0.94~pre1/src/Pixes/pix_multiimage.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_multiimage.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_multiply.cpp gem-0.94/src/Pixes/pix_multiply.cpp --- gem-0.94~pre1/src/Pixes/pix_multiply.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_multiply.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_multitexture.cpp gem-0.94/src/Pixes/pix_multitexture.cpp --- gem-0.94~pre1/src/Pixes/pix_multitexture.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_multitexture.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -12,8 +12,6 @@ // ///////////////////////////////////////////////////////// -/* LATER: respect the available number of texunits as stored in m_max */ - #include "pix_multitexture.h" #include "Gem/Manager.h" @@ -39,7 +37,7 @@ ///////////////////////////////////////////////////////// pix_multitexture :: pix_multitexture(t_floatarg reqTexUnits) : m_inlet(NULL), m_numInlets(0), - m_reqTexUnits((GLint)reqTexUnits), m_max(0), m_textureType(GL_TEXTURE_2D), + m_reqTexUnits((GLint)reqTexUnits), m_textureType(GL_TEXTURE_2D), m_mode(0), m_xRatio(1.f), m_yRatio(1.f), upsidedown(false), m_texSizeX(0), m_texSizeY(0), @@ -54,6 +52,10 @@ m_textureType = GL_TEXTURE_RECTANGLE_EXT; #endif + for(int i=0; i<MAX_MULTITEX_ID; i++) { + m_texID[i]=0; + } + m_numInlets=m_reqTexUnits; m_inlet=new t_inlet*[m_numInlets]; char tempVt[5]; @@ -86,9 +88,14 @@ bool pix_multitexture :: isRunnable(void) { if(GLEW_VERSION_1_3 && GLEW_ARB_multitexture) { + GLint numTexUnits=0; + glGetIntegerv( GL_MAX_TEXTURE_UNITS_ARB, &numTexUnits ); + m_useTexUnits = m_reqTexUnits; + if(m_useTexUnits>numTexUnits) + m_useTexUnits=numTexUnits; return true; } - + m_useTexUnits=0; error("your system lacks multitexture support"); return false; } @@ -133,8 +140,7 @@ state->get(GemState::_GL_TEX_COORDS, m_oldTexCoords); state->get(GemState::_GL_TEX_NUMCOORDS, m_oldNumCoords); state->get(GemState::_GL_TEX_TYPE, m_oldTexture); - - state->get(GemState::_GL_TEX_UNITS, m_reqTexUnits); + state->get(GemState::_GL_TEX_UNITS, m_oldTexUnits); if (m_textureType == GL_TEXTURE_2D) { m_xRatio = 1.0; @@ -152,9 +158,9 @@ state->set(GemState::_GL_TEX_COORDS, tc); state->set(GemState::_GL_TEX_NUMCOORDS, 4); state->set(GemState::_GL_TEX_TYPE, textype); + state->set(GemState::_GL_TEX_UNITS, m_useTexUnits); - - for ( int i=0; i< m_reqTexUnits; i++ ) { + for ( int i=0; i< m_useTexUnits; i++ ) { if(GLEW_VERSION_1_3) { glActiveTexture( GL_TEXTURE0 + i ); } else { @@ -162,6 +168,8 @@ } glEnable( m_textureType ); + + if(!m_texID[i])continue; glBindTexture( m_textureType, m_texID[i] ); glTexParameteri( m_textureType, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); glTexParameteri( m_textureType, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); @@ -179,15 +187,16 @@ state->set(GemState::_GL_TEX_COORDS, m_oldTexCoords); state->set(GemState::_GL_TEX_NUMCOORDS, m_oldNumCoords); state->set(GemState::_GL_TEX_TYPE, m_oldTexture); + state->set(GemState::_GL_TEX_UNITS, m_oldTexUnits); if(GLEW_VERSION_1_3) { - for ( int i = m_reqTexUnits; i>0; i--) { + for ( int i = m_useTexUnits; i>0; i--) { glActiveTexture( GL_TEXTURE0 + i); glDisable( m_textureType ); } glActiveTexture( GL_TEXTURE0 ); } else { - for ( int i = m_reqTexUnits; i>0; i--) { + for ( int i = m_useTexUnits; i>0; i--) { glActiveTextureARB( GL_TEXTURE0_ARB + i); glDisable( m_textureType ); } @@ -246,6 +255,6 @@ int i = atoi(s->s_name+1); GetMyClass(data)->texUnitMess(i, atom_getint(argv)); } else { - GetMyClass(data)->error("invalid texUnit specified!"); + GetMyClass(data)->error("invalid texUnit specified! %s[%d]", s->s_name, argc); } } diff -Nru gem-0.94~pre1/src/Pixes/pix_multitexture.h gem-0.94/src/Pixes/pix_multitexture.h --- gem-0.94~pre1/src/Pixes/pix_multitexture.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_multitexture.h 2019-02-12 13:10:01.000000000 +0000 @@ -62,13 +62,11 @@ t_inlet**m_inlet; unsigned int m_numInlets; - int - m_reqTexUnits; // requested # of texture Units, defaults to m_max - GLint - m_max; // maximum # of texture units supported by the specific card + int m_reqTexUnits; // requested # of texunits (default: m_max) + int m_useTexUnits; // actually used texunits (=min(requested,available)) GLint m_texID[MAX_MULTITEX_ID]; GLint m_textureType; - int m_mode; // 1=TEXTURE_RECTANGLE_EXT, 0=TEXTURE_2D + int m_mode; // 1=TEXTURE_RECTANGLE, 0=TEXTURE_2D ////////// // The texture coordinates @@ -84,6 +82,7 @@ TexCoord *m_oldTexCoords; int m_oldNumCoords; int m_oldTexture; + int m_oldTexUnits; void texUnitMess(int n, int texID); diff -Nru gem-0.94~pre1/src/Pixes/pix_noise.cpp gem-0.94/src/Pixes/pix_noise.cpp --- gem-0.94~pre1/src/Pixes/pix_noise.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_noise.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -42,7 +42,7 @@ ///////////////////////////////////////////////////////// pix_noise :: pix_noise(t_floatarg xsize, t_floatarg ysize) : m_banged(false), m_automatic(false), - m_mode(GL_RGBA_GEM), + m_mode(GEM_RGBA), m_rand_p(0), m_rand_k(24) { if (xsize < 1) { @@ -57,7 +57,7 @@ // m_pixBlock.image = m_imageStruct; m_pixBlock.image.xsize = (int)xsize; m_pixBlock.image.ysize = (int)ysize; - m_pixBlock.image.setCsizeByFormat(GL_RGBA_GEM); + m_pixBlock.image.setCsizeByFormat(GEM_RGBA); m_pixBlock.image.allocate(); generateNoise(); @@ -174,7 +174,7 @@ buffer+=4; } break; - case GL_LUMINANCE: + case GEM_GRAY: while (counter-->0) { buffer[chRed] = buffer[chGreen] = buffer[chBlue] = random(); // rgb buffer[chAlpha] = 255; // alpha @@ -226,7 +226,7 @@ } void pix_noise :: GREYMess(void) { - m_mode = GL_LUMINANCE; + m_mode = GEM_GRAY; bang(); } ///////////////////////////////////////////////////////// @@ -241,7 +241,7 @@ m_pixBlock.image.clear(); m_pixBlock.image.xsize = (int)xsize; m_pixBlock.image.ysize = (int)ysize; - m_pixBlock.image.setCsizeByFormat(GL_RGBA_GEM); + m_pixBlock.image.setCsizeByFormat(GEM_RGBA); m_pixBlock.image.reallocate(); generateNoise(); diff -Nru gem-0.94~pre1/src/Pixes/pix_normalize.cpp gem-0.94/src/Pixes/pix_normalize.cpp --- gem-0.94~pre1/src/Pixes/pix_normalize.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_normalize.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_offset.cpp gem-0.94/src/Pixes/pix_offset.cpp --- gem-0.94~pre1/src/Pixes/pix_offset.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_offset.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_pix2sig.cpp gem-0.94/src/Pixes/pix_pix2sig.cpp --- gem-0.94~pre1/src/Pixes/pix_pix2sig.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_pix2sig.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -32,7 +32,7 @@ m_data(NULL), m_size(0), m_csize(4), - m_format(GL_RGBA_GEM) + m_format(GEM_RGBA) { int i=4; while(i--) { @@ -107,7 +107,7 @@ break; } switch(x->m_format) { - case GL_RGBA: + case GEM_RGBA: default: while(n--) { *(out_red ++) = data[chRed] *scale0; @@ -117,7 +117,7 @@ data+=csize; } break; - case GL_YUV422_GEM: + case GEM_YUV: n/=2; while(n--) { *(out_red ++) = data[chY0] *scale0; @@ -131,7 +131,7 @@ data+=4; } break; - case GL_LUMINANCE: + case GEM_GRAY: while(n--) { *(out_red ++) = data[chGray]*scale0; *(out_green++) = 0; diff -Nru gem-0.94~pre1/src/Pixes/pix_puzzle.cpp gem-0.94/src/Pixes/pix_puzzle.cpp --- gem-0.94~pre1/src/Pixes/pix_puzzle.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_puzzle.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -44,7 +44,7 @@ m_game(false) { myImage.xsize=myImage.ysize=512; - myImage.setCsizeByFormat(GL_RGBA_GEM); + myImage.setCsizeByFormat(GEM_RGBA); myImage.allocate(); } diff -Nru gem-0.94~pre1/src/Pixes/pix_rds.cpp gem-0.94/src/Pixes/pix_rds.cpp --- gem-0.94~pre1/src/Pixes/pix_rds.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_rds.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -39,7 +39,7 @@ static int count = 0; fastrand_val=count++; myImage.xsize=myImage.ysize=512; - myImage.setCsizeByFormat(GL_RGBA_GEM); + myImage.setCsizeByFormat(GEM_RGBA); myImage.allocate(); inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), @@ -180,7 +180,7 @@ myImage.xsize = image.xsize; myImage.ysize = image.ysize; - myImage.setCsizeByFormat(GL_LUMINANCE); + myImage.setCsizeByFormat(GEM_GRAY); myImage.upsidedown = image.upsidedown; myImage.reallocate(); @@ -291,7 +291,7 @@ myImage.xsize = image.xsize; myImage.ysize = image.ysize; - myImage.setCsizeByFormat(GL_LUMINANCE); + myImage.setCsizeByFormat(GEM_GRAY); myImage.upsidedown = image.upsidedown; myImage.reallocate(); diff -Nru gem-0.94~pre1/src/Pixes/pix_record.cpp gem-0.94/src/Pixes/pix_record.cpp --- gem-0.94~pre1/src/Pixes/pix_record.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_record.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -55,8 +55,7 @@ result=atom_getfloat(ap); break; case A_SYMBOL: -#warning gem::any doesnt like "const char*" - result=const_cast<char*>(atom_getsymbol(ap)->s_name); + result=std::string(atom_getsymbol(ap)->s_name); break; default: result=ap->a_w.w_gpointer; @@ -191,7 +190,7 @@ m_ids.push_back(key); m_allhandles.push_back(handle); count++; - verbose(2, "added backend#%d '%s' @ 0x%x", m_allhandles.size()-1, + verbose(2, "added backend#%d '%s' @ %p", m_allhandles.size()-1, key.c_str(), handle); } } diff -Nru gem-0.94~pre1/src/Pixes/pix_recordQT.cpp gem-0.94/src/Pixes/pix_recordQT.cpp --- gem-0.94~pre1/src/Pixes/pix_recordQT.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_recordQT.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,1065 +0,0 @@ -/* - * pix_recordQT.cpp - * GEM_darwin - * - * Created by chris clepper on 7/18/05. - * Copyright 2005 __MyCompanyName__. All rights reserved. - * - */ -#include "Gem/GemConfig.h" -//original pix_record for Mac/Windows - very well tested (at least 100,000 recorded clips) - -#if 0 -#ifdef __APPLE__ -#define HAVE_QUICKTIME -#endif - - -/* define HAVE_QUICKTIME in Base/configNT.h if you have quicktime-sdk installed */ -#if defined HAVE_QUICKTIME - - -#include "pix_recordQT.h" -#include "Gem/Manager.h" -#include "Gem/Cache.h" - - -CPPEXTERN_NEW_WITH_GIMME(pix_recordQT); - -///////////////////////////////////////////////////////// -// -// pix_recordQT -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_recordQT :: pix_recordQT(int argc, t_atom *argv) -{ -//cna ditch the offsets - m_xoff = m_yoff = 0; - m_width = m_height = 0; - m_prevHeight = m_prevWidth = 0; - if (argc == 4) { - m_xoff = atom_getint(&argv[0]); - m_yoff = atom_getint(&argv[1]); - m_width = atom_getint(&argv[2]); - m_height = atom_getint(&argv[3]); - } else if (argc == 2) { - m_width = atom_getint(&argv[0]); - m_height = atom_getint(&argv[1]); - } else if (argc != 0) { - error("needs 0, 2, or 4 values"); - m_xoff = m_yoff = 0; - m_width = m_height = 128; - - } - - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("list"), - gensym("vert_pos")); - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("list"), - gensym("size")); - - m_outNumFrames = outlet_new(this->x_obj, 0); - - m_automatic = false; - m_autocount = 0; - m_filetype=0; -// sprintf(m_pathname, "/Users/lincoln/Movies/temp"); - - m_filename[0] = NULL; - - m_banged = false; - - -# ifdef _WIN32 - // Initialize QuickTime Media Layer - - - OSErr err = noErr; - if ((err = InitializeQTML(0))) { - error("Could not initialize quicktime: error %d\n", err); - return; - } - - // Initialize QuickTime - if (err = EnterMovies()) { - error("Could not initialize quicktime: error %d\n", err); - return; - } - post("QT init done"); -# endif // WINDOWS - - /* */ - //get list of codecs installed -- useful later - CodecNameSpecListPtr codecList; - CodecNameSpec codecName; - int i; - int count; - - GetCodecNameList(&codecList,1); - post("%i codecs installed",codecList->count); - if (codecList->count < 64) { - count = codecList->count; - } else { - count = 64; - } - for (i = 0; i < count; i++) { - codecName = codecList->list[i]; - // post("codec %i %s %i ctype",i,codecName.typeName, codecName.cType); - codecContainer[i].position = i; - codecContainer[i].ctype = codecName.cType; - codecContainer[i].codec = codecName.codec; - } - - //initialize member variables - stdComponent = NULL; - hImageDesc = NULL; - nFileRefNum = 0; - nResID = movieInDataForkResID; - m_recordStart = 0; - m_recordStop = 0; - m_recordSetup = 0; - m_codecType = kJPEGCodecType; - - for(i = 0; i < count; i++) { - if (codecContainer[i].ctype == kJPEGCodecType) { - m_codec = codecContainer[i].codec; - } - } - post("pjpeg codec %i %i %i ctype",i,m_codecType, m_codec); -// m_codec = (CodecComponent)65731;//65719;//65708; //this is pjpeg???? - m_codecSet = true; - m_spatialQuality = codecNormalQuality; //codecHighQuality; - m_codecQualitySet = true; - m_dialog = 0; - m_currentFrame = 0; - -#ifdef __APPLE__ - m_colorspace = GL_YUV422_GEM; -#else - m_colorspace = GL_BGRA_EXT; -#endif - - m_firstRun = 1; - - m_ticks = 20; - -// post("anyCodec %d bestSpeedCodec %d bestFidelityCodec %d bestCompressionCodec %d",anyCodec,bestSpeedCodec,bestFidelityCodec,bestCompressionCodec); - stdComponent = OpenDefaultComponent(StandardCompressionType, - StandardCompressionSubType); - - if (stdComponent == NULL) { - post("failed to open compressor component"); - return; - } - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_recordQT :: ~pix_recordQT() -{ - ComponentResult compErr = noErr; - - post("deconstructor"); - if (stdComponent != NULL) { - compErr = CloseComponent(stdComponent); - - if (compErr != noErr) { - post("CloseComponent failed with error %d",compErr); - } - - } -//most likely a dumb thing to do - /* - #ifdef HAVE_QUICKTIME - # ifdef _WIN32 - - post("exiting QT"); - // Initialize QuickTime - ExitMovies(); - - // Initialize QuickTime Media Layer - TerminateQTML(); - - # endif // WINDOWS - #endif - */ - -} - -///////////////////////////////////////////////////////// -// Prepares QT for recording -// -///////////////////////////////////////////////////////// -void pix_recordQT :: -setupQT() //this only needs to be done when codec info changes -{ - FSSpec theFSSpec; - OSErr err = noErr; - FSRef ref; - - ComponentResult compErr = noErr; - - m_recordSetup = 0; //if it fails then there is no setup - - //this mess should create and open a file for QT to use - //probably should be a separate function - //post("filename %s",m_filename); - - if (!m_filename[0]) { - error("no filename passed"); - return; -#ifdef __APPLE__ - } else { - err = ::FSPathMakeRef((UInt8*)m_filename, &ref, NULL); - if (err == fnfErr) { - // if the file does not yet exist, then let's create the file - int fd; - fd = open(m_filename, O_CREAT | O_RDWR, 0600); - if (fd < 0) { - error("problem with fd"); - return ; - } - write(fd, " ", 1); - close(fd); - err = FSPathMakeRef((UInt8*)m_filename, &ref, NULL); - //post("made new file %s",m_filename); - } - - - - - - if (err) { - error("Unable to make file ref from filename %s", m_filename); - return; - } - - //err = ::FSsetCatalogInfo(&ref, kFSCatInfoSettableInfo, NULL); - err = FSGetCatalogInfo(&ref, kFSCatInfoNodeFlags, NULL, NULL, &theFSSpec, - NULL); - - if (err != noErr) { - error("error %d in FSGetCatalogInfo()", err); - return; - } - - - err = FSMakeFSSpec(theFSSpec.vRefNum, theFSSpec.parID, (UInt8*)m_filename, - &theFSSpec); - - if (err != noErr && err != -37) { - error("error %d in FSMakeFSSpec()", err); - return; - } - - } -#else //win32 here - } else - { - /* - FILE *outfile; - if ((outfile = fopen(m_filename, "")) == NULL) { - post( "can't open %s", m_filename); - return ; - } - fclose(outfile); - */ - c2pstr(m_filename); - - FSMakeFSSpec (0, 0L, (UInt8*)m_filename, &theFSSpec); - //err = ::FSPathMakeRef((UInt8*)m_filename, &ref, NULL); - if (err != noErr && err != -37) { - error("error %d in FSMakeFSSpec()", err); - return; - } - - - } -#endif //APPLE - - //create the movie from the file - err = CreateMovieFile( &theFSSpec, - FOUR_CHAR_CODE('TVOD'), - smSystemScript, - createMovieFileDeleteCurFile | - createMovieFileDontCreateResFile, - &nFileRefNum, - &m_movie); - - if (err != noErr) - { - error("CreateMovieFile failed with error %d",err); - m_recordSetup = -1; - return; - } - - - - //give QT the dimensions of the image to compress - m_srcRect.top = 0; - m_srcRect.left = 0; - m_srcRect.bottom = m_height; - m_srcRect.right = m_width; - - - if (m_colorspace == GL_YUV422_GEM) - { - - //give QT the length of each pixel row in bytes (2 for 4:2:2 YUV) - m_rowBytes = m_width * 2; - - //give QT the length of each pixel row in bytes (2 for 4:2:2 YUV) - m_rowBytes = m_width * 2; - - //m_srcGWorld = NULL;//probably a memory leak - err = QTNewGWorldFromPtr(&m_srcGWorld, - k422YpCbCr8CodecType, - //k32ARGBPixelFormat, - &m_srcRect, - NULL, - NULL, - 0, - m_compressImage.data, - m_rowBytes); - - } else - { - //give QT the length of each pixel row in bytes (4 for ARGB) - m_rowBytes = m_width * 4; - -#ifdef __APPLE__ - - //m_srcGWorld = NULL;//probably a memory leak - err = QTNewGWorldFromPtr(&m_srcGWorld, - k32ARGBPixelFormat, - &m_srcRect, - NULL, - NULL, - 0, - m_compressImage.data, - m_rowBytes); - -#else - err = QTNewGWorldFromPtr(&m_srcGWorld, - k32RGBAPixelFormat, - &m_srcRect, - NULL, - NULL, - 0, - m_compressImage.data, - m_rowBytes); -#endif - - } - - if (err != noErr) - { - error("QTNewGWorldFromPtr failed with error %d",err); - return; - } - - SetMovieGWorld(m_movie,m_srcGWorld,GetGWorldDevice(m_srcGWorld)); - -#ifdef _WIN32 - MatrixRecord aMatrix; - GetMovieMatrix(m_movie,&aMatrix); - //RotateMatrix(&aMatrix,Long2Fix(180),0,0);//should be ScaleMatrix - ScaleMatrix(&aMatrix,Long2Fix(1),Long2Fix(-1),0,0); - SetMovieMatrix(m_movie,&aMatrix); -#endif - - track = NewMovieTrack(m_movie,FixRatio(m_srcRect.right, 1), - FixRatio(m_srcRect.bottom, 1),kNoVolume); - - media = NewTrackMedia(track,VideoMediaType,600,NULL,0); - - //moved to constructor - /* - stdComponent = OpenDefaultComponent(StandardCompressionType,StandardCompressionSubType); - - if (stdComponent == NULL){ - error("failed to open compressor component"); - return; - }*/ - - //if the settings aren't already set then go ahead and do them - //if (!m_spatialQuality || !m_codecType || m_dialog ){ - if (m_dialog ) - { - - //close the component if already open - if (stdComponent) { - compErr = CloseComponent(stdComponent); - } - - if (compErr != noErr) { - error("CloseComponent failed with error %d",compErr); - } - - //open a new component from scratch - stdComponent = OpenDefaultComponent(StandardCompressionType, - StandardCompressionSubType); - - if (stdComponent == NULL) { - error("failed to open compressor component"); - return; - } - - post("opening settings Dialog"); - compErr = SCRequestSequenceSettings(stdComponent); - - if (compErr != noErr) { - error("SCRequestSequenceSettings failed with error %d",compErr); - } - - compErr = SCGetInfo(stdComponent, scTemporalSettingsType, - &TemporalSettings); - compErr = SCGetInfo(stdComponent, scSpatialSettingsType, &SpatialSettings); - - if (compErr != noErr) { - error("SCGetInfo failed with error %d",compErr); - } - - m_codecType = SpatialSettings.codecType; - m_depth = SpatialSettings.depth; - m_spatialQuality = SpatialSettings.spatialQuality; - m_codec = SpatialSettings.codec; - - post("Dialog returned SpatialSettings.codecType %d", - SpatialSettings.codecType); - post("Dialog returned SpatialSettings.codec %d",SpatialSettings.codec); - post("Dialog returned SpatialSettings.depth %d",SpatialSettings.depth); - post("Dialog returned SpatialSettings.spatialQuality %d", - SpatialSettings.spatialQuality); - post("Dialog returned TemporalSettings.temporalQualitye %d", - TemporalSettings.temporalQuality); - post("Dialog returned TemporalSettings.frameRate %d", - TemporalSettings.frameRate); - post("Dialog returned TemporalSettings.keyFrameRate %d", - TemporalSettings.keyFrameRate); - - m_dialog = false; //don't keep doing it again - - } else - { - - /* - compErr = SCGetInfo(stdComponent, scTemporalSettingsType, &TemporalSettings); - compErr = SCGetInfo(stdComponent, scSpatialSettingsType, &SpatialSettings); - compErr = SCGetInfo(stdComponent, scDataRateSettingsType, &datarate); - - if (compErr != noErr) error("SCGetInfo failed with error %d",compErr); - */ - //post("manually filling in codec info"); - //fill in manually - SpatialSettings.codecType = m_codecType; - SpatialSettings.codec = m_codec; - SpatialSettings.depth = 0; //should choose best depth - SpatialSettings.spatialQuality = m_spatialQuality; - - TemporalSettings.temporalQuality = m_spatialQuality; - TemporalSettings.frameRate = 0; - TemporalSettings.keyFrameRate = 0; - - /* - post("manual returned SpatialSettings.codecType %d",SpatialSettings.codecType); - post("manual returned SpatialSettings.codec %d",SpatialSettings.codec); - post("manual returned SpatialSettings.depth %d",SpatialSettings.depth); - post("manual returned SpatialSettings.spatialQuality %d",SpatialSettings.spatialQuality); - post("manual returned TemporalSettings.temporalQualitye %d",TemporalSettings.temporalQuality); - post("manual returned TemporalSettings.frameRate %d",TemporalSettings.frameRate); - post("manual returned TemporalSettings.keyFrameRate %d",TemporalSettings.keyFrameRate); - */ - - } - - //if (m_codecType == kJPEGCodecType) - //post("SCSpatialSettings CodecType %d is p-jpeg",m_codecType); - //m_codec = SpatialSettings.codec; - //post("SCSpatialSettings Codec %s",m_codec); - - //post("SCSpatialSettings depth %d",m_depth); - - //if (m_spatialQuality == codecHighQuality) post("SCSpatialSettings SpatialQuality codecHighQuality"); - - datarate.frameDuration = 33; - - compErr = SCSetInfo(stdComponent, scTemporalSettingsType, - &TemporalSettings); - compErr = SCSetInfo(stdComponent, scSpatialSettingsType, &SpatialSettings); - compErr = SCSetInfo(stdComponent, scDataRateSettingsType, &datarate); - - if (compErr != noErr) - { - error("SCSetInfo failed with error %d",compErr); - } - -#ifdef __APPLE__ - compErr = SCCompressSequenceBegin(stdComponent,GetPortPixMap(m_srcGWorld), - &m_srcRect,&hImageDesc); -#else - compErr = SCCompressSequenceBegin(stdComponent,m_srcGWorld->portPixMap, - &m_srcRect,&hImageDesc); -#endif - if (compErr != noErr) - { - error("SCCompressSequenceBegin failed with error %d",compErr); - return; - } - - err = BeginMediaEdits(media); - if (err != noErr) - { - error("BeginMediaEdits failed with error %d",err); - return; - } - - - //this will show that everything is OK for recording - m_recordSetup = 1; - - //set the previous dimensions for the sanity check during compression - m_prevWidth = m_width; - m_prevHeight = m_height; - - //reset frame counter for new movie file - m_currentFrame = 0; - - post("setup done"); -} - - - -// -// stops recording into the QT movie -// -void pix_recordQT :: stopRecording() -{ - ComponentResult compErr = noErr; - OSErr err; - - - err = EndMediaEdits(media); - if (err != noErr) { - error("EndMediaEdits failed with error %d",err); - } - - err = InsertMediaIntoTrack(track,0,0,GetMediaDuration(media),0x00010000); - if (err != noErr) { - error("InsertMediaIntoTrack failed with error %d",err); - } - - err = AddMovieResource(m_movie,nFileRefNum,&nResID,NULL); - if (err != noErr) { - error("AddMovieResource failed with error %d",err); - } - - err = CloseMovieFile(nFileRefNum); - if (err != noErr) { - error("CloseMovieFile failed with error %d",err); - } - - DisposeMovie(m_movie); - DisposeGWorld(m_srcGWorld); - m_srcGWorld = NULL; - - compErr = SCCompressSequenceEnd(stdComponent); - - if (compErr != noErr) { - error("SCCompressSequenceEnd failed with error %d",compErr); - } - - /*moved to destructor - compErr = CloseComponent(stdComponent); - - if (compErr != noErr) error("CloseComponent failed with error %d",compErr); - - */ - m_recordStop = 0; - m_recordSetup = 0; - m_recordStart = 0; //just to be sure - - m_currentFrame = 0; //reset the frame counter? - - m_firstRun = 1; - - outlet_float(m_outNumFrames,m_currentFrame); - - post("movie written to %s",m_filename); - -} - -void pix_recordQT :: compressFrame() -{ - OSErr err; - - Handle - compressedData; //data to put in QT mov - - ComponentResult compErr = noErr; - - short syncFlag; //flag for keyframes - - - - //this times the render length to give QT a better idea about the actual framerate of the movie - //the goal is to provide improved playback using internal QT playback routines - -#ifdef __APPLE__ - //fakes the first run time - if (m_firstRun) { - - ::Microseconds(&startTime); - m_firstRun = 0; - - } - ::Microseconds(&endTime); - - seconds = static_cast<float>(endTime.lo - startTime.lo) / 1000000.f; - - m_ticks = static_cast<int>(600 * seconds); - - if (m_ticks < 20) { - m_ticks = 20; - } - -#endif //timers - - -#ifdef _WIN32 - static int firstTime = 1; - static float countFreq = 0; - if (m_firstRun) { - // LARGE_INTEGER freq; - if (!QueryPerformanceFrequency(&freq)) { - countFreq = 0; - } else { - countFreq = static_cast<float>(freq.QuadPart); - } - QueryPerformanceCounter(&startTime);//fakes the time of the first frame - m_ticks = 20; - m_firstRun = 0; - } else { - - QueryPerformanceCounter(&endTime); - float fps = 1000 / (static_cast<float>(endTime.QuadPart - - startTime.QuadPart)/countFreq * 1000.f); - seconds = (static_cast<float>(endTime.QuadPart - - startTime.QuadPart)/countFreq * 1.f); -// post("freq %f countFreq %f startTime %d endTime %d fps %f seconds %f ",freq, countFreq,(int)startTime.QuadPart,(int)endTime.QuadPart,fps,seconds); - - m_ticks = static_cast<int>(600 * seconds); - - if (m_ticks < 20) { - m_ticks = 20; - } - } -#endif - - //post("frame compression took %f seconds %d ticks", seconds, m_ticks ); - - - //post("compressing frame"); -//apparently on OSX there is no member portPixMap in a GWorld so a function is used instead -#ifdef __APPLE__ - - compErr = SCCompressSequenceFrame( stdComponent, - GetPortPixMap(m_srcGWorld), - &m_srcRect, - &compressedData, - &dataSize, - &syncFlag); -#else //Windows - - PixMapHandle mPixMap; - mPixMap = GetGWorldPixMap(m_srcGWorld); - - compErr = SCCompressSequenceFrame( stdComponent, - //m_srcGWorld->portPixMap, - mPixMap, - &m_srcRect, - &compressedData, - &dataSize, - &syncFlag); -#endif - if (compErr != noErr) { - error("SCCompressSequenceFrame failed with error %d",compErr); - } - - err = AddMediaSample(media, - compressedData, - 0, - dataSize, - m_ticks, //this should not be a fixed value but vary with framerate - (SampleDescriptionHandle)hImageDesc, - 1, - syncFlag, - NULL); - - if (err != noErr) { - error("AddMediaSample failed with error %d",err); - } - -#ifdef __APPLE__ - ::Microseconds(&startTime); - -#endif //timer - -#ifdef _WIN32 - - QueryPerformanceCounter(&startTime); -// post("startTime %d",startTime.QuadPart); - -#endif - - m_currentFrame++; - - outlet_float(m_outNumFrames,m_currentFrame); - -} - - - -///////////////////////////////////////////////////////// -// render -// -///////////////////////////////////////////////////////// -void pix_recordQT :: render(GemState *state) -{ - //check if state exists - if (state->image) { - m_pixBlock = state->image; - m_compressImage = m_pixBlock->image; - m_height = m_pixBlock->image.ysize; - m_width = m_pixBlock->image.xsize; - - - if (m_automatic || m_banged) { - - m_autocount++; - - - - - //record - if (m_recordStart) { - //if setupQT() has not been run do that first - if (!m_recordSetup) { - setupQT(); - } - - //should check if the size has changed or else we will freak the compressor's trip out - if (m_width == m_prevWidth && m_height == m_prevHeight) { - //go ahead and grab a frame if everything is ready to go - if (m_recordSetup == 1) - if (m_automatic && state->image->newimage) { - compressFrame(); - } else { - if (m_banged) { - compressFrame(); - m_banged = false; - } - } - // post("grabbing frame"); - - } else { - post("movie dimensions changed prev %dx%d now %dx%d stopping recording", - m_prevWidth,m_prevHeight,m_width,m_height); - m_recordStop = 1; - m_prevWidth = m_width; - m_prevHeight = m_height; //go ahead and change dimensions - } - } - - //if recording is stopped and everything is setup then stop recording - if (m_recordStop) { - //guard against someone not setting up QT beforehand - if (!m_recordSetup) { - return; - } - stopRecording(); - } - - - } - } -} - - -///////////////////////////////////////////////////////// -// sizeMess -// -///////////////////////////////////////////////////////// -void pix_recordQT :: sizeMess(int width, int height) -{ - m_width = width; - m_height = height; -} - -///////////////////////////////////////////////////////// -// posMess -// -///////////////////////////////////////////////////////// -void pix_recordQT :: posMess(int x, int y) -{ - m_xoff = x; - m_yoff = y; -} - -///////////////////////////////////////////////////////// -// dialogMess -// -///////////////////////////////////////////////////////// -void pix_recordQT :: dialogMess() -{ - //if recording is going do not open the dialog - if (!m_recordStart) { - post("opening compression dialog"); - m_dialog = true; - setupQT(); - } else { - error("cannot open compression dialog while recording"); - } -} - -///////////////////////////////////////////////////////// -// spits out a list of installed codecs and stores them -// -///////////////////////////////////////////////////////// -void pix_recordQT :: getCodecList() -{ - //get list of codecs installed -- useful later - CodecNameSpecListPtr codecList; - CodecNameSpec codecName; - int i; - int count; - - GetCodecNameList(&codecList,1); - post("%i codecs installed",codecList->count); - if (codecList->count < 64) { - count = codecList->count; - } else { - count = 64; - } - for (i = 0; i < count; i++) { - codecName = codecList->list[i]; - post("codec %i %s %i ctype %d",i,codecName.typeName, codecName.cType, - codecName.codec); - codecContainer[i].position = i; - codecContainer[i].ctype = codecName.cType; - - } -} - - -///////////////////////////////////////////////////////// -// deals with the name of a codec -// -///////////////////////////////////////////////////////// -void pix_recordQT :: codecMess(int argc, t_atom *argv) -{ - - char codecName[80]; - - //might be nice to allow both a symbol corresponding to the codecType and a number from the list - if (argc) { - if (argv->a_type == A_SYMBOL) { - atom_string(argv++, codecName, 80); - argc--; - } - } - - if (!strncmp(codecName,"jpeg",4)) { - //have to put the right things in here - m_codecType = kJPEGCodecType; - m_codec = (CodecComponent)65719;//65708; //this is pjpeg?!? - post("kJPEGCodecType"); - } - //do the same for these - if (!strcmp(codecName,"animation")) { - post("kAnimationCodecType"); - } - if (!strncmp(codecName,"yuv2",4)) { - post("kComponentVideoCodecType"); - } - if (!strncmp(codecName,"yuvu",4)) { - post("kComponentVideoSigned"); - } - if (!strncmp(codecName,"raw",3)) { - post("kRawCodecType"); - } - if (!strncmp(codecName,"dvc",3)) { - post("kDVCNTSCCodecType"); - } - if (!strncmp(codecName,"dvcp",4)) { - post("kDVCPALCodecType"); - } - if (!strncmp(codecName,"y420",4)) { - post("kYUV420CodecType"); - } - post("codecName %s",codecName); - -} - - -void pix_recordQT :: fileMess(int argc, t_atom *argv) -{ - -//if recording is going do not accept a new file name -//on OSX changing the name while recording won't have any effect -//but it will give the wrong message at the end if recording - if (m_recordStart) { - return; - } - -// char *extension = ".mov"; - if (argc) { - if (argv->a_type == A_SYMBOL) { - atom_string(argv++, m_pathname, 80); - argc--; - sprintf(m_filename, "%s", m_pathname); - } - if (argc>0) { - m_filetype = atom_getint(argv); - } - } - - m_autocount = 0; - setModified(); - - post("filename %s",m_filename); - -} - -void pix_recordQT :: csMess(int format) -{ - if(format && format != m_colorspace) { - m_colorspace=format; - post("colorspace change will take effect the next time you load a film"); - } -} - - -///////////////////////////////////////////////////////// -// cleanImage -// -///////////////////////////////////////////////////////// -/* -void pix_recordQT :: cleanImage() -{ - // release previous data - if (m_originalImage) - { - delete m_originalImage; - m_originalImage = NULL; - } -} -*/ - -///////////////////////////////////////////////////////// -// static member functions -// -///////////////////////////////////////////////////////// -void pix_recordQT :: obj_setupCallback(t_class *classPtr) -{ - class_addcreator(reinterpret_cast<t_newmethod>(create_pix_recordQT, - gensym("pix_record"),A_DEFSYM,A_NULL)); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_recordQT::fileMessCallback), - gensym("file"), A_GIMME, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_recordQT::autoMessCallback), - gensym("auto"), A_FLOAT, A_NULL); - class_addbang(classPtr, - reinterpret_cast<t_method>(&pix_recordQT::bangMessCallback)); - - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_recordQT::sizeMessCallback), - gensym("size"), A_FLOAT, A_FLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_recordQT::posMessCallback), - gensym("vert_pos"), A_FLOAT, A_FLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_recordQT::recordMessCallback), - gensym("record"), A_FLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_recordQT::dialogMessCallback), - gensym("dialog"), A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_recordQT::codeclistMessCallback), - gensym("codeclist"), A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_recordQT::codecMessCallback), - gensym("codec"), A_GIMME, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_recordQT::colorspaceCallback), - gensym("colorspace"), A_SYMBOL, A_NULL); -} - -void pix_recordQT :: fileMessCallback(void *data, t_symbol *s, int argc, - t_atom *argv) -{ - GetMyClass(data)->fileMess(argc, argv); -} -void pix_recordQT :: autoMessCallback(void *data, t_float on) -{ - GetMyClass(data)->m_automatic=(on!=0); -} -void pix_recordQT :: bangMessCallback(void *data) -{ - GetMyClass(data)->m_banged=true; -} - -void pix_recordQT :: sizeMessCallback(void *data, t_float width, - t_float height) -{ - GetMyClass(data)->sizeMess(static_cast<int>(width), - static_cast<int>(height)); -} -void pix_recordQT :: posMessCallback(void *data, t_float x, t_float y) -{ - GetMyClass(data)->posMess(static_cast<int>(x), static_cast<int>(y)); -} - -void pix_recordQT :: recordMessCallback(void *data, t_float on) -{ - if (!(!static_cast<int>(on))) { - GetMyClass(data)->m_recordStart=1; - GetMyClass(data)->m_recordStop=0; - GetMyClass(data)->post("recording on!"); - } else { - GetMyClass(data)->m_recordStart=0; - GetMyClass(data)->m_recordStop=1; - } - //setModified(); -} - -void pix_recordQT :: dialogMessCallback(void *data) -{ - GetMyClass(data)->dialogMess(); -} - -void pix_recordQT :: codeclistMessCallback(void *data) -{ - GetMyClass(data)->getCodecList(); -} - -void pix_recordQT :: codecMessCallback(void *data, t_symbol *s, int argc, - t_atom *argv) -{ - GetMyClass(data)->codecMess(argc, argv); -// if (s->s_name == kJPEGCodecType) post("photo-jpeg codec"); else post("not photo-jpeg"); -} - -void pix_recordQT :: colorspaceCallback(void *data, t_symbol *state) -{ - GetMyClass(data)->csMess(getPixFormat(state->s_name)); -} - -#endif // HAVE_QUICKTIME -#endif diff -Nru gem-0.94~pre1/src/Pixes/pix_recordQT.h gem-0.94/src/Pixes/pix_recordQT.h --- gem-0.94~pre1/src/Pixes/pix_recordQT.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_recordQT.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,282 +0,0 @@ -/* - * pix_recordQT.h - * GEM_darwin - * - * Created by chris clepper on 7/18/05. - * Copyright 2005. All rights reserved. - * - */ - -//this will record QT movies -#ifndef _INCLUDE__GEM_PIXES_PIX_RECORDQT_H_ -#define _INCLUDE__GEM_PIXES_PIX_RECORDQT_H_ - -#if 1 -#include "Base/GemBase.h" -#include "Gem/Image.h" - -#ifdef _WIN32 -#include <io.h> -#include <stdio.h> -#include <QTML.h> -#include <Movies.h> -#include <QuicktimeComponents.h> -#include <Files.h> -#endif - -#ifdef __APPLE__ -#include <Quicktime/QuickTime.h> -#include <Carbon/Carbon.h> - -#include <unistd.h> //needed for Unix file open() type functions -#include <stdio.h> -#include <string.h> -#include <fcntl.h> - -#endif - - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_recordQT - - Writes a pix of the render buffer - -KEYWORDS - pix - -DESCRIPTION - - Inlet for a list - "vert_size" - Inlet for a list - "vert_pos" - - "file" - filename to write to - "bang" - do write now - "auto 0/1" - stop/start writing automatically - - "vert_size" - Set the size of the pix - "vert_pos" - Set the position of the pix - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_recordQT : public GemBase -{ - CPPEXTERN_HEADER(pix_recordQT, GemBase); - -public: - - ////////// - // Constructor - pix_recordQT(int argc, t_atom *argv); - -protected: - - ////////// - // Destructor - virtual ~pix_recordQT(); - - virtual void setupQT(); - - virtual void compressFrame(); - - //virtual void startRecording(); - - virtual void stopRecording(); - - ////////// - // Do the rendering - virtual void render(GemState *state); - - ////////// - // Clear the dirty flag on the pixBlock - virtual void postrender(GemState *state) {}; - - ////////// - // Set the filename and filetype - virtual void fileMess(int argc, t_atom *argv); - - ////////// - // When a size message is received - virtual void sizeMess(int width, int height); - - ////////// - // When a position message is received - virtual void posMess(int x, int y); - - ///////// - // call up compression dialog - virtual void dialogMess(); - - virtual void getCodecList(); - - virtual void codecMess(int argc, t_atom *argv); - - virtual void csMess(int format); - - - - ////////// - // Clean up the image - // void cleanImage(); - - ////////// - // The original pix_recordQT - // imageStruct *m_originalImage; - - - ////////// - // Manual writing - bool m_banged; - - ////////// - // Automatic writing - bool m_automatic; - - ////////// - // Counter for automatic writing - int m_autocount; - - ///////// - // recording start - bool m_recordStart; - - ///////// - // recording start - bool m_recordStop; - - ////// - // is recording setup and ready to go? - bool m_recordSetup; - - bool m_dialog; - - ////////// - // path to write to - char m_pathname[80]; - ////////// - // current file to write to - char m_filename[80]; - - ////////// - // current file to write to - int m_filetype; // 0=tiff, [1..6=jpeg] - - ////////// - // The x position - int m_xoff; - - ////////// - // The y position - int m_yoff; - - ////////// - // The width - int m_width; - - ////////// - // The height - int m_height; - - ////////// - // previous dimensions to check - int m_prevHeight; - - int m_prevWidth; - - pixBlock *m_pixBlock; - - imageStruct m_compressImage; - - ////////// - // a outlet for information like #frames - t_outlet *m_outNumFrames; - - int - m_currentFrame; //keep track of the number of frames - - /////////// - /// QT stuff - - GWorldPtr m_srcGWorld; - Rect m_srcRect; - int m_rowBytes; - Movie m_movie; - Track track; - Media media; - ComponentInstance stdComponent; - SCTemporalSettings TemporalSettings; - SCSpatialSettings SpatialSettings; - SCDataRateSettings DataRateSetting; - SCDataRateSettings datarate; - long dataSize; - ImageDescriptionHandle hImageDesc; - - //these are for the programmatic setting of the compressor - CodecType m_codecType; - CodecComponent m_codec; - short m_depth; - CodecQ m_spatialQuality; - //set these to reflect if the codec settings are good or not - bool m_codecSet; - bool m_codecQualitySet; - - - short nFileRefNum; - short nResID; - - //this will hold the ctype value of the codecs listed by getCodecList() - typedef struct codecListStorage { - int position; - int ctype; - CodecComponent codec; - }; - - codecListStorage - codecContainer[64];//anyone with more than 64 codecs can change this - - - - int m_fps; - - //duration of frames in ms - int m_frameDuration; - - //number of QT ticks for a frame 600/frameDuration (used by AddMediaSample) - int m_ticks; - - bool m_firstRun; -#ifdef __APPLE__ - UnsignedWide startTime, endTime; -#endif -#ifdef _WIN32 - LARGE_INTEGER freq, startTime, endTime; -#endif - float seconds; - - Component aComponent; - ComponentInstance aClock; - TimeRecord aTime; - - int m_colorspace; - - -private: - - ////////// - // static member functions - static void fileMessCallback(void *data, t_symbol *s, int argc, - t_atom *argv); - static void autoMessCallback(void *data, t_float on); - static void bangMessCallback(void *data); - static void sizeMessCallback(void *data, t_float width, - t_float height ); - static void posMessCallback(void *data, t_float x, t_float y); - static void recordMessCallback(void *data, t_float on); - static void dialogMessCallback(void *data); - static void codeclistMessCallback(void *data); - static void codecMessCallback(void *data, t_symbol *s, int argc, - t_atom *argv); - static void colorspaceCallback(void *data, t_symbol *state); -}; -#endif //for __APPLE__ -#endif // for header file diff -Nru gem-0.94~pre1/src/Pixes/pix_rectangle.cpp gem-0.94/src/Pixes/pix_rectangle.cpp --- gem-0.94~pre1/src/Pixes/pix_rectangle.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_rectangle.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_resize.cpp gem-0.94/src/Pixes/pix_resize.cpp --- gem-0.94~pre1/src/Pixes/pix_resize.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_resize.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,7 +15,9 @@ // ///////////////////////////////////////////////////////// +#include "Gem/GemConfig.h" #include "pix_resize.h" +#include "Gem/GemGL.h" #include "Utils/Functions.h" CPPEXTERN_NEW_WITH_TWO_ARGS(pix_resize, t_float,A_DEFFLOAT,t_float, @@ -54,19 +56,29 @@ int hN = (m_height>0)?m_height:powerOfTwo(image.ysize); if (wN != image.xsize || hN != image.ysize) { - GLint gluError; m_image.xsize=wN; m_image.ysize=hN; m_image.setCsizeByFormat(image.format); m_image.reallocate(); - m_image.reallocate( - wN*hN*4); // just for safety: it seems like gluScaleImage needs more memory then just the x*y*c + // just for safety: it seems like gluScaleImage needs more memory then just the x*y*c + m_image.reallocate(wN*hN*4); + + GLint gluError = 0; +#ifdef GEM_HAVE_GLU gluError = gluScaleImage(image.format, image.xsize, image.ysize, image.type, image.data, wN, hN, image.type, m_image.data); +#else + static bool firsttime = true; + if(firsttime) { + firsttime = false; + error("Gem has been compiled without GLU - disabled pix resizing"); + return; + } +#endif if ( gluError ) { post("gluError %d: unable to resize image", gluError); return; diff -Nru gem-0.94~pre1/src/Pixes/pix_rgb2hsv.cpp gem-0.94/src/Pixes/pix_rgb2hsv.cpp --- gem-0.94~pre1/src/Pixes/pix_rgb2hsv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_rgb2hsv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_rgba.cpp gem-0.94/src/Pixes/pix_rgba.cpp --- gem-0.94~pre1/src/Pixes/pix_rgba.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_rgba.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -31,7 +31,7 @@ ///////////////////////////////////////////////////////// pix_rgba :: pix_rgba() { - m_image.setCsizeByFormat(GL_RGBA_GEM); + m_image.setCsizeByFormat(GEM_RGBA); } ///////////////////////////////////////////////////////// @@ -54,29 +54,7 @@ return; // we don't need to convert as we are already there } - m_image.xsize=image.xsize; - m_image.ysize=image.ysize; - - switch (image.format) { - case GL_RGBA: - m_image.fromRGBA(image.data); - break; - case GL_RGB: - m_image.fromRGB(image.data); - break; - case GL_BGR_EXT: - m_image.fromBGR(image.data); - break; - case GL_BGRA_EXT: /* "RGBA" on apple */ - m_image.fromBGRA(image.data); - break; - case GL_LUMINANCE: - m_image.fromGray(image.data); - break; - case GL_YCBCR_422_GEM: // YUV - m_image.fromUYVY(image.data); - break; - default: + if(!m_image.convertFrom(&image)) { error("no method for this format !!!"); error("if you know how to convert this format (%X),\n" "please contact the authors of this software", image.format); @@ -84,7 +62,7 @@ } image.data = m_image.data; - image.notowned = 0; + image.notowned = true; image.setCsizeByFormat(m_image.format); } diff -Nru gem-0.94~pre1/src/Pixes/pix_roi.cpp gem-0.94/src/Pixes/pix_roi.cpp --- gem-0.94~pre1/src/Pixes/pix_roi.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_roi.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_rtx.cpp gem-0.94/src/Pixes/pix_rtx.cpp --- gem-0.94~pre1/src/Pixes/pix_rtx.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_rtx.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -29,7 +29,7 @@ // 0409:forum::für::umläute:2000 // 1801:forum::für::umläute:2001 added the second mode // IOhannes m zmoelnig -// mailto:zmoelnig@iem.kug.ac.at +// mailto:zmoelnig@iem.at // // this code is published under the Gnu GeneralPublicLicense that should be distributed with gem & pd // @@ -80,7 +80,7 @@ imageStruct image; image.xsize = image.ysize = 64; - image.setCsizeByFormat(GL_RGBA_GEM); + image.setCsizeByFormat(GEM_RGBA); refresh_buffer(image, buffer); diff -Nru gem-0.94~pre1/src/Pixes/pix_rtx.h gem-0.94/src/Pixes/pix_rtx.h --- gem-0.94~pre1/src/Pixes/pix_rtx.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_rtx.h 2019-02-12 13:10:01.000000000 +0000 @@ -19,7 +19,7 @@ 0409:forum::für::umläute:2000 1801:forum::für::umläute:2001 added the second mode IOhannes m zmoelnig - mailto:zmoelnig@iem.kug.ac.at + mailto:zmoelnig@iem.at this code is published under the Gnu GeneralPublicLicense that should be distributed with gem & pd diff -Nru gem-0.94~pre1/src/Pixes/pix_set.cpp gem-0.94/src/Pixes/pix_set.cpp --- gem-0.94~pre1/src/Pixes/pix_set.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_set.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -20,7 +20,7 @@ // // 0409:forum::für::umläute:2000 // IOhannes m zmoelnig -// mailto:zmoelnig@iem.kug.ac.at +// mailto:zmoelnig@iem.at // ///////////////////////////////////////////////////////// @@ -168,7 +168,7 @@ } } break; - case GL_LUMINANCE: + case GEM_GRAY: counter=(picturesize<argc)?picturesize:argc; if ( pixels->image.csize == 4 ) { while (counter--) { @@ -201,7 +201,7 @@ } } break; - case GL_YCBCR_422_GEM: + case GEM_YUV: // ? break; default: @@ -254,7 +254,7 @@ ///////////////////////////////////////////////////////// void pix_set :: GREYMess(void) { - m_mode = GL_LUMINANCE; + m_mode = GEM_GRAY; } ///////////////////////////////////////////////////////// @@ -269,7 +269,7 @@ m_pixBlock.image.clear(); m_pixBlock.image.xsize = (int)xsize; m_pixBlock.image.ysize = (int)ysize; - m_pixBlock.image.setCsizeByFormat(GL_RGBA_GEM); + m_pixBlock.image.setCsizeByFormat(GEM_RGBA); m_pixBlock.image.reallocate(); m_pixBlock.image.setBlack(); } @@ -339,7 +339,7 @@ } } break; - case GL_LUMINANCE: + case GEM_GRAY: if ( argc>0 ) { r=g=b=(unsigned char)(m_inputScale*atom_getfloat(&argv[0])); a=0; @@ -362,7 +362,7 @@ } } break; - case GL_YCBCR_422_GEM: + case GEM_YUV: // ? break; default: diff -Nru gem-0.94~pre1/src/Pixes/pix_set.h gem-0.94/src/Pixes/pix_set.h --- gem-0.94~pre1/src/Pixes/pix_set.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_set.h 2019-02-12 13:10:01.000000000 +0000 @@ -17,7 +17,7 @@ 0409:forum::für::umläute:2000 IOhannes m zmoelnig - mailto:zmoelnig@iem.kug.ac.at + mailto:zmoelnig@iem.at -----------------------------------------------------------------*/ #ifndef _INCLUDE__GEM_PIXES_PIX_SET_H_ diff -Nru gem-0.94~pre1/src/Pixes/pix_share.h gem-0.94/src/Pixes/pix_share.h --- gem-0.94~pre1/src/Pixes/pix_share.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_share.h 2019-02-12 13:10:01.000000000 +0000 @@ -10,12 +10,17 @@ #ifndef _INCLUDE__GEM_PIXES_PIX_SHARE_H_ #define _INCLUDE__GEM_PIXES_PIX_SHARE_H_ +#include <Gem/GemConfig.h> +#if (defined HAVE_SYS_IPC_H) && (defined HAVE_SYS_SHM_H) +# define USE_SHM 1 +#endif + #include "Base/GemBase.h" #include <sys/types.h> -#ifndef _WIN32 +#if USE_SHM # include <sys/ipc.h> # include <sys/shm.h> -#else +#elif defined _WIN32 # include <windows.h> # include <stdio.h> # include <conio.h> @@ -24,11 +29,11 @@ // this is the header of the shared-memory segment typedef struct _pixshare_header { - size_t size; // total size of the shared-memory segment (without header) - GLint xsize; // width of the image in the shm-segment - GLint ysize; // height of the image in the shm-segment - GLenum format; // format of the image (calculate csize,... from that) - GLboolean upsidedown;// is the stored image swapped? + size_t size; // total size of the shared-memory segment (without header) + int xsize; // width of the image in the shm-segment + int ysize; // height of the image in the shm-segment + unsigned int format; // format of the image (calculate csize,... from that) + bool upsidedown; // is the stored image swapped? } t_pixshare_header; #endif diff -Nru gem-0.94~pre1/src/Pixes/pix_share_read.cpp gem-0.94/src/Pixes/pix_share_read.cpp --- gem-0.94~pre1/src/Pixes/pix_share_read.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_share_read.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -27,10 +27,12 @@ void pix_share_read :: render(GemState *state) { -#ifndef _WIN32 +#if USE_SHM if(shm_id>0) { -#else +#elif defined _WIN32 if(m_MapFile) { +#else + if(0) { #endif /* _WIN32 */ if (shm_addr) { t_pixshare_header *h=(t_pixshare_header *)shm_addr; diff -Nru gem-0.94~pre1/src/Pixes/pix_share_write.cpp gem-0.94/src/Pixes/pix_share_write.cpp --- gem-0.94~pre1/src/Pixes/pix_share_write.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_share_write.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -21,10 +21,6 @@ CPPEXTERN_NEW_WITH_GIMME(pix_share_write); -#if 0 -; -#endif - int hash_str2us(std::string s) { @@ -63,15 +59,17 @@ // ///////////////////////////////////////////////////////// pix_share_write :: pix_share_write(int argc, t_atom*argv) : -#ifdef _WIN32 -#else +#if USE_SHM shm_id(0), shm_addr(NULL), #endif m_size(0), m_outlet(0) { -#ifndef _WIN32 +#if USE_SHM memset(&shm_desc, 0, sizeof(shm_desc)); +#elif defined _WIN32 +#else + error("Gem has been compiled without shared memory support!") #endif if(argc<1) { //~ throw(GemException("no ID given")); @@ -126,19 +124,16 @@ if ( shm_addr ) { UnmapViewOfFile( shm_addr ); } - shm_addr = NULL; if ( m_MapFile ) { CloseHandle( m_MapFile ); } m_MapFile = NULL; -#else +#elif USE_SHM if(shm_addr) { if (shmdt(shm_addr) == -1) { - error("shmdt failed at %x", shm_addr); + error("shmdt failed at %p", shm_addr); } } - shm_addr=NULL; - if(shm_id>0) { if (shmctl(shm_id,IPC_STAT, &shm_desc) != -1) { if(shm_desc.shm_nattch<=0) { @@ -149,7 +144,8 @@ } } shm_id=0; -#endif /* _WIN32 */ +#endif /* _WIN32, USE_SHM */ + shm_addr = NULL; } int pix_share_write :: getShm(int argc,t_atom*argv) @@ -159,7 +155,7 @@ size_t size=0; int xsize=1; int ysize=1; - GLenum color=GL_RGBA_GEM; + unsigned int color=GEM_RGBA; if(argc<1) { return 7; @@ -179,7 +175,7 @@ "gem_pix_share-FileMappingObject_%s", atom_getsymbol(argv)->s_name); } -#else +#elif USE_SHM if(shm_id>0) { freeShm(); } @@ -194,7 +190,9 @@ if(fake<=0) { return 8; } -#endif /* _WIN32 */ +#else + return -1; +#endif /* _WIN32, USE_SHM */ argc--; argv++; @@ -229,13 +227,13 @@ int csize=atom_getint(argv+2); switch(csize) { case 1: - color = GL_LUMINANCE; + color = GEM_GRAY; break; case 2: - color = GL_YUV422_GEM; + color = GEM_YUV; break; case 4: - color = GL_RGBA_GEM; + color = GEM_RGBA; break; default: return 4; @@ -246,15 +244,15 @@ switch(c) { case 'G': case 'g': - color = GL_LUMINANCE; + color = GEM_GRAY; break; case 'Y': case 'y': - color = GL_YUV422_GEM; + color = GEM_YUV; break; case 'R': case 'r': - color = GL_RGBA_GEM; + color = GEM_RGBA; break; default: return 4; @@ -313,7 +311,7 @@ m_fileMappingName); } -#else +#elif USE_SHM /* get a new segment with the size specified by the user * OR an old segment with the size specified in its header @@ -363,13 +361,13 @@ t_pixshare_header *h=(t_pixshare_header *)shm_addr; h->size = (shm_desc.shm_segsz-sizeof(t_pixshare_header)); - verbose(1, "shm:: id(%d) segsz(%d) cpid (%d) mem(0x%X)", + verbose(1, "shm:: id(%d) segsz(%d) cpid (%d) mem(%p)", shm_id,shm_desc.shm_segsz,shm_desc.shm_cpid, shm_addr); } else { error("couldn't get shm_id: error %d", errno); return -1; // AV : added because i'm usure of what value is returned when we get this error... } -#endif /* _WIN32 */ +#endif /* _WIN32, SHM */ return 0; } @@ -387,8 +385,10 @@ #ifndef _WIN32 if(shm_id>0) { -#else +#elif USE_SHM if(m_MapFile) { +#else + if(0) { #endif /* _WIN32 */ imageStruct *pix = &img->image; size_t size=pix->xsize*pix->ysize*pix->csize; diff -Nru gem-0.94~pre1/src/Pixes/pix_share_write.h gem-0.94/src/Pixes/pix_share_write.h --- gem-0.94~pre1/src/Pixes/pix_share_write.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_share_write.h 2019-02-12 13:10:01.000000000 +0000 @@ -27,10 +27,10 @@ virtual void render(GemState *state); unsigned char *shm_addr; -#ifndef _WIN32 +#if USE_SHM int shm_id; struct shmid_ds shm_desc; -#else +#elif defined _WIN32 HANDLE m_MapFile; char m_fileMappingName[MAXPDSTRING]; #endif diff -Nru gem-0.94~pre1/src/Pixes/pix_sig2pix.cpp gem-0.94/src/Pixes/pix_sig2pix.cpp --- gem-0.94~pre1/src/Pixes/pix_sig2pix.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_sig2pix.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -32,7 +32,7 @@ // ///////////////////////////////////////////////////////// pix_sig2pix :: pix_sig2pix(t_floatarg width, - t_floatarg height) : m_reqFormat(GL_RGBA_GEM) + t_floatarg height) : m_reqFormat(GEM_RGBA) { m_pixBlock.image = m_imageStruct; @@ -153,7 +153,7 @@ data+=4; } break; - case GL_YUV422_GEM: + case GEM_YUV: n/=2; while(n--) { data[chY0] = (unsigned char) (*in_red++ *255.0); @@ -166,7 +166,7 @@ data+=4; } break; - case GL_LUMINANCE: + case GEM_GRAY: while(n--) { *data++ = (unsigned char) (*in_red++ *255.0); } diff -Nru gem-0.94~pre1/src/Pixes/pix_sig2pix.h gem-0.94/src/Pixes/pix_sig2pix.h --- gem-0.94~pre1/src/Pixes/pix_sig2pix.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_sig2pix.h 2019-02-12 13:10:01.000000000 +0000 @@ -69,7 +69,7 @@ ////////// // setting dimension and colourspace virtual void dimenMess(int w, int h); - virtual void csMess(GLint cs); + virtual void csMess(int cs); ////////// // DSP-Message @@ -89,7 +89,7 @@ ////////////// // which colorspace do we want ? currently only GL_RGBA - GLint m_reqFormat; + int m_reqFormat; private: diff -Nru gem-0.94~pre1/src/Pixes/pix_snap2tex.cpp gem-0.94/src/Pixes/pix_snap2tex.cpp --- gem-0.94~pre1/src/Pixes/pix_snap2tex.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_snap2tex.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -194,7 +194,11 @@ setTexCoords((float)width / (float)x_2, (float)height / (float)y_2); glCopyTexImage2D( m_textureType, 0, +#ifdef __EMSCRIPTEN__ + GL_RGB, +#else GL_RGBA16, +#endif m_x, m_y, m_texWidth, m_texHeight, 0); @@ -203,7 +207,11 @@ m_texWidth = width; m_texHeight = height; glCopyTexImage2D( m_textureType, 0, +#ifdef __EMSCRIPTEN__ + GL_RGB, +#else GL_RGBA16, +#endif m_x, m_y, m_texWidth, m_texHeight, 0); diff -Nru gem-0.94~pre1/src/Pixes/pix_snap.cpp gem-0.94/src/Pixes/pix_snap.cpp --- gem-0.94~pre1/src/Pixes/pix_snap.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_snap.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -133,7 +133,7 @@ m_originalImage = new imageStruct; m_originalImage->xsize = m_width; m_originalImage->ysize = m_height; - m_originalImage->setCsizeByFormat(GL_RGBA_GEM); + m_originalImage->setCsizeByFormat(GEM_RGBA); // FIXXXME: upsidedown should default be 'true' m_originalImage->upsidedown = false; diff -Nru gem-0.94~pre1/src/Pixes/pix_snap.h gem-0.94/src/Pixes/pix_snap.h --- gem-0.94~pre1/src/Pixes/pix_snap.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_snap.h 2019-02-12 13:10:01.000000000 +0000 @@ -16,6 +16,7 @@ #define _INCLUDE__GEM_PIXES_PIX_SNAP_H_ #include "Base/GemBase.h" +#include "Gem/GemGL.h" #include "Gem/Image.h" /*----------------------------------------------------------------- diff -Nru gem-0.94~pre1/src/Pixes/pix_subtract.cpp gem-0.94/src/Pixes/pix_subtract.cpp --- gem-0.94~pre1/src/Pixes/pix_subtract.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_subtract.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -313,8 +313,8 @@ imageStruct &right) { if (image.format!=right.format) { - error("pix_add: no method to combine (0x%X) and (0x%X)", image.format, - right.format); + error("pix_add: no method to combine (0x%X) and (0x%X)", + image.format, right.format); return; } int datasize = (image.xsize * image.ysize * image.csize)>>5; diff -Nru gem-0.94~pre1/src/Pixes/pix_takealpha.cpp gem-0.94/src/Pixes/pix_takealpha.cpp --- gem-0.94~pre1/src/Pixes/pix_takealpha.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_takealpha.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_test.cpp gem-0.94/src/Pixes/pix_test.cpp --- gem-0.94~pre1/src/Pixes/pix_test.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_test.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -202,7 +202,7 @@ pix_test :: pix_test() { m_pix.image.xsize=m_pix.image.ysize=128; - m_pix.image.setCsizeByFormat(GL_RGBA_GEM); + m_pix.image.setCsizeByFormat(GEM_RGBA); m_pix.image.reallocate(); } @@ -225,15 +225,15 @@ int datasize; unsigned char* data=m_pix.image.data; switch (m_pix.image.format) { - case GL_RGBA_GEM: + case GEM_RGBA: makeSMPTE_RGBA(m_pix.image.ysize, m_pix.image.ysize, m_pix.image.data, scale); break; - case GL_YUV422_GEM: + case GEM_YUV: makeSMPTE_YUV(m_pix.image.ysize, m_pix.image.ysize, m_pix.image.data, scale); break; - case GL_LUMINANCE: + case GEM_GRAY: makeSMPTE_Grey(m_pix.image.ysize, m_pix.image.ysize, m_pix.image.data, scale); break; @@ -254,20 +254,20 @@ } void pix_test :: csMess(std::string cs) { - GLenum fmt=GL_RGBA_GEM; + unsigned int fmt=GEM_RGBA; char c=0; if(cs.size()>0) { c=tolower(cs[0]); } switch(c) { case 'r': - fmt=GL_RGBA_GEM; + fmt=GEM_RGBA; break; case 'y': - fmt=GL_YUV422_GEM; + fmt=GEM_YUV; break; case 'g': - fmt=GL_LUMINANCE; + fmt=GEM_GRAY; break; default: error("invalid colorspace '%s'; must be 'rgba', 'yuv' or 'grey'", diff -Nru gem-0.94~pre1/src/Pixes/pix_texture.cpp gem-0.94/src/Pixes/pix_texture.cpp --- gem-0.94~pre1/src/Pixes/pix_texture.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_texture.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -425,7 +425,7 @@ // if YUV is not supported on this platform, we have to convert it to RGB //(skip Alpha since it isn't used) const bool do_yuv = m_yuv && GLEW_APPLE_ycbcr_422; - if (!do_yuv && m_imagebuf.format == GL_YUV422_GEM) { + if (!do_yuv && m_imagebuf.format == GEM_YUV) { m_imagebuf.format=GL_RGB; m_imagebuf.csize=3; m_imagebuf.reallocate(); @@ -499,7 +499,7 @@ m_dataSize[1] = m_buffer.xsize; m_dataSize[2] = m_buffer.ysize; - if (m_buffer.format == GL_YUV422_GEM && !m_rectangle) { + if (m_buffer.format == GEM_YUV && !m_rectangle) { m_buffer.setBlack(); } diff -Nru gem-0.94~pre1/src/Pixes/pix_threshold_bernsen.cpp gem-0.94/src/Pixes/pix_threshold_bernsen.cpp --- gem-0.94~pre1/src/Pixes/pix_threshold_bernsen.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_threshold_bernsen.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_threshold.cpp gem-0.94/src/Pixes/pix_threshold.cpp --- gem-0.94~pre1/src/Pixes/pix_threshold.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_threshold.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_tIIR.cpp gem-0.94/src/Pixes/pix_tIIR.cpp --- gem-0.94~pre1/src/Pixes/pix_tIIR.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_tIIR.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -20,7 +20,7 @@ // pix_tIIR // // IOhannes m zmoelnig -// mailto:zmoelnig@iem.kug.ac.at +// mailto:zmoelnig@iem.at // // this code is published under the Gnu GeneralPublicLicense that should be distributed with gem & pd // @@ -80,7 +80,7 @@ m_buffer.xsize=64; m_buffer.ysize=64; - m_buffer.setCsizeByFormat(GL_RGBA_GEM); + m_buffer.setCsizeByFormat(GEM_RGBA); m_buffer.allocate(m_buffer.xsize*m_buffer.ysize*m_buffer.csize*m_bufnum); } diff -Nru gem-0.94~pre1/src/Pixes/pix_tIIRf.cpp gem-0.94/src/Pixes/pix_tIIRf.cpp --- gem-0.94~pre1/src/Pixes/pix_tIIRf.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_tIIRf.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -73,7 +73,7 @@ m_image.xsize=0; m_image.ysize=0; - m_image.setCsizeByFormat(GL_RGBA_GEM); + m_image.setCsizeByFormat(GEM_RGBA); } ///////////////////////////////////////////////////////// diff -Nru gem-0.94~pre1/src/Pixes/pix_tIIR.h gem-0.94/src/Pixes/pix_tIIR.h --- gem-0.94~pre1/src/Pixes/pix_tIIR.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_tIIR.h 2019-02-12 13:10:01.000000000 +0000 @@ -16,7 +16,7 @@ pix_tIIR IOhannes m zmoelnig - mailto:zmoelnig@iem.kug.ac.at + mailto:zmoelnig@iem.at time-domain filtering: arguments: number of feedforward-taps, number of feedback-taps diff -Nru gem-0.94~pre1/src/Pixes/pix_video.cpp gem-0.94/src/Pixes/pix_video.cpp --- gem-0.94~pre1/src/Pixes/pix_video.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_video.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -16,10 +16,9 @@ #include "Gem/GemConfig.h" -#ifndef GEM_VIDEOBACKEND - #include "pix_video.h" #include "Gem/State.h" +#include "Gem/Image.h" #include "Gem/Exception.h" #include "plugins/PluginFactory.h" @@ -222,7 +221,7 @@ m_videoHandles.push_back(handle); count++; MARK; - verbose(2, "added backend#%d '%s' @ 0x%x", m_videoHandles.size()-1, + verbose(2, "added backend#%d '%s' @ %p", m_videoHandles.size()-1, key.c_str(), handle); MARK; } @@ -457,23 +456,23 @@ int format=0; if (a->a_type==A_SYMBOL) { char c =*atom_getsymbol(a)->s_name; - // we only have 3 colour-spaces: monochrome (GL_LUMINANCE), yuv (GL_YCBCR_422_GEM), and rgba (GL_RGBA) + // we only have 3 colour-spaces: monochrome (GEM_GRAY), yuv (GEM_YUV), and rgba (GL_RGBA) // if you don't need colour, i suggest, take monochrome // if you don't need alpha, i suggest, take yuv // else take rgba switch (c) { case 'g': case 'G': - format=GL_LUMINANCE; + format=GEM_GRAY; break; case 'y': case 'Y': - format=GL_YCBCR_422_GEM; + format=GEM_YUV; break; case 'r': case 'R': default: - format=GL_RGBA_GEM; + format=GEM_RGBA; } } else { format=atom_getint(a); @@ -556,8 +555,7 @@ result=atom_getfloat(ap); break; case A_SYMBOL: -#warning gem::any doesnt like "const char*" - result=const_cast<char*>(atom_getsymbol(ap)->s_name); + result=std::string(atom_getsymbol(ap)->s_name); break; default: result=ap->a_w.w_gpointer; @@ -1037,4 +1035,3 @@ GetMyClass(data)->startRendering(); } } -#endif /* no OS-specific GEM_VIDEOBACKEND */ diff -Nru gem-0.94~pre1/src/Pixes/pix_videoDarwin.cpp gem-0.94/src/Pixes/pix_videoDarwin.cpp --- gem-0.94~pre1/src/Pixes/pix_videoDarwin.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_videoDarwin.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,1286 +0,0 @@ -/* - * pix_videoDarwin.cpp - * gem_darwin - * - * Created by James Tittle on Fri Jul 12 2002. - * Copyright (c) 2002-2005 James Tittle & Chris Clepper - * - */ -#include "Gem/GemConfig.h" - - -#if defined __APPLE__ && !defined __x86_64__ -// with OSX10.6, apple has removed loads of Carbon functionality (in 64bit mode) -// LATER make this a real check in configure -# define HAVE_CARBONQUICKTIME -#endif - -#if !defined HAVE_CARBONQUICKTIME && defined GEM_VIDEOBACKEND && GEM_VIDEOBACKEND == GEM_VIDEOBACKEND_Darwin -# undef GEM_VIDEOBACKEND -#endif - -#if defined GEM_VIDEOBACKEND && GEM_VIDEOBACKEND == GEM_VIDEOBACKEND_Darwin - -#define HELPSYMBOL "pix_video" - -#include "pix_videoDarwin.h" -#include "Gem/Cache.h" -#include "Gem/State.h" - -#include <Carbon/Carbon.h> - -#include <unistd.h> //needed for Unix file open() type functions -#include <stdio.h> -#include <fcntl.h> /* JMZ thinks that _this_ is needed for open() */ - -CPPEXTERN_NEW_WITH_TWO_ARGS(pix_videoDarwin, t_floatarg, A_DEFFLOAT, - t_floatarg, A_DEFFLOAT); - -#define DEFAULT_WIDTH 320 -#define DEFAULT_HEIGHT 240 -#define DEFAULT_FRAMES 5 // 5 fps -#define MAX_RECORDING_TIME 100 * 60 // n * 60 ticks (n : seconds) -#define DEFAULT_INTERVAL 5 // 5 milliseconds for calling SGIdle() - -pix_videoDarwin :: pix_videoDarwin( t_floatarg w, t_floatarg h ) : - m_srcGWorld(NULL) -{ - - if (w > 0 ) { - m_vidXSize = (int)w; - } else { - m_vidXSize = 320; - } - if (h > 0) { - m_vidYSize = (int)h; - } else { - m_vidYSize = 240; - } - - m_haveVideo = 0; - post("height %d width %d",m_vidXSize,m_vidYSize); - m_pixBlock.image.xsize = m_vidXSize; - m_pixBlock.image.ysize = m_vidYSize; - - m_pixBlock.image.csize = 4; - m_pixBlock.image.format = GL_BGRA_EXT; - /* shouldn't this be GL_UNSIGNED_INT_8_8_8_8 on macintel? - * LATER use setCsizeByFormat() instead - */ - m_pixBlock.image.type = GL_UNSIGNED_INT_8_8_8_8_REV; - - m_pixBlock.image.allocate(); - - m_quality = 0; //normal quality gives non-interlaced images from DV cams - m_colorspace = GL_YCBCR_422_GEM; //default to YUV - - //set to the first input device - m_inputDevice = 0; - m_auto = 1; //keeps previous default functionailty - m_banged = false; - InitSeqGrabber(); - m_record = 0; - //startTransfer(); - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_videoDarwin :: ~pix_videoDarwin() -{ - if (m_vc) { - if (::SGDisposeChannel(m_sg, m_vc)) { - error ("Unable to dispose a video channel"); - } - m_vc = NULL; - } - if (m_sg) { - if (::CloseComponent(m_sg)) { - error("Unable to dispose a sequence grabber component"); - } - m_sg = NULL; - if (m_srcGWorld) { - ::DisposeGWorld(m_srcGWorld); - m_pixMap = NULL; - m_srcGWorld = NULL; - m_baseAddr = NULL; - } - } -} -///////////////////////////////////////////////////////// -// startrender -// -///////////////////////////////////////////////////////// -void pix_videoDarwin :: startRendering() -{ - m_haveVideo = 1; - m_pixBlock.newimage = 1; -} - -///////////////////////////////////////////////////////// -// startrender -// -///////////////////////////////////////////////////////// -void pix_videoDarwin :: stopRendering() -{ - //this should stop the recording process - m_record = 0; - setupCapture(); - //stopTransfer(); -} -///////////////////////////////////////////////////////// -// render -// -///////////////////////////////////////////////////////// -void pix_videoDarwin :: render(GemState *state) -{ - OSErr err; -// short frameCount = 0; -// Boolean *done; - - if (m_auto || m_banged) { - - err = SGIdle(m_sg); - - if (err != noErr) { - error("SGIdle failed with error %d",err); - m_haveVideo = 0; - } else { - //this doesn't do anything so far - //VDCompressDone(m_vdig,frameCount,data,size,similar,time); - //err = SGGrabFrameComplete(m_vc,frameCount,done); - //if (err != noErr) error("SGGrabCompressComplete failed with error %d",err); - //post("SGGrabFramecomplete done %d framecount = %d",done[0],frameCount); - - m_haveVideo = 1; - m_newFrame = 1; - } - if (!m_haveVideo) { - post("no video yet"); - return; - } -// derSwizzler(m_pixBlock.image); - m_pixBlock.newimage = m_newFrame; - state->image = &m_pixBlock; - m_newFrame = 0; - - } else { - - m_newFrame = 0; - m_pixBlock.newimage = m_newFrame; - state->image = &m_pixBlock; - - } - - m_banged = false; -} - -///////////////////////////////////////////////////////// -// postrender -// -///////////////////////////////////////////////////////// -void pix_videoDarwin :: postrender(GemState *state) -{ - m_pixBlock.newimage = 0; - state->image = NULL; - -} - -///////////////////////////////////////////////////////// -// startTransfer -// -///////////////////////////////////////////////////////// -int pix_videoDarwin :: startTransfer() -{ - OSErr err = noErr; - - if (m_record) { - SGStartRecord(m_sg); - if (err != noErr) { - error("SGStartRecord failed with error %d",err); - } - } else { - SGStartPreview(m_sg); - } - m_haveVideo = 1; - m_pixBlock.newimage = 1; - return 1; -} - -///////////////////////////////////////////////////////// -// startTransfer -// -///////////////////////////////////////////////////////// -int pix_videoDarwin :: stopTransfer() -{ - OSErr err = noErr; - - //might need SGPause or SGStop here - err = SGStop(m_sg); - if (err != noErr) { - error("SGStop failed with error %d",err); - } - return 1; -} - -void pix_videoDarwin :: DoVideoSettings() -{ - Rect newActiveVideoRect; - Rect curBounds, curVideoRect, newVideoRect; - ComponentResult err; - - - // Get our current state - do i need this??? - err = SGGetChannelBounds (m_vc, &curBounds); - err = SGGetVideoRect (m_vc, &curVideoRect); - - // Pause - err = SGPause (m_sg, true); - - // Do the dialog thang - - err = SGSettingsDialog( m_sg, m_vc, 0, nil, 0, nil, 0); - - - // What happened? - err = SGGetVideoRect (m_vc, &newVideoRect); - err = SGGetSrcVideoBounds (m_vc, &newActiveVideoRect); - - /* //Attempt to save SG settings to disk - UserData uD = NULL; - //NewUserData(uD); - SGGetSettings(m_sg,&uD,0); - //short uDCount; - //uDCount = CountUserDataType(*uD,sgClipType); - //post("UserDataType count %d",uDCount); - - Handle myHandle = NewHandle(0); - int length; - - PutUserDataIntoHandle(uD,myHandle); - length = GetHandleSize(myHandle); - - int myFile; - myFile = open("/Users/lincoln/Documents/temp",O_CREAT | O_RDWR, 0600); - write(myFile,myHandle,length); - close(myFile); - */ - - err = SGPause (m_sg, false); -} - - -void pix_videoDarwin :: InitSeqGrabber() -{ - OSErr anErr; - Rect m_srcRect = {0,0, m_vidYSize, m_vidXSize}; - - SGDeviceList devices; - short deviceIndex,inputIndex; - short deviceCount = 0; - SGDeviceInputList theSGInputList = NULL; - bool showInputsAsDevices; -// UserData *uD; - - - /* - int num_components = 0; - Component c = 0; - ComponentDescription cd; - - cd.componentType = SeqGrabComponentType; - cd.componentSubType = 0; - cd.componentManufacturer = 0; - cd.componentFlags = 0; - cd.componentFlagsMask = 0; - - while((c = FindNextComponent(c, &cd)) != 0) { - num_components++; } // add component c to the list. - // post("number of SGcomponents: %d",num_components); - */ - m_sg = OpenDefaultComponent(SeqGrabComponentType, 0); - if(m_sg==NULL) { - error("could not open default component"); - return; - } - anErr = SGInitialize(m_sg); - if(anErr!=noErr) { - error("could not initialize SG error %d",anErr); - return; - } - - anErr = SGSetDataRef(m_sg, 0, 0, seqGrabDontMakeMovie); - if (anErr != noErr) { - error("dataref failed with error %d",anErr); - } - - anErr = SGNewChannel(m_sg, VideoMediaType, &m_vc); - if(anErr!=noErr) { - error("could not make new SG channel error %d",anErr); - return; - } - - anErr = SGGetChannelDeviceList(m_vc, sgDeviceListIncludeInputs, &devices); - if(anErr!=noErr) { - error("could not get SG channel Device List"); - } else { - deviceCount = (*devices)->count; - deviceIndex = (*devices)->selectedIndex; - post("SG channel Device List count %d index %d",deviceCount,deviceIndex); - int i; - for (i = 0; i < deviceCount; i++) { - post("SG channel Device List %.*s", - (*devices)->entry[i].name[0], - (*devices)->entry[i].name+1); - } - SGGetChannelDeviceAndInputNames(m_vc, NULL, NULL, &inputIndex); - - showInputsAsDevices = ((*devices)->entry[deviceIndex].flags) & - sgDeviceNameFlagShowInputsAsDevices; - - theSGInputList = ((SGDeviceName *)(&(( - *devices)->entry[deviceIndex])))->inputs; //fugly - - //we should have device names in big ass undocumented structs - - //walk through the list - //for (i = 0; i < deviceCount; i++){ - for (i = 0; i < inputIndex; i++) { - post("SG channel Input Device List %d %.*s", - i, - (*theSGInputList)->entry[i].name[0], - (*theSGInputList)->entry[i].name+1); - } - - - } - - //this call sets the input device - if (m_inputDevice > 0 - && m_inputDevice < deviceCount) //check that the device is not out of bounds - //anErr = SGSetChannelDeviceInput(m_vc,m_inputDevice); - post("SGSetChannelDevice trying %s", - (*devices)->entry[m_inputDevice].name[0], - (*devices)->entry[m_inputDevice].name+1); - anErr = SGSetChannelDevice(m_vc, (*devices)->entry[m_inputDevice].name); - - if(anErr!=noErr) { - error("SGSetChannelDevice returned error %d",anErr); - } - - anErr = SGSetChannelDeviceInput(m_vc,m_inputDeviceChannel); - - if(anErr!=noErr) { - error("SGSetChannelDeviceInput returned error %d",anErr); - } - - /* //attempt to save SG settings to disk - NewUserData(uD); - SGGetSettings(m_sg,uD,0); - short uDCount; - uDCount = CountUserDataType(*uD,sgClipType); - post("UserDataType count %d",uDCount); - - Handle myHandle; - - PutUserDataIntoHandle(*uD,myHandle); - - int myFile; - myFile = open("/Users/lincoln/Documents/temp",O_CREAT | O_RDWR, 0600); - write(myFile,myHandle,4096); - close(myFile); - */ - - //grab the VDIG info from the SGChannel - m_vdig = SGGetVideoDigitizerComponent(m_vc); - vdigErr = VDGetDigitizerInfo(m_vdig, - &m_vdigInfo); //not sure if this is useful - - Str255 vdigName; - memset(vdigName,0,255); - vdigErr = VDGetInputName(m_vdig,m_inputDevice,vdigName); - post("vdigName is %s",vdigName); // pascal string? - - Rect vdRect; - vdigErr = VDGetDigitizerRect(m_vdig,&vdRect); - post("digitizer rect is top %d bottom %d left %d right %d",vdRect.top, - vdRect.bottom,vdRect.left,vdRect.right); - - vdigErr = VDGetActiveSrcRect(m_vdig,0,&vdRect); - post("active src rect is top %d bottom %d left %d right %d",vdRect.top, - vdRect.bottom,vdRect.left,vdRect.right); - - anErr = SGSetChannelBounds(m_vc, &m_srcRect); - if(anErr!=noErr) { - error("could not set SG ChannelBounds "); - } - - anErr = SGSetVideoRect(m_vc, &m_srcRect); - if(anErr!=noErr) { - error("could not set SG Rect "); - } - - anErr = SGSetChannelUsage(m_vc, seqGrabPreview); - if(anErr!=noErr) { - error("could not set SG ChannelUsage "); - } - - switch (m_quality) { - case 0: - anErr = SGSetChannelPlayFlags(m_vc, channelPlayNormal); - post("set SG NormalQuality"); - break; - case 1: - anErr = SGSetChannelPlayFlags(m_vc, channelPlayHighQuality); - post("set SG HighQuality"); - break; - case 2: - anErr = SGSetChannelPlayFlags(m_vc, channelPlayFast); - post("set SG FastQuality"); - break; - case 3: - anErr = SGSetChannelPlayFlags(m_vc, channelPlayAllData); - post("set SG PlayAlldata"); - break; - } - if (m_colorspace==GL_BGRA_EXT) { - m_pixBlock.image.xsize = m_vidXSize; - m_pixBlock.image.ysize = m_vidYSize; - m_pixBlock.image.setCsizeByFormat(GL_RGBA_GEM); - m_pixBlock.image.reallocate(); - m_rowBytes = m_vidXSize*4; - anErr = QTNewGWorldFromPtr (&m_srcGWorld, - k32ARGBPixelFormat, - &m_srcRect, - NULL, - NULL, - 0, - m_pixBlock.image.data, - m_rowBytes); - - post ("using RGB"); - } else { - m_pixBlock.image.xsize = m_vidXSize; - m_pixBlock.image.ysize = m_vidYSize; - m_pixBlock.image.csize = 2; - m_pixBlock.image.format = GL_YCBCR_422_APPLE; -#ifdef __VEC__ - m_pixBlock.image.type = GL_UNSIGNED_SHORT_8_8_REV_APPLE; -#else - m_pixBlock.image.type = GL_UNSIGNED_SHORT_8_8_APPLE; -#endif - - m_pixBlock.image.reallocate(); - - m_rowBytes = m_vidXSize*2; - anErr = QTNewGWorldFromPtr (&m_srcGWorld, - // k422YpCbCr8CodecType, - - k422YpCbCr8PixelFormat, - // '2vuy', - // kComponentVideoUnsigned, - &m_srcRect, - NULL, - NULL, - 0, - m_pixBlock.image.data, - m_rowBytes); - post ("using YUV"); - } - - if (anErr!= noErr) { - error("%d error at QTNewGWorldFromPtr", anErr); - return; - } - if (NULL == m_srcGWorld) { - error("could not allocate off screen"); - return; - } - SGSetGWorld(m_sg,(CGrafPtr)m_srcGWorld, NULL); - SGStartPreview(m_sg); //moved to starttransfer? - m_haveVideo = 1; -} - -void pix_videoDarwin :: setupCapture() -{ - stopTransfer(); - SGSetChannelUsage(m_vc, 0); - - if (m_record) { - SGSetDataOutput(m_sg,&theFSSpec,seqGrabToDisk); - switch(m_record) { - - case 1: - SGSetChannelPlayFlags(m_vc, channelPlayAllData); - SGSetChannelUsage(m_vc, seqGrabRecord | seqGrabPlayDuringRecord); - post("record full preview"); - break; - case 2: - SGSetChannelUsage(m_vc, seqGrabRecord | seqGrabPlayDuringRecord); - post("record some preview"); - break; - case 3: - SGSetChannelUsage(m_vc, seqGrabRecord); - post("record no preview"); - break; - default: - SGSetChannelUsage(m_vc, seqGrabRecord); - } - } else { - SGSetChannelUsage(m_vc, seqGrabPreview); - } - SGUpdate(m_sg,0); - - startTransfer(); -} - -void pix_videoDarwin :: destroySeqGrabber() -{ - if (m_vc) { - if (::SGDisposeChannel(m_sg, m_vc)) { - error ("Unable to dispose a video channel"); - } - m_vc = NULL; - } - if (m_sg) { - if (::CloseComponent(m_sg)) { - error("Unable to dispose a sequence grabber component"); - } - m_sg = NULL; - if (m_srcGWorld) { - ::DisposeGWorld(m_srcGWorld); - m_pixMap = NULL; - m_srcGWorld = NULL; - m_baseAddr = NULL; - } - } -} - -void pix_videoDarwin :: resetSeqGrabber() -{ - OSErr anErr; - post ("starting reset"); - - destroySeqGrabber(); - InitSeqGrabber(); - /* - switch (m_quality){ - case 0: - anErr = SGSetChannelPlayFlags(m_vc, channelPlayNormal); - post("set SG NormalQuality"); - break; - case 1: - anErr = SGSetChannelPlayFlags(m_vc, channelPlayHighQuality); - post("set SG HighQuality"); - break; - case 2: - anErr = SGSetChannelPlayFlags(m_vc, channelPlayFast); - post("set SG FastQuality"); - break; - case 3: - anErr = SGSetChannelPlayFlags(m_vc, channelPlayAllData); - post("set SG PlayAlldata"); - break; - - } - */ -} - -void pix_videoDarwin :: qualityMess(int X) -{ - OSErr anErr; - - if (X < 0) { - X = 0; - } - if (X > 3) { - X = 3; - } - m_quality = X; - - switch (m_quality) { - case 0: - anErr = SGSetChannelPlayFlags(m_vc, channelPlayNormal); - post("set SG NormalQuality"); - break; - case 1: - anErr = SGSetChannelPlayFlags(m_vc, channelPlayHighQuality); - post("set SG HighQuality"); - break; - case 2: - anErr = SGSetChannelPlayFlags(m_vc, channelPlayFast); - post("set SG FastQuality"); - break; - case 3: - anErr = SGSetChannelPlayFlags(m_vc, channelPlayAllData); - post("set SG PlayAlldata"); - break; - - } - -} - -void pix_videoDarwin :: derSwizzler(imageStruct &image) -{ -#ifdef __VEC__ - - vector unsigned char *data = (vector unsigned char*) image.data; - - vector unsigned char permuteBuffer; - - union { - unsigned char c[16]; - vector unsigned char v; - } cBuf; - - cBuf.c[0] = 1; - cBuf.c[1] = 0; - cBuf.c[2] = 3; - cBuf.c[3] = 2; - - cBuf.c[4] = 5; - cBuf.c[5] = 4; - cBuf.c[6] = 7; - cBuf.c[7] = 6; - - cBuf.c[8] = 9; - cBuf.c[9] = 8; - cBuf.c[10] = 11; - cBuf.c[11] = 10; - - cBuf.c[12] = 13; - cBuf.c[13] = 12; - cBuf.c[14] = 15; - cBuf.c[15] = 14; - - permuteBuffer = cBuf.v; - - int height, width, i; - - width = image.xsize / 8; - height = image.ysize; - - i = height * width; - - while(i--) { - - //vec_perm() - data[0] = vec_perm(data[0],data[0],permuteBuffer); - data++; - - } - - -#endif //__VEC__ -} - -///////////////////////////////////////////////////////// -// dimenMess -// -///////////////////////////////////////////////////////// -void pix_videoDarwin :: dimenMess(int x, int y, int leftmargin, - int rightmargin, - int topmargin, int bottommargin) -{ - if (x > 0 ) { - m_vidXSize = (int)x; - } else { - m_vidXSize = 320; - } - if (y > 0) { - m_vidYSize = (int)y; - } else { - m_vidYSize = 240; - } - stopTransfer(); - resetSeqGrabber(); - startTransfer(); - post("height %d width %d",m_vidYSize,m_vidXSize); -// m_pixBlock.image.xsize = m_vidXSize; -// m_pixBlock.image.ysize = m_vidYSize; - -} - -///////////////////////////////////////////////////////// -// colorspaceMess -// -///////////////////////////////////////////////////////// -void pix_videoDarwin :: csMess(int format) -{ - m_colorspace = format; - if (format == GL_RGBA) { - post("colorspace is GL_RGBA %d",m_colorspace); - } else if (format == GL_BGRA_EXT) { - post("colorspace is GL_RGBA %d",m_colorspace); - } else if (format == GL_YCBCR_422_GEM) { - post("colorspace is YUV %d",m_colorspace); - } else if (format == GL_LUMINANCE) { - post("'Gray' not yet supported...using YUV"); - format=GL_YCBCR_422_GEM; - } else { - error("colorspace is unknown %d", m_colorspace); - return; - } - - stopTransfer(); - resetSeqGrabber(); - startTransfer(); -} -void pix_videoDarwin :: csMess(t_symbol*s) -{ - int format=0; - char c =*s->s_name; - switch (c) { - case 'g': - case 'G': - format=GL_LUMINANCE; - break; - case 'y': - case 'Y': - format=GL_YCBCR_422_GEM; - break; - case 'r': - case 'R': - format=GL_RGBA; - break; - default: - post("colorspace must be 'RGBA', 'YUV' or 'Gray'"); - return; - } - - csMess(format); -} - -void pix_videoDarwin :: fileMess(int argc, t_atom *argv) -{ - OSErr err = noErr; - FSRef ref; - -//if recording is going do not accept a new file name -//on OSX changing the name while recording won't have any effect -//but it will give the wrong message at the end if recording -//if (m_recordStart) return; - -// char *extension = ".mov"; - if (argc) { - if (argv->a_type == A_SYMBOL) { - atom_string(argv++, m_filename, 80); - argc--; - // sprintf(m_filename, "%s", m_pathname); - } - // if (argc>0) - // m_filetype = atom_getint(argv); - } - -// m_autocount = 0; - setModified(); - - post("filename %s",m_filename); - - if (!m_filename[0]) { - error("no filename passed"); - return; - } else { - err = ::FSPathMakeRef((UInt8*)m_filename, &ref, NULL); - if (err == fnfErr) { - // if the file does not yet exist, then let's create the file - int fd; - fd = open(m_filename, O_CREAT | O_RDWR, 0600); - if (fd < 0) { - error("problem with fd"); - return ; - } - write(fd, " ", 1); - close(fd); - err = FSPathMakeRef((UInt8*)m_filename, &ref, NULL); - //post("made new file %s",m_filename); - } - - - if (err) { - error("unable to make file ref from filename %s", m_filename); - return; - } - - //err = ::FSsetCatalogInfo(&ref, kFSCatInfoSettableInfo, NULL); - err = FSGetCatalogInfo(&ref, kFSCatInfoNodeFlags, NULL, NULL, &theFSSpec, - NULL); - - if (err != noErr) { - error("error %d in FSGetCatalogInfo()", err); - return; - } - - - // err = FSMakeFSSpec(theFSSpec.vRefNum, theFSSpec.parID, (UInt8*)m_filename, &theFSSpec); - - if (err != noErr && err != -37) { - error("error %d in FSMakeFSSpec()", err); - return; - } - - } - - CreateMovieFile( &theFSSpec, - FOUR_CHAR_CODE('TVOD'), - smSystemScript, - createMovieFileDontOpenFile | - createMovieFileDontCreateMovie | - createMovieFileDontCreateResFile, - NULL, - NULL); - -} - - -void pix_videoDarwin :: brightnessMess(float X) -{ - - QTAtomContainer atomContainer; - QTAtom featureAtom; - VDIIDCFeatureSettings settings; - ComponentDescription desc; - ComponentResult result = paramErr; - - //check if device is IIDC - GetComponentInfo((Component)m_vdig, &desc, NULL, NULL, NULL); - if (vdSubtypeIIDC != desc.componentSubType) { - - m_brightness = (unsigned short)(65536. * X); - VDSetBrightness(m_vdig,&m_brightness); - - VDGetBrightness(m_vdig,&m_brightness); - post("brightness is %d",m_brightness); - } else { - //IIDC stuff - //these things are as stubborn as they are stupid - find one that conforms to spec! - - //vdIIDCFeatureBrightness - result = VDIIDCGetFeaturesForSpecifier(m_vdig, vdIIDCFeatureBrightness, - &atomContainer); - if (noErr != result) { - error("VDIIDCGetFeaturesForSpecifier returned %d",result); - } - - featureAtom = QTFindChildByIndex(atomContainer, kParentAtomIsContainer, - vdIIDCAtomTypeFeature, 1, NULL); - if (0 == featureAtom) { - error("featureAtom not found"); - } - - result = QTCopyAtomDataToPtr(atomContainer, - QTFindChildByID(atomContainer, featureAtom, - vdIIDCAtomTypeFeatureSettings, - vdIIDCAtomIDFeatureSettings, NULL), - true, sizeof(settings), &settings, NULL); - - settings.state.flags = (vdIIDCFeatureFlagOn | - vdIIDCFeatureFlagManual | - vdIIDCFeatureFlagRawControl); - - settings.state.value = X; - - result = QTSetAtomData(atomContainer, - QTFindChildByID(atomContainer, featureAtom, - vdIIDCAtomTypeFeatureSettings, - vdIIDCAtomIDFeatureSettings, NULL), - sizeof(settings), &settings); - - result = VDIIDCSetFeatures(m_vdig, atomContainer); - - } -} - -void pix_videoDarwin :: saturationMess(float X) -{ - - QTAtomContainer atomContainer; - QTAtom featureAtom; - VDIIDCFeatureSettings settings; - ComponentDescription desc; - ComponentResult result = paramErr; - - //check if device is IIDC - GetComponentInfo((Component)m_vdig, &desc, NULL, NULL, NULL); - if (vdSubtypeIIDC != desc.componentSubType) { - - m_saturation = (unsigned short)(65536. * X); - VDSetSaturation(m_vdig,&m_saturation); - - VDGetSaturation(m_vdig,&m_saturation); - post("saturation is %d",m_saturation); - } else { - //IIDC stuff - //vdIIDCFeatureSaturation - result = VDIIDCGetFeaturesForSpecifier(m_vdig, vdIIDCFeatureSaturation, - &atomContainer); - if (noErr != result) { - error("VDIIDCGetFeaturesForSpecifier vdIIDCFeatureSaturation returned %d", - result); - } - - featureAtom = QTFindChildByIndex(atomContainer, kParentAtomIsContainer, - vdIIDCAtomTypeFeature, 1, NULL); - if (0 == featureAtom) { - error("featureAtom vdIIDCFeatureSaturation not found"); - } - - result = QTCopyAtomDataToPtr(atomContainer, - QTFindChildByID(atomContainer, featureAtom, - vdIIDCAtomTypeFeatureSettings, - vdIIDCAtomIDFeatureSettings, NULL), - true, sizeof(settings), &settings, NULL); - - settings.state.flags = (vdIIDCFeatureFlagOn | - vdIIDCFeatureFlagManual | - vdIIDCFeatureFlagRawControl); - - settings.state.value = X; - - result = QTSetAtomData(atomContainer, - QTFindChildByID(atomContainer, featureAtom, - vdIIDCAtomTypeFeatureSettings, - vdIIDCAtomIDFeatureSettings, NULL), - sizeof(settings), &settings); - - result = VDIIDCSetFeatures(m_vdig, atomContainer); - - } -} - -void pix_videoDarwin :: contrastMess(float X) -{ - - m_contrast = (unsigned short)(65536. * X); - VDSetContrast(m_vdig,&m_contrast); - - VDGetContrast(m_vdig,&m_contrast); - post("contrast is %d",m_contrast); -} - -void pix_videoDarwin :: exposureMess(float X) -{ - - QTAtomContainer atomContainer; - QTAtom featureAtom; - VDIIDCFeatureSettings settings; - ComponentDescription desc; - ComponentResult result = paramErr; - - //check if device is IIDC - GetComponentInfo((Component)m_vdig, &desc, NULL, NULL, NULL); - if (vdSubtypeIIDC == desc.componentSubType) { - - //IIDC stuff - //vdIIDCFeatureExposure - result = VDIIDCGetFeaturesForSpecifier(m_vdig, vdIIDCFeatureExposure, - &atomContainer); - if (noErr != result) { - error("VDIIDCGetFeaturesForSpecifier vdIIDCFeatureExposure returned %d", - result); - } - - featureAtom = QTFindChildByIndex(atomContainer, kParentAtomIsContainer, - vdIIDCAtomTypeFeature, 1, NULL); - if (0 == featureAtom) { - error("featureAtom vdIIDCFeatureExposure not found"); - } - - result = QTCopyAtomDataToPtr(atomContainer, - QTFindChildByID(atomContainer, featureAtom, - vdIIDCAtomTypeFeatureSettings, - vdIIDCAtomIDFeatureSettings, NULL), - true, sizeof(settings), &settings, NULL); - - settings.state.flags = (vdIIDCFeatureFlagOn | - vdIIDCFeatureFlagManual | - vdIIDCFeatureFlagRawControl); - - settings.state.value = X; - - result = QTSetAtomData(atomContainer, - QTFindChildByID(atomContainer, featureAtom, - vdIIDCAtomTypeFeatureSettings, - vdIIDCAtomIDFeatureSettings, NULL), - sizeof(settings), &settings); - - result = VDIIDCSetFeatures(m_vdig, atomContainer); - - } -} - -void pix_videoDarwin :: gainMess(float X) -{ - - QTAtomContainer atomContainer; - QTAtom featureAtom; - VDIIDCFeatureSettings settings; - ComponentDescription desc; - ComponentResult result = paramErr; - - //check if device is IIDC - GetComponentInfo((Component)m_vdig, &desc, NULL, NULL, NULL); - if (vdSubtypeIIDC == desc.componentSubType) { - - //IIDC stuff - //vdIIDCFeatureGain - result = VDIIDCGetFeaturesForSpecifier(m_vdig, vdIIDCFeatureWhiteBalanceU, - &atomContainer); - if (noErr != result) { - error("VDIIDCGetFeaturesForSpecifier vdIIDCFeatureExposure returned %d", - result); - } - - featureAtom = QTFindChildByIndex(atomContainer, kParentAtomIsContainer, - vdIIDCAtomTypeFeature, 1, NULL); - if (0 == featureAtom) { - error("featureAtom vdIIDCFeatureExposure not found"); - } - - result = QTCopyAtomDataToPtr(atomContainer, - QTFindChildByID(atomContainer, featureAtom, - vdIIDCAtomTypeFeatureSettings, - vdIIDCAtomIDFeatureSettings, NULL), - true, sizeof(settings), &settings, NULL); - - settings.state.flags = (vdIIDCFeatureFlagOn | - vdIIDCFeatureFlagManual | - vdIIDCFeatureFlagRawControl); - - settings.state.value = X; - - result = QTSetAtomData(atomContainer, - QTFindChildByID(atomContainer, featureAtom, - vdIIDCAtomTypeFeatureSettings, - vdIIDCAtomIDFeatureSettings, NULL), - sizeof(settings), &settings); - - result = VDIIDCSetFeatures(m_vdig, atomContainer); - - } -} - -void pix_videoDarwin :: whiteBalanceMess(float U, float V) -{ - - QTAtomContainer atomContainer; - QTAtom featureAtom; - VDIIDCFeatureSettings settings; - ComponentDescription desc; - ComponentResult result = paramErr; - - //check if device is IIDC - GetComponentInfo((Component)m_vdig, &desc, NULL, NULL, NULL); - if (vdSubtypeIIDC == desc.componentSubType) { - - //IIDC stuff - //vdIIDCFeatureWhiteBalanceU - result = VDIIDCGetFeaturesForSpecifier(m_vdig, vdIIDCFeatureWhiteBalanceU, - &atomContainer); - if (noErr != result) { - error("VDIIDCGetFeaturesForSpecifier vdIIDCFeatureExposure returned %d", - result); - } - - featureAtom = QTFindChildByIndex(atomContainer, kParentAtomIsContainer, - vdIIDCAtomTypeFeature, 1, NULL); - if (0 == featureAtom) { - error("featureAtom vdIIDCFeatureExposure not found"); - } - - result = QTCopyAtomDataToPtr(atomContainer, - QTFindChildByID(atomContainer, featureAtom, - vdIIDCAtomTypeFeatureSettings, - vdIIDCAtomIDFeatureSettings, NULL), - true, sizeof(settings), &settings, NULL); - - settings.state.flags = (vdIIDCFeatureFlagOn | - vdIIDCFeatureFlagManual | - vdIIDCFeatureFlagRawControl); - - settings.state.value = U; - - result = QTSetAtomData(atomContainer, - QTFindChildByID(atomContainer, featureAtom, - vdIIDCAtomTypeFeatureSettings, - vdIIDCAtomIDFeatureSettings, NULL), - sizeof(settings), &settings); - - result = VDIIDCSetFeatures(m_vdig, atomContainer); - - //vdIIDCFeatureWhiteBalanceV - result = VDIIDCGetFeaturesForSpecifier(m_vdig, vdIIDCFeatureWhiteBalanceV, - &atomContainer); - if (noErr != result) { - error("VDIIDCGetFeaturesForSpecifier vdIIDCFeatureExposure returned %d", - result); - } - - featureAtom = QTFindChildByIndex(atomContainer, kParentAtomIsContainer, - vdIIDCAtomTypeFeature, 1, NULL); - if (0 == featureAtom) { - error("featureAtom vdIIDCFeatureExposure not found"); - } - - result = QTCopyAtomDataToPtr(atomContainer, - QTFindChildByID(atomContainer, featureAtom, - vdIIDCAtomTypeFeatureSettings, - vdIIDCAtomIDFeatureSettings, NULL), - true, sizeof(settings), &settings, NULL); - - settings.state.flags = (vdIIDCFeatureFlagOn | - vdIIDCFeatureFlagManual | - vdIIDCFeatureFlagRawControl); - - settings.state.value = V; - - result = QTSetAtomData(atomContainer, - QTFindChildByID(atomContainer, featureAtom, - vdIIDCAtomTypeFeatureSettings, - vdIIDCAtomIDFeatureSettings, NULL), - sizeof(settings), &settings); - - result = VDIIDCSetFeatures(m_vdig, atomContainer); - - - } -} - -///////////////////////////////////////////////////////// -// dialog -// -///////////////////////////////////////////////////////// -void pix_videoDarwin :: dialogMess(int argc, t_atom*argv) -{ - DoVideoSettings(); -} - -void pix_videoDarwin :: obj_setupCallback(t_class *classPtr) -{ - class_addcreator(reinterpret_cast<t_newmethod>(create_pix_videoDarwin), - gensym("pix_video"), - A_DEFFLOAT,A_DEFFLOAT,A_NULL); - - pix_videoOS::real_obj_setupCallback(classPtr); - - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoDarwin::qualityCallback), - gensym("quality"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoDarwin::resetCallback), - gensym("reset"), A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoDarwin::autoCallback), - gensym("auto"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoDarwin::deviceCallback), - gensym("device"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoDarwin::brightnessCallback), - gensym("brightness"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoDarwin::saturationCallback), - gensym("saturation"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoDarwin::contrastCallback), - gensym("contrast"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoDarwin::exposureCallback), - gensym("exposure"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoDarwin::gainCallback), - gensym("gain"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoDarwin::whiteBalanceCallback), - gensym("whitebalance"), A_DEFFLOAT, A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoDarwin::fileMessCallback), - gensym("file"), A_GIMME, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoDarwin::recordCallback), - gensym("record"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoDarwin::inputCallback), - gensym("input"), A_DEFFLOAT, A_NULL); - - class_addbang(classPtr, - reinterpret_cast<t_method>(&pix_videoDarwin::bangMessCallback)); -} - -void pix_videoDarwin :: qualityCallback(void *data, t_float X) -{ - GetMyClass(data)->qualityMess((int)X); -} - -void pix_videoDarwin :: autoCallback(void *data, t_float X) -{ - GetMyClass(data)->m_auto=((int)X); -} - -void pix_videoDarwin :: recordCallback(void *data, t_float X) -{ - GetMyClass(data)->m_record=((int)X); - GetMyClass(data)->setupCapture(); -} - - -void pix_videoDarwin :: bangMessCallback(void *data) -{ - GetMyClass(data)->m_banged=true; -} - -void pix_videoDarwin :: resetCallback(void *data) -{ - GetMyClass(data)->resetSeqGrabber(); -} - -void pix_videoDarwin :: deviceCallback(void *data, t_float X) -{ - GetMyClass(data)->m_inputDevice=((int)X); -} - -void pix_videoDarwin :: inputCallback(void *data, t_float X) -{ - GetMyClass(data)->m_inputDeviceChannel=((int)X); -} - -void pix_videoDarwin :: brightnessCallback(void *data, t_float X) -{ - GetMyClass(data)->brightnessMess(X); -} - -void pix_videoDarwin :: saturationCallback(void *data, t_float X) -{ - GetMyClass(data)->saturationMess(X); -} - -void pix_videoDarwin :: contrastCallback(void *data, t_float X) -{ - GetMyClass(data)->contrastMess(X); -} - -void pix_videoDarwin :: exposureCallback(void *data, t_float X) -{ - GetMyClass(data)->exposureMess(X); -} - -void pix_videoDarwin :: gainCallback(void *data, t_float X) -{ - GetMyClass(data)->gainMess(X); -} - -void pix_videoDarwin :: whiteBalanceCallback(void *data, t_float U, - t_float V) -{ - GetMyClass(data)->whiteBalanceMess(U,V); -} - -void pix_videoDarwin :: fileMessCallback(void *data, t_symbol *s, int argc, - t_atom *argv) -{ - GetMyClass(data)->fileMess(argc, argv); -} - -#endif // __APPLE__ diff -Nru gem-0.94~pre1/src/Pixes/pix_videoDarwin.h gem-0.94/src/Pixes/pix_videoDarwin.h --- gem-0.94~pre1/src/Pixes/pix_videoDarwin.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_videoDarwin.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,195 +0,0 @@ -/* - * pix_videoDarwin.h - * gem_darwin - * - * Created by James Tittle & Chris Clepper on Thu Aug 1 2002. - Copyright (c) 2002 James Tittle & Chris Clepper - * - */ - - -#ifndef _INCLUDE__GEM_PIXES_PIX_VIDEODARWIN_H_ -#define _INCLUDE__GEM_PIXES_PIX_VIDEODARWIN_H_ - -#include "Gem/GemGL.h" - -#include <Carbon/Carbon.h> -#include <QuickTime/QuickTime.h> - -#include "pix_videoOS.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_video - - Loads in a video - -KEYWORDS - pix - -DESCRIPTION - - "dimen" (int, int) - set the x,y dimensions - "zoom" (int, int) - the zoom factor (1.0 is nominal) (num / denom) - "bright" (int) - the brightness - "contrast" (int) - the contrast - "hue" (int) - the hue - "sat" (int) - the saturation - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_videoDarwin : public pix_videoOS -{ - CPPEXTERN_HEADER(pix_videoDarwin, GemBase); - -public: - - ////////// - // Constructor - pix_videoDarwin(t_floatarg w, t_floatarg h ); - - -protected: - - ////////// - // Destructor - virtual ~pix_videoDarwin(); - - ////////// - // Do the rendering - virtual void render(GemState *state); - - ////////// - // Clear the dirty flag on the pixBlock - virtual void postrender(GemState *state); - - ////////// - virtual void startRendering(); - - ////////// - virtual void stopRendering(); - - ////////// - // Start up the video device - // [out] int - returns 0 if bad - virtual int startTransfer(); - - ////////// - // Stop the video device - // [out] int - returns 0 if bad - virtual int stopTransfer(); - - virtual void csMess(int format); - virtual void csMess(t_symbol*format); - - - - virtual void qualityMess(int X); - - ////////// - // property-dialog - virtual void dialogMess(int,t_atom*); - - virtual void derSwizzler(imageStruct &image); - - virtual void setupCapture(); - - virtual void fileMess(int argc, t_atom *argv); - - //----------------------------------- - // GROUP: Macintosh specific video data - //----------------------------------- - void tick(); - void panelMess(); - void makeOffscreen(); - void makeVideoChannel(); - void setupVideoChannel(); - void disposeOffscreen(); - void disposeVideoChannel(); - //OSErr videoFrame(SGChannel c, short bufferNum, Boolean *done); - - void InitSeqGrabber(); - void resetSeqGrabber(); - void destroySeqGrabber(); - void DoVideoSettings(); - void dimenMess(int x, int y, int leftmargin, int rightmargin, - int topmargin, int bottommargin); - - //void qualityMess(int X); - - //----------------------------------- - // GROUP: Video data - //----------------------------------- - - int m_newFrame; - bool m_banged; - bool m_auto; - char m_filename[80]; - int m_record; - - SeqGrabComponent m_sg; // Sequence Grabber Component - SGChannel m_vc; // Video Channel - SGOutput m_sgout; //output for writing to disk - Movie m_movie; - short m_pixelDepth; // - int m_vidXSize; // - int m_vidYSize; // - Rect - m_srcRect; // Capture Rectangle - GWorldPtr m_srcGWorld; // Capture Destination - PixMapHandle m_pixMap; // PixMap Handle for capture image - Ptr - m_baseAddr; // Base address of pixel Data - long - m_rowBytes; // Row bytes in a row - int m_quality; - int m_colorspace; - - int m_inputDevice; - int m_inputDeviceChannel; - VideoDigitizerComponent m_vdig; //gotta have the vdig - VideoDigitizerError vdigErr; - DigitizerInfo m_vdigInfo; //the info about the VDIG - - FSSpec theFSSpec; - short nFileRefNum; - short nResID; - - //functions and variables for controlling the vdig - unsigned short m_brightness; - unsigned short m_contrast; - unsigned short m_saturation; - - virtual void brightnessMess(float X); - virtual void saturationMess(float X); - virtual void contrastMess(float X); - - //IIDC functions - virtual void exposureMess(float X); - virtual void gainMess(float X); - virtual void whiteBalanceMess(float U,float V); - -private: - - ////////// - // static member functions - static void qualityCallback(void *data, t_float X); - static void resetCallback(void *data); - static void colorspaceCallback(void *data, t_symbol *cs); - static void csMessCallback(void *data, t_symbol *cs); - static void deviceCallback(void *data, t_float X); - static void brightnessCallback(void *data, t_float X); - static void saturationCallback(void *data, t_float X); - static void contrastCallback(void *data, t_float X); - static void exposureCallback(void *data, t_float X); - static void gainCallback(void *data, t_float X); - static void whiteBalanceCallback(void *data, t_float U,t_float V); - static void bangMessCallback(void *data); - static void autoCallback(void *data, t_float X); - static void fileMessCallback(void *data, t_symbol *s, int argc, - t_atom *argv); - static void recordCallback(void *data, t_float X); - static void inputCallback(void *data, t_float X); -}; - -#endif diff -Nru gem-0.94~pre1/src/Pixes/pix_videoOS.cpp gem-0.94/src/Pixes/pix_videoOS.cpp --- gem-0.94~pre1/src/Pixes/pix_videoOS.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_videoOS.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,227 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-1998 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// -/* - this is an attempt at a Linux version of pix_videoOS by Miller Puckette. - Anyone conversant in c++ will probably howl at this. I'm uncertain of - several things. - - First, the #includes I threw in pix_videoOS.h may not all be necessary; I - notice that far fewer are needed for the other OSes. - - Second, shouldn't the os-dependent state variables be "private"? I - followed the lead of the other os-dependent state variables. Also, - I think the indentation is goofy but perhaps there's some reason for it. - - Third, I probably shouldn't be using sprintf to generate filenames; I - don't know the "modern" c++ way to do this. - - Fourth, I don't know why some state variables - show up as "arguments" in the pix_videoOS :: pix_videoOS(). - - This code is written with the "bttv" device in mind, which memory mapes - images up to 24 bits per pixel. So we request the whole 24 and don't - settle for anything of lower quality (nor do we offer anything of higher - quality; it seems that Gem is limited to 32 bits per pixel including - alpha.) We take all video images to be opaque by setting the alpha - channel to 255. - -*/ - -#include "Gem/GemConfig.h" -#define NO_AUTO_REGISTER_CLASS - -#include "pix_videoOS.h" -#include "Gem/Cache.h" - -CPPEXTERN_NEW(pix_videoOS); - -#define BYTESIN 3 - -///////////////////////////////////////////////////////// -// -// pix_videoOS -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_videoOS :: pix_videoOS(t_floatarg num) - : m_haveVideo(0), m_swap(1), m_colorSwap(0) -{ - m_pixBlock.image = m_imageStruct; - m_haveVideo = 0; -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_videoOS :: ~pix_videoOS() -{ -} - -///////////////////////////////////////////////////////// -// render -// -///////////////////////////////////////////////////////// -void pix_videoOS :: render(GemState *state) -{ - if (!m_haveVideo) { - post("no video for this OS"); - return; - } -} - -///////////////////////////////////////////////////////// -// startTransfer -// -///////////////////////////////////////////////////////// -int pix_videoOS :: startTransfer() -{ - post("no video available for this OS"); - if (!m_haveVideo) { - return(0); - } - - return(1); -} - -///////////////////////////////////////////////////////// -// stopTransfer -// -///////////////////////////////////////////////////////// -int pix_videoOS :: stopTransfer() -{ - if ( !m_haveVideo ) { - return(0); - } - - return(1); -} - -///////////////////////////////////////////////////////// -// offsetMess -// -///////////////////////////////////////////////////////// -void pix_videoOS :: offsetMess(int x, int y) -{ - error("offset not supported on this OS"); -} - -///////////////////////////////////////////////////////// -// cleanPixBlock -- free the pixel buffer memory -// -///////////////////////////////////////////////////////// -void pix_videoOS :: cleanPixBlock() -{ -} - -///////////////////////////////////////////////////////// -// swapMess -// -///////////////////////////////////////////////////////// -void pix_videoOS :: swapMess(int state) -{ - error("swap not supported on this OS"); -} -///////////////////////////////////////////////////////// -// colorspaceMess -// -///////////////////////////////////////////////////////// -void pix_videoOS :: csMess(int format) -{ - error("colorspace not supported on this OS"); -} -void pix_videoOS :: csMess(t_symbol*s) -{ - csMess(getPixFormat(s->s_name)); -} -///////////////////////////////////////////////////////// -// enumerate devices -// -///////////////////////////////////////////////////////// -void pix_videoOS :: enumerateMess() -{ - error("enumerate not supported on this OS"); -} -///////////////////////////////////////////////////////// -// dialog -// -///////////////////////////////////////////////////////// -void pix_videoOS :: dialogMess(int argc, t_atom*argv) -{ - error("dialog not supported on this OS"); -} - - - - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_videoOS :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoOS::dimenMessCallback), - gensym("dimen"), A_GIMME, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoOS::offsetMessCallback), - gensym("offset"), A_FLOAT, A_FLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoOS::swapMessCallback), - gensym("swap"), A_FLOAT, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoOS::enumerateMessCallback), - gensym("enumerate"), A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoOS::csMessCallback), - gensym("colorspace"), A_DEFSYMBOL, A_NULL); - class_addmethod(classPtr, - reinterpret_cast<t_method>(&pix_videoOS::dialogMessCallback), - gensym("dialog"), A_GIMME, A_NULL); -} -void pix_videoOS :: dimenMessCallback(void *data, t_symbol *s, int ac, - t_atom *av) -{ - GetMyClass(data)->dimenMess(static_cast<int>(atom_getfloatarg(0, ac, av)), - static_cast<int>(atom_getfloatarg(1, ac, av)), - static_cast<int>(atom_getfloatarg(2, ac, av)), - static_cast<int>(atom_getfloatarg(3, ac, av)), - static_cast<int>(atom_getfloatarg(4, ac, av)), - static_cast<int>(atom_getfloatarg(5, ac, av)) ); -} -void pix_videoOS :: offsetMessCallback(void *data, t_float x, t_float y) -{ - GetMyClass(data)->offsetMess(static_cast<int>(x), static_cast<int>(y)); -} -void pix_videoOS :: swapMessCallback(void *data, t_float state) -{ - GetMyClass(data)->swapMess(static_cast<int>(state)); -} -void pix_videoOS :: csMessCallback(void *data, t_symbol*s) -{ - GetMyClass(data)->csMess(s); -} -void pix_videoOS :: enumerateMessCallback(void *data) -{ - GetMyClass(data)->enumerateMess(); -} -void pix_videoOS :: dialogMessCallback(void *data, t_symbol*s, int argc, - t_atom*argv) -{ - GetMyClass(data)->dialogMess(argc, argv); -} diff -Nru gem-0.94~pre1/src/Pixes/pix_videoOS.h gem-0.94/src/Pixes/pix_videoOS.h --- gem-0.94~pre1/src/Pixes/pix_videoOS.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_videoOS.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,138 +0,0 @@ -/*----------------------------------------------------------------- - -GEM - Graphics Environment for Multimedia - -Load a video into a pix block - -Copyright (c) 1997-1999 Mark Danks. mark@danks.org -Copyright (c) Günther Geiger. geiger@epy.co.at -Copyright (c) 2001-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - -Linux version by Miller Puckette. msp@ucsd.edu - ------------------------------------------------------------------*/ - -#ifndef _INCLUDE__GEM_PIXES_PIX_VIDEOOS_H_ -#define _INCLUDE__GEM_PIXES_PIX_VIDEOOS_H_ - -#include "Base/GemBase.h" -#include "Gem/Image.h" - -/*----------------------------------------------------------------- - ------------------------------------------------------------------- - CLASS - pix_videoOS - - Loads in an video - - KEYWORDS - pix - - DESCRIPTION - - "dimen" (int, int) - set the x,y dimensions - "zoom" (int, int) - the zoom factor (1.0 is nominal) (num / denom) - "bright" (int) - the brightnes - "contrast" (int) - the contrast - "hue" (int) - the hue - "sat" (int) - the saturation - - -----------------------------------------------------------------*/ -class GEM_EXTERN pix_videoOS : public GemBase -{ - CPPEXTERN_HEADER(pix_videoOS, GemBase); - -public: - - ////////// - // Constructor - pix_videoOS(t_floatarg num = 0); - -protected: - - ////////// - // Destructor - virtual ~pix_videoOS(); - - ////////// - // Do the rendering - virtual void render(GemState *state); - - ////////// - // Clean up the pixBlock - void cleanPixBlock(); - - ////////// - // Set the video dimensions - virtual void dimenMess(int x, int y, int leftmargin = 0, - int rightmargin = 0, - int topmargin = 0, int bottommargin = 0) {} - - ////////// - // Set the video offset - virtual void offsetMess(int x, int y); - - ////////// - // Start up the video device - // [out] int - returns 0 if bad - virtual int startTransfer(); - - ////////// - // Stop the video device - // [out] int - returns 0 if bad - virtual int stopTransfer(); - - ////////// - // swap the image (upside down ?) - virtual void swapMess(int state); - - ////////// - // enumerate the devices - virtual void enumerateMess(); - ////////// - // colorspace-message - virtual void csMess(int format); - virtual void csMess(t_symbol*format); - ////////// - // property-dialog - virtual void dialogMess(int,t_atom*); - - //----------------------------------- - // GROUP: Video data - //----------------------------------- - - ////////// - // If video is connected - int m_haveVideo; - - ////////// - // The pixBlock with the current image - pixBlock m_pixBlock; - imageStruct m_imageStruct; - - ////////// - // Should swap the pixels? - int m_swap; - - ////////// - // Do we have to color swap? - int m_colorSwap; - -private: - - ////////// - // static member functions - - static void dimenMessCallback(void *data, t_symbol *s, int ac, t_atom *av); - static void offsetMessCallback(void *data, t_float x, t_float y); - static void swapMessCallback(void *data, t_float state); - - /* dummy callbacks; won't do anything, but are here for future compatibility */ - static void dialogMessCallback(void *data, t_symbol*,int,t_atom*); - static void enumerateMessCallback(void *data); - static void csMessCallback(void *data, t_symbol*colorspace); -}; - -#endif // for header file diff -Nru gem-0.94~pre1/src/Pixes/pix_vpaint.cpp gem-0.94/src/Pixes/pix_vpaint.cpp --- gem-0.94~pre1/src/Pixes/pix_vpaint.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_vpaint.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -16,6 +16,7 @@ ///////////////////////////////////////////////////////// #include "pix_vpaint.h" +#include "Gem/GemGL.h" GLfloat edgeKernel[] = { -0.50f, 0.25f, -0.50f, @@ -120,7 +121,7 @@ points = new cPoint[maxPoints]; numPoints = maxPoints; - if (m_imageStruct.format == GL_YCBCR_422_GEM) { + if (m_imageStruct.format == GEM_YUV) { for (i = 0; i < maxPoints; i++) { points[i].x = modrand(m_w)>>1; points[i].y = modrand(m_h); diff -Nru gem-0.94~pre1/src/Pixes/pix_write.cpp gem-0.94/src/Pixes/pix_write.cpp --- gem-0.94~pre1/src/Pixes/pix_write.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_write.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -131,7 +131,7 @@ #ifndef __APPLE__ m_originalImage->setCsizeByFormat(m_color); #else - m_originalImage->setCsizeByFormat(GL_RGBA_GEM); + m_originalImage->setCsizeByFormat(GEM_RGBA); #endif /* APPLE */ m_originalImage->reallocate(); diff -Nru gem-0.94~pre1/src/Pixes/pix_writer.cpp gem-0.94/src/Pixes/pix_writer.cpp --- gem-0.94~pre1/src/Pixes/pix_writer.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_writer.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Pixes/pix_yuv.cpp gem-0.94/src/Pixes/pix_yuv.cpp --- gem-0.94~pre1/src/Pixes/pix_yuv.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_yuv.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -31,7 +31,7 @@ ///////////////////////////////////////////////////////// pix_yuv :: pix_yuv() { - m_image.setCsizeByFormat(GL_YCBCR_422_GEM); + m_image.setCsizeByFormat(GEM_YUV); } ///////////////////////////////////////////////////////// diff -Nru gem-0.94~pre1/src/Pixes/pix_zoom.cpp gem-0.94/src/Pixes/pix_zoom.cpp --- gem-0.94~pre1/src/Pixes/pix_zoom.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Pixes/pix_zoom.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEMi - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -15,6 +15,7 @@ ///////////////////////////////////////////////////////// #include "pix_zoom.h" +#include "Gem/GemGL.h" #include "Gem/Exception.h" CPPEXTERN_NEW_WITH_GIMME(pix_zoom); diff -Nru gem-0.94~pre1/src/plugins/film.cpp gem-0.94/src/plugins/film.cpp --- gem-0.94~pre1/src/plugins/film.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/plugins/film.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -207,6 +207,17 @@ } catch (GemException&) { } + + static bool firsttime=true; + if(firsttime && ids.size()>0) { + startpost("GEM: film loading plugins:"); + unsigned int i; + for(i=0; i<ids.size(); i++) { + startpost(" %s", ids[i].c_str()); + } + endpost(); + } + firsttime=false; } virtual ~filmMeta(void) diff -Nru gem-0.94~pre1/src/plugins/imageloader.cpp gem-0.94/src/plugins/imageloader.cpp --- gem-0.94~pre1/src/plugins/imageloader.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/plugins/imageloader.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -48,7 +48,7 @@ static bool firsttime=true; if(firsttime && m_ids.size()>0) { - startpost("GEM: image loading support:"); + startpost("GEM: image loading plugins:"); unsigned int i; for(i=0; i<m_ids.size(); i++) { startpost(" %s", m_ids[i].c_str()); diff -Nru gem-0.94~pre1/src/plugins/imagesaver.cpp gem-0.94/src/plugins/imagesaver.cpp --- gem-0.94~pre1/src/plugins/imagesaver.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/plugins/imagesaver.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -182,7 +182,7 @@ static bool firsttime=true; if(firsttime && m_ids.size()>0) { - startpost("GEM: image saving support:"); + startpost("GEM: image saving plugins:"); unsigned int i; for(i=0; i<m_ids.size(); i++) { startpost(" %s", m_ids[i].c_str()); diff -Nru gem-0.94~pre1/src/plugins/modelloader.cpp gem-0.94/src/plugins/modelloader.cpp --- gem-0.94~pre1/src/plugins/modelloader.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/plugins/modelloader.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -113,6 +113,17 @@ break; } } + + static bool firsttime=true; + if(firsttime && ids.size()>0) { + startpost("GEM: model loading plugins:"); + unsigned int i; + for(i=0; i<ids.size(); i++) { + startpost(" %s", ids[i].c_str()); + } + endpost(); + } + firsttime=false; } virtual ~modelloaderMeta(void) diff -Nru gem-0.94~pre1/src/plugins/PluginFactory.cpp gem-0.94/src/plugins/PluginFactory.cpp --- gem-0.94~pre1/src/plugins/PluginFactory.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/plugins/PluginFactory.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -72,21 +72,20 @@ unsigned int count=0; std::vector<std::string>files=gem::files::getFilenameListing(pattern); - unsigned int i=0; - for(i=0; i<files.size(); i++) { + for(unsigned int i=0; i<files.size(); i++) { GemDylib*dll=NULL; const std::string f=files[i]; // check whether this file has already been loaded // LATER make checks more sophisticated (like checking file-handles) bool alreadyloaded=false; - unsigned int j; - for(j=0; j<m_pimpl->p_loaded.size(); j++) + for(unsigned int j=0; j<m_pimpl->p_loaded.size(); j++) { if(f == m_pimpl->p_loaded[j]) { alreadyloaded=true; std::cerr << "not reloading '"<<f<<"'"<<std::endl; break; } + } if(alreadyloaded) { continue; } @@ -131,8 +130,7 @@ { std::vector<std::string>result; if(m_pimpl) { - std::map<std::string, void*>::iterator iter = m_pimpl->p_ctors.begin(); - for(; iter != m_pimpl->p_ctors.end(); ++iter) { + for(std::map<std::string, void*>::iterator iter = m_pimpl->p_ctors.begin(); iter != m_pimpl->p_ctors.end(); ++iter) { if(NULL!=iter->second) { result.push_back(iter->first); } diff -Nru gem-0.94~pre1/src/plugins/record.cpp gem-0.94/src/plugins/record.cpp --- gem-0.94~pre1/src/plugins/record.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/plugins/record.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -96,6 +96,17 @@ } } #endif + + static bool firsttime=true; + if(firsttime && m_ids.size()>0) { + startpost("GEM: video record plugins:"); + unsigned int i; + for(i=0; i<m_ids.size(); i++) { + startpost(" %s", m_ids[i].c_str()); + } + endpost(); + } + firsttime=false; } bool addPlugin( std::vector<std::string>available, std::string ID=std::string("")) diff -Nru gem-0.94~pre1/src/plugins/videoBase.cpp gem-0.94/src/plugins/videoBase.cpp --- gem-0.94~pre1/src/plugins/videoBase.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/plugins/videoBase.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -269,7 +269,7 @@ videoBase :: videoBase(const std::string&name, unsigned int locks) : m_capturing(false), m_haveVideo(false), m_width(64), m_height(64), - m_reqFormat(GL_RGBA_GEM), + m_reqFormat(GEM_RGBA), m_devicename(std::string("")), m_devicenum(0), m_pimpl(new PIMPL(name.empty()?std::string("<unknown>"):name, locks, 0)) { @@ -280,7 +280,7 @@ videoBase :: videoBase(const std::string&name) : m_capturing(false), m_haveVideo(false), m_width(64), m_height(64), - m_reqFormat(GL_RGBA_GEM), + m_reqFormat(GEM_RGBA), m_devicename(std::string("")), m_devicenum(0), m_pimpl(new PIMPL(name.empty()?std::string("<unknown>"):name, 1, 0)) { diff -Nru gem-0.94~pre1/src/plugins/video.cpp gem-0.94/src/plugins/video.cpp --- gem-0.94~pre1/src/plugins/video.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/plugins/video.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -132,6 +132,17 @@ break; } } + + static bool firsttime=true; + if(firsttime && ids.size()>0) { + startpost("GEM: video capture plugins:"); + unsigned int i; + for(i=0; i<ids.size(); i++) { + startpost(" %s", ids[i].c_str()); + } + endpost(); + } + firsttime=false; } virtual ~videoMeta(void) diff -Nru gem-0.94~pre1/src/Utils/any.h gem-0.94/src/Utils/any.h --- gem-0.94~pre1/src/Utils/any.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Utils/any.h 2019-02-12 13:10:01.000000000 +0000 @@ -27,6 +27,9 @@ #include <algorithm> #include <string> +#include "is_pointer.h" + +//#define GEM_ANY_TYPEID_HACK 1 namespace gem { @@ -70,7 +73,7 @@ struct type { static const std::type_info& get_type(void) { -#if 0 +#if GEM_ANY_TYPEID_HACK const std::type_info&res=typeid(T); // the following is a dummy use of the type_info struct // to make the template engine work properly on OSX/10.9 @@ -104,7 +107,7 @@ struct type { static const std::type_info& get_type(void) { -#if 0 +#if GEM_ANY_TYPEID_HACK const std::type_info&res=typeid(T); return res; #else @@ -292,6 +295,11 @@ { return (get_type() == typeid(T)); } + template<typename T> + bool compatible(T&x) const + { + return compatible<T>(); + } // implicit casting is disabled by default @@ -328,11 +336,10 @@ }; // boost::any-like casting - template<typename T> -T* any_cast(any* this_) +T* any_cast(any* this_, bool force) { - if (this_->get_type() != typeid(T)) { + if (!force && !this_->compatible<T>()) { throw bad_any_cast(this_->get_type(), typeid(T)); } if (sizeof(T) <= sizeof(void*)) { @@ -345,14 +352,42 @@ template<typename T> T const* any_cast(any const* this_) { - return any_cast<T>(const_cast<any*>(this_)); + return any_cast<T>(const_cast<any*>(this_), false); +} + +template<typename T> +T const& any_cast(any const& this_, bool force_pointers=false) +{ + return *any_cast<T>(const_cast<any*>(&this_), force_pointers && is_pointer<T>()); +} +#ifdef GEM_INTERNAL +// Note: The "unsafe" versions of any_cast are not part of the +// public interface (and hence protected by GEM_INTERNAL) and may +// be removed at any time. They are required where we know what type +// is stored in the any and can't use typeid() comparison, e.g., +// when our types may travel across different shared libraries. +template<typename T> +T* unsafe_any_cast(any* this_) +{ + if (sizeof(T) <= sizeof(void*)) { + return reinterpret_cast<T*>(&this_->object); + } else { + return reinterpret_cast<T*>(this_->object); + } } template<typename T> -T const& any_cast(any const& this_) +T const* unsafe_any_cast(any const* this_) { - return *any_cast<T>(const_cast<any*>(&this_)); + return unsafe_any_cast<T>(const_cast<any*>(this_)); } + +template<typename T> +T const& unsafe_any_cast(any const& this_) +{ + return *unsafe_any_cast<T>(const_cast<any*>(&this_)); +} +#endif } #ifdef _MSC_VER diff -Nru gem-0.94~pre1/src/Utils/Functions.cpp gem-0.94/src/Utils/Functions.cpp --- gem-0.94~pre1/src/Utils/Functions.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Utils/Functions.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Utils/GLUtil.cpp gem-0.94/src/Utils/GLUtil.cpp --- gem-0.94~pre1/src/Utils/GLUtil.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Utils/GLUtil.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -15,9 +15,13 @@ // ///////////////////////////////////////////////////////// +#include "Gem/GemConfig.h" #include "GLUtil.h" #include <map> #include "Gem/RTE.h" +#include "Gem/ContextData.h" + +#include <math.h> // I hate Microsoft...I shouldn't have to do this! #ifdef _WIN32 @@ -33,7 +37,12 @@ { GLenum err = glGetError(); if (verbose && GL_NO_ERROR != err) { - post("GL: %s",(char*)gluErrorString(err)); +#ifdef GEM_HAVE_GLU + post("GL[%d]: %s", err, (char*)gluErrorString(err)); +#else + post("GL: %d", err); +#endif + } // ensure we are returning an OSStatus noErr if no error condition if (err == GL_NO_ERROR) { @@ -46,7 +55,7 @@ #warning TODO: use gem::ContextData using namespace gem::utils::gl; struct gem::utils::gl::GLuintMap::PIMPL { - std::map<float, GLuint>idmap; + std::map<float, gem::ContextData<GLuint> >idmap; float nextfloat; PIMPL(void) : nextfloat(-0.5) @@ -61,7 +70,7 @@ } void del(float id) { - std::map<float,GLuint>::iterator it = idmap.find(id); + std::map<float,gem::ContextData<GLuint> >::iterator it = idmap.find(id); if(idmap.end() != it) { idmap.erase(it); } @@ -108,3 +117,118 @@ { m_pimpl->del(f); } + + +/* + * 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. + */ +#define __glPi 3.14159265358979323846 +static void normalize(float v[3]) +{ + float r; + + r = sqrt( v[0]*v[0] + v[1]*v[1] + v[2]*v[2] ); + if (r == 0.0) return; + + v[0] /= r; + v[1] /= r; + v[2] /= r; +} + +static void cross(float v1[3], float v2[3], float result[3]) +{ + result[0] = v1[1]*v2[2] - v1[2]*v2[1]; + result[1] = v1[2]*v2[0] - v1[0]*v2[2]; + result[2] = v1[0]*v2[1] - v1[1]*v2[0]; +} + +void gem::utils::gl::gluLookAt (GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz) { + float forward[3], side[3], up[3]; + GLfloat m[4][4]; + + forward[0] = centerx - eyex; + forward[1] = centery - eyey; + forward[2] = centerz - eyez; + + up[0] = upx; + up[1] = upy; + up[2] = upz; + + normalize(forward); + + /* Side = forward x up */ + cross(forward, up, side); + normalize(side); + + /* Recompute up as: up = side x forward */ + cross(side, forward, up); + + for(size_t i=0; i<4; i++) + for(size_t j=0; j<4; j++) + m[i][j] = (i==j)?1.:0.; + + m[0][0] = side[0]; + m[1][0] = side[1]; + m[2][0] = side[2]; + + m[0][1] = up[0]; + m[1][1] = up[1]; + m[2][1] = up[2]; + + m[0][2] = -forward[0]; + m[1][2] = -forward[1]; + m[2][2] = -forward[2]; + + glMultMatrixf(&m[0][0]); + glTranslated(-eyex, -eyey, -eyez); +} + +void gem::utils::gl::gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar) +{ + GLdouble m[4][4]; + double sine, cotangent, deltaZ; + double radians = fovy / 2 * __glPi / 180; + + deltaZ = zFar - zNear; + sine = sin(radians); + if ((deltaZ == 0) || (sine == 0) || (aspect == 0)) { + return; + } + cotangent = cos(radians) / sine; + for(size_t i=0; i<4; i++) + for(size_t j=0; j<4; j++) + m[i][j] = (i==j)?1.:0.; + m[0][0] = cotangent / aspect; + m[1][1] = cotangent; + m[2][2] = -(zFar + zNear) / deltaZ; + m[2][3] = -1; + m[3][2] = -2 * zNear * zFar / deltaZ; + m[3][3] = 0; + glMultMatrixd(&m[0][0]); +} diff -Nru gem-0.94~pre1/src/Utils/GLUtil_define.cpp gem-0.94/src/Utils/GLUtil_define.cpp --- gem-0.94~pre1/src/Utils/GLUtil_define.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Utils/GLUtil_define.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Utils/GLUtil_define_generated.h gem-0.94/src/Utils/GLUtil_define_generated.h --- gem-0.94~pre1/src/Utils/GLUtil_define_generated.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Utils/GLUtil_define_generated.h 2019-02-12 13:10:01.000000000 +0000 @@ -1,19727 +1,31894 @@ return _GL_UNDEFINED; case 4: +#ifdef GL_Q if (!strcmp(name, "GL_Q")) { return GL_Q; } +#endif +#ifdef GL_R if (!strcmp(name, "GL_R")) { return GL_R; } +#endif +#ifdef GL_S if (!strcmp(name, "GL_S")) { return GL_S; } +#endif +#ifdef GL_T if (!strcmp(name, "GL_T")) { return GL_T; } +#endif return _GL_UNDEFINED; case 5: +#ifdef GL_2D if (!strcmp(name, "GL_2D")) { return GL_2D; } +#endif +#ifdef GL_3D if (!strcmp(name, "GL_3D")) { return GL_3D; } +#endif +#ifdef GL_CW if (!strcmp(name, "GL_CW")) { return GL_CW; } +#endif +#ifdef GL_OR if (!strcmp(name, "GL_OR")) { return GL_OR; } +#endif +#ifdef GL_R8 if (!strcmp(name, "GL_R8")) { return GL_R8; } +#endif +#ifdef GL_RG if (!strcmp(name, "GL_RG")) { return GL_RG; } +#endif return _GL_UNDEFINED; case 6: +#ifdef GL_ADD if (!strcmp(name, "GL_ADD")) { return GL_ADD; } +#endif +#ifdef GL_AND if (!strcmp(name, "GL_AND")) { return GL_AND; } +#endif +#ifdef GL_BGR if (!strcmp(name, "GL_BGR")) { return GL_BGR; } +#endif +#ifdef GL_CCW if (!strcmp(name, "GL_CCW")) { return GL_CCW; } +#endif +#ifdef GL_EXP if (!strcmp(name, "GL_EXP")) { return GL_EXP; } +#endif +#ifdef GL_FOG if (!strcmp(name, "GL_FOG")) { return GL_FOG; } +#endif +#ifdef GL_INT if (!strcmp(name, "GL_INT")) { return GL_INT; } +#endif +#ifdef GL_MAX if (!strcmp(name, "GL_MAX")) { return GL_MAX; } +#endif +#ifdef GL_MIN if (!strcmp(name, "GL_MIN")) { return GL_MIN; } +#endif +#ifdef GL_NOR if (!strcmp(name, "GL_NOR")) { return GL_NOR; } +#endif +#ifdef GL_ONE if (!strcmp(name, "GL_ONE")) { return GL_ONE; } +#endif +#ifdef GL_R16 if (!strcmp(name, "GL_R16")) { return GL_R16; } +#endif +#ifdef GL_R8I if (!strcmp(name, "GL_R8I")) { return GL_R8I; } +#endif +#ifdef GL_RED if (!strcmp(name, "GL_RED")) { return GL_RED; } +#endif +#ifdef GL_RED +if (!strcmp(name, "GL_RED")) +{ + return GL_RED; +} +#endif +#ifdef GL_RG8 if (!strcmp(name, "GL_RG8")) { return GL_RG8; } +#endif +#ifdef GL_RGB if (!strcmp(name, "GL_RGB")) { return GL_RGB; } +#endif +#ifdef GL_SET if (!strcmp(name, "GL_SET")) { return GL_SET; } +#endif +#ifdef GL_V2F if (!strcmp(name, "GL_V2F")) { return GL_V2F; } +#endif +#ifdef GL_V3F if (!strcmp(name, "GL_V3F")) { return GL_V3F; } +#endif +#ifdef GL_XOR if (!strcmp(name, "GL_XOR")) { return GL_XOR; } +#endif return _GL_UNDEFINED; case 7: +#ifdef GL_AUX0 if (!strcmp(name, "GL_AUX0")) { return GL_AUX0; } +#endif +#ifdef GL_AUX1 if (!strcmp(name, "GL_AUX1")) { return GL_AUX1; } +#endif +#ifdef GL_AUX2 if (!strcmp(name, "GL_AUX2")) { return GL_AUX2; } +#endif +#ifdef GL_AUX3 if (!strcmp(name, "GL_AUX3")) { return GL_AUX3; } +#endif +#ifdef GL_BACK if (!strcmp(name, "GL_BACK")) { return GL_BACK; } +#endif +#ifdef GL_BGRA +if (!strcmp(name, "GL_BGRA")) +{ + return GL_BGRA; +} +#endif +#ifdef GL_BGRA if (!strcmp(name, "GL_BGRA")) { return GL_BGRA; } +#endif +#ifdef GL_BGRA +if (!strcmp(name, "GL_BGRA")) +{ + return GL_BGRA; +} +#endif +#ifdef GL_BLUE +if (!strcmp(name, "GL_BLUE")) +{ + return GL_BLUE; +} +#endif +#ifdef GL_BLUE if (!strcmp(name, "GL_BLUE")) { return GL_BLUE; } +#endif +#ifdef GL_BOOL if (!strcmp(name, "GL_BOOL")) { return GL_BOOL; } +#endif +#ifdef GL_BYTE if (!strcmp(name, "GL_BYTE")) { return GL_BYTE; } +#endif +#ifdef GL_COPY if (!strcmp(name, "GL_COPY")) { return GL_COPY; } +#endif +#ifdef GL_DECR if (!strcmp(name, "GL_DECR")) { return GL_DECR; } +#endif +#ifdef GL_EXP2 if (!strcmp(name, "GL_EXP2")) { return GL_EXP2; } +#endif +#ifdef GL_FILL if (!strcmp(name, "GL_FILL")) { return GL_FILL; } +#endif +#ifdef GL_FLAT if (!strcmp(name, "GL_FLAT")) { return GL_FLAT; } +#endif +#ifdef GL_INCR if (!strcmp(name, "GL_INCR")) { return GL_INCR; } +#endif +#ifdef GL_KEEP if (!strcmp(name, "GL_KEEP")) { return GL_KEEP; } +#endif +#ifdef GL_LEFT if (!strcmp(name, "GL_LEFT")) { return GL_LEFT; } +#endif +#ifdef GL_LESS if (!strcmp(name, "GL_LESS")) { return GL_LESS; } +#endif +#ifdef GL_LINE if (!strcmp(name, "GL_LINE")) { return GL_LINE; } +#endif +#ifdef GL_LOAD if (!strcmp(name, "GL_LOAD")) { return GL_LOAD; } +#endif +#ifdef GL_MULT if (!strcmp(name, "GL_MULT")) { return GL_MULT; } +#endif +#ifdef GL_NAND if (!strcmp(name, "GL_NAND")) { return GL_NAND; } +#endif +#ifdef GL_NONE if (!strcmp(name, "GL_NONE")) { return GL_NONE; } +#endif +#ifdef GL_NOOP if (!strcmp(name, "GL_NOOP")) { return GL_NOOP; } +#endif +#ifdef GL_R16F if (!strcmp(name, "GL_R16F")) { return GL_R16F; } +#endif +#ifdef GL_R16I if (!strcmp(name, "GL_R16I")) { return GL_R16I; } +#endif +#ifdef GL_R32F if (!strcmp(name, "GL_R32F")) { return GL_R32F; } +#endif +#ifdef GL_R32I if (!strcmp(name, "GL_R32I")) { return GL_R32I; } +#endif +#ifdef GL_R8UI if (!strcmp(name, "GL_R8UI")) { return GL_R8UI; } +#endif +#ifdef GL_RG16 if (!strcmp(name, "GL_RG16")) { return GL_RG16; } +#endif +#ifdef GL_RG8I if (!strcmp(name, "GL_RG8I")) { return GL_RG8I; } +#endif +#ifdef GL_RGB4 if (!strcmp(name, "GL_RGB4")) { return GL_RGB4; } +#endif +#ifdef GL_RGB5 if (!strcmp(name, "GL_RGB5")) { return GL_RGB5; } +#endif +#ifdef GL_RGB8 if (!strcmp(name, "GL_RGB8")) { return GL_RGB8; } +#endif +#ifdef GL_RGBA if (!strcmp(name, "GL_RGBA")) { return GL_RGBA; } +#endif +#ifdef GL_SRGB if (!strcmp(name, "GL_SRGB")) { return GL_SRGB; } +#endif +#ifdef GL_SRGB +if (!strcmp(name, "GL_SRGB")) +{ + return GL_SRGB; +} +#endif +#ifdef GL_TRUE if (!strcmp(name, "GL_TRUE")) { return GL_TRUE; } +#endif +#ifdef GL_TYPE if (!strcmp(name, "GL_TYPE")) { return GL_TYPE; } +#endif +#ifdef GL_ZERO if (!strcmp(name, "GL_ZERO")) { return GL_ZERO; } +#endif return _GL_UNDEFINED; case 8: +#ifdef GL_ACCUM if (!strcmp(name, "GL_ACCUM")) { return GL_ACCUM; } +#endif +#ifdef GL_ALPHA +if (!strcmp(name, "GL_ALPHA")) +{ + return GL_ALPHA; +} +#endif +#ifdef GL_ALPHA if (!strcmp(name, "GL_ALPHA")) { return GL_ALPHA; } +#endif +#ifdef GL_BLEND if (!strcmp(name, "GL_BLEND")) { return GL_BLEND; } +#endif +#ifdef GL_CLAMP if (!strcmp(name, "GL_CLAMP")) { return GL_CLAMP; } +#endif +#ifdef GL_CLEAR if (!strcmp(name, "GL_CLEAR")) { return GL_CLEAR; } +#endif +#ifdef GL_COEFF if (!strcmp(name, "GL_COEFF")) { return GL_COEFF; } +#endif +#ifdef GL_COLOR if (!strcmp(name, "GL_COLOR")) { return GL_COLOR; } +#endif +#ifdef GL_DECAL if (!strcmp(name, "GL_DECAL")) { return GL_DECAL; } +#endif +#ifdef GL_DEPTH if (!strcmp(name, "GL_DEPTH")) { return GL_DEPTH; } +#endif +#ifdef GL_EQUAL if (!strcmp(name, "GL_EQUAL")) { return GL_EQUAL; } +#endif +#ifdef GL_EQUIV if (!strcmp(name, "GL_EQUIV")) { return GL_EQUIV; } +#endif +#ifdef GL_FALSE if (!strcmp(name, "GL_FALSE")) { return GL_FALSE; } +#endif +#ifdef GL_FIXED if (!strcmp(name, "GL_FIXED")) { return GL_FIXED; } +#endif +#ifdef GL_FLOAT if (!strcmp(name, "GL_FLOAT")) { return GL_FLOAT; } +#endif +#ifdef GL_FRONT if (!strcmp(name, "GL_FRONT")) { return GL_FRONT; } +#endif +#ifdef GL_GREEN if (!strcmp(name, "GL_GREEN")) { return GL_GREEN; } +#endif +#ifdef GL_GREEN +if (!strcmp(name, "GL_GREEN")) +{ + return GL_GREEN; +} +#endif +#ifdef GL_INDEX if (!strcmp(name, "GL_INDEX")) { return GL_INDEX; } +#endif +#ifdef GL_LINES if (!strcmp(name, "GL_LINES")) { return GL_LINES; } +#endif +#ifdef GL_NEVER if (!strcmp(name, "GL_NEVER")) { return GL_NEVER; } +#endif +#ifdef GL_ORDER if (!strcmp(name, "GL_ORDER")) { return GL_ORDER; } +#endif +#ifdef GL_POINT if (!strcmp(name, "GL_POINT")) { return GL_POINT; } +#endif +#ifdef GL_QUADS if (!strcmp(name, "GL_QUADS")) { return GL_QUADS; } +#endif +#ifdef GL_QUERY if (!strcmp(name, "GL_QUERY")) { return GL_QUERY; } +#endif +#ifdef GL_R16UI if (!strcmp(name, "GL_R16UI")) { return GL_R16UI; } +#endif +#ifdef GL_R32UI if (!strcmp(name, "GL_R32UI")) { return GL_R32UI; } +#endif +#ifdef GL_RG16F if (!strcmp(name, "GL_RG16F")) { return GL_RG16F; } +#endif +#ifdef GL_RG16I if (!strcmp(name, "GL_RG16I")) { return GL_RG16I; } +#endif +#ifdef GL_RG32F if (!strcmp(name, "GL_RG32F")) { return GL_RG32F; } +#endif +#ifdef GL_RG32I if (!strcmp(name, "GL_RG32I")) { return GL_RG32I; } +#endif +#ifdef GL_RG8UI +if (!strcmp(name, "GL_RG8UI")) +{ + return GL_RG8UI; +} +#endif +#ifdef GL_RG8UI if (!strcmp(name, "GL_RG8UI")) { return GL_RG8UI; } +#endif +#ifdef GL_RGB10 if (!strcmp(name, "GL_RGB10")) { return GL_RGB10; } +#endif +#ifdef GL_RGB12 if (!strcmp(name, "GL_RGB12")) { return GL_RGB12; } +#endif +#ifdef GL_RGB16 if (!strcmp(name, "GL_RGB16")) { return GL_RGB16; } +#endif +#ifdef GL_RGB8I if (!strcmp(name, "GL_RGB8I")) { return GL_RGB8I; } +#endif +#ifdef GL_RGBA2 if (!strcmp(name, "GL_RGBA2")) { return GL_RGBA2; } +#endif +#ifdef GL_RGBA4 if (!strcmp(name, "GL_RGBA4")) { return GL_RGBA4; } +#endif +#ifdef GL_RGBA8 if (!strcmp(name, "GL_RGBA8")) { return GL_RGBA8; } +#endif +#ifdef GL_RIGHT if (!strcmp(name, "GL_RIGHT")) { return GL_RIGHT; } +#endif +#ifdef GL_SHORT if (!strcmp(name, "GL_SHORT")) { return GL_SHORT; } +#endif +#ifdef GL_SRGB8 if (!strcmp(name, "GL_SRGB8")) { return GL_SRGB8; } +#endif +#ifdef GL_W_EXT if (!strcmp(name, "GL_W_EXT")) { return GL_W_EXT; } +#endif +#ifdef GL_X_EXT if (!strcmp(name, "GL_X_EXT")) { return GL_X_EXT; } +#endif +#ifdef GL_Y_EXT if (!strcmp(name, "GL_Y_EXT")) { return GL_Y_EXT; } +#endif +#ifdef GL_Z_EXT if (!strcmp(name, "GL_Z_EXT")) { return GL_Z_EXT; } +#endif return _GL_UNDEFINED; case 9: +#ifdef GL_ALPHA4 if (!strcmp(name, "GL_ALPHA4")) { return GL_ALPHA4; } +#endif +#ifdef GL_ALPHA8 if (!strcmp(name, "GL_ALPHA8")) { return GL_ALPHA8; } +#endif +#ifdef GL_ALWAYS if (!strcmp(name, "GL_ALWAYS")) { return GL_ALWAYS; } +#endif +#ifdef GL_BITMAP if (!strcmp(name, "GL_BITMAP")) { return GL_BITMAP; } +#endif +#ifdef GL_BUFFER if (!strcmp(name, "GL_BUFFER")) { return GL_BUFFER; } +#endif +#ifdef GL_DITHER if (!strcmp(name, "GL_DITHER")) { return GL_DITHER; } +#endif +#ifdef GL_DOMAIN if (!strcmp(name, "GL_DOMAIN")) { return GL_DOMAIN; } +#endif +#ifdef GL_DOUBLE if (!strcmp(name, "GL_DOUBLE")) { return GL_DOUBLE; } +#endif +#ifdef GL_DST_NV if (!strcmp(name, "GL_DST_NV")) { return GL_DST_NV; } +#endif +#ifdef GL_FILTER if (!strcmp(name, "GL_FILTER")) { return GL_FILTER; } +#endif +#ifdef GL_GEQUAL if (!strcmp(name, "GL_GEQUAL")) { return GL_GEQUAL; } +#endif +#ifdef GL_INVERT if (!strcmp(name, "GL_INVERT")) { return GL_INVERT; } +#endif +#ifdef GL_LEQUAL if (!strcmp(name, "GL_LEQUAL")) { return GL_LEQUAL; } +#endif +#ifdef GL_LIGHT0 if (!strcmp(name, "GL_LIGHT0")) { return GL_LIGHT0; } +#endif +#ifdef GL_LIGHT1 if (!strcmp(name, "GL_LIGHT1")) { return GL_LIGHT1; } +#endif +#ifdef GL_LIGHT2 if (!strcmp(name, "GL_LIGHT2")) { return GL_LIGHT2; } +#endif +#ifdef GL_LIGHT3 if (!strcmp(name, "GL_LIGHT3")) { return GL_LIGHT3; } +#endif +#ifdef GL_LIGHT4 if (!strcmp(name, "GL_LIGHT4")) { return GL_LIGHT4; } +#endif +#ifdef GL_LIGHT5 if (!strcmp(name, "GL_LIGHT5")) { return GL_LIGHT5; } +#endif +#ifdef GL_LIGHT6 if (!strcmp(name, "GL_LIGHT6")) { return GL_LIGHT6; } +#endif +#ifdef GL_LIGHT7 if (!strcmp(name, "GL_LIGHT7")) { return GL_LIGHT7; } +#endif +#ifdef GL_LINEAR if (!strcmp(name, "GL_LINEAR")) { return GL_LINEAR; } +#endif +#ifdef GL_MINMAX if (!strcmp(name, "GL_MINMAX")) { return GL_MINMAX; } +#endif +#ifdef GL_MIPMAP if (!strcmp(name, "GL_MIPMAP")) { return GL_MIPMAP; } +#endif +#ifdef GL_NICEST if (!strcmp(name, "GL_NICEST")) { return GL_NICEST; } +#endif +#ifdef GL_OFFSET if (!strcmp(name, "GL_OFFSET")) { return GL_OFFSET; } +#endif +#ifdef GL_POINTS if (!strcmp(name, "GL_POINTS")) { return GL_POINTS; } +#endif +#ifdef GL_REDUCE if (!strcmp(name, "GL_REDUCE")) { return GL_REDUCE; } +#endif +#ifdef GL_RED_NV +if (!strcmp(name, "GL_RED_NV")) +{ + return GL_RED_NV; +} +#endif +#ifdef GL_RENDER if (!strcmp(name, "GL_RENDER")) { return GL_RENDER; } +#endif +#ifdef GL_REPEAT if (!strcmp(name, "GL_REPEAT")) { return GL_REPEAT; } +#endif +#ifdef GL_RETURN if (!strcmp(name, "GL_RETURN")) { return GL_RETURN; } +#endif +#ifdef GL_RG16UI +if (!strcmp(name, "GL_RG16UI")) +{ + return GL_RG16UI; +} +#endif +#ifdef GL_RG16UI if (!strcmp(name, "GL_RG16UI")) { return GL_RG16UI; } +#endif +#ifdef GL_RG32UI if (!strcmp(name, "GL_RG32UI")) { return GL_RG32UI; } +#endif +#ifdef GL_RGB16F if (!strcmp(name, "GL_RGB16F")) { return GL_RGB16F; } +#endif +#ifdef GL_RGB16I if (!strcmp(name, "GL_RGB16I")) { return GL_RGB16I; } +#endif +#ifdef GL_RGB32F if (!strcmp(name, "GL_RGB32F")) { return GL_RGB32F; } +#endif +#ifdef GL_RGB32I if (!strcmp(name, "GL_RGB32I")) { return GL_RGB32I; } +#endif +#ifdef GL_RGB565 if (!strcmp(name, "GL_RGB565")) { return GL_RGB565; } +#endif +#ifdef GL_RGB8UI if (!strcmp(name, "GL_RGB8UI")) { return GL_RGB8UI; } +#endif +#ifdef GL_RGBA12 if (!strcmp(name, "GL_RGBA12")) { return GL_RGBA12; } +#endif +#ifdef GL_RGBA16 if (!strcmp(name, "GL_RGBA16")) { return GL_RGBA16; } +#endif +#ifdef GL_RGBA8I if (!strcmp(name, "GL_RGBA8I")) { return GL_RGBA8I; } +#endif +#ifdef GL_SELECT if (!strcmp(name, "GL_SELECT")) { return GL_SELECT; } +#endif +#ifdef GL_SHADER if (!strcmp(name, "GL_SHADER")) { return GL_SHADER; } +#endif +#ifdef GL_SMOOTH if (!strcmp(name, "GL_SMOOTH")) { return GL_SMOOTH; } +#endif +#ifdef GL_SRC_NV if (!strcmp(name, "GL_SRC_NV")) { return GL_SRC_NV; } +#endif +#ifdef GL_STEREO if (!strcmp(name, "GL_STEREO")) { return GL_STEREO; } +#endif +#ifdef GL_VENDOR if (!strcmp(name, "GL_VENDOR")) { return GL_VENDOR; } +#endif +#ifdef GL_XOR_NV +if (!strcmp(name, "GL_XOR_NV")) +{ + return GL_XOR_NV; +} +#endif +#ifdef GL_ZOOM_X if (!strcmp(name, "GL_ZOOM_X")) { return GL_ZOOM_X; } +#endif +#ifdef GL_ZOOM_Y if (!strcmp(name, "GL_ZOOM_Y")) { return GL_ZOOM_Y; } +#endif return _GL_UNDEFINED; case 10: +#ifdef GL_2_BYTES if (!strcmp(name, "GL_2_BYTES")) { return GL_2_BYTES; } +#endif +#ifdef GL_3_BYTES if (!strcmp(name, "GL_3_BYTES")) { return GL_3_BYTES; } +#endif +#ifdef GL_422_EXT if (!strcmp(name, "GL_422_EXT")) { return GL_422_EXT; } +#endif +#ifdef GL_4_BYTES if (!strcmp(name, "GL_4_BYTES")) { return GL_4_BYTES; } +#endif +#ifdef GL_ADD_ATI if (!strcmp(name, "GL_ADD_ATI")) { return GL_ADD_ATI; } +#endif +#ifdef GL_ALPHA12 if (!strcmp(name, "GL_ALPHA12")) { return GL_ALPHA12; } +#endif +#ifdef GL_ALPHA16 if (!strcmp(name, "GL_ALPHA16")) { return GL_ALPHA16; } +#endif +#ifdef GL_AMBIENT if (!strcmp(name, "GL_AMBIENT")) { return GL_AMBIENT; } +#endif +#ifdef GL_BGR_EXT if (!strcmp(name, "GL_BGR_EXT")) { return GL_BGR_EXT; } +#endif +#ifdef GL_BLUE_NV +if (!strcmp(name, "GL_BLUE_NV")) +{ + return GL_BLUE_NV; +} +#endif +#ifdef GL_C3F_V3F if (!strcmp(name, "GL_C3F_V3F")) { return GL_C3F_V3F; } +#endif +#ifdef GL_CND_ATI if (!strcmp(name, "GL_CND_ATI")) { return GL_CND_ATI; } +#endif +#ifdef GL_COMBINE if (!strcmp(name, "GL_COMBINE")) { return GL_COMBINE; } +#endif +#ifdef GL_COMPILE if (!strcmp(name, "GL_COMPILE")) { return GL_COMPILE; } +#endif +#ifdef GL_DIFFUSE if (!strcmp(name, "GL_DIFFUSE")) { return GL_DIFFUSE; } +#endif +#ifdef GL_DSDT_NV +if (!strcmp(name, "GL_DSDT_NV")) +{ + return GL_DSDT_NV; +} +#endif +#ifdef GL_DSDT_NV if (!strcmp(name, "GL_DSDT_NV")) { return GL_DSDT_NV; } +#endif +#ifdef GL_FASTEST if (!strcmp(name, "GL_FASTEST")) { return GL_FASTEST; } +#endif +#ifdef GL_FOG_BIT if (!strcmp(name, "GL_FOG_BIT")) { return GL_FOG_BIT; } +#endif +#ifdef GL_FOG_END if (!strcmp(name, "GL_FOG_END")) { return GL_FOG_END; } +#endif +#ifdef GL_GREATER if (!strcmp(name, "GL_GREATER")) { return GL_GREATER; } +#endif +#ifdef GL_HILO_NV +if (!strcmp(name, "GL_HILO_NV")) +{ + return GL_HILO_NV; +} +#endif +#ifdef GL_HILO_NV if (!strcmp(name, "GL_HILO_NV")) { return GL_HILO_NV; } +#endif +#ifdef GL_INT8_NV if (!strcmp(name, "GL_INT8_NV")) { return GL_INT8_NV; } +#endif +#ifdef GL_LOW_INT if (!strcmp(name, "GL_LOW_INT")) { return GL_LOW_INT; } +#endif +#ifdef GL_MAD_ATI if (!strcmp(name, "GL_MAD_ATI")) { return GL_MAD_ATI; } +#endif +#ifdef GL_MAX_EXT if (!strcmp(name, "GL_MAX_EXT")) { return GL_MAX_EXT; } +#endif +#ifdef GL_MIN_EXT if (!strcmp(name, "GL_MIN_EXT")) { return GL_MIN_EXT; } +#endif +#ifdef GL_MOV_ATI if (!strcmp(name, "GL_MOV_ATI")) { return GL_MOV_ATI; } +#endif +#ifdef GL_MUL_ATI if (!strcmp(name, "GL_MUL_ATI")) { return GL_MUL_ATI; } +#endif +#ifdef GL_N3F_V3F if (!strcmp(name, "GL_N3F_V3F")) { return GL_N3F_V3F; } +#endif +#ifdef GL_NEAREST if (!strcmp(name, "GL_NEAREST")) { return GL_NEAREST; } +#endif +#ifdef GL_ONE_EXT if (!strcmp(name, "GL_ONE_EXT")) { return GL_ONE_EXT; } +#endif +#ifdef GL_PATCHES if (!strcmp(name, "GL_PATCHES")) { return GL_PATCHES; } +#endif +#ifdef GL_PLUS_NV if (!strcmp(name, "GL_PLUS_NV")) { return GL_PLUS_NV; } +#endif +#ifdef GL_POLYGON if (!strcmp(name, "GL_POLYGON")) { return GL_POLYGON; } +#endif +#ifdef GL_PROGRAM if (!strcmp(name, "GL_PROGRAM")) { return GL_PROGRAM; } +#endif +#ifdef GL_RECT_NV if (!strcmp(name, "GL_RECT_NV")) { return GL_RECT_NV; } +#endif +#ifdef GL_REPLACE if (!strcmp(name, "GL_REPLACE")) { return GL_REPLACE; } +#endif +#ifdef GL_RGB16UI if (!strcmp(name, "GL_RGB16UI")) { return GL_RGB16UI; } +#endif +#ifdef GL_RGB32UI if (!strcmp(name, "GL_RGB32UI")) { return GL_RGB32UI; } +#endif +#ifdef GL_RGB5_A1 if (!strcmp(name, "GL_RGB5_A1")) { return GL_RGB5_A1; } +#endif +#ifdef GL_RGB9_E5 if (!strcmp(name, "GL_RGB9_E5")) { return GL_RGB9_E5; } +#endif +#ifdef GL_RGBA16F if (!strcmp(name, "GL_RGBA16F")) { return GL_RGBA16F; } +#endif +#ifdef GL_RGBA16I if (!strcmp(name, "GL_RGBA16I")) { return GL_RGBA16I; } +#endif +#ifdef GL_RGBA32F if (!strcmp(name, "GL_RGBA32F")) { return GL_RGBA32F; } +#endif +#ifdef GL_RGBA32I if (!strcmp(name, "GL_RGBA32I")) { return GL_RGBA32I; } +#endif +#ifdef GL_RGBA8UI +if (!strcmp(name, "GL_RGBA8UI")) +{ + return GL_RGBA8UI; +} +#endif +#ifdef GL_RGBA8UI if (!strcmp(name, "GL_RGBA8UI")) { return GL_RGBA8UI; } +#endif +#ifdef GL_S3_s3tc if (!strcmp(name, "GL_S3_s3tc")) { return GL_S3_s3tc; } +#endif +#ifdef GL_SAMPLER if (!strcmp(name, "GL_SAMPLER")) { return GL_SAMPLER; } +#endif +#ifdef GL_SAMPLES if (!strcmp(name, "GL_SAMPLES")) { return GL_SAMPLES; } +#endif +#ifdef GL_SET_AMD if (!strcmp(name, "GL_SET_AMD")) { return GL_SET_AMD; } +#endif +#ifdef GL_STENCIL if (!strcmp(name, "GL_STENCIL")) { return GL_STENCIL; } +#endif +#ifdef GL_SUB_ATI if (!strcmp(name, "GL_SUB_ATI")) { return GL_SUB_ATI; } +#endif +#ifdef GL_T2F_V3F if (!strcmp(name, "GL_T2F_V3F")) { return GL_T2F_V3F; } +#endif +#ifdef GL_T4F_V4F if (!strcmp(name, "GL_T4F_V4F")) { return GL_T4F_V4F; } +#endif +#ifdef GL_TEXTURE if (!strcmp(name, "GL_TEXTURE")) { return GL_TEXTURE; } +#endif +#ifdef GL_UNIFORM if (!strcmp(name, "GL_UNIFORM")) { return GL_UNIFORM; } +#endif +#ifdef GL_UTF8_NV if (!strcmp(name, "GL_UTF8_NV")) { return GL_UTF8_NV; } +#endif +#ifdef GL_VERSION if (!strcmp(name, "GL_VERSION")) { return GL_VERSION; } +#endif return _GL_UNDEFINED; case 11: +#ifdef GL_3D_COLOR if (!strcmp(name, "GL_3D_COLOR")) { return GL_3D_COLOR; } +#endif +#ifdef GL_ABGR_EXT if (!strcmp(name, "GL_ABGR_EXT")) { return GL_ABGR_EXT; } +#endif +#ifdef GL_ARB_sync if (!strcmp(name, "GL_ARB_sync")) { return GL_ARB_sync; } +#endif +#ifdef GL_BEVEL_NV if (!strcmp(name, "GL_BEVEL_NV")) { return GL_BEVEL_NV; } +#endif +#ifdef GL_BGRA_EXT if (!strcmp(name, "GL_BGRA_EXT")) { return GL_BGRA_EXT; } +#endif +#ifdef GL_BOOL_ARB if (!strcmp(name, "GL_BOOL_ARB")) { return GL_BOOL_ARB; } +#endif +#ifdef GL_C4UB_V2F if (!strcmp(name, "GL_C4UB_V2F")) { return GL_C4UB_V2F; } +#endif +#ifdef GL_C4UB_V3F if (!strcmp(name, "GL_C4UB_V3F")) { return GL_C4UB_V3F; } +#endif +#ifdef GL_CMYK_EXT if (!strcmp(name, "GL_CMYK_EXT")) { return GL_CMYK_EXT; } +#endif +#ifdef GL_CND0_ATI if (!strcmp(name, "GL_CND0_ATI")) { return GL_CND0_ATI; } +#endif +#ifdef GL_CONSTANT if (!strcmp(name, "GL_CONSTANT")) { return GL_CONSTANT; } +#endif +#ifdef GL_DOT3_ATI if (!strcmp(name, "GL_DOT3_ATI")) { return GL_DOT3_ATI; } +#endif +#ifdef GL_DOT3_RGB if (!strcmp(name, "GL_DOT3_RGB")) { return GL_DOT3_RGB; } +#endif +#ifdef GL_DOT4_ATI if (!strcmp(name, "GL_DOT4_ATI")) { return GL_DOT4_ATI; } +#endif +#ifdef GL_DSDT8_NV +if (!strcmp(name, "GL_DSDT8_NV")) +{ + return GL_DSDT8_NV; +} +#endif +#ifdef GL_DSDT8_NV if (!strcmp(name, "GL_DSDT8_NV")) { return GL_DSDT8_NV; } +#endif +#ifdef GL_DUDV_ATI if (!strcmp(name, "GL_DUDV_ATI")) { return GL_DUDV_ATI; } +#endif +#ifdef GL_EMISSION if (!strcmp(name, "GL_EMISSION")) { return GL_EMISSION; } +#endif +#ifdef GL_EVAL_BIT if (!strcmp(name, "GL_EVAL_BIT")) { return GL_EVAL_BIT; } +#endif +#ifdef GL_EXT_abgr if (!strcmp(name, "GL_EXT_abgr")) { return GL_EXT_abgr; } +#endif +#ifdef GL_EXT_bgra if (!strcmp(name, "GL_EXT_bgra")) { return GL_EXT_bgra; } +#endif +#ifdef GL_FEEDBACK if (!strcmp(name, "GL_FEEDBACK")) { return GL_FEEDBACK; } +#endif +#ifdef GL_FOG_HINT if (!strcmp(name, "GL_FOG_HINT")) { return GL_FOG_HINT; } +#endif +#ifdef GL_FOG_MODE if (!strcmp(name, "GL_FOG_MODE")) { return GL_FOG_MODE; } +#endif +#ifdef GL_FRAME_NV if (!strcmp(name, "GL_FRAME_NV")) { return GL_FRAME_NV; } +#endif +#ifdef GL_FUNC_ADD if (!strcmp(name, "GL_FUNC_ADD")) { return GL_FUNC_ADD; } +#endif +#ifdef GL_GREEN_NV +if (!strcmp(name, "GL_GREEN_NV")) +{ + return GL_GREEN_NV; +} +#endif +#ifdef GL_HIGH_INT if (!strcmp(name, "GL_HIGH_INT")) { return GL_HIGH_INT; } +#endif +#ifdef GL_HILO8_NV if (!strcmp(name, "GL_HILO8_NV")) { return GL_HILO8_NV; } +#endif +#ifdef GL_HINT_BIT if (!strcmp(name, "GL_HINT_BIT")) { return GL_HINT_BIT; } +#endif +#ifdef GL_IMAGE_1D if (!strcmp(name, "GL_IMAGE_1D")) { return GL_IMAGE_1D; } +#endif +#ifdef GL_IMAGE_2D if (!strcmp(name, "GL_IMAGE_2D")) { return GL_IMAGE_2D; } +#endif +#ifdef GL_IMAGE_3D if (!strcmp(name, "GL_IMAGE_3D")) { return GL_IMAGE_3D; } +#endif +#ifdef GL_INT16_NV if (!strcmp(name, "GL_INT16_NV")) { return GL_INT16_NV; } +#endif +#ifdef GL_INT64_NV +if (!strcmp(name, "GL_INT64_NV")) +{ + return GL_INT64_NV; +} +#endif +#ifdef GL_INT64_NV if (!strcmp(name, "GL_INT64_NV")) { return GL_INT64_NV; } +#endif +#ifdef GL_INT_VEC2 if (!strcmp(name, "GL_INT_VEC2")) { return GL_INT_VEC2; } +#endif +#ifdef GL_INT_VEC3 if (!strcmp(name, "GL_INT_VEC3")) { return GL_INT_VEC3; } +#endif +#ifdef GL_INT_VEC4 if (!strcmp(name, "GL_INT_VEC4")) { return GL_INT_VEC4; } +#endif +#ifdef GL_ISOLINES if (!strcmp(name, "GL_ISOLINES")) { return GL_ISOLINES; } +#endif +#ifdef GL_LERP_ATI if (!strcmp(name, "GL_LERP_ATI")) { return GL_LERP_ATI; } +#endif +#ifdef GL_LIGHTING if (!strcmp(name, "GL_LIGHTING")) { return GL_LIGHTING; } +#endif +#ifdef GL_LINE_BIT if (!strcmp(name, "GL_LINE_BIT")) { return GL_LINE_BIT; } +#endif +#ifdef GL_LIST_BIT if (!strcmp(name, "GL_LIST_BIT")) { return GL_LIST_BIT; } +#endif +#ifdef GL_LOCATION if (!strcmp(name, "GL_LOCATION")) { return GL_LOCATION; } +#endif +#ifdef GL_LOGIC_OP if (!strcmp(name, "GL_LOGIC_OP")) { return GL_LOGIC_OP; } +#endif +#ifdef GL_MINUS_NV if (!strcmp(name, "GL_MINUS_NV")) { return GL_MINUS_NV; } +#endif +#ifdef GL_MODULATE if (!strcmp(name, "GL_MODULATE")) { return GL_MODULATE; } -if (!strcmp(name, "GL_NO_ERROR")) -{ - return GL_NO_ERROR; -} +#endif +#ifdef GL_NOTEQUAL if (!strcmp(name, "GL_NOTEQUAL")) { return GL_NOTEQUAL; } +#endif +#ifdef GL_NO_ERROR +if (!strcmp(name, "GL_NO_ERROR")) +{ + return GL_NO_ERROR; +} +#endif +#ifdef GL_NV_fence if (!strcmp(name, "GL_NV_fence")) { return GL_NV_fence; } +#endif +#ifdef GL_POSITION if (!strcmp(name, "GL_POSITION")) { return GL_POSITION; } +#endif +#ifdef GL_PREVIOUS if (!strcmp(name, "GL_PREVIOUS")) { return GL_PREVIOUS; } +#endif +#ifdef GL_R3_G3_B2 if (!strcmp(name, "GL_R3_G3_B2")) { return GL_R3_G3_B2; } +#endif +#ifdef GL_R8_SNORM if (!strcmp(name, "GL_R8_SNORM")) { return GL_R8_SNORM; } +#endif +#ifdef GL_R8_SNORM +if (!strcmp(name, "GL_R8_SNORM")) +{ + return GL_R8_SNORM; +} +#endif +#ifdef GL_RED_BIAS if (!strcmp(name, "GL_RED_BIAS")) { return GL_RED_BIAS; } +#endif +#ifdef GL_RED_BITS if (!strcmp(name, "GL_RED_BITS")) { return GL_RED_BITS; } +#endif +#ifdef GL_RENDERER if (!strcmp(name, "GL_RENDERER")) { return GL_RENDERER; } +#endif +#ifdef GL_RGB10_A2 if (!strcmp(name, "GL_RGB10_A2")) { return GL_RGB10_A2; } +#endif +#ifdef GL_RGB2_EXT if (!strcmp(name, "GL_RGB2_EXT")) { return GL_RGB2_EXT; } +#endif +#ifdef GL_RGB4_EXT if (!strcmp(name, "GL_RGB4_EXT")) { return GL_RGB4_EXT; } +#endif +#ifdef GL_RGB5_EXT if (!strcmp(name, "GL_RGB5_EXT")) { return GL_RGB5_EXT; } +#endif +#ifdef GL_RGB8_EXT if (!strcmp(name, "GL_RGB8_EXT")) { return GL_RGB8_EXT; } +#endif +#ifdef GL_RGBA16UI if (!strcmp(name, "GL_RGBA16UI")) { return GL_RGBA16UI; } +#endif +#ifdef GL_RGBA32UI if (!strcmp(name, "GL_RGBA32UI")) { return GL_RGBA32UI; } +#endif +#ifdef GL_RGB_S3TC if (!strcmp(name, "GL_RGB_S3TC")) { return GL_RGB_S3TC; } +#endif +#ifdef GL_RG_SNORM +if (!strcmp(name, "GL_RG_SNORM")) +{ + return GL_RG_SNORM; +} +#endif +#ifdef GL_RG_SNORM if (!strcmp(name, "GL_RG_SNORM")) { return GL_RG_SNORM; } +#endif +#ifdef GL_ROUND_NV if (!strcmp(name, "GL_ROUND_NV")) { return GL_ROUND_NV; } +#endif +#ifdef GL_SIGNALED if (!strcmp(name, "GL_SIGNALED")) { return GL_SIGNALED; } +#endif +#ifdef GL_SPECULAR if (!strcmp(name, "GL_SPECULAR")) { return GL_SPECULAR; } +#endif +#ifdef GL_SRC0_RGB if (!strcmp(name, "GL_SRC0_RGB")) { return GL_SRC0_RGB; } +#endif +#ifdef GL_SRC1_RGB if (!strcmp(name, "GL_SRC1_RGB")) { return GL_SRC1_RGB; } +#endif +#ifdef GL_SRC2_RGB if (!strcmp(name, "GL_SRC2_RGB")) { return GL_SRC2_RGB; } +#endif +#ifdef GL_SRGB_EXT if (!strcmp(name, "GL_SRGB_EXT")) { return GL_SRGB_EXT; } +#endif +#ifdef GL_SUBTRACT if (!strcmp(name, "GL_SUBTRACT")) { return GL_SUBTRACT; } +#endif +#ifdef GL_TEXTURE0 if (!strcmp(name, "GL_TEXTURE0")) { return GL_TEXTURE0; } +#endif +#ifdef GL_TEXTURE1 if (!strcmp(name, "GL_TEXTURE1")) { return GL_TEXTURE1; } +#endif +#ifdef GL_TEXTURE2 if (!strcmp(name, "GL_TEXTURE2")) { return GL_TEXTURE2; } +#endif +#ifdef GL_TEXTURE3 if (!strcmp(name, "GL_TEXTURE3")) { return GL_TEXTURE3; } +#endif +#ifdef GL_TEXTURE4 if (!strcmp(name, "GL_TEXTURE4")) { return GL_TEXTURE4; } +#endif +#ifdef GL_TEXTURE5 if (!strcmp(name, "GL_TEXTURE5")) { return GL_TEXTURE5; } +#endif +#ifdef GL_TEXTURE6 if (!strcmp(name, "GL_TEXTURE6")) { return GL_TEXTURE6; } +#endif +#ifdef GL_TEXTURE7 if (!strcmp(name, "GL_TEXTURE7")) { return GL_TEXTURE7; } +#endif +#ifdef GL_TEXTURE8 if (!strcmp(name, "GL_TEXTURE8")) { return GL_TEXTURE8; } +#endif +#ifdef GL_TEXTURE9 if (!strcmp(name, "GL_TEXTURE9")) { return GL_TEXTURE9; } +#endif +#ifdef GL_UTF16_NV if (!strcmp(name, "GL_UTF16_NV")) { return GL_UTF16_NV; } +#endif +#ifdef GL_VIEWPORT if (!strcmp(name, "GL_VIEWPORT")) { return GL_VIEWPORT; } +#endif +#ifdef GL_VIEWPORT +if (!strcmp(name, "GL_VIEWPORT")) +{ + return GL_VIEWPORT; +} +#endif +#ifdef GL_ZERO_EXT if (!strcmp(name, "GL_ZERO_EXT")) { return GL_ZERO_EXT; } +#endif return _GL_UNDEFINED; case 12: +#ifdef GL_1PASS_EXT if (!strcmp(name, "GL_1PASS_EXT")) { return GL_1PASS_EXT; } +#endif +#ifdef GL_ARC_TO_NV if (!strcmp(name, "GL_ARC_TO_NV")) { return GL_ARC_TO_NV; } +#endif +#ifdef GL_BACK_LEFT if (!strcmp(name, "GL_BACK_LEFT")) { return GL_BACK_LEFT; } +#endif +#ifdef GL_BLEND_DST if (!strcmp(name, "GL_BLEND_DST")) { return GL_BLEND_DST; } +#endif +#ifdef GL_BLEND_SRC if (!strcmp(name, "GL_BLEND_SRC")) { return GL_BLEND_SRC; } +#endif +#ifdef GL_BLUE_BIAS if (!strcmp(name, "GL_BLUE_BIAS")) { return GL_BLUE_BIAS; } +#endif +#ifdef GL_BLUE_BITS if (!strcmp(name, "GL_BLUE_BITS")) { return GL_BLUE_BITS; } +#endif +#ifdef GL_BOOL_VEC2 if (!strcmp(name, "GL_BOOL_VEC2")) { return GL_BOOL_VEC2; } +#endif +#ifdef GL_BOOL_VEC3 if (!strcmp(name, "GL_BOOL_VEC3")) { return GL_BOOL_VEC3; } +#endif +#ifdef GL_BOOL_VEC4 if (!strcmp(name, "GL_BOOL_VEC4")) { return GL_BOOL_VEC4; } +#endif +#ifdef GL_CMYKA_EXT if (!strcmp(name, "GL_CMYKA_EXT")) { return GL_CMYKA_EXT; } +#endif +#ifdef GL_COLOR_SUM if (!strcmp(name, "GL_COLOR_SUM")) { return GL_COLOR_SUM; } +#endif +#ifdef GL_CON_0_ATI if (!strcmp(name, "GL_CON_0_ATI")) { return GL_CON_0_ATI; } +#endif +#ifdef GL_CON_1_ATI if (!strcmp(name, "GL_CON_1_ATI")) { return GL_CON_1_ATI; } +#endif +#ifdef GL_CON_2_ATI if (!strcmp(name, "GL_CON_2_ATI")) { return GL_CON_2_ATI; } +#endif +#ifdef GL_CON_3_ATI if (!strcmp(name, "GL_CON_3_ATI")) { return GL_CON_3_ATI; } +#endif +#ifdef GL_CON_4_ATI if (!strcmp(name, "GL_CON_4_ATI")) { return GL_CON_4_ATI; } +#endif +#ifdef GL_CON_5_ATI if (!strcmp(name, "GL_CON_5_ATI")) { return GL_CON_5_ATI; } +#endif +#ifdef GL_CON_6_ATI if (!strcmp(name, "GL_CON_6_ATI")) { return GL_CON_6_ATI; } +#endif +#ifdef GL_CON_7_ATI if (!strcmp(name, "GL_CON_7_ATI")) { return GL_CON_7_ATI; } +#endif +#ifdef GL_CUBIC_EXT if (!strcmp(name, "GL_CUBIC_EXT")) { return GL_CUBIC_EXT; } +#endif +#ifdef GL_CULL_FACE if (!strcmp(name, "GL_CULL_FACE")) { return GL_CULL_FACE; } +#endif +#ifdef GL_DARKEN_NV if (!strcmp(name, "GL_DARKEN_NV")) { return GL_DARKEN_NV; } +#endif +#ifdef GL_DECR_WRAP if (!strcmp(name, "GL_DECR_WRAP")) { return GL_DECR_WRAP; } +#endif +#ifdef GL_DONT_CARE if (!strcmp(name, "GL_DONT_CARE")) { return GL_DONT_CARE; } +#endif +#ifdef GL_DOT3_RGBA if (!strcmp(name, "GL_DOT3_RGBA")) { return GL_DOT3_RGBA; } +#endif +#ifdef GL_DST_ALPHA if (!strcmp(name, "GL_DST_ALPHA")) { return GL_DST_ALPHA; } +#endif +#ifdef GL_DST_COLOR if (!strcmp(name, "GL_DST_COLOR")) { return GL_DST_COLOR; } +#endif +#ifdef GL_DST_IN_NV if (!strcmp(name, "GL_DST_IN_NV")) { return GL_DST_IN_NV; } +#endif +#ifdef GL_EDGE_FLAG if (!strcmp(name, "GL_EDGE_FLAG")) { return GL_EDGE_FLAG; } +#endif +#ifdef GL_EXT_cmyka if (!strcmp(name, "GL_EXT_cmyka")) { return GL_EXT_cmyka; } +#endif +#ifdef GL_EYE_PLANE if (!strcmp(name, "GL_EYE_PLANE")) { return GL_EYE_PLANE; } +#endif +#ifdef GL_FIELDS_NV if (!strcmp(name, "GL_FIELDS_NV")) { return GL_FIELDS_NV; } +#endif +#ifdef GL_FOG_COLOR if (!strcmp(name, "GL_FOG_COLOR")) { return GL_FOG_COLOR; } +#endif +#ifdef GL_FOG_COORD if (!strcmp(name, "GL_FOG_COORD")) { return GL_FOG_COORD; } +#endif +#ifdef GL_FOG_INDEX if (!strcmp(name, "GL_FOG_INDEX")) { return GL_FOG_INDEX; } +#endif +#ifdef GL_FOG_START if (!strcmp(name, "GL_FOG_START")) { return GL_FOG_START; } +#endif +#ifdef GL_HILO16_NV +if (!strcmp(name, "GL_HILO16_NV")) +{ + return GL_HILO16_NV; +} +#endif +#ifdef GL_HILO16_NV if (!strcmp(name, "GL_HILO16_NV")) { return GL_HILO16_NV; } +#endif +#ifdef GL_HISTOGRAM if (!strcmp(name, "GL_HISTOGRAM")) { return GL_HISTOGRAM; } +#endif +#ifdef GL_INCR_WRAP if (!strcmp(name, "GL_INCR_WRAP")) { return GL_INCR_WRAP; } +#endif +#ifdef GL_INT64_ARB +if (!strcmp(name, "GL_INT64_ARB")) +{ + return GL_INT64_ARB; +} +#endif +#ifdef GL_INTENSITY if (!strcmp(name, "GL_INTENSITY")) { return GL_INTENSITY; } +#endif +#ifdef GL_KHR_debug if (!strcmp(name, "GL_KHR_debug")) { return GL_KHR_debug; } +#endif +#ifdef GL_LINE_LOOP if (!strcmp(name, "GL_LINE_LOOP")) { return GL_LINE_LOOP; } +#endif +#ifdef GL_LIST_BASE if (!strcmp(name, "GL_LIST_BASE")) { return GL_LIST_BASE; } +#endif +#ifdef GL_LIST_MODE if (!strcmp(name, "GL_LIST_MODE")) { return GL_LIST_MODE; } +#endif +#ifdef GL_LOCAL_EXT if (!strcmp(name, "GL_LOCAL_EXT")) { return GL_LOCAL_EXT; } +#endif +#ifdef GL_LOG_REGAL if (!strcmp(name, "GL_LOG_REGAL")) { return GL_LOG_REGAL; } +#endif +#ifdef GL_LOW_FLOAT if (!strcmp(name, "GL_LOW_FLOAT")) { return GL_LOW_FLOAT; } +#endif +#ifdef GL_LUMINANCE if (!strcmp(name, "GL_LUMINANCE")) { return GL_LUMINANCE; } +#endif +#ifdef GL_MAP_COLOR if (!strcmp(name, "GL_MAP_COLOR")) { return GL_MAP_COLOR; } +#endif +#ifdef GL_MAX_DEPTH if (!strcmp(name, "GL_MAX_DEPTH")) { return GL_MAX_DEPTH; } +#endif +#ifdef GL_MAX_WIDTH if (!strcmp(name, "GL_MAX_WIDTH")) { return GL_MAX_WIDTH; } +#endif +#ifdef GL_MODELVIEW if (!strcmp(name, "GL_MODELVIEW")) { return GL_MODELVIEW; } +#endif +#ifdef GL_NORMALIZE if (!strcmp(name, "GL_NORMALIZE")) { return GL_NORMALIZE; } +#endif +#ifdef GL_PHONG_WIN if (!strcmp(name, "GL_PHONG_WIN")) { return GL_PHONG_WIN; } +#endif +#ifdef GL_POINT_BIT if (!strcmp(name, "GL_POINT_BIT")) { return GL_POINT_BIT; } +#endif +#ifdef GL_R16_SNORM +if (!strcmp(name, "GL_R16_SNORM")) +{ + return GL_R16_SNORM; +} +#endif +#ifdef GL_R16_SNORM if (!strcmp(name, "GL_R16_SNORM")) { return GL_R16_SNORM; } +#endif +#ifdef GL_READ_ONLY if (!strcmp(name, "GL_READ_ONLY")) { return GL_READ_ONLY; } +#endif +#ifdef GL_RED_SCALE if (!strcmp(name, "GL_RED_SCALE")) { return GL_RED_SCALE; } +#endif +#ifdef GL_RED_SNORM +if (!strcmp(name, "GL_RED_SNORM")) +{ + return GL_RED_SNORM; +} +#endif +#ifdef GL_RED_SNORM if (!strcmp(name, "GL_RED_SNORM")) { return GL_RED_SNORM; } +#endif +#ifdef GL_REGAL_log +if (!strcmp(name, "GL_REGAL_log")) +{ + return GL_REGAL_log; +} +#endif +#ifdef GL_REG_0_ATI if (!strcmp(name, "GL_REG_0_ATI")) { return GL_REG_0_ATI; } +#endif +#ifdef GL_REG_1_ATI if (!strcmp(name, "GL_REG_1_ATI")) { return GL_REG_1_ATI; } +#endif +#ifdef GL_REG_2_ATI if (!strcmp(name, "GL_REG_2_ATI")) { return GL_REG_2_ATI; } +#endif +#ifdef GL_REG_3_ATI if (!strcmp(name, "GL_REG_3_ATI")) { return GL_REG_3_ATI; } +#endif +#ifdef GL_REG_4_ATI if (!strcmp(name, "GL_REG_4_ATI")) { return GL_REG_4_ATI; } +#endif +#ifdef GL_REG_5_ATI if (!strcmp(name, "GL_REG_5_ATI")) { return GL_REG_5_ATI; } -if (!strcmp(name, "GL_REGAL_log")) +#endif +#ifdef GL_RG8_SNORM +if (!strcmp(name, "GL_RG8_SNORM")) { - return GL_REGAL_log; + return GL_RG8_SNORM; } +#endif +#ifdef GL_RG8_SNORM if (!strcmp(name, "GL_RG8_SNORM")) { return GL_RG8_SNORM; } +#endif +#ifdef GL_RGB10_EXT if (!strcmp(name, "GL_RGB10_EXT")) { return GL_RGB10_EXT; } +#endif +#ifdef GL_RGB12_EXT if (!strcmp(name, "GL_RGB12_EXT")) { return GL_RGB12_EXT; } +#endif +#ifdef GL_RGB16_EXT if (!strcmp(name, "GL_RGB16_EXT")) { return GL_RGB16_EXT; } +#endif +#ifdef GL_RGB4_S3TC if (!strcmp(name, "GL_RGB4_S3TC")) { return GL_RGB4_S3TC; } +#endif +#ifdef GL_RGB8I_EXT if (!strcmp(name, "GL_RGB8I_EXT")) { return GL_RGB8I_EXT; } +#endif +#ifdef GL_RGBA2_EXT if (!strcmp(name, "GL_RGBA2_EXT")) { return GL_RGBA2_EXT; } +#endif +#ifdef GL_RGBA4_EXT if (!strcmp(name, "GL_RGBA4_EXT")) { return GL_RGBA4_EXT; } +#endif +#ifdef GL_RGBA8_EXT if (!strcmp(name, "GL_RGBA8_EXT")) { return GL_RGBA8_EXT; } +#endif +#ifdef GL_RGBA_MODE if (!strcmp(name, "GL_RGBA_MODE")) { return GL_RGBA_MODE; } +#endif +#ifdef GL_RGBA_S3TC if (!strcmp(name, "GL_RGBA_S3TC")) { return GL_RGBA_S3TC; } +#endif +#ifdef GL_RGB_SCALE if (!strcmp(name, "GL_RGB_SCALE")) { return GL_RGB_SCALE; } +#endif +#ifdef GL_RGB_SNORM +if (!strcmp(name, "GL_RGB_SNORM")) +{ + return GL_RGB_SNORM; +} +#endif +#ifdef GL_RGB_SNORM if (!strcmp(name, "GL_RGB_SNORM")) { return GL_RGB_SNORM; } +#endif +#ifdef GL_SCREEN_NV if (!strcmp(name, "GL_SCREEN_NV")) { return GL_SCREEN_NV; } +#endif +#ifdef GL_SHININESS if (!strcmp(name, "GL_SHININESS")) { return GL_SHININESS; } +#endif +#ifdef GL_SPARE0_NV if (!strcmp(name, "GL_SPARE0_NV")) { return GL_SPARE0_NV; } +#endif +#ifdef GL_SPARE1_NV if (!strcmp(name, "GL_SPARE1_NV")) { return GL_SPARE1_NV; } +#endif +#ifdef GL_SQUARE_NV if (!strcmp(name, "GL_SQUARE_NV")) { return GL_SQUARE_NV; } +#endif +#ifdef GL_SRC_ALPHA if (!strcmp(name, "GL_SRC_ALPHA")) { return GL_SRC_ALPHA; } +#endif +#ifdef GL_SRC_COLOR if (!strcmp(name, "GL_SRC_COLOR")) { return GL_SRC_COLOR; } +#endif +#ifdef GL_SRC_IN_NV if (!strcmp(name, "GL_SRC_IN_NV")) { return GL_SRC_IN_NV; } +#endif +#ifdef GL_SRGB8_EXT if (!strcmp(name, "GL_SRGB8_EXT")) { return GL_SRGB8_EXT; } +#endif +#ifdef GL_SRGB_READ if (!strcmp(name, "GL_SRGB_READ")) { return GL_SRGB_READ; } +#endif +#ifdef GL_TEXTURE10 if (!strcmp(name, "GL_TEXTURE10")) { return GL_TEXTURE10; } +#endif +#ifdef GL_TEXTURE11 if (!strcmp(name, "GL_TEXTURE11")) { return GL_TEXTURE11; } +#endif +#ifdef GL_TEXTURE12 if (!strcmp(name, "GL_TEXTURE12")) { return GL_TEXTURE12; } +#endif +#ifdef GL_TEXTURE13 if (!strcmp(name, "GL_TEXTURE13")) { return GL_TEXTURE13; } +#endif +#ifdef GL_TEXTURE14 if (!strcmp(name, "GL_TEXTURE14")) { return GL_TEXTURE14; } +#endif +#ifdef GL_TEXTURE15 if (!strcmp(name, "GL_TEXTURE15")) { return GL_TEXTURE15; } +#endif +#ifdef GL_TEXTURE16 if (!strcmp(name, "GL_TEXTURE16")) { return GL_TEXTURE16; } +#endif +#ifdef GL_TEXTURE17 if (!strcmp(name, "GL_TEXTURE17")) { return GL_TEXTURE17; } +#endif +#ifdef GL_TEXTURE18 if (!strcmp(name, "GL_TEXTURE18")) { return GL_TEXTURE18; } +#endif +#ifdef GL_TEXTURE19 if (!strcmp(name, "GL_TEXTURE19")) { return GL_TEXTURE19; } +#endif +#ifdef GL_TEXTURE20 if (!strcmp(name, "GL_TEXTURE20")) { return GL_TEXTURE20; } +#endif +#ifdef GL_TEXTURE21 if (!strcmp(name, "GL_TEXTURE21")) { return GL_TEXTURE21; } +#endif +#ifdef GL_TEXTURE22 if (!strcmp(name, "GL_TEXTURE22")) { return GL_TEXTURE22; } +#endif +#ifdef GL_TEXTURE23 if (!strcmp(name, "GL_TEXTURE23")) { return GL_TEXTURE23; } +#endif +#ifdef GL_TEXTURE24 if (!strcmp(name, "GL_TEXTURE24")) { return GL_TEXTURE24; } +#endif +#ifdef GL_TEXTURE25 if (!strcmp(name, "GL_TEXTURE25")) { return GL_TEXTURE25; } +#endif +#ifdef GL_TEXTURE26 if (!strcmp(name, "GL_TEXTURE26")) { return GL_TEXTURE26; } +#endif +#ifdef GL_TEXTURE27 if (!strcmp(name, "GL_TEXTURE27")) { return GL_TEXTURE27; } +#endif +#ifdef GL_TEXTURE28 if (!strcmp(name, "GL_TEXTURE28")) { return GL_TEXTURE28; } +#endif +#ifdef GL_TEXTURE29 if (!strcmp(name, "GL_TEXTURE29")) { return GL_TEXTURE29; } +#endif +#ifdef GL_TEXTURE30 if (!strcmp(name, "GL_TEXTURE30")) { return GL_TEXTURE30; } +#endif +#ifdef GL_TEXTURE31 if (!strcmp(name, "GL_TEXTURE31")) { return GL_TEXTURE31; } +#endif +#ifdef GL_TIMESTAMP if (!strcmp(name, "GL_TIMESTAMP")) { return GL_TIMESTAMP; } +#endif +#ifdef GL_TRIANGLES if (!strcmp(name, "GL_TRIANGLES")) { return GL_TRIANGLES; } +#endif return _GL_UNDEFINED; case 13: +#ifdef GL_1PASS_SGIS if (!strcmp(name, "GL_1PASS_SGIS")) { return GL_1PASS_SGIS; } +#endif +#ifdef GL_2X_BIT_ATI if (!strcmp(name, "GL_2X_BIT_ATI")) { return GL_2X_BIT_ATI; } +#endif +#ifdef GL_4X_BIT_ATI if (!strcmp(name, "GL_4X_BIT_ATI")) { return GL_4X_BIT_ATI; } +#endif +#ifdef GL_8X_BIT_ATI if (!strcmp(name, "GL_8X_BIT_ATI")) { return GL_8X_BIT_ATI; } +#endif +#ifdef GL_ADD_SIGNED if (!strcmp(name, "GL_ADD_SIGNED")) { return GL_ADD_SIGNED; } +#endif +#ifdef GL_ALPHA4_EXT if (!strcmp(name, "GL_ALPHA4_EXT")) { return GL_ALPHA4_EXT; } +#endif +#ifdef GL_ALPHA8_EXT if (!strcmp(name, "GL_ALPHA8_EXT")) { return GL_ALPHA8_EXT; } +#endif +#ifdef GL_ALPHA_BIAS if (!strcmp(name, "GL_ALPHA_BIAS")) { return GL_ALPHA_BIAS; } +#endif +#ifdef GL_ALPHA_BITS if (!strcmp(name, "GL_ALPHA_BITS")) { return GL_ALPHA_BITS; } +#endif +#ifdef GL_ALPHA_TEST if (!strcmp(name, "GL_ALPHA_TEST")) { return GL_ALPHA_TEST; } +#endif +#ifdef GL_ARB_shadow if (!strcmp(name, "GL_ARB_shadow")) { return GL_ARB_shadow; } +#endif +#ifdef GL_ARRAY_SIZE if (!strcmp(name, "GL_ARRAY_SIZE")) { return GL_ARRAY_SIZE; } +#endif +#ifdef GL_BACK_RIGHT if (!strcmp(name, "GL_BACK_RIGHT")) { return GL_BACK_RIGHT; } +#endif +#ifdef GL_BLUE_SCALE if (!strcmp(name, "GL_BLUE_SCALE")) { return GL_BLUE_SCALE; } +#endif +#ifdef GL_CODE_REGAL if (!strcmp(name, "GL_CODE_REGAL")) { return GL_CODE_REGAL; } +#endif +#ifdef GL_DARKEN_KHR +if (!strcmp(name, "GL_DARKEN_KHR")) +{ + return GL_DARKEN_KHR; +} +#endif +#ifdef GL_DECODE_EXT if (!strcmp(name, "GL_DECODE_EXT")) { return GL_DECODE_EXT; } +#endif +#ifdef GL_DEPTH_BIAS if (!strcmp(name, "GL_DEPTH_BIAS")) { return GL_DEPTH_BIAS; } +#endif +#ifdef GL_DEPTH_BITS if (!strcmp(name, "GL_DEPTH_BITS")) { return GL_DEPTH_BITS; } +#endif +#ifdef GL_DEPTH_FUNC if (!strcmp(name, "GL_DEPTH_FUNC")) { return GL_DEPTH_FUNC; } +#endif +#ifdef GL_DEPTH_TEST if (!strcmp(name, "GL_DEPTH_TEST")) { return GL_DEPTH_TEST; } +#endif +#ifdef GL_DISCARD_NV if (!strcmp(name, "GL_DISCARD_NV")) { return GL_DISCARD_NV; } +#endif +#ifdef GL_DOUBLE_EXT if (!strcmp(name, "GL_DOUBLE_EXT")) { return GL_DOUBLE_EXT; } -if (!strcmp(name, "GL_DS_BIAS_NV")) -{ - return GL_DS_BIAS_NV; -} +#endif +#ifdef GL_DST_OUT_NV if (!strcmp(name, "GL_DST_OUT_NV")) { return GL_DST_OUT_NV; } +#endif +#ifdef GL_DS_BIAS_NV +if (!strcmp(name, "GL_DS_BIAS_NV")) +{ + return GL_DS_BIAS_NV; +} +#endif +#ifdef GL_DT_BIAS_NV if (!strcmp(name, "GL_DT_BIAS_NV")) { return GL_DT_BIAS_NV; } +#endif +#ifdef GL_DU8DV8_ATI if (!strcmp(name, "GL_DU8DV8_ATI")) { return GL_DU8DV8_ATI; } +#endif +#ifdef GL_ENABLE_BIT if (!strcmp(name, "GL_ENABLE_BIT")) { return GL_ENABLE_BIT; } +#endif +#ifdef GL_EVAL_2D_NV if (!strcmp(name, "GL_EVAL_2D_NV")) { return GL_EVAL_2D_NV; } +#endif +#ifdef GL_EXTENSIONS if (!strcmp(name, "GL_EXTENSIONS")) { return GL_EXTENSIONS; } +#endif +#ifdef GL_EYE_LINEAR if (!strcmp(name, "GL_EYE_LINEAR")) { return GL_EYE_LINEAR; } +#endif +#ifdef GL_FAILURE_NV if (!strcmp(name, "GL_FAILURE_NV")) { return GL_FAILURE_NV; } +#endif +#ifdef GL_FIXED_ONLY if (!strcmp(name, "GL_FIXED_ONLY")) { return GL_FIXED_ONLY; } +#endif +#ifdef GL_FLOAT16_NV if (!strcmp(name, "GL_FLOAT16_NV")) { return GL_FLOAT16_NV; } +#endif +#ifdef GL_FLOAT_MAT2 if (!strcmp(name, "GL_FLOAT_MAT2")) { return GL_FLOAT_MAT2; } +#endif +#ifdef GL_FLOAT_MAT3 if (!strcmp(name, "GL_FLOAT_MAT3")) { return GL_FLOAT_MAT3; } +#endif +#ifdef GL_FLOAT_MAT4 if (!strcmp(name, "GL_FLOAT_MAT4")) { return GL_FLOAT_MAT4; } +#endif +#ifdef GL_FLOAT_R_NV if (!strcmp(name, "GL_FLOAT_R_NV")) { return GL_FLOAT_R_NV; } +#endif +#ifdef GL_FLOAT_VEC2 if (!strcmp(name, "GL_FLOAT_VEC2")) { return GL_FLOAT_VEC2; } +#endif +#ifdef GL_FLOAT_VEC3 if (!strcmp(name, "GL_FLOAT_VEC3")) { return GL_FLOAT_VEC3; } +#endif +#ifdef GL_FLOAT_VEC4 if (!strcmp(name, "GL_FLOAT_VEC4")) { return GL_FLOAT_VEC4; } +#endif +#ifdef GL_FRONT_FACE if (!strcmp(name, "GL_FRONT_FACE")) { return GL_FRONT_FACE; } +#endif +#ifdef GL_FRONT_LEFT if (!strcmp(name, "GL_FRONT_LEFT")) { return GL_FRONT_LEFT; } +#endif +#ifdef GL_GREEN_BIAS if (!strcmp(name, "GL_GREEN_BIAS")) { return GL_GREEN_BIAS; } +#endif +#ifdef GL_GREEN_BITS if (!strcmp(name, "GL_GREEN_BITS")) { return GL_GREEN_BITS; } +#endif +#ifdef GL_HALF_APPLE if (!strcmp(name, "GL_HALF_APPLE")) { return GL_HALF_APPLE; } +#endif +#ifdef GL_HALF_FLOAT if (!strcmp(name, "GL_HALF_FLOAT")) { return GL_HALF_FLOAT; } +#endif +#ifdef GL_HARDMIX_NV if (!strcmp(name, "GL_HARDMIX_NV")) { return GL_HARDMIX_NV; } -if (!strcmp(name, "GL_HI_BIAS_NV")) -{ - return GL_HI_BIAS_NV; -} +#endif +#ifdef GL_HIGH_FLOAT if (!strcmp(name, "GL_HIGH_FLOAT")) { return GL_HIGH_FLOAT; } +#endif +#ifdef GL_HI_BIAS_NV +if (!strcmp(name, "GL_HI_BIAS_NV")) +{ + return GL_HI_BIAS_NV; +} +#endif +#ifdef GL_HSL_HUE_NV if (!strcmp(name, "GL_HSL_HUE_NV")) { return GL_HSL_HUE_NV; } +#endif +#ifdef GL_IMAGE_CUBE if (!strcmp(name, "GL_IMAGE_CUBE")) { return GL_IMAGE_CUBE; } +#endif +#ifdef GL_INDEX_BITS if (!strcmp(name, "GL_INDEX_BITS")) { return GL_INDEX_BITS; } +#endif +#ifdef GL_INDEX_MODE if (!strcmp(name, "GL_INDEX_MODE")) { return GL_INDEX_MODE; } +#endif +#ifdef GL_INTENSITY4 if (!strcmp(name, "GL_INTENSITY4")) { return GL_INTENSITY4; } +#endif +#ifdef GL_INTENSITY8 if (!strcmp(name, "GL_INTENSITY8")) { return GL_INTENSITY8; } +#endif +#ifdef GL_INVERSE_NV if (!strcmp(name, "GL_INVERSE_NV")) { return GL_INVERSE_NV; } +#endif +#ifdef GL_LIGHTEN_NV if (!strcmp(name, "GL_LIGHTEN_NV")) { return GL_LIGHTEN_NV; } +#endif +#ifdef GL_LINE_STRIP if (!strcmp(name, "GL_LINE_STRIP")) { return GL_LINE_STRIP; } +#endif +#ifdef GL_LINE_TOKEN if (!strcmp(name, "GL_LINE_TOKEN")) { return GL_LINE_TOKEN; } +#endif +#ifdef GL_LINE_TO_NV if (!strcmp(name, "GL_LINE_TO_NV")) { return GL_LINE_TO_NV; } +#endif +#ifdef GL_LINE_WIDTH if (!strcmp(name, "GL_LINE_WIDTH")) { return GL_LINE_WIDTH; } +#endif +#ifdef GL_LIST_INDEX if (!strcmp(name, "GL_LIST_INDEX")) { return GL_LIST_INDEX; } -if (!strcmp(name, "GL_LO_BIAS_NV")) +#endif +#ifdef GL_LOWER_LEFT +if (!strcmp(name, "GL_LOWER_LEFT")) { - return GL_LO_BIAS_NV; + return GL_LOWER_LEFT; } +#endif +#ifdef GL_LOWER_LEFT if (!strcmp(name, "GL_LOWER_LEFT")) { return GL_LOWER_LEFT; } +#endif +#ifdef GL_LO_BIAS_NV +if (!strcmp(name, "GL_LO_BIAS_NV")) +{ + return GL_LO_BIAS_NV; +} +#endif +#ifdef GL_LUMINANCE4 if (!strcmp(name, "GL_LUMINANCE4")) { return GL_LUMINANCE4; } +#endif +#ifdef GL_LUMINANCE8 if (!strcmp(name, "GL_LUMINANCE8")) { return GL_LUMINANCE8; } +#endif +#ifdef GL_MAP1_INDEX if (!strcmp(name, "GL_MAP1_INDEX")) { return GL_MAP1_INDEX; } +#endif +#ifdef GL_MAP2_INDEX if (!strcmp(name, "GL_MAP2_INDEX")) { return GL_MAP2_INDEX; } +#endif +#ifdef GL_MATRIX0_NV if (!strcmp(name, "GL_MATRIX0_NV")) { return GL_MATRIX0_NV; } +#endif +#ifdef GL_MATRIX1_NV if (!strcmp(name, "GL_MATRIX1_NV")) { return GL_MATRIX1_NV; } +#endif +#ifdef GL_MATRIX2_NV if (!strcmp(name, "GL_MATRIX2_NV")) { return GL_MATRIX2_NV; } +#endif +#ifdef GL_MATRIX3_NV if (!strcmp(name, "GL_MATRIX3_NV")) { return GL_MATRIX3_NV; } +#endif +#ifdef GL_MATRIX4_NV if (!strcmp(name, "GL_MATRIX4_NV")) { return GL_MATRIX4_NV; } +#endif +#ifdef GL_MATRIX5_NV if (!strcmp(name, "GL_MATRIX5_NV")) { return GL_MATRIX5_NV; } +#endif +#ifdef GL_MATRIX6_NV if (!strcmp(name, "GL_MATRIX6_NV")) { return GL_MATRIX6_NV; } +#endif +#ifdef GL_MATRIX7_NV if (!strcmp(name, "GL_MATRIX7_NV")) { return GL_MATRIX7_NV; } +#endif +#ifdef GL_MATRIX_EXT if (!strcmp(name, "GL_MATRIX_EXT")) { return GL_MATRIX_EXT; } +#endif +#ifdef GL_MAX_HEIGHT if (!strcmp(name, "GL_MAX_HEIGHT")) { return GL_MAX_HEIGHT; } +#endif +#ifdef GL_MAX_LAYERS if (!strcmp(name, "GL_MAX_LAYERS")) { return GL_MAX_LAYERS; } +#endif +#ifdef GL_MAX_LIGHTS if (!strcmp(name, "GL_MAX_LIGHTS")) { return GL_MAX_LIGHTS; } +#endif +#ifdef GL_MEDIUM_INT if (!strcmp(name, "GL_MEDIUM_INT")) { return GL_MEDIUM_INT; } +#endif +#ifdef GL_MINMAX_EXT if (!strcmp(name, "GL_MINMAX_EXT")) { return GL_MINMAX_EXT; } +#endif +#ifdef GL_MOVE_TO_NV if (!strcmp(name, "GL_MOVE_TO_NV")) { return GL_MOVE_TO_NV; } +#endif +#ifdef GL_NORMAL_MAP if (!strcmp(name, "GL_NORMAL_MAP")) { return GL_NORMAL_MAP; } +#endif +#ifdef GL_OP_ADD_EXT if (!strcmp(name, "GL_OP_ADD_EXT")) { return GL_OP_ADD_EXT; } +#endif +#ifdef GL_OP_MAX_EXT if (!strcmp(name, "GL_OP_MAX_EXT")) { return GL_OP_MAX_EXT; } +#endif +#ifdef GL_OP_MIN_EXT if (!strcmp(name, "GL_OP_MIN_EXT")) { return GL_OP_MIN_EXT; } +#endif +#ifdef GL_OP_MOV_EXT if (!strcmp(name, "GL_OP_MOV_EXT")) { return GL_OP_MOV_EXT; } +#endif +#ifdef GL_OP_MUL_EXT if (!strcmp(name, "GL_OP_MUL_EXT")) { return GL_OP_MUL_EXT; } +#endif +#ifdef GL_OP_SUB_EXT if (!strcmp(name, "GL_OP_SUB_EXT")) { return GL_OP_SUB_EXT; } +#endif +#ifdef GL_OR_REVERSE if (!strcmp(name, "GL_OR_REVERSE")) { return GL_OR_REVERSE; } +#endif +#ifdef GL_OVERLAY_NV if (!strcmp(name, "GL_OVERLAY_NV")) { return GL_OVERLAY_NV; } +#endif +#ifdef GL_POINT_SIZE if (!strcmp(name, "GL_POINT_SIZE")) { return GL_POINT_SIZE; } +#endif +#ifdef GL_PROJECTION if (!strcmp(name, "GL_PROJECTION")) { return GL_PROJECTION; } +#endif +#ifdef GL_QUAD_STRIP if (!strcmp(name, "GL_QUAD_STRIP")) { return GL_QUAD_STRIP; } +#endif +#ifdef GL_QUERY_WAIT if (!strcmp(name, "GL_QUERY_WAIT")) { return GL_QUERY_WAIT; } +#endif +#ifdef GL_READ_WRITE if (!strcmp(name, "GL_READ_WRITE")) { return GL_READ_WRITE; } +#endif +#ifdef GL_REDUCE_EXT if (!strcmp(name, "GL_REDUCE_EXT")) { return GL_REDUCE_EXT; } +#endif +#ifdef GL_RG16_SNORM if (!strcmp(name, "GL_RG16_SNORM")) { return GL_RG16_SNORM; } +#endif +#ifdef GL_RG16_SNORM +if (!strcmp(name, "GL_RG16_SNORM")) +{ + return GL_RG16_SNORM; +} +#endif +#ifdef GL_RGB10_A2UI +if (!strcmp(name, "GL_RGB10_A2UI")) +{ + return GL_RGB10_A2UI; +} +#endif +#ifdef GL_RGB10_A2UI if (!strcmp(name, "GL_RGB10_A2UI")) { return GL_RGB10_A2UI; } +#endif +#ifdef GL_RGB16F_ARB if (!strcmp(name, "GL_RGB16F_ARB")) { return GL_RGB16F_ARB; } +#endif +#ifdef GL_RGB16I_EXT if (!strcmp(name, "GL_RGB16I_EXT")) { return GL_RGB16I_EXT; } +#endif +#ifdef GL_RGB32F_ARB if (!strcmp(name, "GL_RGB32F_ARB")) { return GL_RGB32F_ARB; } +#endif +#ifdef GL_RGB32I_EXT if (!strcmp(name, "GL_RGB32I_EXT")) { return GL_RGB32I_EXT; } +#endif +#ifdef GL_RGB8UI_EXT +if (!strcmp(name, "GL_RGB8UI_EXT")) +{ + return GL_RGB8UI_EXT; +} +#endif +#ifdef GL_RGB8_SNORM if (!strcmp(name, "GL_RGB8_SNORM")) { return GL_RGB8_SNORM; } -if (!strcmp(name, "GL_RGB8UI_EXT")) +#endif +#ifdef GL_RGB8_SNORM +if (!strcmp(name, "GL_RGB8_SNORM")) { - return GL_RGB8UI_EXT; + return GL_RGB8_SNORM; } +#endif +#ifdef GL_RGBA12_EXT if (!strcmp(name, "GL_RGBA12_EXT")) { return GL_RGBA12_EXT; } +#endif +#ifdef GL_RGBA16_EXT if (!strcmp(name, "GL_RGBA16_EXT")) { return GL_RGBA16_EXT; } +#endif +#ifdef GL_RGBA4_S3TC if (!strcmp(name, "GL_RGBA4_S3TC")) { return GL_RGBA4_S3TC; } +#endif +#ifdef GL_RGBA8I_EXT if (!strcmp(name, "GL_RGBA8I_EXT")) { return GL_RGBA8I_EXT; } +#endif +#ifdef GL_RGBA_SNORM if (!strcmp(name, "GL_RGBA_SNORM")) { return GL_RGBA_SNORM; } +#endif +#ifdef GL_RGBA_SNORM +if (!strcmp(name, "GL_RGBA_SNORM")) +{ + return GL_RGBA_SNORM; +} +#endif +#ifdef GL_RG_INTEGER if (!strcmp(name, "GL_RG_INTEGER")) { return GL_RG_INTEGER; } +#endif +#ifdef GL_SAMPLER_1D if (!strcmp(name, "GL_SAMPLER_1D")) { return GL_SAMPLER_1D; } +#endif +#ifdef GL_SAMPLER_2D if (!strcmp(name, "GL_SAMPLER_2D")) { return GL_SAMPLER_2D; } +#endif +#ifdef GL_SAMPLER_3D if (!strcmp(name, "GL_SAMPLER_3D")) { return GL_SAMPLER_3D; } +#endif +#ifdef GL_SCALAR_EXT if (!strcmp(name, "GL_SCALAR_EXT")) { return GL_SCALAR_EXT; } +#endif +#ifdef GL_SCREEN_KHR +if (!strcmp(name, "GL_SCREEN_KHR")) +{ + return GL_SCREEN_KHR; +} +#endif +#ifdef GL_SGIX_async if (!strcmp(name, "GL_SGIX_async")) { return GL_SGIX_async; } +#endif +#ifdef GL_SGIX_ycrcb if (!strcmp(name, "GL_SGIX_ycrcb")) { return GL_SGIX_ycrcb; } +#endif +#ifdef GL_SLUMINANCE if (!strcmp(name, "GL_SLUMINANCE")) { return GL_SLUMINANCE; } +#endif +#ifdef GL_SPHERE_MAP if (!strcmp(name, "GL_SPHERE_MAP")) { return GL_SPHERE_MAP; } +#endif +#ifdef GL_SRC0_ALPHA if (!strcmp(name, "GL_SRC0_ALPHA")) { return GL_SRC0_ALPHA; } +#endif +#ifdef GL_SRC1_ALPHA if (!strcmp(name, "GL_SRC1_ALPHA")) { return GL_SRC1_ALPHA; } +#endif +#ifdef GL_SRC1_COLOR if (!strcmp(name, "GL_SRC1_COLOR")) { return GL_SRC1_COLOR; } +#endif +#ifdef GL_SRC2_ALPHA if (!strcmp(name, "GL_SRC2_ALPHA")) { return GL_SRC2_ALPHA; } +#endif +#ifdef GL_SRC_OUT_NV if (!strcmp(name, "GL_SRC_OUT_NV")) { return GL_SRC_OUT_NV; } +#endif +#ifdef GL_SRGB_ALPHA if (!strcmp(name, "GL_SRGB_ALPHA")) { return GL_SRGB_ALPHA; } +#endif +#ifdef GL_SRGB_WRITE if (!strcmp(name, "GL_SRGB_WRITE")) { return GL_SRGB_WRITE; } +#endif +#ifdef GL_STATIC_ATI if (!strcmp(name, "GL_STATIC_ATI")) { return GL_STATIC_ATI; } +#endif +#ifdef GL_SUCCESS_NV if (!strcmp(name, "GL_SUCCESS_NV")) { return GL_SUCCESS_NV; } +#endif +#ifdef GL_SUN_vertex if (!strcmp(name, "GL_SUN_vertex")) { return GL_SUN_vertex; } +#endif +#ifdef GL_SYNC_FENCE if (!strcmp(name, "GL_SYNC_FENCE")) { return GL_SYNC_FENCE; } +#endif +#ifdef GL_SYNC_FLAGS if (!strcmp(name, "GL_SYNC_FLAGS")) { return GL_SYNC_FLAGS; } +#endif +#ifdef GL_TEXTURE_1D +if (!strcmp(name, "GL_TEXTURE_1D")) +{ + return GL_TEXTURE_1D; +} +#endif +#ifdef GL_TEXTURE_1D if (!strcmp(name, "GL_TEXTURE_1D")) { return GL_TEXTURE_1D; } +#endif +#ifdef GL_TEXTURE_2D +if (!strcmp(name, "GL_TEXTURE_2D")) +{ + return GL_TEXTURE_2D; +} +#endif +#ifdef GL_TEXTURE_2D if (!strcmp(name, "GL_TEXTURE_2D")) { return GL_TEXTURE_2D; } +#endif +#ifdef GL_TEXTURE_3D if (!strcmp(name, "GL_TEXTURE_3D")) { return GL_TEXTURE_3D; } +#endif +#ifdef GL_UNSIGNALED if (!strcmp(name, "GL_UNSIGNALED")) { return GL_UNSIGNALED; } +#endif +#ifdef GL_UPPER_LEFT +if (!strcmp(name, "GL_UPPER_LEFT")) +{ + return GL_UPPER_LEFT; +} +#endif +#ifdef GL_UPPER_LEFT if (!strcmp(name, "GL_UPPER_LEFT")) { return GL_UPPER_LEFT; } +#endif +#ifdef GL_VECTOR_EXT if (!strcmp(name, "GL_VECTOR_EXT")) { return GL_VECTOR_EXT; } +#endif +#ifdef GL_WRITE_ONLY if (!strcmp(name, "GL_WRITE_ONLY")) { return GL_WRITE_ONLY; } -if (!strcmp(name, "GL_YCBCR_MESA")) -{ - return GL_YCBCR_MESA; -} +#endif return _GL_UNDEFINED; case 14: +#ifdef GL_2PASS_0_EXT if (!strcmp(name, "GL_2PASS_0_EXT")) { return GL_2PASS_0_EXT; } +#endif +#ifdef GL_2PASS_1_EXT if (!strcmp(name, "GL_2PASS_1_EXT")) { return GL_2PASS_1_EXT; } +#endif +#ifdef GL_422_REV_EXT if (!strcmp(name, "GL_422_REV_EXT")) { return GL_422_REV_EXT; } +#endif +#ifdef GL_4PASS_0_EXT if (!strcmp(name, "GL_4PASS_0_EXT")) { return GL_4PASS_0_EXT; } +#endif +#ifdef GL_4PASS_1_EXT if (!strcmp(name, "GL_4PASS_1_EXT")) { return GL_4PASS_1_EXT; } +#endif +#ifdef GL_4PASS_2_EXT if (!strcmp(name, "GL_4PASS_2_EXT")) { return GL_4PASS_2_EXT; } +#endif +#ifdef GL_4PASS_3_EXT if (!strcmp(name, "GL_4PASS_3_EXT")) { return GL_4PASS_3_EXT; } +#endif +#ifdef GL_ALPHA12_EXT if (!strcmp(name, "GL_ALPHA12_EXT")) { return GL_ALPHA12_EXT; } +#endif +#ifdef GL_ALPHA16_EXT if (!strcmp(name, "GL_ALPHA16_EXT")) { return GL_ALPHA16_EXT; } +#endif +#ifdef GL_ALPHA8I_EXT if (!strcmp(name, "GL_ALPHA8I_EXT")) { return GL_ALPHA8I_EXT; } +#endif +#ifdef GL_ALPHA_SCALE if (!strcmp(name, "GL_ALPHA_SCALE")) { return GL_ALPHA_SCALE; } +#endif +#ifdef GL_ALPHA_SNORM if (!strcmp(name, "GL_ALPHA_SNORM")) { return GL_ALPHA_SNORM; } +#endif +#ifdef GL_AND_REVERSE if (!strcmp(name, "GL_AND_REVERSE")) { return GL_AND_REVERSE; } +#endif +#ifdef GL_APPLE_fence if (!strcmp(name, "GL_APPLE_fence")) { return GL_APPLE_fence; } +#endif +#ifdef GL_ARB_imaging if (!strcmp(name, "GL_ARB_imaging")) { return GL_ARB_imaging; } +#endif +#ifdef GL_ATI_meminfo if (!strcmp(name, "GL_ATI_meminfo")) { return GL_ATI_meminfo; } +#endif +#ifdef GL_AUTO_NORMAL if (!strcmp(name, "GL_AUTO_NORMAL")) { return GL_AUTO_NORMAL; } +#endif +#ifdef GL_AUX_BUFFERS if (!strcmp(name, "GL_AUX_BUFFERS")) { return GL_AUX_BUFFERS; } +#endif +#ifdef GL_AVERAGE_EXT if (!strcmp(name, "GL_AVERAGE_EXT")) { return GL_AVERAGE_EXT; } +#endif +#ifdef GL_BGR_INTEGER if (!strcmp(name, "GL_BGR_INTEGER")) { return GL_BGR_INTEGER; } +#endif +#ifdef GL_BLEND_COLOR if (!strcmp(name, "GL_BLEND_COLOR")) { return GL_BLEND_COLOR; } +#endif +#ifdef GL_BLOCK_INDEX if (!strcmp(name, "GL_BLOCK_INDEX")) { return GL_BLOCK_INDEX; } +#endif +#ifdef GL_BOLD_BIT_NV if (!strcmp(name, "GL_BOLD_BIT_NV")) { return GL_BOLD_BIT_NV; } +#endif +#ifdef GL_BUFFER_SIZE if (!strcmp(name, "GL_BUFFER_SIZE")) { return GL_BUFFER_SIZE; } +#endif +#ifdef GL_C4F_N3F_V3F if (!strcmp(name, "GL_C4F_N3F_V3F")) { return GL_C4F_N3F_V3F; } +#endif +#ifdef GL_CACHE_REGAL if (!strcmp(name, "GL_CACHE_REGAL")) { return GL_CACHE_REGAL; } +#endif +#ifdef GL_CLIP_ORIGIN +if (!strcmp(name, "GL_CLIP_ORIGIN")) +{ + return GL_CLIP_ORIGIN; +} +#endif +#ifdef GL_CLIP_PLANE0 if (!strcmp(name, "GL_CLIP_PLANE0")) { return GL_CLIP_PLANE0; } +#endif +#ifdef GL_CLIP_PLANE1 if (!strcmp(name, "GL_CLIP_PLANE1")) { return GL_CLIP_PLANE1; } +#endif +#ifdef GL_CLIP_PLANE2 if (!strcmp(name, "GL_CLIP_PLANE2")) { return GL_CLIP_PLANE2; } +#endif +#ifdef GL_CLIP_PLANE3 if (!strcmp(name, "GL_CLIP_PLANE3")) { return GL_CLIP_PLANE3; } +#endif +#ifdef GL_CLIP_PLANE4 if (!strcmp(name, "GL_CLIP_PLANE4")) { return GL_CLIP_PLANE4; } +#endif +#ifdef GL_CLIP_PLANE5 if (!strcmp(name, "GL_CLIP_PLANE5")) { return GL_CLIP_PLANE5; } +#endif +#ifdef GL_COLOR_ARRAY if (!strcmp(name, "GL_COLOR_ARRAY")) { return GL_COLOR_ARRAY; } +#endif +#ifdef GL_COLOR_INDEX if (!strcmp(name, "GL_COLOR_INDEX")) { return GL_COLOR_INDEX; } +#endif +#ifdef GL_COLOR_TABLE if (!strcmp(name, "GL_COLOR_TABLE")) { return GL_COLOR_TABLE; } +#endif +#ifdef GL_COMBINE4_NV if (!strcmp(name, "GL_COMBINE4_NV")) { return GL_COMBINE4_NV; } +#endif +#ifdef GL_COMBINE_ARB if (!strcmp(name, "GL_COMBINE_ARB")) { return GL_COMBINE_ARB; } +#endif +#ifdef GL_COMBINE_EXT if (!strcmp(name, "GL_COMBINE_EXT")) { return GL_COMBINE_EXT; } +#endif +#ifdef GL_COMBINE_RGB if (!strcmp(name, "GL_COMBINE_RGB")) { return GL_COMBINE_RGB; } +#endif +#ifdef GL_CONJOINT_NV if (!strcmp(name, "GL_CONJOINT_NV")) { return GL_CONJOINT_NV; } +#endif +#ifdef GL_CONTRAST_NV if (!strcmp(name, "GL_CONTRAST_NV")) { return GL_CONTRAST_NV; } +#endif +#ifdef GL_COUNT_UP_NV if (!strcmp(name, "GL_COUNT_UP_NV")) { return GL_COUNT_UP_NV; } +#endif +#ifdef GL_CURRENT_BIT if (!strcmp(name, "GL_CURRENT_BIT")) { return GL_CURRENT_BIT; } +#endif +#ifdef GL_DEBUG_REGAL if (!strcmp(name, "GL_DEBUG_REGAL")) { return GL_DEBUG_REGAL; } +#endif +#ifdef GL_DEPTH_CLAMP if (!strcmp(name, "GL_DEPTH_CLAMP")) { return GL_DEPTH_CLAMP; } +#endif +#ifdef GL_DEPTH_RANGE +if (!strcmp(name, "GL_DEPTH_RANGE")) +{ + return GL_DEPTH_RANGE; +} +#endif +#ifdef GL_DEPTH_RANGE if (!strcmp(name, "GL_DEPTH_RANGE")) { return GL_DEPTH_RANGE; } +#endif +#ifdef GL_DEPTH_SCALE if (!strcmp(name, "GL_DEPTH_SCALE")) { return GL_DEPTH_SCALE; } +#endif +#ifdef GL_DISCARD_ATI if (!strcmp(name, "GL_DISCARD_ATI")) { return GL_DISCARD_ATI; } +#endif +#ifdef GL_DISJOINT_NV if (!strcmp(name, "GL_DISJOINT_NV")) { return GL_DISJOINT_NV; } +#endif +#ifdef GL_DOUBLE_MAT2 if (!strcmp(name, "GL_DOUBLE_MAT2")) { return GL_DOUBLE_MAT2; } +#endif +#ifdef GL_DOUBLE_MAT3 if (!strcmp(name, "GL_DOUBLE_MAT3")) { return GL_DOUBLE_MAT3; } +#endif +#ifdef GL_DOUBLE_MAT4 if (!strcmp(name, "GL_DOUBLE_MAT4")) { return GL_DOUBLE_MAT4; } +#endif +#ifdef GL_DOUBLE_VEC2 if (!strcmp(name, "GL_DOUBLE_VEC2")) { return GL_DOUBLE_VEC2; } +#endif +#ifdef GL_DOUBLE_VEC3 if (!strcmp(name, "GL_DOUBLE_VEC3")) { return GL_DOUBLE_VEC3; } +#endif +#ifdef GL_DOUBLE_VEC4 if (!strcmp(name, "GL_DOUBLE_VEC4")) { return GL_DOUBLE_VEC4; } +#endif +#ifdef GL_DRAW_BUFFER if (!strcmp(name, "GL_DRAW_BUFFER")) { return GL_DRAW_BUFFER; } +#endif +#ifdef GL_DSDT_MAG_NV if (!strcmp(name, "GL_DSDT_MAG_NV")) { return GL_DSDT_MAG_NV; } -if (!strcmp(name, "GL_DS_SCALE_NV")) +#endif +#ifdef GL_DSDT_MAG_NV +if (!strcmp(name, "GL_DSDT_MAG_NV")) { - return GL_DS_SCALE_NV; + return GL_DSDT_MAG_NV; } +#endif +#ifdef GL_DST_ATOP_NV if (!strcmp(name, "GL_DST_ATOP_NV")) { return GL_DST_ATOP_NV; } +#endif +#ifdef GL_DST_OVER_NV if (!strcmp(name, "GL_DST_OVER_NV")) { return GL_DST_OVER_NV; } +#endif +#ifdef GL_DS_SCALE_NV +if (!strcmp(name, "GL_DS_SCALE_NV")) +{ + return GL_DS_SCALE_NV; +} +#endif +#ifdef GL_DT_SCALE_NV if (!strcmp(name, "GL_DT_SCALE_NV")) { return GL_DT_SCALE_NV; } +#endif +#ifdef GL_DYNAMIC_ATI if (!strcmp(name, "GL_DYNAMIC_ATI")) { return GL_DYNAMIC_ATI; } +#endif +#ifdef GL_ERROR_REGAL if (!strcmp(name, "GL_ERROR_REGAL")) { return GL_ERROR_REGAL; } +#endif +#ifdef GL_EXT_texture if (!strcmp(name, "GL_EXT_texture")) { return GL_EXT_texture; } +#endif +#ifdef GL_FENCE_APPLE if (!strcmp(name, "GL_FENCE_APPLE")) { return GL_FENCE_APPLE; } +#endif +#ifdef GL_FLOAT_RG_NV if (!strcmp(name, "GL_FLOAT_RG_NV")) { return GL_FLOAT_RG_NV; } +#endif +#ifdef GL_FOG_DENSITY if (!strcmp(name, "GL_FOG_DENSITY")) { return GL_FOG_DENSITY; } +#endif +#ifdef GL_FRAMEBUFFER if (!strcmp(name, "GL_FRAMEBUFFER")) { return GL_FRAMEBUFFER; } +#endif +#ifdef GL_FRONT_RIGHT if (!strcmp(name, "GL_FRONT_RIGHT")) { return GL_FRONT_RIGHT; } +#endif +#ifdef GL_GREEN_SCALE if (!strcmp(name, "GL_GREEN_SCALE")) { return GL_GREEN_SCALE; } +#endif +#ifdef GL_HI_SCALE_NV if (!strcmp(name, "GL_HI_SCALE_NV")) { return GL_HI_SCALE_NV; } +#endif +#ifdef GL_HSL_HUE_KHR +if (!strcmp(name, "GL_HSL_HUE_KHR")) +{ + return GL_HSL_HUE_KHR; +} +#endif +#ifdef GL_IDENTITY_NV if (!strcmp(name, "GL_IDENTITY_NV")) { return GL_IDENTITY_NV; } +#endif +#ifdef GL_INDEX_ARRAY if (!strcmp(name, "GL_INDEX_ARRAY")) { return GL_INDEX_ARRAY; } +#endif +#ifdef GL_INDEX_SHIFT if (!strcmp(name, "GL_INDEX_SHIFT")) { return GL_INDEX_SHIFT; } +#endif +#ifdef GL_INTENSITY12 if (!strcmp(name, "GL_INTENSITY12")) { return GL_INTENSITY12; } +#endif +#ifdef GL_INTENSITY16 if (!strcmp(name, "GL_INTENSITY16")) { return GL_INTENSITY16; } +#endif +#ifdef GL_INTERPOLATE if (!strcmp(name, "GL_INTERPOLATE")) { return GL_INTERPOLATE; } +#endif +#ifdef GL_LIGHTEN_KHR +if (!strcmp(name, "GL_LIGHTEN_KHR")) +{ + return GL_LIGHTEN_KHR; +} +#endif +#ifdef GL_LINE_SMOOTH if (!strcmp(name, "GL_LINE_SMOOTH")) { return GL_LINE_SMOOTH; } +#endif +#ifdef GL_LINK_STATUS if (!strcmp(name, "GL_LINK_STATUS")) { return GL_LINK_STATUS; } +#endif +#ifdef GL_LO_SCALE_NV if (!strcmp(name, "GL_LO_SCALE_NV")) { return GL_LO_SCALE_NV; } +#endif +#ifdef GL_LUMINANCE12 if (!strcmp(name, "GL_LUMINANCE12")) { return GL_LUMINANCE12; } +#endif +#ifdef GL_LUMINANCE16 if (!strcmp(name, "GL_LUMINANCE16")) { return GL_LUMINANCE16; } +#endif +#ifdef GL_MAP1_NORMAL if (!strcmp(name, "GL_MAP1_NORMAL")) { return GL_MAP1_NORMAL; } +#endif +#ifdef GL_MAP2_NORMAL if (!strcmp(name, "GL_MAP2_NORMAL")) { return GL_MAP2_NORMAL; } +#endif +#ifdef GL_MAP_STENCIL if (!strcmp(name, "GL_MAP_STENCIL")) { return GL_MAP_STENCIL; } +#endif +#ifdef GL_MATRIX0_ARB if (!strcmp(name, "GL_MATRIX0_ARB")) { return GL_MATRIX0_ARB; } +#endif +#ifdef GL_MATRIX1_ARB if (!strcmp(name, "GL_MATRIX1_ARB")) { return GL_MATRIX1_ARB; } +#endif +#ifdef GL_MATRIX2_ARB if (!strcmp(name, "GL_MATRIX2_ARB")) { return GL_MATRIX2_ARB; } +#endif +#ifdef GL_MATRIX3_ARB if (!strcmp(name, "GL_MATRIX3_ARB")) { return GL_MATRIX3_ARB; } +#endif +#ifdef GL_MATRIX4_ARB if (!strcmp(name, "GL_MATRIX4_ARB")) { return GL_MATRIX4_ARB; } +#endif +#ifdef GL_MATRIX5_ARB if (!strcmp(name, "GL_MATRIX5_ARB")) { return GL_MATRIX5_ARB; } +#endif +#ifdef GL_MATRIX6_ARB if (!strcmp(name, "GL_MATRIX6_ARB")) { return GL_MATRIX6_ARB; } +#endif +#ifdef GL_MATRIX7_ARB if (!strcmp(name, "GL_MATRIX7_ARB")) { return GL_MATRIX7_ARB; } +#endif +#ifdef GL_MATRIX8_ARB if (!strcmp(name, "GL_MATRIX8_ARB")) { return GL_MATRIX8_ARB; } +#endif +#ifdef GL_MATRIX9_ARB if (!strcmp(name, "GL_MATRIX9_ARB")) { return GL_MATRIX9_ARB; } +#endif +#ifdef GL_MATRIX_MODE if (!strcmp(name, "GL_MATRIX_MODE")) { return GL_MATRIX_MODE; } +#endif +#ifdef GL_MAX_SAMPLES if (!strcmp(name, "GL_MAX_SAMPLES")) { return GL_MAX_SAMPLES; } +#endif +#ifdef GL_MINMAX_SINK if (!strcmp(name, "GL_MINMAX_SINK")) { return GL_MINMAX_SINK; } +#endif +#ifdef GL_MULTIPLY_NV if (!strcmp(name, "GL_MULTIPLY_NV")) { return GL_MULTIPLY_NV; } +#endif +#ifdef GL_MULTISAMPLE if (!strcmp(name, "GL_MULTISAMPLE")) { return GL_MULTISAMPLE; } +#endif +#ifdef GL_NAME_LENGTH if (!strcmp(name, "GL_NAME_LENGTH")) { return GL_NAME_LENGTH; } +#endif +#ifdef GL_OBJECT_TYPE if (!strcmp(name, "GL_OBJECT_TYPE")) { return GL_OBJECT_TYPE; } +#endif +#ifdef GL_OP_DOT3_EXT if (!strcmp(name, "GL_OP_DOT3_EXT")) { return GL_OP_DOT3_EXT; } +#endif +#ifdef GL_OP_DOT4_EXT if (!strcmp(name, "GL_OP_DOT4_EXT")) { return GL_OP_DOT4_EXT; } +#endif +#ifdef GL_OP_FRAC_EXT if (!strcmp(name, "GL_OP_FRAC_EXT")) { return GL_OP_FRAC_EXT; } +#endif +#ifdef GL_OP_MADD_EXT if (!strcmp(name, "GL_OP_MADD_EXT")) { return GL_OP_MADD_EXT; } +#endif +#ifdef GL_OR_INVERTED if (!strcmp(name, "GL_OR_INVERTED")) { return GL_OR_INVERTED; } +#endif +#ifdef GL_OVERLAY_KHR +if (!strcmp(name, "GL_OVERLAY_KHR")) +{ + return GL_OVERLAY_KHR; +} +#endif +#ifdef GL_PERTURB_EXT if (!strcmp(name, "GL_PERTURB_EXT")) { return GL_PERTURB_EXT; } +#endif +#ifdef GL_PINLIGHT_NV if (!strcmp(name, "GL_PINLIGHT_NV")) { return GL_PINLIGHT_NV; } +#endif +#ifdef GL_POINT_TOKEN if (!strcmp(name, "GL_POINT_TOKEN")) { return GL_POINT_TOKEN; } +#endif +#ifdef GL_POLYGON_BIT if (!strcmp(name, "GL_POLYGON_BIT")) { return GL_POLYGON_BIT; } +#endif +#ifdef GL_READ_BUFFER if (!strcmp(name, "GL_READ_BUFFER")) { return GL_READ_BUFFER; } +#endif +#ifdef GL_READ_PIXELS if (!strcmp(name, "GL_READ_PIXELS")) { return GL_READ_PIXELS; } +#endif +#ifdef GL_RED_BIT_ATI if (!strcmp(name, "GL_RED_BIT_ATI")) { return GL_RED_BIT_ATI; } +#endif +#ifdef GL_RED_INTEGER if (!strcmp(name, "GL_RED_INTEGER")) { return GL_RED_INTEGER; } +#endif +#ifdef GL_RENDER_MODE if (!strcmp(name, "GL_RENDER_MODE")) { return GL_RENDER_MODE; } +#endif +#ifdef GL_REPLACE_EXT if (!strcmp(name, "GL_REPLACE_EXT")) { return GL_REPLACE_EXT; } +#endif +#ifdef GL_RESTART_SUN if (!strcmp(name, "GL_RESTART_SUN")) { return GL_RESTART_SUN; } +#endif +#ifdef GL_RGB16UI_EXT +if (!strcmp(name, "GL_RGB16UI_EXT")) +{ + return GL_RGB16UI_EXT; +} +#endif +#ifdef GL_RGB16_SNORM if (!strcmp(name, "GL_RGB16_SNORM")) { return GL_RGB16_SNORM; } -if (!strcmp(name, "GL_RGB16UI_EXT")) +#endif +#ifdef GL_RGB16_SNORM +if (!strcmp(name, "GL_RGB16_SNORM")) { - return GL_RGB16UI_EXT; + return GL_RGB16_SNORM; } +#endif +#ifdef GL_RGB32UI_EXT if (!strcmp(name, "GL_RGB32UI_EXT")) { return GL_RGB32UI_EXT; } +#endif +#ifdef GL_RGB5_A1_EXT if (!strcmp(name, "GL_RGB5_A1_EXT")) { return GL_RGB5_A1_EXT; } +#endif +#ifdef GL_RGB9_E5_EXT if (!strcmp(name, "GL_RGB9_E5_EXT")) { return GL_RGB9_E5_EXT; } +#endif +#ifdef GL_RGBA16F_ARB if (!strcmp(name, "GL_RGBA16F_ARB")) { return GL_RGBA16F_ARB; } +#endif +#ifdef GL_RGBA16I_EXT if (!strcmp(name, "GL_RGBA16I_EXT")) { return GL_RGBA16I_EXT; } +#endif +#ifdef GL_RGBA32F_ARB if (!strcmp(name, "GL_RGBA32F_ARB")) { return GL_RGBA32F_ARB; } +#endif +#ifdef GL_RGBA32I_EXT if (!strcmp(name, "GL_RGBA32I_EXT")) { return GL_RGBA32I_EXT; } +#endif +#ifdef GL_RGBA8UI_EXT +if (!strcmp(name, "GL_RGBA8UI_EXT")) +{ + return GL_RGBA8UI_EXT; +} +#endif +#ifdef GL_RGBA8_SNORM if (!strcmp(name, "GL_RGBA8_SNORM")) { return GL_RGBA8_SNORM; } -if (!strcmp(name, "GL_RGBA8UI_EXT")) +#endif +#ifdef GL_RGBA8_SNORM +if (!strcmp(name, "GL_RGBA8_SNORM")) { - return GL_RGBA8UI_EXT; + return GL_RGBA8_SNORM; } +#endif +#ifdef GL_RGB_INTEGER if (!strcmp(name, "GL_RGB_INTEGER")) { return GL_RGB_INTEGER; } -if (!strcmp(name, "GL_SAMPLE_MASK")) -{ - return GL_SAMPLE_MASK; -} +#endif +#ifdef GL_SAMPLES_ARB if (!strcmp(name, "GL_SAMPLES_ARB")) { return GL_SAMPLES_ARB; } +#endif +#ifdef GL_SAMPLES_EXT if (!strcmp(name, "GL_SAMPLES_EXT")) { return GL_SAMPLES_EXT; } +#endif +#ifdef GL_SAMPLE_MASK +if (!strcmp(name, "GL_SAMPLE_MASK")) +{ + return GL_SAMPLE_MASK; +} +#endif +#ifdef GL_SCISSOR_BIT if (!strcmp(name, "GL_SCISSOR_BIT")) { return GL_SCISSOR_BIT; } +#endif +#ifdef GL_SCISSOR_BOX if (!strcmp(name, "GL_SCISSOR_BOX")) { return GL_SCISSOR_BOX; } +#endif +#ifdef GL_SCISSOR_BOX +if (!strcmp(name, "GL_SCISSOR_BOX")) +{ + return GL_SCISSOR_BOX; +} +#endif +#ifdef GL_SGIX_shadow if (!strcmp(name, "GL_SGIX_shadow")) { return GL_SGIX_shadow; } +#endif +#ifdef GL_SGIX_sprite if (!strcmp(name, "GL_SGIX_sprite")) { return GL_SGIX_sprite; } -if (!strcmp(name, "GL_SHADE_MODEL")) -{ - return GL_SHADE_MODEL; -} +#endif +#ifdef GL_SHADER_TYPE if (!strcmp(name, "GL_SHADER_TYPE")) { return GL_SHADER_TYPE; } +#endif +#ifdef GL_SHADE_MODEL +if (!strcmp(name, "GL_SHADE_MODEL")) +{ + return GL_SHADE_MODEL; +} +#endif +#ifdef GL_SLUMINANCE8 if (!strcmp(name, "GL_SLUMINANCE8")) { return GL_SLUMINANCE8; } +#endif +#ifdef GL_SM_COUNT_NV +if (!strcmp(name, "GL_SM_COUNT_NV")) +{ + return GL_SM_COUNT_NV; +} +#endif +#ifdef GL_SOURCE0_RGB if (!strcmp(name, "GL_SOURCE0_RGB")) { return GL_SOURCE0_RGB; } +#endif +#ifdef GL_SOURCE1_RGB if (!strcmp(name, "GL_SOURCE1_RGB")) { return GL_SOURCE1_RGB; } +#endif +#ifdef GL_SOURCE2_RGB if (!strcmp(name, "GL_SOURCE2_RGB")) { return GL_SOURCE2_RGB; } +#endif +#ifdef GL_SPOT_CUTOFF if (!strcmp(name, "GL_SPOT_CUTOFF")) { return GL_SPOT_CUTOFF; } +#endif +#ifdef GL_SRC_ATOP_NV if (!strcmp(name, "GL_SRC_ATOP_NV")) { return GL_SRC_ATOP_NV; } +#endif +#ifdef GL_SRC_OVER_NV if (!strcmp(name, "GL_SRC_OVER_NV")) { return GL_SRC_OVER_NV; } +#endif +#ifdef GL_STATIC_COPY if (!strcmp(name, "GL_STATIC_COPY")) { return GL_STATIC_COPY; } +#endif +#ifdef GL_STATIC_DRAW if (!strcmp(name, "GL_STATIC_DRAW")) { return GL_STATIC_DRAW; } +#endif +#ifdef GL_STATIC_READ if (!strcmp(name, "GL_STATIC_READ")) { return GL_STATIC_READ; } +#endif +#ifdef GL_STENCIL_REF if (!strcmp(name, "GL_STENCIL_REF")) { return GL_STENCIL_REF; } +#endif +#ifdef GL_STREAM_COPY if (!strcmp(name, "GL_STREAM_COPY")) { return GL_STREAM_COPY; } +#endif +#ifdef GL_STREAM_DRAW if (!strcmp(name, "GL_STREAM_DRAW")) { return GL_STREAM_DRAW; } +#endif +#ifdef GL_STREAM_READ if (!strcmp(name, "GL_STREAM_READ")) { return GL_STREAM_READ; } +#endif +#ifdef GL_SYNC_STATUS if (!strcmp(name, "GL_SYNC_STATUS")) { return GL_SYNC_STATUS; } +#endif +#ifdef GL_T2F_C3F_V3F if (!strcmp(name, "GL_T2F_C3F_V3F")) { return GL_T2F_C3F_V3F; } +#endif +#ifdef GL_T2F_N3F_V3F if (!strcmp(name, "GL_T2F_N3F_V3F")) { return GL_T2F_N3F_V3F; } +#endif +#ifdef GL_TEXTURE_BIT if (!strcmp(name, "GL_TEXTURE_BIT")) { return GL_TEXTURE_BIT; } +#endif +#ifdef GL_TEXTURE_ENV if (!strcmp(name, "GL_TEXTURE_ENV")) { return GL_TEXTURE_ENV; } +#endif +#ifdef GL_TRACE_REGAL if (!strcmp(name, "GL_TRACE_REGAL")) { return GL_TRACE_REGAL; } +#endif +#ifdef GL_VARIANT_EXT if (!strcmp(name, "GL_VARIANT_EXT")) { return GL_VARIANT_EXT; } +#endif +#ifdef GL_VERSION_1_1 if (!strcmp(name, "GL_VERSION_1_1")) { return GL_VERSION_1_1; } +#endif +#ifdef GL_VERSION_1_2 if (!strcmp(name, "GL_VERSION_1_2")) { return GL_VERSION_1_2; } +#endif +#ifdef GL_VERSION_1_3 if (!strcmp(name, "GL_VERSION_1_3")) { return GL_VERSION_1_3; } +#endif +#ifdef GL_VERSION_1_4 if (!strcmp(name, "GL_VERSION_1_4")) { return GL_VERSION_1_4; } +#endif +#ifdef GL_VERSION_1_5 if (!strcmp(name, "GL_VERSION_1_5")) { return GL_VERSION_1_5; } +#endif +#ifdef GL_VERSION_2_0 if (!strcmp(name, "GL_VERSION_2_0")) { return GL_VERSION_2_0; } +#endif +#ifdef GL_VERSION_2_1 if (!strcmp(name, "GL_VERSION_2_1")) { return GL_VERSION_2_1; } +#endif +#ifdef GL_VERSION_3_0 if (!strcmp(name, "GL_VERSION_3_0")) { return GL_VERSION_3_0; } +#endif +#ifdef GL_VERSION_3_1 if (!strcmp(name, "GL_VERSION_3_1")) { return GL_VERSION_3_1; } +#endif +#ifdef GL_VERSION_3_2 if (!strcmp(name, "GL_VERSION_3_2")) { return GL_VERSION_3_2; } +#endif +#ifdef GL_VERSION_3_3 if (!strcmp(name, "GL_VERSION_3_3")) { return GL_VERSION_3_3; } +#endif +#ifdef GL_VERSION_4_0 if (!strcmp(name, "GL_VERSION_4_0")) { return GL_VERSION_4_0; } +#endif +#ifdef GL_VERSION_4_1 if (!strcmp(name, "GL_VERSION_4_1")) { return GL_VERSION_4_1; } +#endif +#ifdef GL_VERSION_4_2 if (!strcmp(name, "GL_VERSION_4_2")) { return GL_VERSION_4_2; } +#endif +#ifdef GL_VERSION_4_3 if (!strcmp(name, "GL_VERSION_4_3")) { return GL_VERSION_4_3; } +#endif +#ifdef GL_VERSION_4_4 if (!strcmp(name, "GL_VERSION_4_4")) { return GL_VERSION_4_4; } +#endif +#ifdef GL_VERSION_4_5 +if (!strcmp(name, "GL_VERSION_4_5")) +{ + return GL_VERSION_4_5; +} +#endif +#ifdef GL_WAIT_FAILED if (!strcmp(name, "GL_WAIT_FAILED")) { return GL_WAIT_FAILED; } +#endif +#ifdef GL_WRAP_BORDER if (!strcmp(name, "GL_WRAP_BORDER")) { return GL_WRAP_BORDER; } +#endif +#ifdef GL_ZERO_TO_ONE +if (!strcmp(name, "GL_ZERO_TO_ONE")) +{ + return GL_ZERO_TO_ONE; +} +#endif return _GL_UNDEFINED; case 15: +#ifdef GL_2PASS_0_SGIS if (!strcmp(name, "GL_2PASS_0_SGIS")) { return GL_2PASS_0_SGIS; } +#endif +#ifdef GL_2PASS_1_SGIS if (!strcmp(name, "GL_2PASS_1_SGIS")) { return GL_2PASS_1_SGIS; } +#endif +#ifdef GL_3DFX_tbuffer if (!strcmp(name, "GL_3DFX_tbuffer")) { return GL_3DFX_tbuffer; } +#endif +#ifdef GL_4PASS_0_SGIS if (!strcmp(name, "GL_4PASS_0_SGIS")) { return GL_4PASS_0_SGIS; } +#endif +#ifdef GL_4PASS_1_SGIS if (!strcmp(name, "GL_4PASS_1_SGIS")) { return GL_4PASS_1_SGIS; } +#endif +#ifdef GL_4PASS_2_SGIS if (!strcmp(name, "GL_4PASS_2_SGIS")) { return GL_4PASS_2_SGIS; } +#endif +#ifdef GL_4PASS_3_SGIS if (!strcmp(name, "GL_4PASS_3_SGIS")) { return GL_4PASS_3_SGIS; } +#endif +#ifdef GL_AFFINE_2D_NV if (!strcmp(name, "GL_AFFINE_2D_NV")) { return GL_AFFINE_2D_NV; } +#endif +#ifdef GL_AFFINE_3D_NV if (!strcmp(name, "GL_AFFINE_3D_NV")) { return GL_AFFINE_3D_NV; } +#endif +#ifdef GL_ALPHA16F_ARB if (!strcmp(name, "GL_ALPHA16F_ARB")) { return GL_ALPHA16F_ARB; } +#endif +#ifdef GL_ALPHA16I_EXT if (!strcmp(name, "GL_ALPHA16I_EXT")) { return GL_ALPHA16I_EXT; } +#endif +#ifdef GL_ALPHA32F_ARB if (!strcmp(name, "GL_ALPHA32F_ARB")) { return GL_ALPHA32F_ARB; } +#endif +#ifdef GL_ALPHA32I_EXT if (!strcmp(name, "GL_ALPHA32I_EXT")) { return GL_ALPHA32I_EXT; } -if (!strcmp(name, "GL_ALPHA8_SNORM")) -{ - return GL_ALPHA8_SNORM; -} +#endif +#ifdef GL_ALPHA8UI_EXT if (!strcmp(name, "GL_ALPHA8UI_EXT")) { return GL_ALPHA8UI_EXT; } +#endif +#ifdef GL_ALPHA8_SNORM +if (!strcmp(name, "GL_ALPHA8_SNORM")) +{ + return GL_ALPHA8_SNORM; +} +#endif +#ifdef GL_AND_INVERTED if (!strcmp(name, "GL_AND_INVERTED")) { return GL_AND_INVERTED; } +#endif +#ifdef GL_ARB_cl_event if (!strcmp(name, "GL_ARB_cl_event")) { return GL_ARB_cl_event; } +#endif +#ifdef GL_ARRAY_BUFFER if (!strcmp(name, "GL_ARRAY_BUFFER")) { return GL_ARRAY_BUFFER; } +#endif +#ifdef GL_ARRAY_STRIDE if (!strcmp(name, "GL_ARRAY_STRIDE")) { return GL_ARRAY_STRIDE; } +#endif +#ifdef GL_BGRA_INTEGER if (!strcmp(name, "GL_BGRA_INTEGER")) { return GL_BGRA_INTEGER; } +#endif +#ifdef GL_BIAS_BIT_ATI if (!strcmp(name, "GL_BIAS_BIT_ATI")) { return GL_BIAS_BIT_ATI; } +#endif +#ifdef GL_BITMAP_TOKEN if (!strcmp(name, "GL_BITMAP_TOKEN")) { return GL_BITMAP_TOKEN; } +#endif +#ifdef GL_BLUE_BIT_ATI if (!strcmp(name, "GL_BLUE_BIT_ATI")) { return GL_BLUE_BIT_ATI; } +#endif +#ifdef GL_BLUE_INTEGER if (!strcmp(name, "GL_BLUE_INTEGER")) { return GL_BLUE_INTEGER; } +#endif +#ifdef GL_BUFFER_USAGE if (!strcmp(name, "GL_BUFFER_USAGE")) { return GL_BUFFER_USAGE; } +#endif +#ifdef GL_CLEAR_BUFFER if (!strcmp(name, "GL_CLEAR_BUFFER")) { return GL_CLEAR_BUFFER; } +#endif +#ifdef GL_COLORBURN_NV if (!strcmp(name, "GL_COLORBURN_NV")) { return GL_COLORBURN_NV; } +#endif +#ifdef GL_COLOR_MATRIX if (!strcmp(name, "GL_COLOR_MATRIX")) { return GL_COLOR_MATRIX; } +#endif +#ifdef GL_COMBINER0_NV if (!strcmp(name, "GL_COMBINER0_NV")) { return GL_COMBINER0_NV; } +#endif +#ifdef GL_COMBINER1_NV if (!strcmp(name, "GL_COMBINER1_NV")) { return GL_COMBINER1_NV; } +#endif +#ifdef GL_COMBINER2_NV if (!strcmp(name, "GL_COMBINER2_NV")) { return GL_COMBINER2_NV; } +#endif +#ifdef GL_COMBINER3_NV if (!strcmp(name, "GL_COMBINER3_NV")) { return GL_COMBINER3_NV; } +#endif +#ifdef GL_COMBINER4_NV if (!strcmp(name, "GL_COMBINER4_NV")) { return GL_COMBINER4_NV; } +#endif +#ifdef GL_COMBINER5_NV if (!strcmp(name, "GL_COMBINER5_NV")) { return GL_COMBINER5_NV; } +#endif +#ifdef GL_COMBINER6_NV if (!strcmp(name, "GL_COMBINER6_NV")) { return GL_COMBINER6_NV; } +#endif +#ifdef GL_COMBINER7_NV if (!strcmp(name, "GL_COMBINER7_NV")) { return GL_COMBINER7_NV; } +#endif +#ifdef GL_COMP_BIT_ATI if (!strcmp(name, "GL_COMP_BIT_ATI")) { return GL_COMP_BIT_ATI; } +#endif +#ifdef GL_CONSTANT_ARB if (!strcmp(name, "GL_CONSTANT_ARB")) { return GL_CONSTANT_ARB; } +#endif +#ifdef GL_CONSTANT_EXT if (!strcmp(name, "GL_CONSTANT_EXT")) { return GL_CONSTANT_EXT; } +#endif +#ifdef GL_CONST_EYE_NV if (!strcmp(name, "GL_CONST_EYE_NV")) { return GL_CONST_EYE_NV; } +#endif +#ifdef GL_CONTEXT_LOST +if (!strcmp(name, "GL_CONTEXT_LOST")) +{ + return GL_CONTEXT_LOST; +} +#endif +#ifdef GL_DEBUG_OUTPUT if (!strcmp(name, "GL_DEBUG_OUTPUT")) { return GL_DEBUG_OUTPUT; } +#endif +#ifdef GL_DEPTH_BUFFER if (!strcmp(name, "GL_DEPTH_BUFFER")) { return GL_DEPTH_BUFFER; } +#endif +#ifdef GL_DISCRETE_AMD if (!strcmp(name, "GL_DISCRETE_AMD")) { return GL_DISCRETE_AMD; } +#endif +#ifdef GL_DISPLAY_LIST if (!strcmp(name, "GL_DISPLAY_LIST")) { return GL_DISPLAY_LIST; } +#endif +#ifdef GL_DOT2_ADD_ATI if (!strcmp(name, "GL_DOT2_ADD_ATI")) { return GL_DOT2_ADD_ATI; } +#endif +#ifdef GL_DOT3_RGB_ARB if (!strcmp(name, "GL_DOT3_RGB_ARB")) { return GL_DOT3_RGB_ARB; } +#endif +#ifdef GL_DOT3_RGB_EXT if (!strcmp(name, "GL_DOT3_RGB_EXT")) { return GL_DOT3_RGB_EXT; } +#endif +#ifdef GL_DOUBLEBUFFER if (!strcmp(name, "GL_DOUBLEBUFFER")) { return GL_DOUBLEBUFFER; } +#endif +#ifdef GL_DRAW_BUFFER0 if (!strcmp(name, "GL_DRAW_BUFFER0")) { return GL_DRAW_BUFFER0; } +#endif +#ifdef GL_DRAW_BUFFER1 if (!strcmp(name, "GL_DRAW_BUFFER1")) { return GL_DRAW_BUFFER1; } +#endif +#ifdef GL_DRAW_BUFFER2 if (!strcmp(name, "GL_DRAW_BUFFER2")) { return GL_DRAW_BUFFER2; } +#endif +#ifdef GL_DRAW_BUFFER3 if (!strcmp(name, "GL_DRAW_BUFFER3")) { return GL_DRAW_BUFFER3; } +#endif +#ifdef GL_DRAW_BUFFER4 if (!strcmp(name, "GL_DRAW_BUFFER4")) { return GL_DRAW_BUFFER4; } +#endif +#ifdef GL_DRAW_BUFFER5 if (!strcmp(name, "GL_DRAW_BUFFER5")) { return GL_DRAW_BUFFER5; } +#endif +#ifdef GL_DRAW_BUFFER6 if (!strcmp(name, "GL_DRAW_BUFFER6")) { return GL_DRAW_BUFFER6; } +#endif +#ifdef GL_DRAW_BUFFER7 if (!strcmp(name, "GL_DRAW_BUFFER7")) { return GL_DRAW_BUFFER7; } +#endif +#ifdef GL_DRAW_BUFFER8 if (!strcmp(name, "GL_DRAW_BUFFER8")) { return GL_DRAW_BUFFER8; } +#endif +#ifdef GL_DRAW_BUFFER9 if (!strcmp(name, "GL_DRAW_BUFFER9")) { return GL_DRAW_BUFFER9; } +#endif +#ifdef GL_DRIVER_REGAL if (!strcmp(name, "GL_DRIVER_REGAL")) { return GL_DRIVER_REGAL; } +#endif +#ifdef GL_DYNAMIC_COPY if (!strcmp(name, "GL_DYNAMIC_COPY")) { return GL_DYNAMIC_COPY; } +#endif +#ifdef GL_DYNAMIC_DRAW if (!strcmp(name, "GL_DYNAMIC_DRAW")) { return GL_DYNAMIC_DRAW; } +#endif +#ifdef GL_DYNAMIC_READ if (!strcmp(name, "GL_DYNAMIC_READ")) { return GL_DYNAMIC_READ; } -if (!strcmp(name, "GL_E_TIMES_F_NV")) -{ - return GL_E_TIMES_F_NV; -} +#endif +#ifdef GL_EXCLUSION_NV if (!strcmp(name, "GL_EXCLUSION_NV")) { return GL_EXCLUSION_NV; } +#endif +#ifdef GL_E_TIMES_F_NV +if (!strcmp(name, "GL_E_TIMES_F_NV")) +{ + return GL_E_TIMES_F_NV; +} +#endif +#ifdef GL_FILE_NAME_NV if (!strcmp(name, "GL_FILE_NAME_NV")) { return GL_FILE_NAME_NV; } +#endif +#ifdef GL_FLOAT_MAT2x3 if (!strcmp(name, "GL_FLOAT_MAT2x3")) { return GL_FLOAT_MAT2x3; } +#endif +#ifdef GL_FLOAT_MAT2x4 if (!strcmp(name, "GL_FLOAT_MAT2x4")) { return GL_FLOAT_MAT2x4; } +#endif +#ifdef GL_FLOAT_MAT3x2 if (!strcmp(name, "GL_FLOAT_MAT3x2")) { return GL_FLOAT_MAT3x2; } +#endif +#ifdef GL_FLOAT_MAT3x4 if (!strcmp(name, "GL_FLOAT_MAT3x4")) { return GL_FLOAT_MAT3x4; } +#endif +#ifdef GL_FLOAT_MAT4x2 if (!strcmp(name, "GL_FLOAT_MAT4x2")) { return GL_FLOAT_MAT4x2; } +#endif +#ifdef GL_FLOAT_MAT4x3 if (!strcmp(name, "GL_FLOAT_MAT4x3")) { return GL_FLOAT_MAT4x3; } +#endif +#ifdef GL_FLOAT_R16_NV if (!strcmp(name, "GL_FLOAT_R16_NV")) { return GL_FLOAT_R16_NV; } +#endif +#ifdef GL_FLOAT_R32_NV if (!strcmp(name, "GL_FLOAT_R32_NV")) { return GL_FLOAT_R32_NV; } +#endif +#ifdef GL_FLOAT_RGB_NV if (!strcmp(name, "GL_FLOAT_RGB_NV")) { return GL_FLOAT_RGB_NV; } +#endif +#ifdef GL_FULL_SUPPORT if (!strcmp(name, "GL_FULL_SUPPORT")) { return GL_FULL_SUPPORT; } +#endif +#ifdef GL_FUNC_ADD_EXT if (!strcmp(name, "GL_FUNC_ADD_EXT")) { return GL_FUNC_ADD_EXT; } +#endif +#ifdef GL_HALF_BIT_ATI if (!strcmp(name, "GL_HALF_BIT_ATI")) { return GL_HALF_BIT_ATI; } +#endif +#ifdef GL_HARDLIGHT_NV if (!strcmp(name, "GL_HARDLIGHT_NV")) { return GL_HARDLIGHT_NV; } +#endif +#ifdef GL_HSL_COLOR_NV if (!strcmp(name, "GL_HSL_COLOR_NV")) { return GL_HSL_COLOR_NV; } +#endif +#ifdef GL_IMAGE_1D_EXT if (!strcmp(name, "GL_IMAGE_1D_EXT")) { return GL_IMAGE_1D_EXT; } +#endif +#ifdef GL_IMAGE_2D_EXT if (!strcmp(name, "GL_IMAGE_2D_EXT")) { return GL_IMAGE_2D_EXT; } +#endif +#ifdef GL_IMAGE_3D_EXT if (!strcmp(name, "GL_IMAGE_3D_EXT")) { return GL_IMAGE_3D_EXT; } +#endif +#ifdef GL_IMAGE_BUFFER if (!strcmp(name, "GL_IMAGE_BUFFER")) { return GL_IMAGE_BUFFER; } +#endif +#ifdef GL_INDEX_OFFSET if (!strcmp(name, "GL_INDEX_OFFSET")) { return GL_INDEX_OFFSET; } +#endif +#ifdef GL_INT8_VEC2_NV if (!strcmp(name, "GL_INT8_VEC2_NV")) { return GL_INT8_VEC2_NV; } +#endif +#ifdef GL_INT8_VEC3_NV if (!strcmp(name, "GL_INT8_VEC3_NV")) { return GL_INT8_VEC3_NV; } +#endif +#ifdef GL_INT8_VEC4_NV if (!strcmp(name, "GL_INT8_VEC4_NV")) { return GL_INT8_VEC4_NV; } +#endif +#ifdef GL_INT_IMAGE_1D if (!strcmp(name, "GL_INT_IMAGE_1D")) { return GL_INT_IMAGE_1D; } +#endif +#ifdef GL_INT_IMAGE_2D if (!strcmp(name, "GL_INT_IMAGE_2D")) { return GL_INT_IMAGE_2D; } +#endif +#ifdef GL_INT_IMAGE_3D if (!strcmp(name, "GL_INT_IMAGE_3D")) { return GL_INT_IMAGE_3D; } +#endif +#ifdef GL_INT_VEC2_ARB if (!strcmp(name, "GL_INT_VEC2_ARB")) { return GL_INT_VEC2_ARB; } +#endif +#ifdef GL_INT_VEC3_ARB if (!strcmp(name, "GL_INT_VEC3_ARB")) { return GL_INT_VEC3_ARB; } +#endif +#ifdef GL_INT_VEC4_ARB if (!strcmp(name, "GL_INT_VEC4_ARB")) { return GL_INT_VEC4_ARB; } +#endif +#ifdef GL_INVALID_ENUM if (!strcmp(name, "GL_INVALID_ENUM")) { return GL_INVALID_ENUM; } +#endif +#ifdef GL_IS_PER_PATCH if (!strcmp(name, "GL_IS_PER_PATCH")) { return GL_IS_PER_PATCH; } +#endif +#ifdef GL_IS_ROW_MAJOR if (!strcmp(name, "GL_IS_ROW_MAJOR")) { return GL_IS_ROW_MAJOR; } +#endif +#ifdef GL_KHR_no_error +if (!strcmp(name, "GL_KHR_no_error")) +{ + return GL_KHR_no_error; +} +#endif +#ifdef GL_KTX_Z_REGION if (!strcmp(name, "GL_KTX_Z_REGION")) { return GL_KTX_Z_REGION; } +#endif +#ifdef GL_LIGHTING_BIT if (!strcmp(name, "GL_LIGHTING_BIT")) { return GL_LIGHTING_BIT; } +#endif +#ifdef GL_LINE_STIPPLE if (!strcmp(name, "GL_LINE_STIPPLE")) { return GL_LINE_STIPPLE; } +#endif +#ifdef GL_MAP1_COLOR_4 if (!strcmp(name, "GL_MAP1_COLOR_4")) { return GL_MAP1_COLOR_4; } +#endif +#ifdef GL_MAP2_COLOR_4 if (!strcmp(name, "GL_MAP2_COLOR_4")) { return GL_MAP2_COLOR_4; } +#endif +#ifdef GL_MAP_READ_BIT if (!strcmp(name, "GL_MAP_READ_BIT")) { return GL_MAP_READ_BIT; } -if (!strcmp(name, "GL_MATRIX10_ARB")) +#endif +#ifdef GL_MAP_READ_BIT +if (!strcmp(name, "GL_MAP_READ_BIT")) +{ + return GL_MAP_READ_BIT; +} +#endif +#ifdef GL_MATRIX10_ARB +if (!strcmp(name, "GL_MATRIX10_ARB")) { return GL_MATRIX10_ARB; } +#endif +#ifdef GL_MATRIX11_ARB if (!strcmp(name, "GL_MATRIX11_ARB")) { return GL_MATRIX11_ARB; } +#endif +#ifdef GL_MATRIX12_ARB if (!strcmp(name, "GL_MATRIX12_ARB")) { return GL_MATRIX12_ARB; } +#endif +#ifdef GL_MATRIX13_ARB if (!strcmp(name, "GL_MATRIX13_ARB")) { return GL_MATRIX13_ARB; } +#endif +#ifdef GL_MATRIX14_ARB if (!strcmp(name, "GL_MATRIX14_ARB")) { return GL_MATRIX14_ARB; } +#endif +#ifdef GL_MATRIX15_ARB if (!strcmp(name, "GL_MATRIX15_ARB")) { return GL_MATRIX15_ARB; } +#endif +#ifdef GL_MATRIX16_ARB if (!strcmp(name, "GL_MATRIX16_ARB")) { return GL_MATRIX16_ARB; } +#endif +#ifdef GL_MATRIX17_ARB if (!strcmp(name, "GL_MATRIX17_ARB")) { return GL_MATRIX17_ARB; } +#endif +#ifdef GL_MATRIX18_ARB if (!strcmp(name, "GL_MATRIX18_ARB")) { return GL_MATRIX18_ARB; } +#endif +#ifdef GL_MATRIX19_ARB if (!strcmp(name, "GL_MATRIX19_ARB")) { return GL_MATRIX19_ARB; } +#endif +#ifdef GL_MATRIX20_ARB if (!strcmp(name, "GL_MATRIX20_ARB")) { return GL_MATRIX20_ARB; } +#endif +#ifdef GL_MATRIX21_ARB if (!strcmp(name, "GL_MATRIX21_ARB")) { return GL_MATRIX21_ARB; } +#endif +#ifdef GL_MATRIX22_ARB if (!strcmp(name, "GL_MATRIX22_ARB")) { return GL_MATRIX22_ARB; } +#endif +#ifdef GL_MATRIX23_ARB if (!strcmp(name, "GL_MATRIX23_ARB")) { return GL_MATRIX23_ARB; } +#endif +#ifdef GL_MATRIX24_ARB if (!strcmp(name, "GL_MATRIX24_ARB")) { return GL_MATRIX24_ARB; } +#endif +#ifdef GL_MATRIX25_ARB if (!strcmp(name, "GL_MATRIX25_ARB")) { return GL_MATRIX25_ARB; } +#endif +#ifdef GL_MATRIX26_ARB if (!strcmp(name, "GL_MATRIX26_ARB")) { return GL_MATRIX26_ARB; } +#endif +#ifdef GL_MATRIX27_ARB if (!strcmp(name, "GL_MATRIX27_ARB")) { return GL_MATRIX27_ARB; } +#endif +#ifdef GL_MATRIX28_ARB if (!strcmp(name, "GL_MATRIX28_ARB")) { return GL_MATRIX28_ARB; } +#endif +#ifdef GL_MATRIX29_ARB if (!strcmp(name, "GL_MATRIX29_ARB")) { return GL_MATRIX29_ARB; } +#endif +#ifdef GL_MATRIX30_ARB if (!strcmp(name, "GL_MATRIX30_ARB")) { return GL_MATRIX30_ARB; } +#endif +#ifdef GL_MATRIX31_ARB if (!strcmp(name, "GL_MATRIX31_ARB")) { return GL_MATRIX31_ARB; } +#endif +#ifdef GL_MAX_RED_SGIS if (!strcmp(name, "GL_MAX_RED_SGIS")) { return GL_MAX_RED_SGIS; } +#endif +#ifdef GL_MEDIUM_FLOAT if (!strcmp(name, "GL_MEDIUM_FLOAT")) { return GL_MEDIUM_FLOAT; } +#endif +#ifdef GL_MIN_RED_SGIS if (!strcmp(name, "GL_MIN_RED_SGIS")) { return GL_MIN_RED_SGIS; } +#endif +#ifdef GL_MULTIPLY_KHR +if (!strcmp(name, "GL_MULTIPLY_KHR")) +{ + return GL_MULTIPLY_KHR; +} +#endif +#ifdef GL_NORMAL_ARRAY if (!strcmp(name, "GL_NORMAL_ARRAY")) { return GL_NORMAL_ARRAY; } +#endif +#ifdef GL_OBJECT_PLANE if (!strcmp(name, "GL_OBJECT_PLANE")) { return GL_OBJECT_PLANE; } +#endif +#ifdef GL_OML_resample if (!strcmp(name, "GL_OML_resample")) { return GL_OML_resample; } -if (!strcmp(name, "GL_OP_CLAMP_EXT")) -{ - return GL_OP_CLAMP_EXT; -} +#endif +#ifdef GL_OPERAND0_RGB if (!strcmp(name, "GL_OPERAND0_RGB")) { return GL_OPERAND0_RGB; } +#endif +#ifdef GL_OPERAND1_RGB if (!strcmp(name, "GL_OPERAND1_RGB")) { return GL_OPERAND1_RGB; } +#endif +#ifdef GL_OPERAND2_RGB if (!strcmp(name, "GL_OPERAND2_RGB")) { return GL_OPERAND2_RGB; } +#endif +#ifdef GL_OP_CLAMP_EXT +if (!strcmp(name, "GL_OP_CLAMP_EXT")) +{ + return GL_OP_CLAMP_EXT; +} +#endif +#ifdef GL_OP_FLOOR_EXT if (!strcmp(name, "GL_OP_FLOOR_EXT")) { return GL_OP_FLOOR_EXT; } +#endif +#ifdef GL_OP_INDEX_EXT if (!strcmp(name, "GL_OP_INDEX_EXT")) { return GL_OP_INDEX_EXT; } +#endif +#ifdef GL_OP_POWER_EXT if (!strcmp(name, "GL_OP_POWER_EXT")) { return GL_OP_POWER_EXT; } +#endif +#ifdef GL_OP_RECIP_EXT if (!strcmp(name, "GL_OP_RECIP_EXT")) { return GL_OP_RECIP_EXT; } +#endif +#ifdef GL_OP_ROUND_EXT if (!strcmp(name, "GL_OP_ROUND_EXT")) { return GL_OP_ROUND_EXT; } +#endif +#ifdef GL_POINT_SMOOTH if (!strcmp(name, "GL_POINT_SMOOTH")) { return GL_POINT_SMOOTH; } +#endif +#ifdef GL_POINT_SPRITE if (!strcmp(name, "GL_POINT_SPRITE")) { return GL_POINT_SPRITE; } +#endif +#ifdef GL_POLYGON_MODE if (!strcmp(name, "GL_POLYGON_MODE")) { return GL_POLYGON_MODE; } +#endif +#ifdef GL_PRESERVE_ATI if (!strcmp(name, "GL_PRESERVE_ATI")) { return GL_PRESERVE_ATI; } +#endif +#ifdef GL_PREVIOUS_ARB if (!strcmp(name, "GL_PREVIOUS_ARB")) { return GL_PREVIOUS_ARB; } +#endif +#ifdef GL_PREVIOUS_EXT if (!strcmp(name, "GL_PREVIOUS_EXT")) { return GL_PREVIOUS_EXT; } +#endif +#ifdef GL_QUERY_BUFFER if (!strcmp(name, "GL_QUERY_BUFFER")) { return GL_QUERY_BUFFER; } +#endif +#ifdef GL_QUERY_RESULT if (!strcmp(name, "GL_QUERY_RESULT")) { return GL_QUERY_RESULT; } +#endif +#ifdef GL_QUERY_TARGET +if (!strcmp(name, "GL_QUERY_TARGET")) +{ + return GL_QUERY_TARGET; +} +#endif +#ifdef GL_R1UI_V3F_SUN if (!strcmp(name, "GL_R1UI_V3F_SUN")) { return GL_R1UI_V3F_SUN; } +#endif +#ifdef GL_REGAL_enable if (!strcmp(name, "GL_REGAL_enable")) { return GL_REGAL_enable; } +#endif +#ifdef GL_RENDERBUFFER if (!strcmp(name, "GL_RENDERBUFFER")) { return GL_RENDERBUFFER; } +#endif +#ifdef GL_RGB10_A2_EXT if (!strcmp(name, "GL_RGB10_A2_EXT")) { return GL_RGB10_A2_EXT; } +#endif +#ifdef GL_RGBA16UI_EXT +if (!strcmp(name, "GL_RGBA16UI_EXT")) +{ + return GL_RGBA16UI_EXT; +} +#endif +#ifdef GL_RGBA16_SNORM if (!strcmp(name, "GL_RGBA16_SNORM")) { return GL_RGBA16_SNORM; } -if (!strcmp(name, "GL_RGBA16UI_EXT")) +#endif +#ifdef GL_RGBA16_SNORM +if (!strcmp(name, "GL_RGBA16_SNORM")) { - return GL_RGBA16UI_EXT; + return GL_RGBA16_SNORM; } +#endif +#ifdef GL_RGBA32UI_EXT if (!strcmp(name, "GL_RGBA32UI_EXT")) { return GL_RGBA32UI_EXT; } +#endif +#ifdef GL_RGBA_INTEGER if (!strcmp(name, "GL_RGBA_INTEGER")) { return GL_RGBA_INTEGER; } +#endif +#ifdef GL_SAMPLER_CUBE if (!strcmp(name, "GL_SAMPLER_CUBE")) { return GL_SAMPLER_CUBE; } +#endif +#ifdef GL_SAMPLES_3DFX if (!strcmp(name, "GL_SAMPLES_3DFX")) { return GL_SAMPLES_3DFX; } +#endif +#ifdef GL_SAMPLES_SGIS if (!strcmp(name, "GL_SAMPLES_SGIS")) { return GL_SAMPLES_SGIS; } +#endif +#ifdef GL_SCISSOR_TEST if (!strcmp(name, "GL_SCISSOR_TEST")) { return GL_SCISSOR_TEST; } +#endif +#ifdef GL_SCISSOR_TEST +if (!strcmp(name, "GL_SCISSOR_TEST")) +{ + return GL_SCISSOR_TEST; +} +#endif +#ifdef GL_SEPARABLE_2D if (!strcmp(name, "GL_SEPARABLE_2D")) { return GL_SEPARABLE_2D; } +#endif +#ifdef GL_SGIX_clipmap if (!strcmp(name, "GL_SGIX_clipmap")) { return GL_SGIX_clipmap; } +#endif +#ifdef GL_SINGLE_COLOR if (!strcmp(name, "GL_SINGLE_COLOR")) { return GL_SINGLE_COLOR; } +#endif +#ifdef GL_SOFTLIGHT_NV if (!strcmp(name, "GL_SOFTLIGHT_NV")) { return GL_SOFTLIGHT_NV; } +#endif +#ifdef GL_SRGB8_ALPHA8 if (!strcmp(name, "GL_SRGB8_ALPHA8")) { return GL_SRGB8_ALPHA8; } +#endif +#ifdef GL_STENCIL_BITS if (!strcmp(name, "GL_STENCIL_BITS")) { return GL_STENCIL_BITS; } +#endif +#ifdef GL_STENCIL_FAIL if (!strcmp(name, "GL_STENCIL_FAIL")) { return GL_STENCIL_FAIL; } +#endif +#ifdef GL_STENCIL_FUNC if (!strcmp(name, "GL_STENCIL_FUNC")) { return GL_STENCIL_FUNC; } +#endif +#ifdef GL_STENCIL_TEST if (!strcmp(name, "GL_STENCIL_TEST")) { return GL_STENCIL_TEST; } +#endif +#ifdef GL_SUBTRACT_ARB if (!strcmp(name, "GL_SUBTRACT_ARB")) { return GL_SUBTRACT_ARB; } +#endif +#ifdef GL_T2F_C4UB_V3F if (!strcmp(name, "GL_T2F_C4UB_V3F")) { return GL_T2F_C4UB_V3F; } +#endif +#ifdef GL_TEXTURE0_ARB if (!strcmp(name, "GL_TEXTURE0_ARB")) { return GL_TEXTURE0_ARB; } +#endif +#ifdef GL_TEXTURE1_ARB if (!strcmp(name, "GL_TEXTURE1_ARB")) { return GL_TEXTURE1_ARB; } +#endif +#ifdef GL_TEXTURE2_ARB if (!strcmp(name, "GL_TEXTURE2_ARB")) { return GL_TEXTURE2_ARB; } +#endif +#ifdef GL_TEXTURE3_ARB if (!strcmp(name, "GL_TEXTURE3_ARB")) { return GL_TEXTURE3_ARB; } +#endif +#ifdef GL_TEXTURE4_ARB if (!strcmp(name, "GL_TEXTURE4_ARB")) { return GL_TEXTURE4_ARB; } +#endif +#ifdef GL_TEXTURE5_ARB if (!strcmp(name, "GL_TEXTURE5_ARB")) { return GL_TEXTURE5_ARB; } +#endif +#ifdef GL_TEXTURE6_ARB if (!strcmp(name, "GL_TEXTURE6_ARB")) { return GL_TEXTURE6_ARB; } +#endif +#ifdef GL_TEXTURE7_ARB if (!strcmp(name, "GL_TEXTURE7_ARB")) { return GL_TEXTURE7_ARB; } +#endif +#ifdef GL_TEXTURE8_ARB if (!strcmp(name, "GL_TEXTURE8_ARB")) { return GL_TEXTURE8_ARB; } +#endif +#ifdef GL_TEXTURE9_ARB if (!strcmp(name, "GL_TEXTURE9_ARB")) { return GL_TEXTURE9_ARB; } +#endif +#ifdef GL_TEXTURE_VIEW if (!strcmp(name, "GL_TEXTURE_VIEW")) { return GL_TEXTURE_VIEW; } +#endif +#ifdef GL_TIME_ELAPSED if (!strcmp(name, "GL_TIME_ELAPSED")) { return GL_TIME_ELAPSED; } +#endif +#ifdef GL_TRANSPOSE_NV if (!strcmp(name, "GL_TRANSPOSE_NV")) { return GL_TRANSPOSE_NV; } +#endif +#ifdef GL_TRIANGLE_FAN if (!strcmp(name, "GL_TRIANGLE_FAN")) { return GL_TRIANGLE_FAN; } +#endif +#ifdef GL_UNIFORM_SIZE if (!strcmp(name, "GL_UNIFORM_SIZE")) { return GL_UNIFORM_SIZE; } +#endif +#ifdef GL_UNIFORM_TYPE if (!strcmp(name, "GL_UNIFORM_TYPE")) { return GL_UNIFORM_TYPE; } +#endif +#ifdef GL_UNSIGNED_INT if (!strcmp(name, "GL_UNSIGNED_INT")) { return GL_UNSIGNED_INT; } +#endif +#ifdef GL_VERTEX_ARRAY if (!strcmp(name, "GL_VERTEX_ARRAY")) { return GL_VERTEX_ARRAY; } +#endif +#ifdef GL_VERTEX_ID_NV if (!strcmp(name, "GL_VERTEX_ID_NV")) { return GL_VERTEX_ID_NV; } +#endif +#ifdef GL_VIEWPORT_BIT if (!strcmp(name, "GL_VIEWPORT_BIT")) { return GL_VIEWPORT_BIT; } -return _GL_UNDEFINED; -case 16: -if (!strcmp(name, "GL_ALPHA16_SNORM")) +#endif +#ifdef GL_WARP_SIZE_NV +if (!strcmp(name, "GL_WARP_SIZE_NV")) { - return GL_ALPHA16_SNORM; + return GL_WARP_SIZE_NV; } +#endif +return _GL_UNDEFINED; +case 16: +#ifdef GL_ALPHA16UI_EXT if (!strcmp(name, "GL_ALPHA16UI_EXT")) { return GL_ALPHA16UI_EXT; } +#endif +#ifdef GL_ALPHA16_SNORM +if (!strcmp(name, "GL_ALPHA16_SNORM")) +{ + return GL_ALPHA16_SNORM; +} +#endif +#ifdef GL_ALPHA32UI_EXT if (!strcmp(name, "GL_ALPHA32UI_EXT")) { return GL_ALPHA32UI_EXT; } +#endif +#ifdef GL_ALPHA_INTEGER if (!strcmp(name, "GL_ALPHA_INTEGER")) { return GL_ALPHA_INTEGER; } +#endif +#ifdef GL_APPLE_rgb_422 if (!strcmp(name, "GL_APPLE_rgb_422")) { return GL_APPLE_rgb_422; } +#endif +#ifdef GL_BLEND_DST_RGB if (!strcmp(name, "GL_BLEND_DST_RGB")) { return GL_BLEND_DST_RGB; } +#endif +#ifdef GL_BLEND_SRC_RGB if (!strcmp(name, "GL_BLEND_SRC_RGB")) { return GL_BLEND_SRC_RGB; } +#endif +#ifdef GL_BOOL_VEC2_ARB if (!strcmp(name, "GL_BOOL_VEC2_ARB")) { return GL_BOOL_VEC2_ARB; } +#endif +#ifdef GL_BOOL_VEC3_ARB if (!strcmp(name, "GL_BOOL_VEC3_ARB")) { return GL_BOOL_VEC3_ARB; } +#endif +#ifdef GL_BOOL_VEC4_ARB if (!strcmp(name, "GL_BOOL_VEC4_ARB")) { return GL_BOOL_VEC4_ARB; } +#endif +#ifdef GL_BUFFER_ACCESS if (!strcmp(name, "GL_BUFFER_ACCESS")) { return GL_BUFFER_ACCESS; } +#endif +#ifdef GL_BUFFER_MAPPED if (!strcmp(name, "GL_BUFFER_MAPPED")) { return GL_BUFFER_MAPPED; } +#endif +#ifdef GL_CLAMP_TO_EDGE if (!strcmp(name, "GL_CLAMP_TO_EDGE")) { return GL_CLAMP_TO_EDGE; } +#endif +#ifdef GL_CLEAR_TEXTURE if (!strcmp(name, "GL_CLEAR_TEXTURE")) { return GL_CLEAR_TEXTURE; } +#endif +#ifdef GL_CLOSE_PATH_NV if (!strcmp(name, "GL_CLOSE_PATH_NV")) { return GL_CLOSE_PATH_NV; } +#endif +#ifdef GL_COLORBURN_KHR +if (!strcmp(name, "GL_COLORBURN_KHR")) +{ + return GL_COLORBURN_KHR; +} +#endif +#ifdef GL_COLORDODGE_NV if (!strcmp(name, "GL_COLORDODGE_NV")) { return GL_COLORDODGE_NV; } +#endif +#ifdef GL_COLOR_INDEXES if (!strcmp(name, "GL_COLOR_INDEXES")) { return GL_COLOR_INDEXES; } +#endif +#ifdef GL_COLOR_SUM_ARB if (!strcmp(name, "GL_COLOR_SUM_ARB")) { return GL_COLOR_SUM_ARB; } +#endif +#ifdef GL_COLOR_SUM_EXT if (!strcmp(name, "GL_COLOR_SUM_EXT")) { return GL_COLOR_SUM_EXT; } +#endif +#ifdef GL_COMBINE_ALPHA if (!strcmp(name, "GL_COMBINE_ALPHA")) { return GL_COMBINE_ALPHA; } +#endif +#ifdef GL_COMPRESSED_RG if (!strcmp(name, "GL_COMPRESSED_RG")) { return GL_COMPRESSED_RG; } +#endif +#ifdef GL_CONFORMANT_NV +if (!strcmp(name, "GL_CONFORMANT_NV")) +{ + return GL_CONFORMANT_NV; +} +#endif +#ifdef GL_CONTEXT_FLAGS if (!strcmp(name, "GL_CONTEXT_FLAGS")) { return GL_CONTEXT_FLAGS; } +#endif +#ifdef GL_COORD_REPLACE if (!strcmp(name, "GL_COORD_REPLACE")) { return GL_COORD_REPLACE; } +#endif +#ifdef GL_COPY_INVERTED if (!strcmp(name, "GL_COPY_INVERTED")) { return GL_COPY_INVERTED; } +#endif +#ifdef GL_COUNT_DOWN_NV if (!strcmp(name, "GL_COUNT_DOWN_NV")) { return GL_COUNT_DOWN_NV; } +#endif +#ifdef GL_CULL_MODES_NV if (!strcmp(name, "GL_CULL_MODES_NV")) { return GL_CULL_MODES_NV; } +#endif +#ifdef GL_CURRENT_COLOR if (!strcmp(name, "GL_CURRENT_COLOR")) { return GL_CURRENT_COLOR; } +#endif +#ifdef GL_CURRENT_INDEX if (!strcmp(name, "GL_CURRENT_INDEX")) { return GL_CURRENT_INDEX; } +#endif +#ifdef GL_CURRENT_QUERY if (!strcmp(name, "GL_CURRENT_QUERY")) { return GL_CURRENT_QUERY; } +#endif +#ifdef GL_DECR_WRAP_EXT if (!strcmp(name, "GL_DECR_WRAP_EXT")) { return GL_DECR_WRAP_EXT; } +#endif +#ifdef GL_DELETE_STATUS if (!strcmp(name, "GL_DELETE_STATUS")) { return GL_DELETE_STATUS; } +#endif +#ifdef GL_DEPTH_STENCIL if (!strcmp(name, "GL_DEPTH_STENCIL")) { return GL_DEPTH_STENCIL; } +#endif +#ifdef GL_DIFFERENCE_NV if (!strcmp(name, "GL_DIFFERENCE_NV")) { return GL_DIFFERENCE_NV; } +#endif +#ifdef GL_DOT3_RGBA_ARB if (!strcmp(name, "GL_DOT3_RGBA_ARB")) { return GL_DOT3_RGBA_ARB; } +#endif +#ifdef GL_DOT3_RGBA_EXT if (!strcmp(name, "GL_DOT3_RGBA_EXT")) { return GL_DOT3_RGBA_EXT; } +#endif +#ifdef GL_DOUBLE_MAT2x3 if (!strcmp(name, "GL_DOUBLE_MAT2x3")) { return GL_DOUBLE_MAT2x3; } +#endif +#ifdef GL_DOUBLE_MAT2x4 if (!strcmp(name, "GL_DOUBLE_MAT2x4")) { return GL_DOUBLE_MAT2x4; } +#endif +#ifdef GL_DOUBLE_MAT3x2 if (!strcmp(name, "GL_DOUBLE_MAT3x2")) { return GL_DOUBLE_MAT3x2; } +#endif +#ifdef GL_DOUBLE_MAT3x4 if (!strcmp(name, "GL_DOUBLE_MAT3x4")) { return GL_DOUBLE_MAT3x4; } +#endif +#ifdef GL_DOUBLE_MAT4x2 if (!strcmp(name, "GL_DOUBLE_MAT4x2")) { return GL_DOUBLE_MAT4x2; } +#endif +#ifdef GL_DOUBLE_MAT4x3 if (!strcmp(name, "GL_DOUBLE_MAT4x3")) { return GL_DOUBLE_MAT4x3; } +#endif +#ifdef GL_DRAW_BUFFER10 if (!strcmp(name, "GL_DRAW_BUFFER10")) { return GL_DRAW_BUFFER10; } +#endif +#ifdef GL_DRAW_BUFFER11 if (!strcmp(name, "GL_DRAW_BUFFER11")) { return GL_DRAW_BUFFER11; } +#endif +#ifdef GL_DRAW_BUFFER12 if (!strcmp(name, "GL_DRAW_BUFFER12")) { return GL_DRAW_BUFFER12; } +#endif +#ifdef GL_DRAW_BUFFER13 if (!strcmp(name, "GL_DRAW_BUFFER13")) { return GL_DRAW_BUFFER13; } +#endif +#ifdef GL_DRAW_BUFFER14 if (!strcmp(name, "GL_DRAW_BUFFER14")) { return GL_DRAW_BUFFER14; } +#endif +#ifdef GL_DRAW_BUFFER15 if (!strcmp(name, "GL_DRAW_BUFFER15")) { return GL_DRAW_BUFFER15; } +#endif +#ifdef GL_DSDT8_MAG8_NV +if (!strcmp(name, "GL_DSDT8_MAG8_NV")) +{ + return GL_DSDT8_MAG8_NV; +} +#endif +#ifdef GL_DSDT8_MAG8_NV if (!strcmp(name, "GL_DSDT8_MAG8_NV")) { return GL_DSDT8_MAG8_NV; } +#endif +#ifdef GL_EMBOSS_MAP_NV if (!strcmp(name, "GL_EMBOSS_MAP_NV")) { return GL_EMBOSS_MAP_NV; } +#endif +#ifdef GL_EXCLUSION_KHR +if (!strcmp(name, "GL_EXCLUSION_KHR")) +{ + return GL_EXCLUSION_KHR; +} +#endif +#ifdef GL_EXT_Cg_shader if (!strcmp(name, "GL_EXT_Cg_shader")) { return GL_EXT_Cg_shader; } +#endif +#ifdef GL_EXT_fog_coord if (!strcmp(name, "GL_EXT_fog_coord")) { return GL_EXT_fog_coord; } +#endif +#ifdef GL_EXT_histogram if (!strcmp(name, "GL_EXT_histogram")) { return GL_EXT_histogram; } +#endif +#ifdef GL_EXT_texture3D if (!strcmp(name, "GL_EXT_texture3D")) { return GL_EXT_texture3D; } +#endif +#ifdef GL_EYE_LINE_SGIS if (!strcmp(name, "GL_EYE_LINE_SGIS")) { return GL_EYE_LINE_SGIS; } +#endif +#ifdef GL_EYE_RADIAL_NV if (!strcmp(name, "GL_EYE_RADIAL_NV")) { return GL_EYE_RADIAL_NV; } +#endif +#ifdef GL_FLOAT_RG16_NV if (!strcmp(name, "GL_FLOAT_RG16_NV")) { return GL_FLOAT_RG16_NV; } +#endif +#ifdef GL_FLOAT_RG32_NV if (!strcmp(name, "GL_FLOAT_RG32_NV")) { return GL_FLOAT_RG32_NV; } +#endif +#ifdef GL_FLOAT_RGBA_NV if (!strcmp(name, "GL_FLOAT_RGBA_NV")) { return GL_FLOAT_RGBA_NV; } +#endif +#ifdef GL_FOG_COORD_SRC if (!strcmp(name, "GL_FOG_COORD_SRC")) { return GL_FOG_COORD_SRC; } +#endif +#ifdef GL_FUNC_SUBTRACT if (!strcmp(name, "GL_FUNC_SUBTRACT")) { return GL_FUNC_SUBTRACT; } +#endif +#ifdef GL_GREEN_BIT_ATI if (!strcmp(name, "GL_GREEN_BIT_ATI")) { return GL_GREEN_BIT_ATI; } +#endif +#ifdef GL_GREEN_INTEGER if (!strcmp(name, "GL_GREEN_INTEGER")) { return GL_GREEN_INTEGER; } +#endif +#ifdef GL_HALF_FLOAT_NV if (!strcmp(name, "GL_HALF_FLOAT_NV")) { return GL_HALF_FLOAT_NV; } +#endif +#ifdef GL_HARDLIGHT_KHR +if (!strcmp(name, "GL_HARDLIGHT_KHR")) +{ + return GL_HARDLIGHT_KHR; +} +#endif +#ifdef GL_HISTOGRAM_EXT if (!strcmp(name, "GL_HISTOGRAM_EXT")) { return GL_HISTOGRAM_EXT; } +#endif +#ifdef GL_HSL_COLOR_KHR +if (!strcmp(name, "GL_HSL_COLOR_KHR")) +{ + return GL_HSL_COLOR_KHR; +} +#endif +#ifdef GL_IGNORE_BORDER if (!strcmp(name, "GL_IGNORE_BORDER")) { return GL_IGNORE_BORDER; } +#endif +#ifdef GL_IMAGE_2D_RECT if (!strcmp(name, "GL_IMAGE_2D_RECT")) { return GL_IMAGE_2D_RECT; } +#endif +#ifdef GL_INCR_WRAP_EXT if (!strcmp(name, "GL_INCR_WRAP_EXT")) { return GL_INCR_WRAP_EXT; } +#endif +#ifdef GL_INDEX_BIT_PGI if (!strcmp(name, "GL_INDEX_BIT_PGI")) { return GL_INDEX_BIT_PGI; } +#endif +#ifdef GL_INT16_VEC2_NV if (!strcmp(name, "GL_INT16_VEC2_NV")) { return GL_INT16_VEC2_NV; } +#endif +#ifdef GL_INT16_VEC3_NV if (!strcmp(name, "GL_INT16_VEC3_NV")) { return GL_INT16_VEC3_NV; } +#endif +#ifdef GL_INT16_VEC4_NV if (!strcmp(name, "GL_INT16_VEC4_NV")) { return GL_INT16_VEC4_NV; } +#endif +#ifdef GL_INT64_VEC2_NV if (!strcmp(name, "GL_INT64_VEC2_NV")) { return GL_INT64_VEC2_NV; } +#endif +#ifdef GL_INT64_VEC3_NV if (!strcmp(name, "GL_INT64_VEC3_NV")) { return GL_INT64_VEC3_NV; } +#endif +#ifdef GL_INT64_VEC4_NV if (!strcmp(name, "GL_INT64_VEC4_NV")) { return GL_INT64_VEC4_NV; } +#endif +#ifdef GL_INTENSITY_EXT if (!strcmp(name, "GL_INTENSITY_EXT")) { return GL_INTENSITY_EXT; } +#endif +#ifdef GL_INTERLACE_OML if (!strcmp(name, "GL_INTERLACE_OML")) { return GL_INTERLACE_OML; } +#endif +#ifdef GL_INVALID_INDEX if (!strcmp(name, "GL_INVALID_INDEX")) { return GL_INVALID_INDEX; } +#endif +#ifdef GL_INVALID_VALUE if (!strcmp(name, "GL_INVALID_VALUE")) { return GL_INVALID_VALUE; } +#endif +#ifdef GL_INVARIANT_EXT if (!strcmp(name, "GL_INVARIANT_EXT")) { return GL_INVARIANT_EXT; } +#endif +#ifdef GL_INVERT_OVG_NV if (!strcmp(name, "GL_INVERT_OVG_NV")) { return GL_INVERT_OVG_NV; } +#endif +#ifdef GL_INVERT_RGB_NV if (!strcmp(name, "GL_INVERT_RGB_NV")) { return GL_INVERT_RGB_NV; } +#endif +#ifdef GL_ITALIC_BIT_NV if (!strcmp(name, "GL_ITALIC_BIT_NV")) { return GL_ITALIC_BIT_NV; } +#endif +#ifdef GL_LINEARBURN_NV if (!strcmp(name, "GL_LINEARBURN_NV")) { return GL_LINEARBURN_NV; } -if (!strcmp(name, "GL_LOG_APP_REGAL")) -{ - return GL_LOG_APP_REGAL; -} +#endif +#ifdef GL_LOGIC_OP_MODE if (!strcmp(name, "GL_LOGIC_OP_MODE")) { return GL_LOGIC_OP_MODE; } +#endif +#ifdef GL_LOG_APP_REGAL +if (!strcmp(name, "GL_LOG_APP_REGAL")) +{ + return GL_LOG_APP_REGAL; +} +#endif +#ifdef GL_MAJOR_VERSION if (!strcmp(name, "GL_MAJOR_VERSION")) { return GL_MAJOR_VERSION; } +#endif +#ifdef GL_MAP1_VERTEX_3 if (!strcmp(name, "GL_MAP1_VERTEX_3")) { return GL_MAP1_VERTEX_3; } +#endif +#ifdef GL_MAP1_VERTEX_4 if (!strcmp(name, "GL_MAP1_VERTEX_4")) { return GL_MAP1_VERTEX_4; } +#endif +#ifdef GL_MAP2_VERTEX_3 if (!strcmp(name, "GL_MAP2_VERTEX_3")) { return GL_MAP2_VERTEX_3; } +#endif +#ifdef GL_MAP2_VERTEX_4 if (!strcmp(name, "GL_MAP2_VERTEX_4")) { return GL_MAP2_VERTEX_4; } +#endif +#ifdef GL_MAP_WRITE_BIT +if (!strcmp(name, "GL_MAP_WRITE_BIT")) +{ + return GL_MAP_WRITE_BIT; +} +#endif +#ifdef GL_MAP_WRITE_BIT if (!strcmp(name, "GL_MAP_WRITE_BIT")) { return GL_MAP_WRITE_BIT; } +#endif +#ifdef GL_MATRIX_STRIDE if (!strcmp(name, "GL_MATRIX_STRIDE")) { return GL_MATRIX_STRIDE; } +#endif +#ifdef GL_MAX_BLUE_SGIS if (!strcmp(name, "GL_MAX_BLUE_SGIS")) { return GL_MAX_BLUE_SGIS; } +#endif +#ifdef GL_MAX_VIEWPORTS if (!strcmp(name, "GL_MAX_VIEWPORTS")) { return GL_MAX_VIEWPORTS; } -if (!strcmp(name, "GL_MIN_BLUE_SGIS")) +#endif +#ifdef GL_MAX_VIEWS_OVR +if (!strcmp(name, "GL_MAX_VIEWS_OVR")) { - return GL_MIN_BLUE_SGIS; + return GL_MAX_VIEWS_OVR; } +#endif +#ifdef GL_MINMAX_FORMAT if (!strcmp(name, "GL_MINMAX_FORMAT")) { return GL_MINMAX_FORMAT; } +#endif +#ifdef GL_MINOR_VERSION if (!strcmp(name, "GL_MINOR_VERSION")) { return GL_MINOR_VERSION; } +#endif +#ifdef GL_MIN_BLUE_SGIS +if (!strcmp(name, "GL_MIN_BLUE_SGIS")) +{ + return GL_MIN_BLUE_SGIS; +} +#endif +#ifdef GL_MISSING_REGAL if (!strcmp(name, "GL_MISSING_REGAL")) { return GL_MISSING_REGAL; } +#endif +#ifdef GL_NORMAL_MAP_NV if (!strcmp(name, "GL_NORMAL_MAP_NV")) { return GL_NORMAL_MAP_NV; } +#endif +#ifdef GL_NV_copy_image if (!strcmp(name, "GL_NV_copy_image")) { return GL_NV_copy_image; } +#endif +#ifdef GL_NV_evaluators if (!strcmp(name, "GL_NV_evaluators")) { return GL_NV_evaluators; } +#endif +#ifdef GL_NV_half_float if (!strcmp(name, "GL_NV_half_float")) { return GL_NV_half_float; } +#endif +#ifdef GL_OBJECT_LINEAR if (!strcmp(name, "GL_OBJECT_LINEAR")) { return GL_OBJECT_LINEAR; } +#endif +#ifdef GL_OML_interlace if (!strcmp(name, "GL_OML_interlace")) { return GL_OML_interlace; } +#endif +#ifdef GL_OML_subsample if (!strcmp(name, "GL_OML_subsample")) { return GL_OML_subsample; } +#endif +#ifdef GL_OP_NEGATE_EXT if (!strcmp(name, "GL_OP_NEGATE_EXT")) { return GL_OP_NEGATE_EXT; } +#endif +#ifdef GL_OP_SET_GE_EXT if (!strcmp(name, "GL_OP_SET_GE_EXT")) { return GL_OP_SET_GE_EXT; } +#endif +#ifdef GL_OP_SET_LT_EXT if (!strcmp(name, "GL_OP_SET_LT_EXT")) { return GL_OP_SET_LT_EXT; } +#endif +#ifdef GL_OUT_OF_MEMORY if (!strcmp(name, "GL_OUT_OF_MEMORY")) { return GL_OUT_OF_MEMORY; } +#endif +#ifdef GL_OVR_multiview +if (!strcmp(name, "GL_OVR_multiview")) +{ + return GL_OVR_multiview; +} +#endif +#ifdef GL_POLYGON_TOKEN if (!strcmp(name, "GL_POLYGON_TOKEN")) { return GL_POLYGON_TOKEN; } +#endif +#ifdef GL_PRIMARY_COLOR if (!strcmp(name, "GL_PRIMARY_COLOR")) { return GL_PRIMARY_COLOR; } +#endif +#ifdef GL_PRIMARY_COLOR +if (!strcmp(name, "GL_PRIMARY_COLOR")) +{ + return GL_PRIMARY_COLOR; +} +#endif +#ifdef GL_PROGRAM_INPUT if (!strcmp(name, "GL_PROGRAM_INPUT")) { return GL_PROGRAM_INPUT; } +#endif +#ifdef GL_QUAD_MESH_SUN if (!strcmp(name, "GL_QUAD_MESH_SUN")) { return GL_QUAD_MESH_SUN; } +#endif +#ifdef GL_QUERY_NO_WAIT if (!strcmp(name, "GL_QUERY_NO_WAIT")) { return GL_QUERY_NO_WAIT; } +#endif +#ifdef GL_QUERY_WAIT_NV if (!strcmp(name, "GL_QUERY_WAIT_NV")) { return GL_QUERY_WAIT_NV; } +#endif +#ifdef GL_READ_ONLY_ARB if (!strcmp(name, "GL_READ_ONLY_ARB")) { return GL_READ_ONLY_ARB; } +#endif +#ifdef GL_RGB_422_APPLE if (!strcmp(name, "GL_RGB_422_APPLE")) { return GL_RGB_422_APPLE; } +#endif +#ifdef GL_RGB_SCALE_ARB if (!strcmp(name, "GL_RGB_SCALE_ARB")) { return GL_RGB_SCALE_ARB; } +#endif +#ifdef GL_RGB_SCALE_EXT if (!strcmp(name, "GL_RGB_SCALE_EXT")) { return GL_RGB_SCALE_EXT; } +#endif +#ifdef GL_SGIX_resample if (!strcmp(name, "GL_SGIX_resample")) { return GL_SGIX_resample; } +#endif +#ifdef GL_SIGNED_RGB_NV +if (!strcmp(name, "GL_SIGNED_RGB_NV")) +{ + return GL_SIGNED_RGB_NV; +} +#endif +#ifdef GL_SIGNED_RGB_NV if (!strcmp(name, "GL_SIGNED_RGB_NV")) { return GL_SIGNED_RGB_NV; } +#endif +#ifdef GL_SOFTLIGHT_KHR +if (!strcmp(name, "GL_SOFTLIGHT_KHR")) +{ + return GL_SOFTLIGHT_KHR; +} +#endif +#ifdef GL_SOURCE0_ALPHA if (!strcmp(name, "GL_SOURCE0_ALPHA")) { return GL_SOURCE0_ALPHA; } +#endif +#ifdef GL_SOURCE1_ALPHA if (!strcmp(name, "GL_SOURCE1_ALPHA")) { return GL_SOURCE1_ALPHA; } +#endif +#ifdef GL_SOURCE2_ALPHA if (!strcmp(name, "GL_SOURCE2_ALPHA")) { return GL_SOURCE2_ALPHA; } +#endif +#ifdef GL_SPOT_EXPONENT if (!strcmp(name, "GL_SPOT_EXPONENT")) { return GL_SPOT_EXPONENT; } +#endif +#ifdef GL_STENCIL_INDEX +if (!strcmp(name, "GL_STENCIL_INDEX")) +{ + return GL_STENCIL_INDEX; +} +#endif +#ifdef GL_STENCIL_INDEX if (!strcmp(name, "GL_STENCIL_INDEX")) { return GL_STENCIL_INDEX; } +#endif +#ifdef GL_SUBPIXEL_BITS if (!strcmp(name, "GL_SUBPIXEL_BITS")) { return GL_SUBPIXEL_BITS; } +#endif +#ifdef GL_TESS_GEN_MODE if (!strcmp(name, "GL_TESS_GEN_MODE")) { return GL_TESS_GEN_MODE; } +#endif +#ifdef GL_TEXTURE10_ARB if (!strcmp(name, "GL_TEXTURE10_ARB")) { return GL_TEXTURE10_ARB; } +#endif +#ifdef GL_TEXTURE11_ARB if (!strcmp(name, "GL_TEXTURE11_ARB")) { return GL_TEXTURE11_ARB; } +#endif +#ifdef GL_TEXTURE12_ARB if (!strcmp(name, "GL_TEXTURE12_ARB")) { return GL_TEXTURE12_ARB; } +#endif +#ifdef GL_TEXTURE13_ARB if (!strcmp(name, "GL_TEXTURE13_ARB")) { return GL_TEXTURE13_ARB; } +#endif +#ifdef GL_TEXTURE14_ARB if (!strcmp(name, "GL_TEXTURE14_ARB")) { return GL_TEXTURE14_ARB; } +#endif +#ifdef GL_TEXTURE15_ARB if (!strcmp(name, "GL_TEXTURE15_ARB")) { return GL_TEXTURE15_ARB; } +#endif +#ifdef GL_TEXTURE16_ARB if (!strcmp(name, "GL_TEXTURE16_ARB")) { return GL_TEXTURE16_ARB; } +#endif +#ifdef GL_TEXTURE17_ARB if (!strcmp(name, "GL_TEXTURE17_ARB")) { return GL_TEXTURE17_ARB; } +#endif +#ifdef GL_TEXTURE18_ARB if (!strcmp(name, "GL_TEXTURE18_ARB")) { return GL_TEXTURE18_ARB; } +#endif +#ifdef GL_TEXTURE19_ARB if (!strcmp(name, "GL_TEXTURE19_ARB")) { return GL_TEXTURE19_ARB; } +#endif +#ifdef GL_TEXTURE20_ARB if (!strcmp(name, "GL_TEXTURE20_ARB")) { return GL_TEXTURE20_ARB; } +#endif +#ifdef GL_TEXTURE21_ARB if (!strcmp(name, "GL_TEXTURE21_ARB")) { return GL_TEXTURE21_ARB; } +#endif +#ifdef GL_TEXTURE22_ARB if (!strcmp(name, "GL_TEXTURE22_ARB")) { return GL_TEXTURE22_ARB; } +#endif +#ifdef GL_TEXTURE23_ARB if (!strcmp(name, "GL_TEXTURE23_ARB")) { return GL_TEXTURE23_ARB; } +#endif +#ifdef GL_TEXTURE24_ARB if (!strcmp(name, "GL_TEXTURE24_ARB")) { return GL_TEXTURE24_ARB; } +#endif +#ifdef GL_TEXTURE25_ARB if (!strcmp(name, "GL_TEXTURE25_ARB")) { return GL_TEXTURE25_ARB; } +#endif +#ifdef GL_TEXTURE26_ARB if (!strcmp(name, "GL_TEXTURE26_ARB")) { return GL_TEXTURE26_ARB; } +#endif +#ifdef GL_TEXTURE27_ARB if (!strcmp(name, "GL_TEXTURE27_ARB")) { return GL_TEXTURE27_ARB; } +#endif +#ifdef GL_TEXTURE28_ARB if (!strcmp(name, "GL_TEXTURE28_ARB")) { return GL_TEXTURE28_ARB; } +#endif +#ifdef GL_TEXTURE29_ARB if (!strcmp(name, "GL_TEXTURE29_ARB")) { return GL_TEXTURE29_ARB; } +#endif +#ifdef GL_TEXTURE30_ARB if (!strcmp(name, "GL_TEXTURE30_ARB")) { return GL_TEXTURE30_ARB; } +#endif +#ifdef GL_TEXTURE31_ARB if (!strcmp(name, "GL_TEXTURE31_ARB")) { return GL_TEXTURE31_ARB; } +#endif +#ifdef GL_TEXTURE_DEPTH if (!strcmp(name, "GL_TEXTURE_DEPTH")) { return GL_TEXTURE_DEPTH; } +#endif +#ifdef GL_TEXTURE_GEN_Q if (!strcmp(name, "GL_TEXTURE_GEN_Q")) { return GL_TEXTURE_GEN_Q; } +#endif +#ifdef GL_TEXTURE_GEN_R if (!strcmp(name, "GL_TEXTURE_GEN_R")) { return GL_TEXTURE_GEN_R; } +#endif +#ifdef GL_TEXTURE_GEN_S if (!strcmp(name, "GL_TEXTURE_GEN_S")) { return GL_TEXTURE_GEN_S; } +#endif +#ifdef GL_TEXTURE_GEN_T if (!strcmp(name, "GL_TEXTURE_GEN_T")) { return GL_TEXTURE_GEN_T; } +#endif +#ifdef GL_TEXTURE_WIDTH if (!strcmp(name, "GL_TEXTURE_WIDTH")) { return GL_TEXTURE_WIDTH; } +#endif +#ifdef GL_TRANSFORM_BIT if (!strcmp(name, "GL_TRANSFORM_BIT")) { return GL_TRANSFORM_BIT; } +#endif +#ifdef GL_TRIANGULAR_NV if (!strcmp(name, "GL_TRIANGULAR_NV")) { return GL_TRIANGULAR_NV; } +#endif +#ifdef GL_UNIFORM_BLOCK if (!strcmp(name, "GL_UNIFORM_BLOCK")) { return GL_UNIFORM_BLOCK; } +#endif +#ifdef GL_UNSIGNED_BYTE if (!strcmp(name, "GL_UNSIGNED_BYTE")) { return GL_UNSIGNED_BYTE; } +#endif +#ifdef GL_VARIABLE_A_NV if (!strcmp(name, "GL_VARIABLE_A_NV")) { return GL_VARIABLE_A_NV; } +#endif +#ifdef GL_VARIABLE_B_NV if (!strcmp(name, "GL_VARIABLE_B_NV")) { return GL_VARIABLE_B_NV; } +#endif +#ifdef GL_VARIABLE_C_NV if (!strcmp(name, "GL_VARIABLE_C_NV")) { return GL_VARIABLE_C_NV; } +#endif +#ifdef GL_VARIABLE_D_NV if (!strcmp(name, "GL_VARIABLE_D_NV")) { return GL_VARIABLE_D_NV; } +#endif +#ifdef GL_VARIABLE_E_NV if (!strcmp(name, "GL_VARIABLE_E_NV")) { return GL_VARIABLE_E_NV; } +#endif +#ifdef GL_VARIABLE_F_NV if (!strcmp(name, "GL_VARIABLE_F_NV")) { return GL_VARIABLE_F_NV; } +#endif +#ifdef GL_VARIABLE_G_NV if (!strcmp(name, "GL_VARIABLE_G_NV")) { return GL_VARIABLE_G_NV; } +#endif +#ifdef GL_VERSION_1_2_1 if (!strcmp(name, "GL_VERSION_1_2_1")) { return GL_VERSION_1_2_1; } +#endif +#ifdef GL_VERTEX_SHADER if (!strcmp(name, "GL_VERTEX_SHADER")) { return GL_VERTEX_SHADER; } +#endif +#ifdef GL_VIVIDLIGHT_NV if (!strcmp(name, "GL_VIVIDLIGHT_NV")) { return GL_VIVIDLIGHT_NV; } +#endif +#ifdef GL_WIN_swap_hint if (!strcmp(name, "GL_WIN_swap_hint")) { return GL_WIN_swap_hint; } +#endif return _GL_UNDEFINED; case 17: +#ifdef GL_ACCUM_RED_BITS if (!strcmp(name, "GL_ACCUM_RED_BITS")) { return GL_ACCUM_RED_BITS; } +#endif +#ifdef GL_ACTIVE_PROGRAM if (!strcmp(name, "GL_ACTIVE_PROGRAM")) { return GL_ACTIVE_PROGRAM; } +#endif +#ifdef GL_ACTIVE_TEXTURE if (!strcmp(name, "GL_ACTIVE_TEXTURE")) { return GL_ACTIVE_TEXTURE; } +#endif +#ifdef GL_ADD_SIGNED_ARB if (!strcmp(name, "GL_ADD_SIGNED_ARB")) { return GL_ADD_SIGNED_ARB; } +#endif +#ifdef GL_ADD_SIGNED_EXT if (!strcmp(name, "GL_ADD_SIGNED_EXT")) { return GL_ADD_SIGNED_EXT; } +#endif +#ifdef GL_ALPHA_MAX_SGIX if (!strcmp(name, "GL_ALPHA_MAX_SGIX")) { return GL_ALPHA_MAX_SGIX; } +#endif +#ifdef GL_ALPHA_MIN_SGIX if (!strcmp(name, "GL_ALPHA_MIN_SGIX")) { return GL_ALPHA_MIN_SGIX; } +#endif +#ifdef GL_ALPHA_TEST_REF if (!strcmp(name, "GL_ALPHA_TEST_REF")) { return GL_ALPHA_TEST_REF; } +#endif +#ifdef GL_AMD_gcn_shader +if (!strcmp(name, "GL_AMD_gcn_shader")) +{ + return GL_AMD_gcn_shader; +} +#endif +#ifdef GL_ARB_copy_image if (!strcmp(name, "GL_ARB_copy_image")) { return GL_ARB_copy_image; } +#endif +#ifdef GL_ARB_multi_bind if (!strcmp(name, "GL_ARB_multi_bind")) { return GL_ARB_multi_bind; } +#endif +#ifdef GL_ARB_robustness if (!strcmp(name, "GL_ARB_robustness")) { return GL_ARB_robustness; } +#endif +#ifdef GL_ARB_texture_rg if (!strcmp(name, "GL_ARB_texture_rg")) { return GL_ARB_texture_rg; } +#endif +#ifdef GL_ARB_window_pos if (!strcmp(name, "GL_ARB_window_pos")) { return GL_ARB_window_pos; } +#endif +#ifdef GL_BLEND_EQUATION if (!strcmp(name, "GL_BLEND_EQUATION")) { return GL_BLEND_EQUATION; } +#endif +#ifdef GL_BUFFER_BINDING if (!strcmp(name, "GL_BUFFER_BINDING")) { return GL_BUFFER_BINDING; } +#endif +#ifdef GL_CAVEAT_SUPPORT if (!strcmp(name, "GL_CAVEAT_SUPPORT")) { return GL_CAVEAT_SUPPORT; } +#endif +#ifdef GL_CLIP_DISTANCE0 if (!strcmp(name, "GL_CLIP_DISTANCE0")) { return GL_CLIP_DISTANCE0; } +#endif +#ifdef GL_CLIP_DISTANCE1 if (!strcmp(name, "GL_CLIP_DISTANCE1")) { return GL_CLIP_DISTANCE1; } +#endif +#ifdef GL_CLIP_DISTANCE2 if (!strcmp(name, "GL_CLIP_DISTANCE2")) { return GL_CLIP_DISTANCE2; } +#endif +#ifdef GL_CLIP_DISTANCE3 if (!strcmp(name, "GL_CLIP_DISTANCE3")) { return GL_CLIP_DISTANCE3; } +#endif +#ifdef GL_CLIP_DISTANCE4 if (!strcmp(name, "GL_CLIP_DISTANCE4")) { return GL_CLIP_DISTANCE4; } +#endif +#ifdef GL_CLIP_DISTANCE5 if (!strcmp(name, "GL_CLIP_DISTANCE5")) { return GL_CLIP_DISTANCE5; } +#endif +#ifdef GL_COLOR3_BIT_PGI if (!strcmp(name, "GL_COLOR3_BIT_PGI")) { return GL_COLOR3_BIT_PGI; } +#endif +#ifdef GL_COLOR4_BIT_PGI if (!strcmp(name, "GL_COLOR4_BIT_PGI")) { return GL_COLOR4_BIT_PGI; } +#endif +#ifdef GL_COLORDODGE_KHR +if (!strcmp(name, "GL_COLORDODGE_KHR")) +{ + return GL_COLORDODGE_KHR; +} +#endif +#ifdef GL_COLOR_ENCODING if (!strcmp(name, "GL_COLOR_ENCODING")) { return GL_COLOR_ENCODING; } +#endif +#ifdef GL_COLOR_LOGIC_OP if (!strcmp(name, "GL_COLOR_LOGIC_OP")) { return GL_COLOR_LOGIC_OP; } +#endif +#ifdef GL_COLOR_MATERIAL if (!strcmp(name, "GL_COLOR_MATERIAL")) { return GL_COLOR_MATERIAL; } +#endif +#ifdef GL_COMPILE_STATUS if (!strcmp(name, "GL_COMPILE_STATUS")) { return GL_COMPILE_STATUS; } +#endif +#ifdef GL_COMPRESSED_RED if (!strcmp(name, "GL_COMPRESSED_RED")) { return GL_COMPRESSED_RED; } +#endif +#ifdef GL_COMPRESSED_RGB if (!strcmp(name, "GL_COMPRESSED_RGB")) { return GL_COMPRESSED_RGB; } +#endif +#ifdef GL_COMPUTE_SHADER if (!strcmp(name, "GL_COMPUTE_SHADER")) { return GL_COMPUTE_SHADER; } +#endif +#ifdef GL_CONSTANT_ALPHA if (!strcmp(name, "GL_CONSTANT_ALPHA")) { return GL_CONSTANT_ALPHA; } +#endif +#ifdef GL_CONSTANT_COLOR if (!strcmp(name, "GL_CONSTANT_COLOR")) { return GL_CONSTANT_COLOR; } +#endif +#ifdef GL_CONTINUOUS_AMD if (!strcmp(name, "GL_CONTINUOUS_AMD")) { return GL_CONTINUOUS_AMD; } +#endif +#ifdef GL_CONVEX_HULL_NV if (!strcmp(name, "GL_CONVEX_HULL_NV")) { return GL_CONVEX_HULL_NV; } +#endif +#ifdef GL_CONVOLUTION_1D if (!strcmp(name, "GL_CONVOLUTION_1D")) { return GL_CONVOLUTION_1D; } +#endif +#ifdef GL_CONVOLUTION_2D if (!strcmp(name, "GL_CONVOLUTION_2D")) { return GL_CONVOLUTION_2D; } +#endif +#ifdef GL_CULL_FACE_MODE if (!strcmp(name, "GL_CULL_FACE_MODE")) { return GL_CULL_FACE_MODE; } +#endif +#ifdef GL_CURRENT_NORMAL if (!strcmp(name, "GL_CURRENT_NORMAL")) { return GL_CURRENT_NORMAL; } +#endif +#ifdef GL_DEPTH_CLAMP_NV if (!strcmp(name, "GL_DEPTH_CLAMP_NV")) { return GL_DEPTH_CLAMP_NV; } +#endif +#ifdef GL_DIFFERENCE_KHR +if (!strcmp(name, "GL_DIFFERENCE_KHR")) +{ + return GL_DIFFERENCE_KHR; +} +#endif +#ifdef GL_DOT_PRODUCT_NV if (!strcmp(name, "GL_DOT_PRODUCT_NV")) { return GL_DOT_PRODUCT_NV; } +#endif +#ifdef GL_EIGHTH_BIT_ATI if (!strcmp(name, "GL_EIGHTH_BIT_ATI")) { return GL_EIGHTH_BIT_ATI; } +#endif +#ifdef GL_EXT_422_pixels if (!strcmp(name, "GL_EXT_422_pixels")) { return GL_EXT_422_pixels; } +#endif +#ifdef GL_EXT_index_func if (!strcmp(name, "GL_EXT_index_func")) { return GL_EXT_index_func; } +#endif +#ifdef GL_EXT_subtexture if (!strcmp(name, "GL_EXT_subtexture")) { return GL_EXT_subtexture; } +#endif +#ifdef GL_EYE_POINT_SGIS if (!strcmp(name, "GL_EYE_POINT_SGIS")) { return GL_EYE_POINT_SGIS; } +#endif +#ifdef GL_FACTOR_MAX_AMD if (!strcmp(name, "GL_FACTOR_MAX_AMD")) { return GL_FACTOR_MAX_AMD; } +#endif +#ifdef GL_FACTOR_MIN_AMD if (!strcmp(name, "GL_FACTOR_MIN_AMD")) { return GL_FACTOR_MIN_AMD; } +#endif +#ifdef GL_FIELD_LOWER_NV if (!strcmp(name, "GL_FIELD_LOWER_NV")) { return GL_FIELD_LOWER_NV; } +#endif +#ifdef GL_FIELD_UPPER_NV if (!strcmp(name, "GL_FIELD_UPPER_NV")) { return GL_FIELD_UPPER_NV; } +#endif +#ifdef GL_FIXED_ONLY_ARB if (!strcmp(name, "GL_FIXED_ONLY_ARB")) { return GL_FIXED_ONLY_ARB; } +#endif +#ifdef GL_FLOAT_MAT2_ARB if (!strcmp(name, "GL_FLOAT_MAT2_ARB")) { return GL_FLOAT_MAT2_ARB; } +#endif +#ifdef GL_FLOAT_MAT3_ARB if (!strcmp(name, "GL_FLOAT_MAT3_ARB")) { return GL_FLOAT_MAT3_ARB; } +#endif +#ifdef GL_FLOAT_MAT4_ARB if (!strcmp(name, "GL_FLOAT_MAT4_ARB")) { return GL_FLOAT_MAT4_ARB; } +#endif +#ifdef GL_FLOAT_RGB16_NV if (!strcmp(name, "GL_FLOAT_RGB16_NV")) { return GL_FLOAT_RGB16_NV; } +#endif +#ifdef GL_FLOAT_RGB32_NV if (!strcmp(name, "GL_FLOAT_RGB32_NV")) { return GL_FLOAT_RGB32_NV; } +#endif +#ifdef GL_FLOAT_VEC2_ARB if (!strcmp(name, "GL_FLOAT_VEC2_ARB")) { return GL_FLOAT_VEC2_ARB; } +#endif +#ifdef GL_FLOAT_VEC3_ARB if (!strcmp(name, "GL_FLOAT_VEC3_ARB")) { return GL_FLOAT_VEC3_ARB; } +#endif +#ifdef GL_FLOAT_VEC4_ARB if (!strcmp(name, "GL_FLOAT_VEC4_ARB")) { return GL_FLOAT_VEC4_ARB; } +#endif +#ifdef GL_FOG_COORDINATE if (!strcmp(name, "GL_FOG_COORDINATE")) { return GL_FOG_COORDINATE; } +#endif +#ifdef GL_FRACTIONAL_ODD if (!strcmp(name, "GL_FRACTIONAL_ODD")) { return GL_FRACTIONAL_ODD; } +#endif +#ifdef GL_FRAGMENT_DEPTH if (!strcmp(name, "GL_FRAGMENT_DEPTH")) { return GL_FRAGMENT_DEPTH; } +#endif +#ifdef GL_FRONT_AND_BACK if (!strcmp(name, "GL_FRONT_AND_BACK")) { return GL_FRONT_AND_BACK; } +#endif +#ifdef GL_FULL_RANGE_EXT if (!strcmp(name, "GL_FULL_RANGE_EXT")) { return GL_FULL_RANGE_EXT; } +#endif +#ifdef GL_GPU_ADDRESS_NV if (!strcmp(name, "GL_GPU_ADDRESS_NV")) { return GL_GPU_ADDRESS_NV; } +#endif +#ifdef GL_HALF_FLOAT_ARB if (!strcmp(name, "GL_HALF_FLOAT_ARB")) { return GL_HALF_FLOAT_ARB; } +#endif +#ifdef GL_HISTOGRAM_SINK if (!strcmp(name, "GL_HISTOGRAM_SINK")) { return GL_HISTOGRAM_SINK; } +#endif +#ifdef GL_IMAGE_1D_ARRAY if (!strcmp(name, "GL_IMAGE_1D_ARRAY")) { return GL_IMAGE_1D_ARRAY; } +#endif +#ifdef GL_IMAGE_2D_ARRAY if (!strcmp(name, "GL_IMAGE_2D_ARRAY")) { return GL_IMAGE_2D_ARRAY; } +#endif +#ifdef GL_IMAGE_CUBE_EXT if (!strcmp(name, "GL_IMAGE_CUBE_EXT")) { return GL_IMAGE_CUBE_EXT; } +#endif +#ifdef GL_INDEX_LOGIC_OP if (!strcmp(name, "GL_INDEX_LOGIC_OP")) { return GL_INDEX_LOGIC_OP; } +#endif +#ifdef GL_INT64_VEC2_ARB +if (!strcmp(name, "GL_INT64_VEC2_ARB")) +{ + return GL_INT64_VEC2_ARB; +} +#endif +#ifdef GL_INT64_VEC3_ARB +if (!strcmp(name, "GL_INT64_VEC3_ARB")) +{ + return GL_INT64_VEC3_ARB; +} +#endif +#ifdef GL_INT64_VEC4_ARB +if (!strcmp(name, "GL_INT64_VEC4_ARB")) +{ + return GL_INT64_VEC4_ARB; +} +#endif +#ifdef GL_INTENSITY4_EXT if (!strcmp(name, "GL_INTENSITY4_EXT")) { return GL_INTENSITY4_EXT; } +#endif +#ifdef GL_INTENSITY8_EXT if (!strcmp(name, "GL_INTENSITY8_EXT")) { return GL_INTENSITY8_EXT; } +#endif +#ifdef GL_INTERLACE_SGIX if (!strcmp(name, "GL_INTERLACE_SGIX")) { return GL_INTERLACE_SGIX; } +#endif +#ifdef GL_INT_IMAGE_CUBE if (!strcmp(name, "GL_INT_IMAGE_CUBE")) { return GL_INT_IMAGE_CUBE; } +#endif +#ifdef GL_INT_SAMPLER_1D if (!strcmp(name, "GL_INT_SAMPLER_1D")) { return GL_INT_SAMPLER_1D; } +#endif +#ifdef GL_INT_SAMPLER_2D if (!strcmp(name, "GL_INT_SAMPLER_2D")) { return GL_INT_SAMPLER_2D; } +#endif +#ifdef GL_INT_SAMPLER_3D if (!strcmp(name, "GL_INT_SAMPLER_3D")) { return GL_INT_SAMPLER_3D; } +#endif +#ifdef GL_KHR_robustness +if (!strcmp(name, "GL_KHR_robustness")) +{ + return GL_KHR_robustness; +} +#endif +#ifdef GL_LINEARDODGE_NV if (!strcmp(name, "GL_LINEARDODGE_NV")) { return GL_LINEARDODGE_NV; } +#endif +#ifdef GL_LINEARLIGHT_NV if (!strcmp(name, "GL_LINEARLIGHT_NV")) { return GL_LINEARLIGHT_NV; } +#endif +#ifdef GL_LOCATION_INDEX if (!strcmp(name, "GL_LOCATION_INDEX")) { return GL_LOCATION_INDEX; } +#endif +#ifdef GL_LOG_HTTP_REGAL if (!strcmp(name, "GL_LOG_HTTP_REGAL")) { return GL_LOG_HTTP_REGAL; } +#endif +#ifdef GL_LOG_INFO_REGAL if (!strcmp(name, "GL_LOG_INFO_REGAL")) { return GL_LOG_INFO_REGAL; } +#endif +#ifdef GL_LUMINANCE4_EXT if (!strcmp(name, "GL_LUMINANCE4_EXT")) { return GL_LUMINANCE4_EXT; } +#endif +#ifdef GL_LUMINANCE8_EXT if (!strcmp(name, "GL_LUMINANCE8_EXT")) { return GL_LUMINANCE8_EXT; } +#endif +#ifdef GL_MAX_ALPHA_SGIS if (!strcmp(name, "GL_MAX_ALPHA_SGIS")) { return GL_MAX_ALPHA_SGIS; } +#endif +#ifdef GL_MAX_EVAL_ORDER if (!strcmp(name, "GL_MAX_EVAL_ORDER")) { return GL_MAX_EVAL_ORDER; } +#endif +#ifdef GL_MAX_GREEN_SGIS if (!strcmp(name, "GL_MAX_GREEN_SGIS")) { return GL_MAX_GREEN_SGIS; } +#endif +#ifdef GL_MIN_ALPHA_SGIS if (!strcmp(name, "GL_MIN_ALPHA_SGIS")) { return GL_MIN_ALPHA_SGIS; } +#endif +#ifdef GL_MIN_GREEN_SGIS if (!strcmp(name, "GL_MIN_GREEN_SGIS")) { return GL_MIN_GREEN_SGIS; } +#endif +#ifdef GL_MODELVIEW0_ARB if (!strcmp(name, "GL_MODELVIEW0_ARB")) { return GL_MODELVIEW0_ARB; } +#endif +#ifdef GL_MODELVIEW0_EXT if (!strcmp(name, "GL_MODELVIEW0_EXT")) { return GL_MODELVIEW0_EXT; } +#endif +#ifdef GL_MODELVIEW1_ARB if (!strcmp(name, "GL_MODELVIEW1_ARB")) { return GL_MODELVIEW1_ARB; } +#endif +#ifdef GL_MODELVIEW1_EXT if (!strcmp(name, "GL_MODELVIEW1_EXT")) { return GL_MODELVIEW1_EXT; } +#endif +#ifdef GL_MODELVIEW2_ARB if (!strcmp(name, "GL_MODELVIEW2_ARB")) { return GL_MODELVIEW2_ARB; } +#endif +#ifdef GL_MODELVIEW3_ARB if (!strcmp(name, "GL_MODELVIEW3_ARB")) { return GL_MODELVIEW3_ARB; } +#endif +#ifdef GL_MODELVIEW4_ARB if (!strcmp(name, "GL_MODELVIEW4_ARB")) { return GL_MODELVIEW4_ARB; } +#endif +#ifdef GL_MODELVIEW5_ARB if (!strcmp(name, "GL_MODELVIEW5_ARB")) { return GL_MODELVIEW5_ARB; } +#endif +#ifdef GL_MODELVIEW6_ARB if (!strcmp(name, "GL_MODELVIEW6_ARB")) { return GL_MODELVIEW6_ARB; } +#endif +#ifdef GL_MODELVIEW7_ARB if (!strcmp(name, "GL_MODELVIEW7_ARB")) { return GL_MODELVIEW7_ARB; } +#endif +#ifdef GL_MODELVIEW8_ARB if (!strcmp(name, "GL_MODELVIEW8_ARB")) { return GL_MODELVIEW8_ARB; } +#endif +#ifdef GL_MODELVIEW9_ARB if (!strcmp(name, "GL_MODELVIEW9_ARB")) { return GL_MODELVIEW9_ARB; } +#endif +#ifdef GL_MVP_MATRIX_EXT if (!strcmp(name, "GL_MVP_MATRIX_EXT")) { return GL_MVP_MATRIX_EXT; } +#endif +#ifdef GL_NEGATE_BIT_ATI if (!strcmp(name, "GL_NEGATE_BIT_ATI")) { return GL_NEGATE_BIT_ATI; } +#endif +#ifdef GL_NEGATIVE_W_EXT if (!strcmp(name, "GL_NEGATIVE_W_EXT")) { return GL_NEGATIVE_W_EXT; } +#endif +#ifdef GL_NEGATIVE_X_EXT if (!strcmp(name, "GL_NEGATIVE_X_EXT")) { return GL_NEGATIVE_X_EXT; } +#endif +#ifdef GL_NEGATIVE_Y_EXT if (!strcmp(name, "GL_NEGATIVE_Y_EXT")) { return GL_NEGATIVE_Y_EXT; } +#endif +#ifdef GL_NEGATIVE_Z_EXT if (!strcmp(name, "GL_NEGATIVE_Z_EXT")) { return GL_NEGATIVE_Z_EXT; } +#endif +#ifdef GL_NORMAL_BIT_PGI if (!strcmp(name, "GL_NORMAL_BIT_PGI")) { return GL_NORMAL_BIT_PGI; } +#endif +#ifdef GL_NORMAL_MAP_ARB if (!strcmp(name, "GL_NORMAL_MAP_ARB")) { return GL_NORMAL_MAP_ARB; } +#endif +#ifdef GL_NORMAL_MAP_EXT if (!strcmp(name, "GL_NORMAL_MAP_EXT")) { return GL_NORMAL_MAP_EXT; } +#endif +#ifdef GL_NUM_EXTENSIONS if (!strcmp(name, "GL_NUM_EXTENSIONS")) { return GL_NUM_EXTENSIONS; } +#endif +#ifdef GL_NUM_PASSES_ATI if (!strcmp(name, "GL_NUM_PASSES_ATI")) { return GL_NUM_PASSES_ATI; } +#endif +#ifdef GL_NV_depth_clamp if (!strcmp(name, "GL_NV_depth_clamp")) { return GL_NV_depth_clamp; } +#endif +#ifdef GL_NV_gpu_shader5 if (!strcmp(name, "GL_NV_gpu_shader5")) { return GL_NV_gpu_shader5; } +#endif +#ifdef GL_OPERAND0_ALPHA if (!strcmp(name, "GL_OPERAND0_ALPHA")) { return GL_OPERAND0_ALPHA; } +#endif +#ifdef GL_OPERAND1_ALPHA if (!strcmp(name, "GL_OPERAND1_ALPHA")) { return GL_OPERAND1_ALPHA; } +#endif +#ifdef GL_OPERAND2_ALPHA if (!strcmp(name, "GL_OPERAND2_ALPHA")) { return GL_OPERAND2_ALPHA; } +#endif +#ifdef GL_OUTPUT_FOG_EXT if (!strcmp(name, "GL_OUTPUT_FOG_EXT")) { return GL_OUTPUT_FOG_EXT; } +#endif +#ifdef GL_OVR_multiview2 +if (!strcmp(name, "GL_OVR_multiview2")) +{ + return GL_OVR_multiview2; +} +#endif +#ifdef GL_PACK_ALIGNMENT if (!strcmp(name, "GL_PACK_ALIGNMENT")) { return GL_PACK_ALIGNMENT; } +#endif +#ifdef GL_PACK_LSB_FIRST if (!strcmp(name, "GL_PACK_LSB_FIRST")) { return GL_PACK_LSB_FIRST; } +#endif +#ifdef GL_PACK_SKIP_ROWS if (!strcmp(name, "GL_PACK_SKIP_ROWS")) { return GL_PACK_SKIP_ROWS; } +#endif +#ifdef GL_PATCH_VERTICES if (!strcmp(name, "GL_PATCH_VERTICES")) { return GL_PATCH_VERTICES; } +#endif +#ifdef GL_PERCENTAGE_AMD if (!strcmp(name, "GL_PERCENTAGE_AMD")) { return GL_PERCENTAGE_AMD; } +#endif +#ifdef GL_PGI_misc_hints if (!strcmp(name, "GL_PGI_misc_hints")) { return GL_PGI_misc_hints; } +#endif +#ifdef GL_PHONG_HINT_WIN if (!strcmp(name, "GL_PHONG_HINT_WIN")) { return GL_PHONG_HINT_WIN; } +#endif +#ifdef GL_PIXEL_COUNT_NV if (!strcmp(name, "GL_PIXEL_COUNT_NV")) { return GL_PIXEL_COUNT_NV; } +#endif +#ifdef GL_PIXEL_MODE_BIT if (!strcmp(name, "GL_PIXEL_MODE_BIT")) { return GL_PIXEL_MODE_BIT; } +#endif +#ifdef GL_PLUS_DARKER_NV if (!strcmp(name, "GL_PLUS_DARKER_NV")) { return GL_PLUS_DARKER_NV; } +#endif +#ifdef GL_POINT_SIZE_MAX if (!strcmp(name, "GL_POINT_SIZE_MAX")) { return GL_POINT_SIZE_MAX; } +#endif +#ifdef GL_POINT_SIZE_MIN if (!strcmp(name, "GL_POINT_SIZE_MIN")) { return GL_POINT_SIZE_MIN; } +#endif +#ifdef GL_POLYGON_SMOOTH if (!strcmp(name, "GL_POLYGON_SMOOTH")) { return GL_POLYGON_SMOOTH; } +#endif +#ifdef GL_PROGRAM_OUTPUT if (!strcmp(name, "GL_PROGRAM_OUTPUT")) { return GL_PROGRAM_OUTPUT; } +#endif +#ifdef GL_R11F_G11F_B10F if (!strcmp(name, "GL_R11F_G11F_B10F")) { return GL_R11F_G11F_B10F; } +#endif +#ifdef GL_READ_WRITE_ARB if (!strcmp(name, "GL_READ_WRITE_ARB")) { return GL_READ_WRITE_ARB; } +#endif +#ifdef GL_REFLECTION_MAP if (!strcmp(name, "GL_REFLECTION_MAP")) { return GL_REFLECTION_MAP; } +#endif +#ifdef GL_RELEASED_APPLE if (!strcmp(name, "GL_RELEASED_APPLE")) { return GL_RELEASED_APPLE; } +#endif +#ifdef GL_RESCALE_NORMAL if (!strcmp(name, "GL_RESCALE_NORMAL")) { return GL_RESCALE_NORMAL; } +#endif +#ifdef GL_RETAINED_APPLE if (!strcmp(name, "GL_RETAINED_APPLE")) { return GL_RETAINED_APPLE; } +#endif +#ifdef GL_RGBA_DXT5_S3TC if (!strcmp(name, "GL_RGBA_DXT5_S3TC")) { return GL_RGBA_DXT5_S3TC; } -if (!strcmp(name, "GL_SAMPLE_BUFFERS")) -{ - return GL_SAMPLE_BUFFERS; -} -if (!strcmp(name, "GL_SAMPLE_MASK_NV")) -{ - return GL_SAMPLE_MASK_NV; -} +#endif +#ifdef GL_SAMPLER_1D_ARB if (!strcmp(name, "GL_SAMPLER_1D_ARB")) { return GL_SAMPLER_1D_ARB; } +#endif +#ifdef GL_SAMPLER_2D_ARB if (!strcmp(name, "GL_SAMPLER_2D_ARB")) { return GL_SAMPLER_2D_ARB; } +#endif +#ifdef GL_SAMPLER_3D_ARB if (!strcmp(name, "GL_SAMPLER_3D_ARB")) { return GL_SAMPLER_3D_ARB; } +#endif +#ifdef GL_SAMPLER_BUFFER if (!strcmp(name, "GL_SAMPLER_BUFFER")) { return GL_SAMPLER_BUFFER; } -if (!strcmp(name, "GL_SAMPLE_SHADING")) -{ - return GL_SAMPLE_SHADING; -} +#endif +#ifdef GL_SAMPLES_PASSED if (!strcmp(name, "GL_SAMPLES_PASSED")) { return GL_SAMPLES_PASSED; } +#endif +#ifdef GL_SAMPLE_BUFFERS +if (!strcmp(name, "GL_SAMPLE_BUFFERS")) +{ + return GL_SAMPLE_BUFFERS; +} +#endif +#ifdef GL_SAMPLE_MASK_NV +if (!strcmp(name, "GL_SAMPLE_MASK_NV")) +{ + return GL_SAMPLE_MASK_NV; +} +#endif +#ifdef GL_SAMPLE_SHADING +if (!strcmp(name, "GL_SAMPLE_SHADING")) +{ + return GL_SAMPLE_SHADING; +} +#endif +#ifdef GL_SGIS_texture4D if (!strcmp(name, "GL_SGIS_texture4D")) { return GL_SGIS_texture4D; } +#endif +#ifdef GL_SGIX_framezoom if (!strcmp(name, "GL_SGIX_framezoom")) { return GL_SGIX_framezoom; } +#endif +#ifdef GL_SGIX_interlace if (!strcmp(name, "GL_SGIX_interlace")) { return GL_SGIX_interlace; } +#endif +#ifdef GL_SHARED_EDGE_NV +if (!strcmp(name, "GL_SHARED_EDGE_NV")) +{ + return GL_SHARED_EDGE_NV; +} +#endif +#ifdef GL_SIGNED_HILO_NV if (!strcmp(name, "GL_SIGNED_HILO_NV")) { return GL_SIGNED_HILO_NV; } +#endif +#ifdef GL_SIGNED_HILO_NV +if (!strcmp(name, "GL_SIGNED_HILO_NV")) +{ + return GL_SIGNED_HILO_NV; +} +#endif +#ifdef GL_SIGNED_RGB8_NV +if (!strcmp(name, "GL_SIGNED_RGB8_NV")) +{ + return GL_SIGNED_RGB8_NV; +} +#endif +#ifdef GL_SIGNED_RGB8_NV if (!strcmp(name, "GL_SIGNED_RGB8_NV")) { return GL_SIGNED_RGB8_NV; } +#endif +#ifdef GL_SIGNED_RGBA_NV if (!strcmp(name, "GL_SIGNED_RGBA_NV")) { return GL_SIGNED_RGBA_NV; } +#endif +#ifdef GL_SIGNED_RGBA_NV +if (!strcmp(name, "GL_SIGNED_RGBA_NV")) +{ + return GL_SIGNED_RGBA_NV; +} +#endif +#ifdef GL_SLUMINANCE_EXT if (!strcmp(name, "GL_SLUMINANCE_EXT")) { return GL_SLUMINANCE_EXT; } +#endif +#ifdef GL_SOURCE3_RGB_NV if (!strcmp(name, "GL_SOURCE3_RGB_NV")) { return GL_SOURCE3_RGB_NV; } +#endif +#ifdef GL_SPOT_DIRECTION if (!strcmp(name, "GL_SPOT_DIRECTION")) { return GL_SPOT_DIRECTION; } +#endif +#ifdef GL_SRGB_ALPHA_EXT if (!strcmp(name, "GL_SRGB_ALPHA_EXT")) { return GL_SRGB_ALPHA_EXT; } +#endif +#ifdef GL_STACK_OVERFLOW +if (!strcmp(name, "GL_STACK_OVERFLOW")) +{ + return GL_STACK_OVERFLOW; +} +#endif +#ifdef GL_STACK_OVERFLOW if (!strcmp(name, "GL_STACK_OVERFLOW")) { return GL_STACK_OVERFLOW; } +#endif +#ifdef GL_STENCIL_BUFFER if (!strcmp(name, "GL_STENCIL_BUFFER")) { return GL_STENCIL_BUFFER; } +#endif +#ifdef GL_STENCIL_INDEX1 if (!strcmp(name, "GL_STENCIL_INDEX1")) { return GL_STENCIL_INDEX1; } +#endif +#ifdef GL_STENCIL_INDEX4 if (!strcmp(name, "GL_STENCIL_INDEX4")) { return GL_STENCIL_INDEX4; } +#endif +#ifdef GL_STENCIL_INDEX8 if (!strcmp(name, "GL_STENCIL_INDEX8")) { return GL_STENCIL_INDEX8; } +#endif +#ifdef GL_STENCIL_INDEX8 +if (!strcmp(name, "GL_STENCIL_INDEX8")) +{ + return GL_STENCIL_INDEX8; +} +#endif +#ifdef GL_SUN_mesh_array if (!strcmp(name, "GL_SUN_mesh_array")) { return GL_SUN_mesh_array; } +#endif +#ifdef GL_SYNC_CONDITION if (!strcmp(name, "GL_SYNC_CONDITION")) { return GL_SYNC_CONDITION; } +#endif +#ifdef GL_TEXTURE_3D_EXT if (!strcmp(name, "GL_TEXTURE_3D_EXT")) { return GL_TEXTURE_3D_EXT; } +#endif +#ifdef GL_TEXTURE_BORDER if (!strcmp(name, "GL_TEXTURE_BORDER")) { return GL_TEXTURE_BORDER; } +#endif +#ifdef GL_TEXTURE_BUFFER if (!strcmp(name, "GL_TEXTURE_BUFFER")) { return GL_TEXTURE_BUFFER; } +#endif +#ifdef GL_TEXTURE_GATHER if (!strcmp(name, "GL_TEXTURE_GATHER")) { return GL_TEXTURE_GATHER; } +#endif +#ifdef GL_TEXTURE_HEIGHT if (!strcmp(name, "GL_TEXTURE_HEIGHT")) { return GL_TEXTURE_HEIGHT; } +#endif +#ifdef GL_TEXTURE_MATRIX if (!strcmp(name, "GL_TEXTURE_MATRIX")) { return GL_TEXTURE_MATRIX; } +#endif +#ifdef GL_TEXTURE_SHADOW if (!strcmp(name, "GL_TEXTURE_SHADOW")) { return GL_TEXTURE_SHADOW; } +#endif +#ifdef GL_TEXTURE_TARGET +if (!strcmp(name, "GL_TEXTURE_TARGET")) +{ + return GL_TEXTURE_TARGET; +} +#endif +#ifdef GL_TEXTURE_WRAP_R if (!strcmp(name, "GL_TEXTURE_WRAP_R")) { return GL_TEXTURE_WRAP_R; } +#endif +#ifdef GL_TEXTURE_WRAP_S if (!strcmp(name, "GL_TEXTURE_WRAP_S")) { return GL_TEXTURE_WRAP_S; } +#endif +#ifdef GL_TEXTURE_WRAP_T if (!strcmp(name, "GL_TEXTURE_WRAP_T")) { return GL_TEXTURE_WRAP_T; } +#endif +#ifdef GL_TRANSLATE_X_NV if (!strcmp(name, "GL_TRANSLATE_X_NV")) { return GL_TRANSLATE_X_NV; } +#endif +#ifdef GL_TRANSLATE_Y_NV if (!strcmp(name, "GL_TRANSLATE_Y_NV")) { return GL_TRANSLATE_Y_NV; } +#endif +#ifdef GL_TRIANGLE_STRIP if (!strcmp(name, "GL_TRIANGLE_STRIP")) { return GL_TRIANGLE_STRIP; } +#endif +#ifdef GL_UNIFORM_BUFFER if (!strcmp(name, "GL_UNIFORM_BUFFER")) { return GL_UNIFORM_BUFFER; } +#endif +#ifdef GL_UNIFORM_OFFSET if (!strcmp(name, "GL_UNIFORM_OFFSET")) { return GL_UNIFORM_OFFSET; } +#endif +#ifdef GL_UNSIGNED_SHORT if (!strcmp(name, "GL_UNSIGNED_SHORT")) { return GL_UNSIGNED_SHORT; } +#endif +#ifdef GL_VERTEX_TEXTURE if (!strcmp(name, "GL_VERTEX_TEXTURE")) { return GL_VERTEX_TEXTURE; } +#endif +#ifdef GL_VOLATILE_APPLE if (!strcmp(name, "GL_VOLATILE_APPLE")) { return GL_VOLATILE_APPLE; } +#endif +#ifdef GL_WRITE_ONLY_ARB if (!strcmp(name, "GL_WRITE_ONLY_ARB")) { return GL_WRITE_ONLY_ARB; } +#endif +#ifdef GL_YCBYCR8_422_NV if (!strcmp(name, "GL_YCBYCR8_422_NV")) { return GL_YCBYCR8_422_NV; } +#endif return _GL_UNDEFINED; case 18: +#ifdef GL_422_AVERAGE_EXT if (!strcmp(name, "GL_422_AVERAGE_EXT")) { return GL_422_AVERAGE_EXT; } +#endif +#ifdef GL_ACCUM_BLUE_BITS if (!strcmp(name, "GL_ACCUM_BLUE_BITS")) { return GL_ACCUM_BLUE_BITS; } +#endif +#ifdef GL_ACTIVE_UNIFORMS if (!strcmp(name, "GL_ACTIVE_UNIFORMS")) { return GL_ACTIVE_UNIFORMS; } +#endif +#ifdef GL_ALL_ATTRIB_BITS if (!strcmp(name, "GL_ALL_ATTRIB_BITS")) { return GL_ALL_ATTRIB_BITS; } +#endif +#ifdef GL_ALL_SHADER_BITS if (!strcmp(name, "GL_ALL_SHADER_BITS")) { return GL_ALL_SHADER_BITS; } +#endif +#ifdef GL_ALPHA_TEST_FUNC if (!strcmp(name, "GL_ALPHA_TEST_FUNC")) { return GL_ALPHA_TEST_FUNC; } +#endif +#ifdef GL_APPLE_row_bytes if (!strcmp(name, "GL_APPLE_row_bytes")) { return GL_APPLE_row_bytes; } +#endif +#ifdef GL_APPLE_ycbcr_422 if (!strcmp(name, "GL_APPLE_ycbcr_422")) { return GL_APPLE_ycbcr_422; } +#endif +#ifdef GL_ARB_copy_buffer if (!strcmp(name, "GL_ARB_copy_buffer")) { return GL_ARB_copy_buffer; } +#endif +#ifdef GL_ARB_depth_clamp if (!strcmp(name, "GL_ARB_depth_clamp")) { return GL_ARB_depth_clamp; } +#endif +#ifdef GL_ARB_gpu_shader5 if (!strcmp(name, "GL_ARB_gpu_shader5")) { return GL_ARB_gpu_shader5; } +#endif +#ifdef GL_ARB_multisample if (!strcmp(name, "GL_ARB_multisample")) { return GL_ARB_multisample; } +#endif +#ifdef GL_ARB_timer_query if (!strcmp(name, "GL_ARB_timer_query")) { return GL_ARB_timer_query; } +#endif +#ifdef GL_ATTENUATION_EXT if (!strcmp(name, "GL_ATTENUATION_EXT")) { return GL_ATTENUATION_EXT; } +#endif +#ifdef GL_BGR_INTEGER_EXT if (!strcmp(name, "GL_BGR_INTEGER_EXT")) { return GL_BGR_INTEGER_EXT; } +#endif +#ifdef GL_BLEND_COLOR_EXT if (!strcmp(name, "GL_BLEND_COLOR_EXT")) { return GL_BLEND_COLOR_EXT; } +#endif +#ifdef GL_BLEND_DST_ALPHA if (!strcmp(name, "GL_BLEND_DST_ALPHA")) { return GL_BLEND_DST_ALPHA; } +#endif +#ifdef GL_BLEND_SRC_ALPHA if (!strcmp(name, "GL_BLEND_SRC_ALPHA")) { return GL_BLEND_SRC_ALPHA; } +#endif +#ifdef GL_BOUNDING_BOX_NV if (!strcmp(name, "GL_BOUNDING_BOX_NV")) { return GL_BOUNDING_BOX_NV; } +#endif +#ifdef GL_BUFFER_SIZE_ARB if (!strcmp(name, "GL_BUFFER_SIZE_ARB")) { return GL_BUFFER_SIZE_ARB; } +#endif +#ifdef GL_BUFFER_VARIABLE if (!strcmp(name, "GL_BUFFER_VARIABLE")) { return GL_BUFFER_VARIABLE; } +#endif +#ifdef GL_BUMP_ENVMAP_ATI if (!strcmp(name, "GL_BUMP_ENVMAP_ATI")) { return GL_BUMP_ENVMAP_ATI; } +#endif +#ifdef GL_BUMP_TARGET_ATI if (!strcmp(name, "GL_BUMP_TARGET_ATI")) { return GL_BUMP_TARGET_ATI; } +#endif +#ifdef GL_CLAMP_TO_BORDER if (!strcmp(name, "GL_CLAMP_TO_BORDER")) { return GL_CLAMP_TO_BORDER; } +#endif +#ifdef GL_CLIP_DEPTH_MODE +if (!strcmp(name, "GL_CLIP_DEPTH_MODE")) +{ + return GL_CLIP_DEPTH_MODE; +} +#endif +#ifdef GL_COLOR_ARRAY_EXT if (!strcmp(name, "GL_COLOR_ARRAY_EXT")) { return GL_COLOR_ARRAY_EXT; } +#endif +#ifdef GL_COLOR_TABLE_SGI if (!strcmp(name, "GL_COLOR_TABLE_SGI")) { return GL_COLOR_TABLE_SGI; } +#endif +#ifdef GL_COLOR_WRITEMASK if (!strcmp(name, "GL_COLOR_WRITEMASK")) { return GL_COLOR_WRITEMASK; } +#endif +#ifdef GL_COMBINE_RGB_ARB if (!strcmp(name, "GL_COMBINE_RGB_ARB")) { return GL_COMBINE_RGB_ARB; } +#endif +#ifdef GL_COMBINE_RGB_EXT if (!strcmp(name, "GL_COMBINE_RGB_EXT")) { return GL_COMBINE_RGB_EXT; } +#endif +#ifdef GL_COMPRESSED_RGBA if (!strcmp(name, "GL_COMPRESSED_RGBA")) { return GL_COMPRESSED_RGBA; } +#endif +#ifdef GL_COMPRESSED_SRGB if (!strcmp(name, "GL_COMPRESSED_SRGB")) { return GL_COMPRESSED_SRGB; } +#endif +#ifdef GL_COMPUTE_TEXTURE if (!strcmp(name, "GL_COMPUTE_TEXTURE")) { return GL_COMPUTE_TEXTURE; } +#endif +#ifdef GL_CONSTANT_BORDER if (!strcmp(name, "GL_CONSTANT_BORDER")) { return GL_CONSTANT_BORDER; } +#endif +#ifdef GL_CULL_VERTEX_EXT if (!strcmp(name, "GL_CULL_VERTEX_EXT")) { return GL_CULL_VERTEX_EXT; } +#endif +#ifdef GL_CULL_VERTEX_IBM if (!strcmp(name, "GL_CULL_VERTEX_IBM")) { return GL_CULL_VERTEX_IBM; } +#endif +#ifdef GL_CURRENT_PROGRAM if (!strcmp(name, "GL_CURRENT_PROGRAM")) { return GL_CURRENT_PROGRAM; } +#endif +#ifdef GL_CURRENT_TIME_NV if (!strcmp(name, "GL_CURRENT_TIME_NV")) { return GL_CURRENT_TIME_NV; } +#endif +#ifdef GL_DATA_BUFFER_AMD if (!strcmp(name, "GL_DATA_BUFFER_AMD")) { return GL_DATA_BUFFER_AMD; } +#endif +#ifdef GL_DEPTH_COMPONENT if (!strcmp(name, "GL_DEPTH_COMPONENT")) { return GL_DEPTH_COMPONENT; } +#endif +#ifdef GL_DEPTH_WRITEMASK if (!strcmp(name, "GL_DEPTH_WRITEMASK")) { return GL_DEPTH_WRITEMASK; } +#endif +#ifdef GL_DOUBLE_MAT2_EXT if (!strcmp(name, "GL_DOUBLE_MAT2_EXT")) { return GL_DOUBLE_MAT2_EXT; } +#endif +#ifdef GL_DOUBLE_MAT3_EXT if (!strcmp(name, "GL_DOUBLE_MAT3_EXT")) { return GL_DOUBLE_MAT3_EXT; } +#endif +#ifdef GL_DOUBLE_MAT4_EXT if (!strcmp(name, "GL_DOUBLE_MAT4_EXT")) { return GL_DOUBLE_MAT4_EXT; } +#endif +#ifdef GL_DOUBLE_VEC2_EXT if (!strcmp(name, "GL_DOUBLE_VEC2_EXT")) { return GL_DOUBLE_VEC2_EXT; } +#endif +#ifdef GL_DOUBLE_VEC3_EXT if (!strcmp(name, "GL_DOUBLE_VEC3_EXT")) { return GL_DOUBLE_VEC3_EXT; } +#endif +#ifdef GL_DOUBLE_VEC4_EXT if (!strcmp(name, "GL_DOUBLE_VEC4_EXT")) { return GL_DOUBLE_VEC4_EXT; } +#endif +#ifdef GL_DSDT_MAG_VIB_NV if (!strcmp(name, "GL_DSDT_MAG_VIB_NV")) { return GL_DSDT_MAG_VIB_NV; } +#endif +#ifdef GL_DSDT_MAG_VIB_NV +if (!strcmp(name, "GL_DSDT_MAG_VIB_NV")) +{ + return GL_DSDT_MAG_VIB_NV; +} +#endif +#ifdef GL_EDGE_FLAG_ARRAY if (!strcmp(name, "GL_EDGE_FLAG_ARRAY")) { return GL_EDGE_FLAG_ARRAY; } +#endif +#ifdef GL_EMBOSS_LIGHT_NV if (!strcmp(name, "GL_EMBOSS_LIGHT_NV")) { return GL_EMBOSS_LIGHT_NV; } +#endif +#ifdef GL_EMULATION_REGAL if (!strcmp(name, "GL_EMULATION_REGAL")) { return GL_EMULATION_REGAL; } +#endif +#ifdef GL_EXT_blend_color if (!strcmp(name, "GL_EXT_blend_color")) { return GL_EXT_blend_color; } +#endif +#ifdef GL_EXT_convolution if (!strcmp(name, "GL_EXT_convolution")) { return GL_EXT_convolution; } +#endif +#ifdef GL_EXT_cull_vertex if (!strcmp(name, "GL_EXT_cull_vertex")) { return GL_EXT_cull_vertex; } +#endif +#ifdef GL_EXT_debug_label +if (!strcmp(name, "GL_EXT_debug_label")) +{ + return GL_EXT_debug_label; +} +#endif +#ifdef GL_EXT_gpu_shader4 if (!strcmp(name, "GL_EXT_gpu_shader4")) { return GL_EXT_gpu_shader4; } +#endif +#ifdef GL_EXT_multisample if (!strcmp(name, "GL_EXT_multisample")) { return GL_EXT_multisample; } +#endif +#ifdef GL_EXT_texture_env if (!strcmp(name, "GL_EXT_texture_env")) { return GL_EXT_texture_env; } +#endif +#ifdef GL_EXT_timer_query if (!strcmp(name, "GL_EXT_timer_query")) { return GL_EXT_timer_query; } +#endif +#ifdef GL_FENCE_STATUS_NV if (!strcmp(name, "GL_FENCE_STATUS_NV")) { return GL_FENCE_STATUS_NV; } +#endif +#ifdef GL_FLOAT16_VEC2_NV if (!strcmp(name, "GL_FLOAT16_VEC2_NV")) { return GL_FLOAT16_VEC2_NV; } +#endif +#ifdef GL_FLOAT16_VEC3_NV if (!strcmp(name, "GL_FLOAT16_VEC3_NV")) { return GL_FLOAT16_VEC3_NV; } +#endif +#ifdef GL_FLOAT16_VEC4_NV if (!strcmp(name, "GL_FLOAT16_VEC4_NV")) { return GL_FLOAT16_VEC4_NV; } +#endif +#ifdef GL_FLOAT_RGBA16_NV if (!strcmp(name, "GL_FLOAT_RGBA16_NV")) { return GL_FLOAT_RGBA16_NV; } +#endif +#ifdef GL_FLOAT_RGBA32_NV if (!strcmp(name, "GL_FLOAT_RGBA32_NV")) { return GL_FLOAT_RGBA32_NV; } +#endif +#ifdef GL_FOG_COORD_ARRAY if (!strcmp(name, "GL_FOG_COORD_ARRAY")) { return GL_FOG_COORD_ARRAY; } +#endif +#ifdef GL_FOG_OFFSET_SGIX if (!strcmp(name, "GL_FOG_OFFSET_SGIX")) { return GL_FOG_OFFSET_SGIX; } +#endif +#ifdef GL_FRACTIONAL_EVEN if (!strcmp(name, "GL_FRACTIONAL_EVEN")) { return GL_FRACTIONAL_EVEN; } +#endif +#ifdef GL_FRAGMENT_SHADER if (!strcmp(name, "GL_FRAGMENT_SHADER")) { return GL_FRAGMENT_SHADER; } +#endif +#ifdef GL_FRAMEBUFFER_EXT if (!strcmp(name, "GL_FRAMEBUFFER_EXT")) { return GL_FRAMEBUFFER_EXT; } +#endif +#ifdef GL_GENERATE_MIPMAP if (!strcmp(name, "GL_GENERATE_MIPMAP")) { return GL_GENERATE_MIPMAP; } +#endif +#ifdef GL_GEOMETRY_SHADER if (!strcmp(name, "GL_GEOMETRY_SHADER")) { return GL_GEOMETRY_SHADER; } +#endif +#ifdef GL_HISTOGRAM_WIDTH if (!strcmp(name, "GL_HISTOGRAM_WIDTH")) { return GL_HISTOGRAM_WIDTH; } +#endif +#ifdef GL_IBM_cull_vertex if (!strcmp(name, "GL_IBM_cull_vertex")) { return GL_IBM_cull_vertex; } +#endif +#ifdef GL_IBM_static_data if (!strcmp(name, "GL_IBM_static_data")) { return GL_IBM_static_data; } +#endif +#ifdef GL_INDEX_ARRAY_EXT if (!strcmp(name, "GL_INDEX_ARRAY_EXT")) { return GL_INDEX_ARRAY_EXT; } +#endif +#ifdef GL_INDEX_WRITEMASK if (!strcmp(name, "GL_INDEX_WRITEMASK")) { return GL_INDEX_WRITEMASK; } +#endif +#ifdef GL_INFO_LOG_LENGTH if (!strcmp(name, "GL_INFO_LOG_LENGTH")) { return GL_INFO_LOG_LENGTH; } +#endif +#ifdef GL_INTENSITY12_EXT if (!strcmp(name, "GL_INTENSITY12_EXT")) { return GL_INTENSITY12_EXT; } +#endif +#ifdef GL_INTENSITY16_EXT if (!strcmp(name, "GL_INTENSITY16_EXT")) { return GL_INTENSITY16_EXT; } +#endif +#ifdef GL_INTENSITY8I_EXT if (!strcmp(name, "GL_INTENSITY8I_EXT")) { return GL_INTENSITY8I_EXT; } +#endif +#ifdef GL_INTENSITY_SNORM if (!strcmp(name, "GL_INTENSITY_SNORM")) { return GL_INTENSITY_SNORM; } +#endif +#ifdef GL_INTERPOLATE_ARB if (!strcmp(name, "GL_INTERPOLATE_ARB")) { return GL_INTERPOLATE_ARB; } +#endif +#ifdef GL_INTERPOLATE_EXT if (!strcmp(name, "GL_INTERPOLATE_EXT")) { return GL_INTERPOLATE_EXT; } +#endif +#ifdef GL_KTX_BACK_REGION if (!strcmp(name, "GL_KTX_BACK_REGION")) { return GL_KTX_BACK_REGION; } +#endif +#ifdef GL_LINES_ADJACENCY if (!strcmp(name, "GL_LINES_ADJACENCY")) { return GL_LINES_ADJACENCY; } +#endif +#ifdef GL_LOG_DEBUG_REGAL if (!strcmp(name, "GL_LOG_DEBUG_REGAL")) { return GL_LOG_DEBUG_REGAL; } +#endif +#ifdef GL_LOG_ERROR_REGAL if (!strcmp(name, "GL_LOG_ERROR_REGAL")) { return GL_LOG_ERROR_REGAL; } +#endif +#ifdef GL_LUMINANCE12_EXT if (!strcmp(name, "GL_LUMINANCE12_EXT")) { return GL_LUMINANCE12_EXT; } +#endif +#ifdef GL_LUMINANCE16_EXT if (!strcmp(name, "GL_LUMINANCE16_EXT")) { return GL_LUMINANCE16_EXT; } +#endif +#ifdef GL_LUMINANCE8I_EXT if (!strcmp(name, "GL_LUMINANCE8I_EXT")) { return GL_LUMINANCE8I_EXT; } +#endif +#ifdef GL_LUMINANCE_ALPHA if (!strcmp(name, "GL_LUMINANCE_ALPHA")) { return GL_LUMINANCE_ALPHA; } +#endif +#ifdef GL_LUMINANCE_SNORM if (!strcmp(name, "GL_LUMINANCE_SNORM")) { return GL_LUMINANCE_SNORM; } +#endif +#ifdef GL_MAX_CLIP_PLANES if (!strcmp(name, "GL_MAX_CLIP_PLANES")) { return GL_MAX_CLIP_PLANES; } +#endif +#ifdef GL_MAX_IMAGE_UNITS if (!strcmp(name, "GL_MAX_IMAGE_UNITS")) { return GL_MAX_IMAGE_UNITS; } +#endif +#ifdef GL_MAX_NAME_LENGTH if (!strcmp(name, "GL_MAX_NAME_LENGTH")) { return GL_MAX_NAME_LENGTH; } +#endif +#ifdef GL_MAX_SAMPLES_EXT if (!strcmp(name, "GL_MAX_SAMPLES_EXT")) { return GL_MAX_SAMPLES_EXT; } +#endif +#ifdef GL_MAX_SUBROUTINES if (!strcmp(name, "GL_MAX_SUBROUTINES")) { return GL_MAX_SUBROUTINES; } -if (!strcmp(name, "GL_MESA_window_pos")) -{ - return GL_MESA_window_pos; -} +#endif +#ifdef GL_MINMAX_SINK_EXT if (!strcmp(name, "GL_MINMAX_SINK_EXT")) { return GL_MINMAX_SINK_EXT; } +#endif +#ifdef GL_MIRRORED_REPEAT if (!strcmp(name, "GL_MIRRORED_REPEAT")) { return GL_MIRRORED_REPEAT; } +#endif +#ifdef GL_MITER_REVERT_NV if (!strcmp(name, "GL_MITER_REVERT_NV")) { return GL_MITER_REVERT_NV; } +#endif +#ifdef GL_MODELVIEW10_ARB if (!strcmp(name, "GL_MODELVIEW10_ARB")) { return GL_MODELVIEW10_ARB; } +#endif +#ifdef GL_MODELVIEW11_ARB if (!strcmp(name, "GL_MODELVIEW11_ARB")) { return GL_MODELVIEW11_ARB; } +#endif +#ifdef GL_MODELVIEW12_ARB if (!strcmp(name, "GL_MODELVIEW12_ARB")) { return GL_MODELVIEW12_ARB; } +#endif +#ifdef GL_MODELVIEW13_ARB if (!strcmp(name, "GL_MODELVIEW13_ARB")) { return GL_MODELVIEW13_ARB; } +#endif +#ifdef GL_MODELVIEW14_ARB if (!strcmp(name, "GL_MODELVIEW14_ARB")) { return GL_MODELVIEW14_ARB; } +#endif +#ifdef GL_MODELVIEW15_ARB if (!strcmp(name, "GL_MODELVIEW15_ARB")) { return GL_MODELVIEW15_ARB; } +#endif +#ifdef GL_MODELVIEW16_ARB if (!strcmp(name, "GL_MODELVIEW16_ARB")) { return GL_MODELVIEW16_ARB; } +#endif +#ifdef GL_MODELVIEW17_ARB if (!strcmp(name, "GL_MODELVIEW17_ARB")) { return GL_MODELVIEW17_ARB; } +#endif +#ifdef GL_MODELVIEW18_ARB if (!strcmp(name, "GL_MODELVIEW18_ARB")) { return GL_MODELVIEW18_ARB; } +#endif +#ifdef GL_MODELVIEW19_ARB if (!strcmp(name, "GL_MODELVIEW19_ARB")) { return GL_MODELVIEW19_ARB; } +#endif +#ifdef GL_MODELVIEW20_ARB if (!strcmp(name, "GL_MODELVIEW20_ARB")) { return GL_MODELVIEW20_ARB; } +#endif +#ifdef GL_MODELVIEW21_ARB if (!strcmp(name, "GL_MODELVIEW21_ARB")) { return GL_MODELVIEW21_ARB; } +#endif +#ifdef GL_MODELVIEW22_ARB if (!strcmp(name, "GL_MODELVIEW22_ARB")) { return GL_MODELVIEW22_ARB; } +#endif +#ifdef GL_MODELVIEW23_ARB if (!strcmp(name, "GL_MODELVIEW23_ARB")) { return GL_MODELVIEW23_ARB; } +#endif +#ifdef GL_MODELVIEW24_ARB if (!strcmp(name, "GL_MODELVIEW24_ARB")) { return GL_MODELVIEW24_ARB; } +#endif +#ifdef GL_MODELVIEW25_ARB if (!strcmp(name, "GL_MODELVIEW25_ARB")) { return GL_MODELVIEW25_ARB; } +#endif +#ifdef GL_MODELVIEW26_ARB if (!strcmp(name, "GL_MODELVIEW26_ARB")) { return GL_MODELVIEW26_ARB; } +#endif +#ifdef GL_MODELVIEW27_ARB if (!strcmp(name, "GL_MODELVIEW27_ARB")) { return GL_MODELVIEW27_ARB; } +#endif +#ifdef GL_MODELVIEW28_ARB if (!strcmp(name, "GL_MODELVIEW28_ARB")) { return GL_MODELVIEW28_ARB; } +#endif +#ifdef GL_MODELVIEW29_ARB if (!strcmp(name, "GL_MODELVIEW29_ARB")) { return GL_MODELVIEW29_ARB; } +#endif +#ifdef GL_MODELVIEW30_ARB if (!strcmp(name, "GL_MODELVIEW30_ARB")) { return GL_MODELVIEW30_ARB; } +#endif +#ifdef GL_MODELVIEW31_ARB if (!strcmp(name, "GL_MODELVIEW31_ARB")) { return GL_MODELVIEW31_ARB; } +#endif +#ifdef GL_MULTISAMPLES_NV +if (!strcmp(name, "GL_MULTISAMPLES_NV")) +{ + return GL_MULTISAMPLES_NV; +} +#endif +#ifdef GL_MULTISAMPLE_ARB if (!strcmp(name, "GL_MULTISAMPLE_ARB")) { return GL_MULTISAMPLE_ARB; } +#endif +#ifdef GL_MULTISAMPLE_BIT if (!strcmp(name, "GL_MULTISAMPLE_BIT")) { return GL_MULTISAMPLE_BIT; } +#endif +#ifdef GL_MULTISAMPLE_EXT if (!strcmp(name, "GL_MULTISAMPLE_EXT")) { return GL_MULTISAMPLE_EXT; } +#endif +#ifdef GL_NV_blend_square if (!strcmp(name, "GL_NV_blend_square")) { return GL_NV_blend_square; } +#endif +#ifdef GL_NV_draw_texture if (!strcmp(name, "GL_NV_draw_texture")) { return GL_NV_draw_texture; } +#endif +#ifdef GL_NV_float_buffer if (!strcmp(name, "GL_NV_float_buffer")) { return GL_NV_float_buffer; } +#endif +#ifdef GL_NV_fog_distance if (!strcmp(name, "GL_NV_fog_distance")) { return GL_NV_fog_distance; } +#endif +#ifdef GL_NV_gpu_program4 if (!strcmp(name, "GL_NV_gpu_program4")) { return GL_NV_gpu_program4; } +#endif +#ifdef GL_NV_gpu_program5 if (!strcmp(name, "GL_NV_gpu_program5")) { return GL_NV_gpu_program5; } +#endif +#ifdef GL_NV_point_sprite if (!strcmp(name, "GL_NV_point_sprite")) { return GL_NV_point_sprite; } +#endif +#ifdef GL_OBJECT_TYPE_ARB if (!strcmp(name, "GL_OBJECT_TYPE_ARB")) { return GL_OBJECT_TYPE_ARB; } +#endif +#ifdef GL_OES_read_format if (!strcmp(name, "GL_OES_read_format")) { return GL_OES_read_format; } +#endif +#ifdef GL_OPERAND3_RGB_NV if (!strcmp(name, "GL_OPERAND3_RGB_NV")) { return GL_OPERAND3_RGB_NV; } +#endif +#ifdef GL_PACK_ROW_LENGTH if (!strcmp(name, "GL_PACK_ROW_LENGTH")) { return GL_PACK_ROW_LENGTH; } +#endif +#ifdef GL_PACK_SWAP_BYTES if (!strcmp(name, "GL_PACK_SWAP_BYTES")) { return GL_PACK_SWAP_BYTES; } +#endif +#ifdef GL_PASS_THROUGH_NV if (!strcmp(name, "GL_PASS_THROUGH_NV")) { return GL_PASS_THROUGH_NV; } +#endif +#ifdef GL_PLUS_CLAMPED_NV if (!strcmp(name, "GL_PLUS_CLAMPED_NV")) { return GL_PLUS_CLAMPED_NV; } +#endif +#ifdef GL_POINT_SPRITE_NV if (!strcmp(name, "GL_POINT_SPRITE_NV")) { return GL_POINT_SPRITE_NV; } +#endif +#ifdef GL_POLYGON_STIPPLE if (!strcmp(name, "GL_POLYGON_STIPPLE")) { return GL_POLYGON_STIPPLE; } +#endif +#ifdef GL_PRESENT_TIME_NV if (!strcmp(name, "GL_PRESENT_TIME_NV")) { return GL_PRESENT_TIME_NV; } +#endif +#ifdef GL_PRIMITIVE_ID_NV if (!strcmp(name, "GL_PRIMITIVE_ID_NV")) { return GL_PRIMITIVE_ID_NV; } +#endif +#ifdef GL_PROXY_HISTOGRAM if (!strcmp(name, "GL_PROXY_HISTOGRAM")) { return GL_PROXY_HISTOGRAM; } +#endif +#ifdef GL_PURGEABLE_APPLE if (!strcmp(name, "GL_PURGEABLE_APPLE")) { return GL_PURGEABLE_APPLE; } +#endif +#ifdef GL_QUARTER_BIT_ATI if (!strcmp(name, "GL_QUARTER_BIT_ATI")) { return GL_QUARTER_BIT_ATI; } +#endif +#ifdef GL_QUERY_RESULT_NV if (!strcmp(name, "GL_QUERY_RESULT_NV")) { return GL_QUERY_RESULT_NV; } +#endif +#ifdef GL_RED_INTEGER_EXT if (!strcmp(name, "GL_RED_INTEGER_EXT")) { return GL_RED_INTEGER_EXT; } +#endif +#ifdef GL_RESTART_PATH_NV if (!strcmp(name, "GL_RESTART_PATH_NV")) { return GL_RESTART_PATH_NV; } +#endif +#ifdef GL_RGBA4_DXT5_S3TC if (!strcmp(name, "GL_RGBA4_DXT5_S3TC")) { return GL_RGBA4_DXT5_S3TC; } +#endif +#ifdef GL_RGB_FLOAT16_ATI if (!strcmp(name, "GL_RGB_FLOAT16_ATI")) { return GL_RGB_FLOAT16_ATI; } +#endif +#ifdef GL_RGB_FLOAT32_ATI if (!strcmp(name, "GL_RGB_FLOAT32_ATI")) { return GL_RGB_FLOAT32_ATI; } +#endif +#ifdef GL_RGB_INTEGER_EXT if (!strcmp(name, "GL_RGB_INTEGER_EXT")) { return GL_RGB_INTEGER_EXT; } +#endif +#ifdef GL_RGB_SIGNED_SGIX if (!strcmp(name, "GL_RGB_SIGNED_SGIX")) { return GL_RGB_SIGNED_SGIX; } +#endif +#ifdef GL_ROUNDED_RECT_NV +if (!strcmp(name, "GL_ROUNDED_RECT_NV")) +{ + return GL_ROUNDED_RECT_NV; +} +#endif +#ifdef GL_SAMPLER_2D_RECT +if (!strcmp(name, "GL_SAMPLER_2D_RECT")) +{ + return GL_SAMPLER_2D_RECT; +} +#endif +#ifdef GL_SAMPLER_BINDING +if (!strcmp(name, "GL_SAMPLER_BINDING")) +{ + return GL_SAMPLER_BINDING; +} +#endif +#ifdef GL_SAMPLE_COUNT_NV if (!strcmp(name, "GL_SAMPLE_COUNT_NV")) { return GL_SAMPLE_COUNT_NV; } +#endif +#ifdef GL_SAMPLE_COVERAGE if (!strcmp(name, "GL_SAMPLE_COVERAGE")) { return GL_SAMPLE_COVERAGE; } +#endif +#ifdef GL_SAMPLE_MASK_EXT if (!strcmp(name, "GL_SAMPLE_MASK_EXT")) { return GL_SAMPLE_MASK_EXT; } +#endif +#ifdef GL_SAMPLE_POSITION if (!strcmp(name, "GL_SAMPLE_POSITION")) { return GL_SAMPLE_POSITION; } -if (!strcmp(name, "GL_SAMPLER_2D_RECT")) -{ - return GL_SAMPLER_2D_RECT; -} -if (!strcmp(name, "GL_SAMPLER_BINDING")) -{ - return GL_SAMPLER_BINDING; -} +#endif +#ifdef GL_SCALE_BY_TWO_NV if (!strcmp(name, "GL_SCALE_BY_TWO_NV")) { return GL_SCALE_BY_TWO_NV; } -if (!strcmp(name, "GL_SGI_color_table")) -{ - return GL_SGI_color_table; -} +#endif +#ifdef GL_SGIX_fog_offset if (!strcmp(name, "GL_SGIX_fog_offset")) { return GL_SGIX_fog_offset; } +#endif +#ifdef GL_SGI_color_table +if (!strcmp(name, "GL_SGI_color_table")) +{ + return GL_SGI_color_table; +} +#endif +#ifdef GL_SHADER_COMPILER if (!strcmp(name, "GL_SHADER_COMPILER")) { return GL_SHADER_COMPILER; } +#endif +#ifdef GL_SIGNED_ALPHA_NV +if (!strcmp(name, "GL_SIGNED_ALPHA_NV")) +{ + return GL_SIGNED_ALPHA_NV; +} +#endif +#ifdef GL_SIGNED_ALPHA_NV if (!strcmp(name, "GL_SIGNED_ALPHA_NV")) { return GL_SIGNED_ALPHA_NV; } +#endif +#ifdef GL_SIGNED_HILO8_NV if (!strcmp(name, "GL_SIGNED_HILO8_NV")) { return GL_SIGNED_HILO8_NV; } +#endif +#ifdef GL_SIGNED_RGBA8_NV if (!strcmp(name, "GL_SIGNED_RGBA8_NV")) { return GL_SIGNED_RGBA8_NV; } +#endif +#ifdef GL_SIGNED_RGBA8_NV +if (!strcmp(name, "GL_SIGNED_RGBA8_NV")) +{ + return GL_SIGNED_RGBA8_NV; +} +#endif +#ifdef GL_SKIP_DECODE_EXT if (!strcmp(name, "GL_SKIP_DECODE_EXT")) { return GL_SKIP_DECODE_EXT; } +#endif +#ifdef GL_SLICE_ACCUM_SUN if (!strcmp(name, "GL_SLICE_ACCUM_SUN")) { return GL_SLICE_ACCUM_SUN; } +#endif +#ifdef GL_SLUMINANCE8_EXT if (!strcmp(name, "GL_SLUMINANCE8_EXT")) { return GL_SLUMINANCE8_EXT; } +#endif +#ifdef GL_SOURCE0_RGB_ARB if (!strcmp(name, "GL_SOURCE0_RGB_ARB")) { return GL_SOURCE0_RGB_ARB; } +#endif +#ifdef GL_SOURCE0_RGB_EXT if (!strcmp(name, "GL_SOURCE0_RGB_EXT")) { return GL_SOURCE0_RGB_EXT; } +#endif +#ifdef GL_SOURCE1_RGB_ARB if (!strcmp(name, "GL_SOURCE1_RGB_ARB")) { return GL_SOURCE1_RGB_ARB; } +#endif +#ifdef GL_SOURCE1_RGB_EXT if (!strcmp(name, "GL_SOURCE1_RGB_EXT")) { return GL_SOURCE1_RGB_EXT; } +#endif +#ifdef GL_SOURCE2_RGB_ARB if (!strcmp(name, "GL_SOURCE2_RGB_ARB")) { return GL_SOURCE2_RGB_ARB; } +#endif +#ifdef GL_SOURCE2_RGB_EXT if (!strcmp(name, "GL_SOURCE2_RGB_EXT")) { return GL_SOURCE2_RGB_EXT; } +#endif +#ifdef GL_SRGB_DECODE_ARB if (!strcmp(name, "GL_SRGB_DECODE_ARB")) { return GL_SRGB_DECODE_ARB; } +#endif +#ifdef GL_STACK_UNDERFLOW +if (!strcmp(name, "GL_STACK_UNDERFLOW")) +{ + return GL_STACK_UNDERFLOW; +} +#endif +#ifdef GL_STACK_UNDERFLOW if (!strcmp(name, "GL_STACK_UNDERFLOW")) { return GL_STACK_UNDERFLOW; } +#endif +#ifdef GL_STATIC_COPY_ARB if (!strcmp(name, "GL_STATIC_COPY_ARB")) { return GL_STATIC_COPY_ARB; } +#endif +#ifdef GL_STATIC_DRAW_ARB if (!strcmp(name, "GL_STATIC_DRAW_ARB")) { return GL_STATIC_DRAW_ARB; } +#endif +#ifdef GL_STATIC_READ_ARB if (!strcmp(name, "GL_STATIC_READ_ARB")) { return GL_STATIC_READ_ARB; } +#endif +#ifdef GL_STENCIL_INDEX16 if (!strcmp(name, "GL_STENCIL_INDEX16")) { return GL_STENCIL_INDEX16; } +#endif +#ifdef GL_STREAM_COPY_ARB if (!strcmp(name, "GL_STREAM_COPY_ARB")) { return GL_STREAM_COPY_ARB; } +#endif +#ifdef GL_STREAM_DRAW_ARB if (!strcmp(name, "GL_STREAM_DRAW_ARB")) { return GL_STREAM_DRAW_ARB; } +#endif +#ifdef GL_STREAM_READ_ARB if (!strcmp(name, "GL_STREAM_READ_ARB")) { return GL_STREAM_READ_ARB; } +#endif +#ifdef GL_SUN_slice_accum if (!strcmp(name, "GL_SUN_slice_accum")) { return GL_SUN_slice_accum; } +#endif +#ifdef GL_SWIZZLE_STQ_ATI if (!strcmp(name, "GL_SWIZZLE_STQ_ATI")) { return GL_SWIZZLE_STQ_ATI; } +#endif +#ifdef GL_SWIZZLE_STR_ATI if (!strcmp(name, "GL_SWIZZLE_STR_ATI")) { return GL_SWIZZLE_STR_ATI; } +#endif +#ifdef GL_T2F_C4F_N3F_V3F if (!strcmp(name, "GL_T2F_C4F_N3F_V3F")) { return GL_T2F_C4F_N3F_V3F; } +#endif +#ifdef GL_T4F_C4F_N3F_V4F if (!strcmp(name, "GL_T4F_C4F_N3F_V4F")) { return GL_T4F_C4F_N3F_V4F; } +#endif +#ifdef GL_TABLE_TOO_LARGE if (!strcmp(name, "GL_TABLE_TOO_LARGE")) { return GL_TABLE_TOO_LARGE; } +#endif +#ifdef GL_TEXTURE_MAX_LOD if (!strcmp(name, "GL_TEXTURE_MAX_LOD")) { return GL_TEXTURE_MAX_LOD; } +#endif +#ifdef GL_TEXTURE_MIN_LOD if (!strcmp(name, "GL_TEXTURE_MIN_LOD")) { return GL_TEXTURE_MIN_LOD; } +#endif +#ifdef GL_TEXTURE_SAMPLES if (!strcmp(name, "GL_TEXTURE_SAMPLES")) { return GL_TEXTURE_SAMPLES; } +#endif +#ifdef GL_TIMEOUT_EXPIRED if (!strcmp(name, "GL_TIMEOUT_EXPIRED")) { return GL_TIMEOUT_EXPIRED; } +#endif +#ifdef GL_TIMEOUT_IGNORED if (!strcmp(name, "GL_TIMEOUT_IGNORED")) { return GL_TIMEOUT_IGNORED; } +#endif +#ifdef GL_TIMESTAMP_ANGLE if (!strcmp(name, "GL_TIMESTAMP_ANGLE")) { return GL_TIMESTAMP_ANGLE; } +#endif +#ifdef GL_TRACK_MATRIX_NV if (!strcmp(name, "GL_TRACK_MATRIX_NV")) { return GL_TRACK_MATRIX_NV; } +#endif +#ifdef GL_TRANSLATE_2D_NV if (!strcmp(name, "GL_TRANSLATE_2D_NV")) { return GL_TRANSLATE_2D_NV; } +#endif +#ifdef GL_TRANSLATE_3D_NV if (!strcmp(name, "GL_TRANSLATE_3D_NV")) { return GL_TRANSLATE_3D_NV; } +#endif +#ifdef GL_UNCORRELATED_NV if (!strcmp(name, "GL_UNCORRELATED_NV")) { return GL_UNCORRELATED_NV; } +#endif +#ifdef GL_UNDEFINED_APPLE if (!strcmp(name, "GL_UNDEFINED_APPLE")) { return GL_UNDEFINED_APPLE; } +#endif +#ifdef GL_VALIDATE_STATUS if (!strcmp(name, "GL_VALIDATE_STATUS")) { return GL_VALIDATE_STATUS; } +#endif +#ifdef GL_VERTEX4_BIT_PGI if (!strcmp(name, "GL_VERTEX4_BIT_PGI")) { return GL_VERTEX4_BIT_PGI; } +#endif +#ifdef GL_VIDEO_BUFFER_NV if (!strcmp(name, "GL_VIDEO_BUFFER_NV")) { return GL_VIDEO_BUFFER_NV; } +#endif +#ifdef GL_WARPS_PER_SM_NV +if (!strcmp(name, "GL_WARPS_PER_SM_NV")) +{ + return GL_WARPS_PER_SM_NV; +} +#endif +#ifdef GL_WRAP_BORDER_SUN if (!strcmp(name, "GL_WRAP_BORDER_SUN")) { return GL_WRAP_BORDER_SUN; } +#endif +#ifdef GL_YCBCR_422_APPLE if (!strcmp(name, "GL_YCBCR_422_APPLE")) { return GL_YCBCR_422_APPLE; } +#endif return _GL_UNDEFINED; case 19: -if (!strcmp(name, "GL_3D_COLOR_TEXTURE")) -{ - return GL_3D_COLOR_TEXTURE; -} +#ifdef GL_3DFX_multisample if (!strcmp(name, "GL_3DFX_multisample")) { return GL_3DFX_multisample; } +#endif +#ifdef GL_3D_COLOR_TEXTURE +if (!strcmp(name, "GL_3D_COLOR_TEXTURE")) +{ + return GL_3D_COLOR_TEXTURE; +} +#endif +#ifdef GL_4D_COLOR_TEXTURE if (!strcmp(name, "GL_4D_COLOR_TEXTURE")) { return GL_4D_COLOR_TEXTURE; } +#endif +#ifdef GL_ACCUM_ALPHA_BITS if (!strcmp(name, "GL_ACCUM_ALPHA_BITS")) { return GL_ACCUM_ALPHA_BITS; } +#endif +#ifdef GL_ACCUM_BUFFER_BIT if (!strcmp(name, "GL_ACCUM_BUFFER_BIT")) { return GL_ACCUM_BUFFER_BIT; } +#endif +#ifdef GL_ACCUM_GREEN_BITS if (!strcmp(name, "GL_ACCUM_GREEN_BITS")) { return GL_ACCUM_GREEN_BITS; } +#endif +#ifdef GL_ACTIVE_RESOURCES if (!strcmp(name, "GL_ACTIVE_RESOURCES")) { return GL_ACTIVE_RESOURCES; } +#endif +#ifdef GL_ACTIVE_VARIABLES if (!strcmp(name, "GL_ACTIVE_VARIABLES")) { return GL_ACTIVE_VARIABLES; } +#endif +#ifdef GL_ALL_BARRIER_BITS if (!strcmp(name, "GL_ALL_BARRIER_BITS")) { return GL_ALL_BARRIER_BITS; } +#endif +#ifdef GL_ALL_COMPLETED_NV if (!strcmp(name, "GL_ALL_COMPLETED_NV")) { return GL_ALL_COMPLETED_NV; } +#endif +#ifdef GL_ALREADY_SIGNALED if (!strcmp(name, "GL_ALREADY_SIGNALED")) { return GL_ALREADY_SIGNALED; } +#endif +#ifdef GL_AMD_debug_output if (!strcmp(name, "GL_AMD_debug_output")) { return GL_AMD_debug_output; } +#endif +#ifdef GL_ARB_clip_control +if (!strcmp(name, "GL_ARB_clip_control")) +{ + return GL_ARB_clip_control; +} +#endif +#ifdef GL_ARB_debug_output if (!strcmp(name, "GL_ARB_debug_output")) { return GL_ARB_debug_output; } +#endif +#ifdef GL_ARB_draw_buffers if (!strcmp(name, "GL_ARB_draw_buffers")) { return GL_ARB_draw_buffers; } +#endif +#ifdef GL_ARB_multitexture if (!strcmp(name, "GL_ARB_multitexture")) { return GL_ARB_multitexture; } +#endif +#ifdef GL_ARB_point_sprite if (!strcmp(name, "GL_ARB_point_sprite")) { return GL_ARB_point_sprite; } +#endif +#ifdef GL_ARB_shader_clock +if (!strcmp(name, "GL_ARB_shader_clock")) +{ + return GL_ARB_shader_clock; +} +#endif +#ifdef GL_ARB_texture_view if (!strcmp(name, "GL_ARB_texture_view")) { return GL_ARB_texture_view; } +#endif +#ifdef GL_ARB_vertex_blend if (!strcmp(name, "GL_ARB_vertex_blend")) { return GL_ARB_vertex_blend; } +#endif +#ifdef GL_ARRAY_BUFFER_ARB if (!strcmp(name, "GL_ARRAY_BUFFER_ARB")) { return GL_ARRAY_BUFFER_ARB; } +#endif +#ifdef GL_ATI_draw_buffers if (!strcmp(name, "GL_ATI_draw_buffers")) { return GL_ATI_draw_buffers; } +#endif +#ifdef GL_ATI_pn_triangles if (!strcmp(name, "GL_ATI_pn_triangles")) { return GL_ATI_pn_triangles; } +#endif +#ifdef GL_ATTACHED_SHADERS if (!strcmp(name, "GL_ATTACHED_SHADERS")) { return GL_ATTACHED_SHADERS; } +#endif +#ifdef GL_BGRA_INTEGER_EXT if (!strcmp(name, "GL_BGRA_INTEGER_EXT")) { return GL_BGRA_INTEGER_EXT; } +#endif +#ifdef GL_BLEND_OVERLAP_NV if (!strcmp(name, "GL_BLEND_OVERLAP_NV")) { return GL_BLEND_OVERLAP_NV; } +#endif +#ifdef GL_BLUE_INTEGER_EXT if (!strcmp(name, "GL_BLUE_INTEGER_EXT")) { return GL_BLUE_INTEGER_EXT; } +#endif +#ifdef GL_BUFFER_DATA_SIZE if (!strcmp(name, "GL_BUFFER_DATA_SIZE")) { return GL_BUFFER_DATA_SIZE; } +#endif +#ifdef GL_BUFFER_USAGE_ARB if (!strcmp(name, "GL_BUFFER_USAGE_ARB")) { return GL_BUFFER_USAGE_ARB; } +#endif +#ifdef GL_CLAMP_READ_COLOR if (!strcmp(name, "GL_CLAMP_READ_COLOR")) { return GL_CLAMP_READ_COLOR; } +#endif +#ifdef GL_CLIP_DISTANCE_NV if (!strcmp(name, "GL_CLIP_DISTANCE_NV")) { return GL_CLIP_DISTANCE_NV; } +#endif +#ifdef GL_COLOR_ARRAY_SIZE if (!strcmp(name, "GL_COLOR_ARRAY_SIZE")) { return GL_COLOR_ARRAY_SIZE; } +#endif +#ifdef GL_COLOR_ARRAY_TYPE if (!strcmp(name, "GL_COLOR_ARRAY_TYPE")) { return GL_COLOR_ARRAY_TYPE; } +#endif +#ifdef GL_COLOR_BUFFER_BIT if (!strcmp(name, "GL_COLOR_BUFFER_BIT")) { return GL_COLOR_BUFFER_BIT; } +#endif +#ifdef GL_COLOR_COMPONENTS if (!strcmp(name, "GL_COLOR_COMPONENTS")) { return GL_COLOR_COMPONENTS; } +#endif +#ifdef GL_COLOR_INDEX1_EXT +if (!strcmp(name, "GL_COLOR_INDEX1_EXT")) +{ + return GL_COLOR_INDEX1_EXT; +} +#endif +#ifdef GL_COLOR_INDEX1_EXT if (!strcmp(name, "GL_COLOR_INDEX1_EXT")) { return GL_COLOR_INDEX1_EXT; } +#endif +#ifdef GL_COLOR_INDEX2_EXT +if (!strcmp(name, "GL_COLOR_INDEX2_EXT")) +{ + return GL_COLOR_INDEX2_EXT; +} +#endif +#ifdef GL_COLOR_INDEX2_EXT if (!strcmp(name, "GL_COLOR_INDEX2_EXT")) { return GL_COLOR_INDEX2_EXT; } +#endif +#ifdef GL_COLOR_INDEX4_EXT +if (!strcmp(name, "GL_COLOR_INDEX4_EXT")) +{ + return GL_COLOR_INDEX4_EXT; +} +#endif +#ifdef GL_COLOR_INDEX4_EXT if (!strcmp(name, "GL_COLOR_INDEX4_EXT")) { return GL_COLOR_INDEX4_EXT; } +#endif +#ifdef GL_COLOR_INDEX8_EXT +if (!strcmp(name, "GL_COLOR_INDEX8_EXT")) +{ + return GL_COLOR_INDEX8_EXT; +} +#endif +#ifdef GL_COLOR_INDEX8_EXT if (!strcmp(name, "GL_COLOR_INDEX8_EXT")) { return GL_COLOR_INDEX8_EXT; } +#endif +#ifdef GL_COLOR_MATRIX_SGI if (!strcmp(name, "GL_COLOR_MATRIX_SGI")) { return GL_COLOR_MATRIX_SGI; } +#endif +#ifdef GL_COLOR_RENDERABLE if (!strcmp(name, "GL_COLOR_RENDERABLE")) { return GL_COLOR_RENDERABLE; } +#endif +#ifdef GL_COLOR_SAMPLES_NV +if (!strcmp(name, "GL_COLOR_SAMPLES_NV")) +{ + return GL_COLOR_SAMPLES_NV; +} +#endif +#ifdef GL_COLOR_SAMPLES_NV +if (!strcmp(name, "GL_COLOR_SAMPLES_NV")) +{ + return GL_COLOR_SAMPLES_NV; +} +#endif +#ifdef GL_COLOR_SAMPLES_NV if (!strcmp(name, "GL_COLOR_SAMPLES_NV")) { return GL_COLOR_SAMPLES_NV; } +#endif +#ifdef GL_COLOR_TABLE_BIAS if (!strcmp(name, "GL_COLOR_TABLE_BIAS")) { return GL_COLOR_TABLE_BIAS; } +#endif +#ifdef GL_COMBINER_BIAS_NV if (!strcmp(name, "GL_COMBINER_BIAS_NV")) { return GL_COMBINER_BIAS_NV; } +#endif +#ifdef GL_COMPRESSED_ALPHA if (!strcmp(name, "GL_COMPRESSED_ALPHA")) { return GL_COMPRESSED_ALPHA; } +#endif +#ifdef GL_COORD_REPLACE_NV if (!strcmp(name, "GL_COORD_REPLACE_NV")) { return GL_COORD_REPLACE_NV; } +#endif +#ifdef GL_COPY_PIXEL_TOKEN if (!strcmp(name, "GL_COPY_PIXEL_TOKEN")) { return GL_COPY_PIXEL_TOKEN; } +#endif +#ifdef GL_COPY_READ_BUFFER if (!strcmp(name, "GL_COPY_READ_BUFFER")) { return GL_COPY_READ_BUFFER; } +#endif +#ifdef GL_COUNTER_TYPE_AMD if (!strcmp(name, "GL_COUNTER_TYPE_AMD")) { return GL_COUNTER_TYPE_AMD; } +#endif +#ifdef GL_CULL_FRAGMENT_NV if (!strcmp(name, "GL_CULL_FRAGMENT_NV")) { return GL_CULL_FRAGMENT_NV; } +#endif +#ifdef GL_DEBUG_SOURCE_API if (!strcmp(name, "GL_DEBUG_SOURCE_API")) { return GL_DEBUG_SOURCE_API; } +#endif +#ifdef GL_DEBUG_TYPE_ERROR if (!strcmp(name, "GL_DEBUG_TYPE_ERROR")) { return GL_DEBUG_TYPE_ERROR; } +#endif +#ifdef GL_DEBUG_TYPE_OTHER if (!strcmp(name, "GL_DEBUG_TYPE_OTHER")) { return GL_DEBUG_TYPE_OTHER; } +#endif +#ifdef GL_DEPTH24_STENCIL8 if (!strcmp(name, "GL_DEPTH24_STENCIL8")) { return GL_DEPTH24_STENCIL8; } +#endif +#ifdef GL_DEPTH_ATTACHMENT if (!strcmp(name, "GL_DEPTH_ATTACHMENT")) { return GL_DEPTH_ATTACHMENT; } +#endif +#ifdef GL_DEPTH_BOUNDS_EXT if (!strcmp(name, "GL_DEPTH_BOUNDS_EXT")) { return GL_DEPTH_BOUNDS_EXT; } +#endif +#ifdef GL_DEPTH_BUFFER_BIT if (!strcmp(name, "GL_DEPTH_BUFFER_BIT")) { return GL_DEPTH_BUFFER_BIT; } +#endif +#ifdef GL_DEPTH_COMPONENTS if (!strcmp(name, "GL_DEPTH_COMPONENTS")) { return GL_DEPTH_COMPONENTS; } +#endif +#ifdef GL_DEPTH_RENDERABLE if (!strcmp(name, "GL_DEPTH_RENDERABLE")) { return GL_DEPTH_RENDERABLE; } +#endif +#ifdef GL_DEPTH_SAMPLES_NV +if (!strcmp(name, "GL_DEPTH_SAMPLES_NV")) +{ + return GL_DEPTH_SAMPLES_NV; +} +#endif +#ifdef GL_DEPTH_SAMPLES_NV +if (!strcmp(name, "GL_DEPTH_SAMPLES_NV")) +{ + return GL_DEPTH_SAMPLES_NV; +} +#endif +#ifdef GL_DEPTH_STENCIL_NV if (!strcmp(name, "GL_DEPTH_STENCIL_NV")) { return GL_DEPTH_STENCIL_NV; } +#endif +#ifdef GL_DRAW_BUFFER0_ARB if (!strcmp(name, "GL_DRAW_BUFFER0_ARB")) { return GL_DRAW_BUFFER0_ARB; } +#endif +#ifdef GL_DRAW_BUFFER0_ATI if (!strcmp(name, "GL_DRAW_BUFFER0_ATI")) { return GL_DRAW_BUFFER0_ATI; } +#endif +#ifdef GL_DRAW_BUFFER1_ARB if (!strcmp(name, "GL_DRAW_BUFFER1_ARB")) { return GL_DRAW_BUFFER1_ARB; } +#endif +#ifdef GL_DRAW_BUFFER1_ATI if (!strcmp(name, "GL_DRAW_BUFFER1_ATI")) { return GL_DRAW_BUFFER1_ATI; } +#endif +#ifdef GL_DRAW_BUFFER2_ARB if (!strcmp(name, "GL_DRAW_BUFFER2_ARB")) { return GL_DRAW_BUFFER2_ARB; } +#endif +#ifdef GL_DRAW_BUFFER2_ATI if (!strcmp(name, "GL_DRAW_BUFFER2_ATI")) { return GL_DRAW_BUFFER2_ATI; } +#endif +#ifdef GL_DRAW_BUFFER3_ARB if (!strcmp(name, "GL_DRAW_BUFFER3_ARB")) { return GL_DRAW_BUFFER3_ARB; } +#endif +#ifdef GL_DRAW_BUFFER3_ATI if (!strcmp(name, "GL_DRAW_BUFFER3_ATI")) { return GL_DRAW_BUFFER3_ATI; } +#endif +#ifdef GL_DRAW_BUFFER4_ARB if (!strcmp(name, "GL_DRAW_BUFFER4_ARB")) { return GL_DRAW_BUFFER4_ARB; } +#endif +#ifdef GL_DRAW_BUFFER4_ATI if (!strcmp(name, "GL_DRAW_BUFFER4_ATI")) { return GL_DRAW_BUFFER4_ATI; } +#endif +#ifdef GL_DRAW_BUFFER5_ARB if (!strcmp(name, "GL_DRAW_BUFFER5_ARB")) { return GL_DRAW_BUFFER5_ARB; } +#endif +#ifdef GL_DRAW_BUFFER5_ATI if (!strcmp(name, "GL_DRAW_BUFFER5_ATI")) { return GL_DRAW_BUFFER5_ATI; } +#endif +#ifdef GL_DRAW_BUFFER6_ARB if (!strcmp(name, "GL_DRAW_BUFFER6_ARB")) { return GL_DRAW_BUFFER6_ARB; } +#endif +#ifdef GL_DRAW_BUFFER6_ATI if (!strcmp(name, "GL_DRAW_BUFFER6_ATI")) { return GL_DRAW_BUFFER6_ATI; } +#endif +#ifdef GL_DRAW_BUFFER7_ARB if (!strcmp(name, "GL_DRAW_BUFFER7_ARB")) { return GL_DRAW_BUFFER7_ARB; } +#endif +#ifdef GL_DRAW_BUFFER7_ATI if (!strcmp(name, "GL_DRAW_BUFFER7_ATI")) { return GL_DRAW_BUFFER7_ATI; } +#endif +#ifdef GL_DRAW_BUFFER8_ARB if (!strcmp(name, "GL_DRAW_BUFFER8_ARB")) { return GL_DRAW_BUFFER8_ARB; } +#endif +#ifdef GL_DRAW_BUFFER8_ATI if (!strcmp(name, "GL_DRAW_BUFFER8_ATI")) { return GL_DRAW_BUFFER8_ATI; } +#endif +#ifdef GL_DRAW_BUFFER9_ARB if (!strcmp(name, "GL_DRAW_BUFFER9_ARB")) { return GL_DRAW_BUFFER9_ARB; } +#endif +#ifdef GL_DRAW_BUFFER9_ATI if (!strcmp(name, "GL_DRAW_BUFFER9_ATI")) { return GL_DRAW_BUFFER9_ATI; } +#endif +#ifdef GL_DRAW_FRAMEBUFFER if (!strcmp(name, "GL_DRAW_FRAMEBUFFER")) { return GL_DRAW_FRAMEBUFFER; } +#endif +#ifdef GL_DRAW_PIXEL_TOKEN if (!strcmp(name, "GL_DRAW_PIXEL_TOKEN")) { return GL_DRAW_PIXEL_TOKEN; } +#endif +#ifdef GL_DYNAMIC_COPY_ARB if (!strcmp(name, "GL_DYNAMIC_COPY_ARB")) { return GL_DYNAMIC_COPY_ARB; } +#endif +#ifdef GL_DYNAMIC_DRAW_ARB if (!strcmp(name, "GL_DYNAMIC_DRAW_ARB")) { return GL_DYNAMIC_DRAW_ARB; } +#endif +#ifdef GL_DYNAMIC_READ_ARB if (!strcmp(name, "GL_DYNAMIC_READ_ARB")) { return GL_DYNAMIC_READ_ARB; } +#endif +#ifdef GL_EDGEFLAG_BIT_PGI if (!strcmp(name, "GL_EDGEFLAG_BIT_PGI")) { return GL_EDGEFLAG_BIT_PGI; } +#endif +#ifdef GL_EXPAND_NEGATE_NV if (!strcmp(name, "GL_EXPAND_NEGATE_NV")) { return GL_EXPAND_NEGATE_NV; } +#endif +#ifdef GL_EXPAND_NORMAL_NV if (!strcmp(name, "GL_EXPAND_NORMAL_NV")) { return GL_EXPAND_NORMAL_NV; } +#endif +#ifdef GL_EXT_blend_minmax if (!strcmp(name, "GL_EXT_blend_minmax")) { return GL_EXT_blend_minmax; } +#endif +#ifdef GL_EXT_copy_texture if (!strcmp(name, "GL_EXT_copy_texture")) { return GL_EXT_copy_texture; } +#endif +#ifdef GL_EXT_debug_marker if (!strcmp(name, "GL_EXT_debug_marker")) { return GL_EXT_debug_marker; } +#endif +#ifdef GL_EXT_packed_float if (!strcmp(name, "GL_EXT_packed_float")) { return GL_EXT_packed_float; } +#endif +#ifdef GL_EXT_scene_marker if (!strcmp(name, "GL_EXT_scene_marker")) { return GL_EXT_scene_marker; } +#endif +#ifdef GL_EXT_shadow_funcs if (!strcmp(name, "GL_EXT_shadow_funcs")) { return GL_EXT_shadow_funcs; } +#endif +#ifdef GL_EXT_stencil_wrap if (!strcmp(name, "GL_EXT_stencil_wrap")) { return GL_EXT_stencil_wrap; } +#endif +#ifdef GL_EXT_texture_sRGB if (!strcmp(name, "GL_EXT_texture_sRGB")) { return GL_EXT_texture_sRGB; } +#endif +#ifdef GL_EXT_vertex_array if (!strcmp(name, "GL_EXT_vertex_array")) { return GL_EXT_vertex_array; } +#endif +#ifdef GL_FIRST_TO_REST_NV if (!strcmp(name, "GL_FIRST_TO_REST_NV")) { return GL_FIRST_TO_REST_NV; } +#endif +#ifdef GL_FRAGMENT_TEXTURE if (!strcmp(name, "GL_FRAGMENT_TEXTURE")) { return GL_FRAGMENT_TEXTURE; } +#endif +#ifdef GL_FRAMEBUFFER_SRGB if (!strcmp(name, "GL_FRAMEBUFFER_SRGB")) { return GL_FRAMEBUFFER_SRGB; } +#endif +#ifdef GL_GEOMETRY_TEXTURE if (!strcmp(name, "GL_GEOMETRY_TEXTURE")) { return GL_GEOMETRY_TEXTURE; } +#endif +#ifdef GL_GLOBAL_ALPHA_SUN if (!strcmp(name, "GL_GLOBAL_ALPHA_SUN")) { return GL_GLOBAL_ALPHA_SUN; } +#endif +#ifdef GL_HISTOGRAM_FORMAT if (!strcmp(name, "GL_HISTOGRAM_FORMAT")) { return GL_HISTOGRAM_FORMAT; } +#endif +#ifdef GL_IMAGE_BUFFER_EXT if (!strcmp(name, "GL_IMAGE_BUFFER_EXT")) { return GL_IMAGE_BUFFER_EXT; } +#endif +#ifdef GL_IMAGE_PIXEL_TYPE if (!strcmp(name, "GL_IMAGE_PIXEL_TYPE")) { return GL_IMAGE_PIXEL_TYPE; } +#endif +#ifdef GL_IMAGE_TEXEL_SIZE if (!strcmp(name, "GL_IMAGE_TEXEL_SIZE")) { return GL_IMAGE_TEXEL_SIZE; } +#endif +#ifdef GL_INDEX_ARRAY_TYPE if (!strcmp(name, "GL_INDEX_ARRAY_TYPE")) { return GL_INDEX_ARRAY_TYPE; } +#endif +#ifdef GL_INGR_color_clamp if (!strcmp(name, "GL_INGR_color_clamp")) { return GL_INGR_color_clamp; } +#endif +#ifdef GL_INTENSITY16F_ARB if (!strcmp(name, "GL_INTENSITY16F_ARB")) { return GL_INTENSITY16F_ARB; } +#endif +#ifdef GL_INTENSITY16I_EXT if (!strcmp(name, "GL_INTENSITY16I_EXT")) { return GL_INTENSITY16I_EXT; } +#endif +#ifdef GL_INTENSITY32F_ARB if (!strcmp(name, "GL_INTENSITY32F_ARB")) { return GL_INTENSITY32F_ARB; } +#endif +#ifdef GL_INTENSITY32I_EXT if (!strcmp(name, "GL_INTENSITY32I_EXT")) { return GL_INTENSITY32I_EXT; } -if (!strcmp(name, "GL_INTENSITY8_SNORM")) -{ - return GL_INTENSITY8_SNORM; -} +#endif +#ifdef GL_INTENSITY8UI_EXT if (!strcmp(name, "GL_INTENSITY8UI_EXT")) { return GL_INTENSITY8UI_EXT; } +#endif +#ifdef GL_INTENSITY8_SNORM +if (!strcmp(name, "GL_INTENSITY8_SNORM")) +{ + return GL_INTENSITY8_SNORM; +} +#endif +#ifdef GL_INT_IMAGE_1D_EXT if (!strcmp(name, "GL_INT_IMAGE_1D_EXT")) { return GL_INT_IMAGE_1D_EXT; } +#endif +#ifdef GL_INT_IMAGE_2D_EXT if (!strcmp(name, "GL_INT_IMAGE_2D_EXT")) { return GL_INT_IMAGE_2D_EXT; } +#endif +#ifdef GL_INT_IMAGE_3D_EXT if (!strcmp(name, "GL_INT_IMAGE_3D_EXT")) { return GL_INT_IMAGE_3D_EXT; } +#endif +#ifdef GL_INT_IMAGE_BUFFER if (!strcmp(name, "GL_INT_IMAGE_BUFFER")) { return GL_INT_IMAGE_BUFFER; } +#endif +#ifdef GL_INT_SAMPLER_CUBE if (!strcmp(name, "GL_INT_SAMPLER_CUBE")) { return GL_INT_SAMPLER_CUBE; } +#endif +#ifdef GL_KTX_FRONT_REGION if (!strcmp(name, "GL_KTX_FRONT_REGION")) { return GL_KTX_FRONT_REGION; } +#endif +#ifdef GL_LINE_RESET_TOKEN if (!strcmp(name, "GL_LINE_RESET_TOKEN")) { return GL_LINE_RESET_TOKEN; } +#endif +#ifdef GL_LINE_SMOOTH_HINT if (!strcmp(name, "GL_LINE_SMOOTH_HINT")) { return GL_LINE_SMOOTH_HINT; } +#endif +#ifdef GL_LINE_WIDTH_RANGE if (!strcmp(name, "GL_LINE_WIDTH_RANGE")) { return GL_LINE_WIDTH_RANGE; } +#endif +#ifdef GL_LOG_DRIVER_REGAL if (!strcmp(name, "GL_LOG_DRIVER_REGAL")) { return GL_LOG_DRIVER_REGAL; } +#endif +#ifdef GL_LOG_STATUS_REGAL if (!strcmp(name, "GL_LOG_STATUS_REGAL")) { return GL_LOG_STATUS_REGAL; } +#endif +#ifdef GL_LUMINANCE16F_ARB if (!strcmp(name, "GL_LUMINANCE16F_ARB")) { return GL_LUMINANCE16F_ARB; } +#endif +#ifdef GL_LUMINANCE16I_EXT if (!strcmp(name, "GL_LUMINANCE16I_EXT")) { return GL_LUMINANCE16I_EXT; } +#endif +#ifdef GL_LUMINANCE32F_ARB if (!strcmp(name, "GL_LUMINANCE32F_ARB")) { return GL_LUMINANCE32F_ARB; } +#endif +#ifdef GL_LUMINANCE32I_EXT if (!strcmp(name, "GL_LUMINANCE32I_EXT")) { return GL_LUMINANCE32I_EXT; } -if (!strcmp(name, "GL_LUMINANCE8_SNORM")) -{ - return GL_LUMINANCE8_SNORM; -} +#endif +#ifdef GL_LUMINANCE8UI_EXT if (!strcmp(name, "GL_LUMINANCE8UI_EXT")) { return GL_LUMINANCE8UI_EXT; } -if (!strcmp(name, "GL_MAP1_GRID_DOMAIN")) +#endif +#ifdef GL_LUMINANCE8_SNORM +if (!strcmp(name, "GL_LUMINANCE8_SNORM")) +{ + return GL_LUMINANCE8_SNORM; +} +#endif +#ifdef GL_MAP1_GRID_DOMAIN +if (!strcmp(name, "GL_MAP1_GRID_DOMAIN")) { return GL_MAP1_GRID_DOMAIN; } +#endif +#ifdef GL_MAP1_TANGENT_EXT if (!strcmp(name, "GL_MAP1_TANGENT_EXT")) { return GL_MAP1_TANGENT_EXT; } +#endif +#ifdef GL_MAP2_GRID_DOMAIN if (!strcmp(name, "GL_MAP2_GRID_DOMAIN")) { return GL_MAP2_GRID_DOMAIN; } +#endif +#ifdef GL_MAP2_TANGENT_EXT if (!strcmp(name, "GL_MAP2_TANGENT_EXT")) { return GL_MAP2_TANGENT_EXT; } +#endif +#ifdef GL_MAP_COHERENT_BIT if (!strcmp(name, "GL_MAP_COHERENT_BIT")) { return GL_MAP_COHERENT_BIT; } +#endif +#ifdef GL_MAX_DRAW_BUFFERS if (!strcmp(name, "GL_MAX_DRAW_BUFFERS")) { return GL_MAX_DRAW_BUFFERS; } +#endif +#ifdef GL_MAX_LABEL_LENGTH if (!strcmp(name, "GL_MAX_LABEL_LENGTH")) { return GL_MAX_LABEL_LENGTH; } +#endif +#ifdef GL_MAX_LIST_NESTING if (!strcmp(name, "GL_MAX_LIST_NESTING")) { return GL_MAX_LIST_NESTING; } +#endif +#ifdef GL_MAX_SHININESS_NV if (!strcmp(name, "GL_MAX_SHININESS_NV")) { return GL_MAX_SHININESS_NV; } +#endif +#ifdef GL_MAX_TEXTURE_SIZE if (!strcmp(name, "GL_MAX_TEXTURE_SIZE")) { return GL_MAX_TEXTURE_SIZE; } -if (!strcmp(name, "GL_MESA_pack_invert")) -{ - return GL_MESA_pack_invert; -} +#endif +#ifdef GL_MINUS_CLAMPED_NV if (!strcmp(name, "GL_MINUS_CLAMPED_NV")) { return GL_MINUS_CLAMPED_NV; } +#endif +#ifdef GL_MIRROR_CLAMP_ATI if (!strcmp(name, "GL_MIRROR_CLAMP_ATI")) { return GL_MIRROR_CLAMP_ATI; } +#endif +#ifdef GL_MIRROR_CLAMP_EXT if (!strcmp(name, "GL_MIRROR_CLAMP_EXT")) { return GL_MIRROR_CLAMP_EXT; } +#endif +#ifdef GL_MODELVIEW_MATRIX if (!strcmp(name, "GL_MODELVIEW_MATRIX")) { return GL_MODELVIEW_MATRIX; } +#endif +#ifdef GL_MODULATE_ADD_ATI if (!strcmp(name, "GL_MODULATE_ADD_ATI")) { return GL_MODULATE_ADD_ATI; } +#endif +#ifdef GL_MULTISAMPLE_3DFX if (!strcmp(name, "GL_MULTISAMPLE_3DFX")) { return GL_MULTISAMPLE_3DFX; } +#endif +#ifdef GL_MULTISAMPLE_SGIS if (!strcmp(name, "GL_MULTISAMPLE_SGIS")) { return GL_MULTISAMPLE_SGIS; } +#endif +#ifdef GL_NAME_STACK_DEPTH if (!strcmp(name, "GL_NAME_STACK_DEPTH")) { return GL_NAME_STACK_DEPTH; } +#endif +#ifdef GL_NEGATIVE_ONE_EXT if (!strcmp(name, "GL_NEGATIVE_ONE_EXT")) { return GL_NEGATIVE_ONE_EXT; } +#endif +#ifdef GL_NORMAL_ARRAY_EXT if (!strcmp(name, "GL_NORMAL_ARRAY_EXT")) { return GL_NORMAL_ARRAY_EXT; } +#endif +#ifdef GL_NV_present_video if (!strcmp(name, "GL_NV_present_video")) { return GL_NV_present_video; } +#endif +#ifdef GL_NV_texgen_emboss if (!strcmp(name, "GL_NV_texgen_emboss")) { return GL_NV_texgen_emboss; } +#endif +#ifdef GL_NV_vdpau_interop if (!strcmp(name, "GL_NV_vdpau_interop")) { return GL_NV_vdpau_interop; } +#endif +#ifdef GL_NV_video_capture if (!strcmp(name, "GL_NV_video_capture")) { return GL_NV_video_capture; } +#endif +#ifdef GL_OBJECT_LINE_SGIS if (!strcmp(name, "GL_OBJECT_LINE_SGIS")) { return GL_OBJECT_LINE_SGIS; } +#endif +#ifdef GL_OPERAND0_RGB_ARB if (!strcmp(name, "GL_OPERAND0_RGB_ARB")) { return GL_OPERAND0_RGB_ARB; } +#endif +#ifdef GL_OPERAND0_RGB_EXT if (!strcmp(name, "GL_OPERAND0_RGB_EXT")) { return GL_OPERAND0_RGB_EXT; } +#endif +#ifdef GL_OPERAND1_RGB_ARB if (!strcmp(name, "GL_OPERAND1_RGB_ARB")) { return GL_OPERAND1_RGB_ARB; } +#endif +#ifdef GL_OPERAND1_RGB_EXT if (!strcmp(name, "GL_OPERAND1_RGB_EXT")) { return GL_OPERAND1_RGB_EXT; } +#endif +#ifdef GL_OPERAND2_RGB_ARB if (!strcmp(name, "GL_OPERAND2_RGB_ARB")) { return GL_OPERAND2_RGB_ARB; } +#endif +#ifdef GL_OPERAND2_RGB_EXT if (!strcmp(name, "GL_OPERAND2_RGB_EXT")) { return GL_OPERAND2_RGB_EXT; } -if (!strcmp(name, "GL_PACK_INVERT_MESA")) -{ - return GL_PACK_INVERT_MESA; -} +#endif +#ifdef GL_PACK_SKIP_IMAGES if (!strcmp(name, "GL_PACK_SKIP_IMAGES")) { return GL_PACK_SKIP_IMAGES; } +#endif +#ifdef GL_PACK_SKIP_PIXELS if (!strcmp(name, "GL_PACK_SKIP_PIXELS")) { return GL_PACK_SKIP_PIXELS; } +#endif +#ifdef GL_PATH_END_CAPS_NV if (!strcmp(name, "GL_PATH_END_CAPS_NV")) { return GL_PATH_END_CAPS_NV; } +#endif +#ifdef GL_PATH_GEN_MODE_NV if (!strcmp(name, "GL_PATH_GEN_MODE_NV")) { return GL_PATH_GEN_MODE_NV; } +#endif +#ifdef GL_PGI_vertex_hints if (!strcmp(name, "GL_PGI_vertex_hints")) { return GL_PGI_vertex_hints; } +#endif +#ifdef GL_PIXEL_MAP_A_TO_A if (!strcmp(name, "GL_PIXEL_MAP_A_TO_A")) { return GL_PIXEL_MAP_A_TO_A; } +#endif +#ifdef GL_PIXEL_MAP_B_TO_B if (!strcmp(name, "GL_PIXEL_MAP_B_TO_B")) { return GL_PIXEL_MAP_B_TO_B; } +#endif +#ifdef GL_PIXEL_MAP_G_TO_G if (!strcmp(name, "GL_PIXEL_MAP_G_TO_G")) { return GL_PIXEL_MAP_G_TO_G; } +#endif +#ifdef GL_PIXEL_MAP_I_TO_A if (!strcmp(name, "GL_PIXEL_MAP_I_TO_A")) { return GL_PIXEL_MAP_I_TO_A; } +#endif +#ifdef GL_PIXEL_MAP_I_TO_B if (!strcmp(name, "GL_PIXEL_MAP_I_TO_B")) { return GL_PIXEL_MAP_I_TO_B; } +#endif +#ifdef GL_PIXEL_MAP_I_TO_G if (!strcmp(name, "GL_PIXEL_MAP_I_TO_G")) { return GL_PIXEL_MAP_I_TO_G; } +#endif +#ifdef GL_PIXEL_MAP_I_TO_I if (!strcmp(name, "GL_PIXEL_MAP_I_TO_I")) { return GL_PIXEL_MAP_I_TO_I; } +#endif +#ifdef GL_PIXEL_MAP_I_TO_R if (!strcmp(name, "GL_PIXEL_MAP_I_TO_R")) { return GL_PIXEL_MAP_I_TO_R; } +#endif +#ifdef GL_PIXEL_MAP_R_TO_R if (!strcmp(name, "GL_PIXEL_MAP_R_TO_R")) { return GL_PIXEL_MAP_R_TO_R; } +#endif +#ifdef GL_PIXEL_MAP_S_TO_S if (!strcmp(name, "GL_PIXEL_MAP_S_TO_S")) { return GL_PIXEL_MAP_S_TO_S; } +#endif +#ifdef GL_PN_TRIANGLES_ATI if (!strcmp(name, "GL_PN_TRIANGLES_ATI")) { return GL_PN_TRIANGLES_ATI; } +#endif +#ifdef GL_POINT_SIZE_RANGE if (!strcmp(name, "GL_POINT_SIZE_RANGE")) { return GL_POINT_SIZE_RANGE; } +#endif +#ifdef GL_POINT_SPRITE_ARB if (!strcmp(name, "GL_POINT_SPRITE_ARB")) { return GL_POINT_SPRITE_ARB; } +#endif +#ifdef GL_PRIMARY_COLOR_NV if (!strcmp(name, "GL_PRIMARY_COLOR_NV")) { return GL_PRIMARY_COLOR_NV; } +#endif +#ifdef GL_PRIMARY_COLOR_NV +if (!strcmp(name, "GL_PRIMARY_COLOR_NV")) +{ + return GL_PRIMARY_COLOR_NV; +} +#endif +#ifdef GL_PROGRAM_PIPELINE if (!strcmp(name, "GL_PROGRAM_PIPELINE")) { return GL_PROGRAM_PIPELINE; } +#endif +#ifdef GL_PROVOKING_VERTEX +if (!strcmp(name, "GL_PROVOKING_VERTEX")) +{ + return GL_PROVOKING_VERTEX; +} +#endif +#ifdef GL_PROVOKING_VERTEX if (!strcmp(name, "GL_PROVOKING_VERTEX")) { return GL_PROVOKING_VERTEX; } +#endif +#ifdef GL_PROXY_TEXTURE_1D if (!strcmp(name, "GL_PROXY_TEXTURE_1D")) { return GL_PROXY_TEXTURE_1D; } +#endif +#ifdef GL_PROXY_TEXTURE_1D +if (!strcmp(name, "GL_PROXY_TEXTURE_1D")) +{ + return GL_PROXY_TEXTURE_1D; +} +#endif +#ifdef GL_PROXY_TEXTURE_2D +if (!strcmp(name, "GL_PROXY_TEXTURE_2D")) +{ + return GL_PROXY_TEXTURE_2D; +} +#endif +#ifdef GL_PROXY_TEXTURE_2D if (!strcmp(name, "GL_PROXY_TEXTURE_2D")) { return GL_PROXY_TEXTURE_2D; } +#endif +#ifdef GL_PROXY_TEXTURE_3D if (!strcmp(name, "GL_PROXY_TEXTURE_3D")) { return GL_PROXY_TEXTURE_3D; } +#endif +#ifdef GL_QUERY_BUFFER_AMD if (!strcmp(name, "GL_QUERY_BUFFER_AMD")) { return GL_QUERY_BUFFER_AMD; } +#endif +#ifdef GL_QUERY_NO_WAIT_NV if (!strcmp(name, "GL_QUERY_NO_WAIT_NV")) { return GL_QUERY_NO_WAIT_NV; } +#endif +#ifdef GL_QUERY_OBJECT_AMD if (!strcmp(name, "GL_QUERY_OBJECT_AMD")) { return GL_QUERY_OBJECT_AMD; } +#endif +#ifdef GL_QUERY_OBJECT_EXT +if (!strcmp(name, "GL_QUERY_OBJECT_EXT")) +{ + return GL_QUERY_OBJECT_EXT; +} +#endif +#ifdef GL_QUERY_RESULT_ARB if (!strcmp(name, "GL_QUERY_RESULT_ARB")) { return GL_QUERY_RESULT_ARB; } +#endif +#ifdef GL_R1UI_C3F_V3F_SUN if (!strcmp(name, "GL_R1UI_C3F_V3F_SUN")) { return GL_R1UI_C3F_V3F_SUN; } +#endif +#ifdef GL_R1UI_N3F_V3F_SUN if (!strcmp(name, "GL_R1UI_N3F_V3F_SUN")) { return GL_R1UI_N3F_V3F_SUN; } +#endif +#ifdef GL_R1UI_T2F_V3F_SUN if (!strcmp(name, "GL_R1UI_T2F_V3F_SUN")) { return GL_R1UI_T2F_V3F_SUN; } +#endif +#ifdef GL_READ_FRAMEBUFFER if (!strcmp(name, "GL_READ_FRAMEBUFFER")) { return GL_READ_FRAMEBUFFER; } +#endif +#ifdef GL_READ_PIXELS_TYPE if (!strcmp(name, "GL_READ_PIXELS_TYPE")) { return GL_READ_PIXELS_TYPE; } +#endif +#ifdef GL_RELATIVE_RECT_NV +if (!strcmp(name, "GL_RELATIVE_RECT_NV")) +{ + return GL_RELATIVE_RECT_NV; +} +#endif +#ifdef GL_RENDERBUFFER_EXT if (!strcmp(name, "GL_RENDERBUFFER_EXT")) { return GL_RENDERBUFFER_EXT; } +#endif +#ifdef GL_REPLICATE_BORDER if (!strcmp(name, "GL_REPLICATE_BORDER")) { return GL_REPLICATE_BORDER; } +#endif +#ifdef GL_RGBA_FLOAT16_ATI if (!strcmp(name, "GL_RGBA_FLOAT16_ATI")) { return GL_RGBA_FLOAT16_ATI; } +#endif +#ifdef GL_RGBA_FLOAT32_ATI if (!strcmp(name, "GL_RGBA_FLOAT32_ATI")) { return GL_RGBA_FLOAT32_ATI; } +#endif +#ifdef GL_RGBA_INTEGER_EXT if (!strcmp(name, "GL_RGBA_INTEGER_EXT")) { return GL_RGBA_INTEGER_EXT; } +#endif +#ifdef GL_RGBA_SIGNED_SGIX if (!strcmp(name, "GL_RGBA_SIGNED_SGIX")) { return GL_RGBA_SIGNED_SGIX; } -if (!strcmp(name, "GL_SAMPLE_MASK_SGIS")) +#endif +#ifdef GL_ROUNDED_RECT2_NV +if (!strcmp(name, "GL_ROUNDED_RECT2_NV")) { - return GL_SAMPLE_MASK_SGIS; + return GL_ROUNDED_RECT2_NV; +} +#endif +#ifdef GL_ROUNDED_RECT4_NV +if (!strcmp(name, "GL_ROUNDED_RECT4_NV")) +{ + return GL_ROUNDED_RECT4_NV; } +#endif +#ifdef GL_ROUNDED_RECT8_NV +if (!strcmp(name, "GL_ROUNDED_RECT8_NV")) +{ + return GL_ROUNDED_RECT8_NV; +} +#endif +#ifdef GL_SAMPLER_1D_ARRAY if (!strcmp(name, "GL_SAMPLER_1D_ARRAY")) { return GL_SAMPLER_1D_ARRAY; } +#endif +#ifdef GL_SAMPLER_2D_ARRAY if (!strcmp(name, "GL_SAMPLER_2D_ARRAY")) { return GL_SAMPLER_2D_ARRAY; } +#endif +#ifdef GL_SAMPLER_CUBE_ARB if (!strcmp(name, "GL_SAMPLER_CUBE_ARB")) { return GL_SAMPLER_CUBE_ARB; } +#endif +#ifdef GL_SAMPLE_MASK_SGIS +if (!strcmp(name, "GL_SAMPLE_MASK_SGIS")) +{ + return GL_SAMPLE_MASK_SGIS; +} +#endif +#ifdef GL_SATURATE_BIT_ATI if (!strcmp(name, "GL_SATURATE_BIT_ATI")) { return GL_SATURATE_BIT_ATI; } +#endif +#ifdef GL_SCALE_BY_FOUR_NV if (!strcmp(name, "GL_SCALE_BY_FOUR_NV")) { return GL_SCALE_BY_FOUR_NV; } +#endif +#ifdef GL_SEPARABLE_2D_EXT if (!strcmp(name, "GL_SEPARABLE_2D_EXT")) { return GL_SEPARABLE_2D_EXT; } +#endif +#ifdef GL_SEPARATE_ATTRIBS if (!strcmp(name, "GL_SEPARATE_ATTRIBS")) { return GL_SEPARATE_ATTRIBS; } -if (!strcmp(name, "GL_SGI_color_matrix")) -{ - return GL_SGI_color_matrix; -} +#endif +#ifdef GL_SGIS_color_range if (!strcmp(name, "GL_SGIS_color_range")) { return GL_SGIS_color_range; } +#endif +#ifdef GL_SGIS_multisample if (!strcmp(name, "GL_SGIS_multisample")) { return GL_SGIS_multisample; } +#endif +#ifdef GL_SGIS_texture_lod if (!strcmp(name, "GL_SGIS_texture_lod")) { return GL_SGIS_texture_lod; } +#endif +#ifdef GL_SGIX_async_pixel if (!strcmp(name, "GL_SGIX_async_pixel")) { return GL_SGIX_async_pixel; } +#endif +#ifdef GL_SGIX_fog_texture if (!strcmp(name, "GL_SGIX_fog_texture")) { return GL_SGIX_fog_texture; } +#endif +#ifdef GL_SGI_color_matrix +if (!strcmp(name, "GL_SGI_color_matrix")) +{ + return GL_SGI_color_matrix; +} +#endif +#ifdef GL_SIGNED_ALPHA8_NV +if (!strcmp(name, "GL_SIGNED_ALPHA8_NV")) +{ + return GL_SIGNED_ALPHA8_NV; +} +#endif +#ifdef GL_SIGNED_ALPHA8_NV if (!strcmp(name, "GL_SIGNED_ALPHA8_NV")) { return GL_SIGNED_ALPHA8_NV; } +#endif +#ifdef GL_SIGNED_HILO16_NV +if (!strcmp(name, "GL_SIGNED_HILO16_NV")) +{ + return GL_SIGNED_HILO16_NV; +} +#endif +#ifdef GL_SIGNED_HILO16_NV if (!strcmp(name, "GL_SIGNED_HILO16_NV")) { return GL_SIGNED_HILO16_NV; } +#endif +#ifdef GL_SIGNED_NEGATE_NV if (!strcmp(name, "GL_SIGNED_NEGATE_NV")) { return GL_SIGNED_NEGATE_NV; } +#endif +#ifdef GL_SINGLE_COLOR_EXT if (!strcmp(name, "GL_SINGLE_COLOR_EXT")) { return GL_SINGLE_COLOR_EXT; } +#endif +#ifdef GL_SLUMINANCE_ALPHA if (!strcmp(name, "GL_SLUMINANCE_ALPHA")) { return GL_SLUMINANCE_ALPHA; } +#endif +#ifdef GL_SOURCE3_ALPHA_NV if (!strcmp(name, "GL_SOURCE3_ALPHA_NV")) { return GL_SOURCE3_ALPHA_NV; } +#endif +#ifdef GL_SRGB8_ALPHA8_EXT if (!strcmp(name, "GL_SRGB8_ALPHA8_EXT")) { return GL_SRGB8_ALPHA8_EXT; } +#endif +#ifdef GL_STATISTICS_REGAL if (!strcmp(name, "GL_STATISTICS_REGAL")) { return GL_STATISTICS_REGAL; } +#endif +#ifdef GL_STENCIL_BACK_REF if (!strcmp(name, "GL_STENCIL_BACK_REF")) { return GL_STENCIL_BACK_REF; } +#endif +#ifdef GL_SUN_global_alpha if (!strcmp(name, "GL_SUN_global_alpha")) { return GL_SUN_global_alpha; } +#endif +#ifdef GL_SURFACE_STATE_NV if (!strcmp(name, "GL_SURFACE_STATE_NV")) { return GL_SURFACE_STATE_NV; } +#endif +#ifdef GL_SWIZZLE_STRQ_ATI if (!strcmp(name, "GL_SWIZZLE_STRQ_ATI")) { return GL_SWIZZLE_STRQ_ATI; } +#endif +#ifdef GL_TESS_GEN_SPACING if (!strcmp(name, "GL_TESS_GEN_SPACING")) { return GL_TESS_GEN_SPACING; } +#endif +#ifdef GL_TEXTURE_1D_ARRAY if (!strcmp(name, "GL_TEXTURE_1D_ARRAY")) { return GL_TEXTURE_1D_ARRAY; } +#endif +#ifdef GL_TEXTURE_2D_ARRAY if (!strcmp(name, "GL_TEXTURE_2D_ARRAY")) { return GL_TEXTURE_2D_ARRAY; } +#endif +#ifdef GL_TEXTURE_COORD_NV if (!strcmp(name, "GL_TEXTURE_COORD_NV")) { return GL_TEXTURE_COORD_NV; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP if (!strcmp(name, "GL_TEXTURE_CUBE_MAP")) { return GL_TEXTURE_CUBE_MAP; } +#endif +#ifdef GL_TEXTURE_ENV_MODE if (!strcmp(name, "GL_TEXTURE_ENV_MODE")) { return GL_TEXTURE_ENV_MODE; } +#endif +#ifdef GL_TEXTURE_FOG_SGIX if (!strcmp(name, "GL_TEXTURE_FOG_SGIX")) { return GL_TEXTURE_FOG_SGIX; } +#endif +#ifdef GL_TEXTURE_GEN_MODE if (!strcmp(name, "GL_TEXTURE_GEN_MODE")) { return GL_TEXTURE_GEN_MODE; } +#endif +#ifdef GL_TEXTURE_LOD_BIAS if (!strcmp(name, "GL_TEXTURE_LOD_BIAS")) { return GL_TEXTURE_LOD_BIAS; } +#endif +#ifdef GL_TEXTURE_PRIORITY if (!strcmp(name, "GL_TEXTURE_PRIORITY")) { return GL_TEXTURE_PRIORITY; } +#endif +#ifdef GL_TEXTURE_RED_SIZE if (!strcmp(name, "GL_TEXTURE_RED_SIZE")) { return GL_TEXTURE_RED_SIZE; } +#endif +#ifdef GL_TEXTURE_RED_TYPE if (!strcmp(name, "GL_TEXTURE_RED_TYPE")) { return GL_TEXTURE_RED_TYPE; } +#endif +#ifdef GL_TEXTURE_RESIDENT if (!strcmp(name, "GL_TEXTURE_RESIDENT")) { return GL_TEXTURE_RESIDENT; } +#endif +#ifdef GL_TIME_ELAPSED_EXT if (!strcmp(name, "GL_TIME_ELAPSED_EXT")) { return GL_TIME_ELAPSED_EXT; } +#endif +#ifdef GL_UNDEFINED_VERTEX if (!strcmp(name, "GL_UNDEFINED_VERTEX")) { return GL_UNDEFINED_VERTEX; } +#endif +#ifdef GL_UNPACK_ALIGNMENT if (!strcmp(name, "GL_UNPACK_ALIGNMENT")) { return GL_UNPACK_ALIGNMENT; } +#endif +#ifdef GL_UNPACK_LSB_FIRST if (!strcmp(name, "GL_UNPACK_LSB_FIRST")) { return GL_UNPACK_LSB_FIRST; } +#endif +#ifdef GL_UNPACK_SKIP_ROWS if (!strcmp(name, "GL_UNPACK_SKIP_ROWS")) { return GL_UNPACK_SKIP_ROWS; } +#endif +#ifdef GL_UNSIGNED_INT8_NV if (!strcmp(name, "GL_UNSIGNED_INT8_NV")) { return GL_UNSIGNED_INT8_NV; } +#endif +#ifdef GL_VERTEX23_BIT_PGI if (!strcmp(name, "GL_VERTEX23_BIT_PGI")) { return GL_VERTEX23_BIT_PGI; } +#endif +#ifdef GL_VERTEX_ARRAY_EXT if (!strcmp(name, "GL_VERTEX_ARRAY_EXT")) { return GL_VERTEX_ARRAY_EXT; } +#endif +#ifdef GL_VERTEX_BLEND_ARB if (!strcmp(name, "GL_VERTEX_BLEND_ARB")) { return GL_VERTEX_BLEND_ARB; } +#endif +#ifdef GL_VIBRANCE_BIAS_NV if (!strcmp(name, "GL_VIBRANCE_BIAS_NV")) { return GL_VIBRANCE_BIAS_NV; } +#endif +#ifdef GL_WEIGHT_ARRAY_ARB if (!strcmp(name, "GL_WEIGHT_ARRAY_ARB")) { return GL_WEIGHT_ARRAY_ARB; } +#endif +#ifdef GL_WIN_specular_fog if (!strcmp(name, "GL_WIN_specular_fog")) { return GL_WIN_specular_fog; } +#endif +#ifdef GL_WRITE_DISCARD_NV if (!strcmp(name, "GL_WRITE_DISCARD_NV")) { return GL_WRITE_DISCARD_NV; } +#endif return _GL_UNDEFINED; case 20: +#ifdef GL_ACCUM_CLEAR_VALUE if (!strcmp(name, "GL_ACCUM_CLEAR_VALUE")) { return GL_ACCUM_CLEAR_VALUE; } +#endif +#ifdef GL_ACTIVE_ATTRIBUTES if (!strcmp(name, "GL_ACTIVE_ATTRIBUTES")) { return GL_ACTIVE_ATTRIBUTES; } +#endif +#ifdef GL_ADJACENT_PAIRS_NV if (!strcmp(name, "GL_ADJACENT_PAIRS_NV")) { return GL_ADJACENT_PAIRS_NV; } +#endif +#ifdef GL_ALPHA_FLOAT16_ATI if (!strcmp(name, "GL_ALPHA_FLOAT16_ATI")) { return GL_ALPHA_FLOAT16_ATI; } +#endif +#ifdef GL_ALPHA_FLOAT32_ATI if (!strcmp(name, "GL_ALPHA_FLOAT32_ATI")) { return GL_ALPHA_FLOAT32_ATI; } +#endif +#ifdef GL_ALPHA_INTEGER_EXT if (!strcmp(name, "GL_ALPHA_INTEGER_EXT")) { return GL_ALPHA_INTEGER_EXT; } +#endif +#ifdef GL_ALPHA_SIGNED_SGIX if (!strcmp(name, "GL_ALPHA_SIGNED_SGIX")) { return GL_ALPHA_SIGNED_SGIX; } +#endif +#ifdef GL_AMD_pinned_memory if (!strcmp(name, "GL_AMD_pinned_memory")) { return GL_AMD_pinned_memory; } +#endif +#ifdef GL_ANGLE_timer_query if (!strcmp(name, "GL_ANGLE_timer_query")) { return GL_ANGLE_timer_query; } +#endif +#ifdef GL_ARB_base_instance if (!strcmp(name, "GL_ARB_base_instance")) { return GL_ARB_base_instance; } +#endif +#ifdef GL_ARB_clear_texture if (!strcmp(name, "GL_ARB_clear_texture")) { return GL_ARB_clear_texture; } +#endif +#ifdef GL_ARB_compatibility if (!strcmp(name, "GL_ARB_compatibility")) { return GL_ARB_compatibility; } +#endif +#ifdef GL_ARB_cull_distance +if (!strcmp(name, "GL_ARB_cull_distance")) +{ + return GL_ARB_cull_distance; +} +#endif +#ifdef GL_ARB_depth_texture if (!strcmp(name, "GL_ARB_depth_texture")) { return GL_ARB_depth_texture; } +#endif +#ifdef GL_ARB_draw_indirect if (!strcmp(name, "GL_ARB_draw_indirect")) { return GL_ARB_draw_indirect; } +#endif +#ifdef GL_ARB_shader_ballot +if (!strcmp(name, "GL_ARB_shader_ballot")) +{ + return GL_ARB_shader_ballot; +} +#endif +#ifdef GL_ARB_sparse_buffer +if (!strcmp(name, "GL_ARB_sparse_buffer")) +{ + return GL_ARB_sparse_buffer; +} +#endif +#ifdef GL_ARB_texture_float if (!strcmp(name, "GL_ARB_texture_float")) { return GL_ARB_texture_float; } +#endif +#ifdef GL_ARB_vertex_shader if (!strcmp(name, "GL_ARB_vertex_shader")) { return GL_ARB_vertex_shader; } +#endif +#ifdef GL_ASYNC_MARKER_SGIX if (!strcmp(name, "GL_ASYNC_MARKER_SGIX")) { return GL_ASYNC_MARKER_SGIX; } +#endif +#ifdef GL_ATI_element_array if (!strcmp(name, "GL_ATI_element_array")) { return GL_ATI_element_array; } +#endif +#ifdef GL_ATI_texture_float if (!strcmp(name, "GL_ATI_texture_float")) { return GL_ATI_texture_float; } +#endif +#ifdef GL_BLEND_DST_RGB_EXT if (!strcmp(name, "GL_BLEND_DST_RGB_EXT")) { return GL_BLEND_DST_RGB_EXT; } +#endif +#ifdef GL_BLEND_SRC_RGB_EXT if (!strcmp(name, "GL_BLEND_SRC_RGB_EXT")) { return GL_BLEND_SRC_RGB_EXT; } +#endif +#ifdef GL_BUFFER_ACCESS_ARB if (!strcmp(name, "GL_BUFFER_ACCESS_ARB")) { return GL_BUFFER_ACCESS_ARB; } +#endif +#ifdef GL_BUFFER_MAPPED_ARB +if (!strcmp(name, "GL_BUFFER_MAPPED_ARB")) +{ + return GL_BUFFER_MAPPED_ARB; +} +#endif +#ifdef GL_BUFFER_MAP_LENGTH if (!strcmp(name, "GL_BUFFER_MAP_LENGTH")) { return GL_BUFFER_MAP_LENGTH; } +#endif +#ifdef GL_BUFFER_MAP_OFFSET if (!strcmp(name, "GL_BUFFER_MAP_OFFSET")) { return GL_BUFFER_MAP_OFFSET; } -if (!strcmp(name, "GL_BUFFER_MAPPED_ARB")) +#endif +#ifdef GL_BUFFER_OBJECT_EXT +if (!strcmp(name, "GL_BUFFER_OBJECT_EXT")) { - return GL_BUFFER_MAPPED_ARB; + return GL_BUFFER_OBJECT_EXT; } +#endif +#ifdef GL_CLAMP_TO_EDGE_EXT if (!strcmp(name, "GL_CLAMP_TO_EDGE_EXT")) { return GL_CLAMP_TO_EDGE_EXT; } +#endif +#ifdef GL_CLIP_FAR_HINT_PGI if (!strcmp(name, "GL_CLIP_FAR_HINT_PGI")) { return GL_CLIP_FAR_HINT_PGI; } +#endif +#ifdef GL_COLOR_ATTACHMENT0 if (!strcmp(name, "GL_COLOR_ATTACHMENT0")) { return GL_COLOR_ATTACHMENT0; } +#endif +#ifdef GL_COLOR_ATTACHMENT1 if (!strcmp(name, "GL_COLOR_ATTACHMENT1")) { return GL_COLOR_ATTACHMENT1; } +#endif +#ifdef GL_COLOR_ATTACHMENT2 if (!strcmp(name, "GL_COLOR_ATTACHMENT2")) { return GL_COLOR_ATTACHMENT2; } +#endif +#ifdef GL_COLOR_ATTACHMENT3 if (!strcmp(name, "GL_COLOR_ATTACHMENT3")) { return GL_COLOR_ATTACHMENT3; } +#endif +#ifdef GL_COLOR_ATTACHMENT4 if (!strcmp(name, "GL_COLOR_ATTACHMENT4")) { return GL_COLOR_ATTACHMENT4; } +#endif +#ifdef GL_COLOR_ATTACHMENT5 if (!strcmp(name, "GL_COLOR_ATTACHMENT5")) { return GL_COLOR_ATTACHMENT5; } +#endif +#ifdef GL_COLOR_ATTACHMENT6 if (!strcmp(name, "GL_COLOR_ATTACHMENT6")) { return GL_COLOR_ATTACHMENT6; } +#endif +#ifdef GL_COLOR_ATTACHMENT7 if (!strcmp(name, "GL_COLOR_ATTACHMENT7")) { return GL_COLOR_ATTACHMENT7; } +#endif +#ifdef GL_COLOR_ATTACHMENT8 if (!strcmp(name, "GL_COLOR_ATTACHMENT8")) { return GL_COLOR_ATTACHMENT8; } +#endif +#ifdef GL_COLOR_ATTACHMENT9 if (!strcmp(name, "GL_COLOR_ATTACHMENT9")) { return GL_COLOR_ATTACHMENT9; } +#endif +#ifdef GL_COLOR_CLEAR_VALUE if (!strcmp(name, "GL_COLOR_CLEAR_VALUE")) { return GL_COLOR_CLEAR_VALUE; } +#endif +#ifdef GL_COLOR_FLOAT_APPLE if (!strcmp(name, "GL_COLOR_FLOAT_APPLE")) { return GL_COLOR_FLOAT_APPLE; } +#endif +#ifdef GL_COLOR_INDEX12_EXT +if (!strcmp(name, "GL_COLOR_INDEX12_EXT")) +{ + return GL_COLOR_INDEX12_EXT; +} +#endif +#ifdef GL_COLOR_INDEX12_EXT if (!strcmp(name, "GL_COLOR_INDEX12_EXT")) { return GL_COLOR_INDEX12_EXT; } +#endif +#ifdef GL_COLOR_INDEX16_EXT +if (!strcmp(name, "GL_COLOR_INDEX16_EXT")) +{ + return GL_COLOR_INDEX16_EXT; +} +#endif +#ifdef GL_COLOR_INDEX16_EXT if (!strcmp(name, "GL_COLOR_INDEX16_EXT")) { return GL_COLOR_INDEX16_EXT; } +#endif +#ifdef GL_COLOR_TABLE_SCALE if (!strcmp(name, "GL_COLOR_TABLE_SCALE")) { return GL_COLOR_TABLE_SCALE; } +#endif +#ifdef GL_COLOR_TABLE_WIDTH if (!strcmp(name, "GL_COLOR_TABLE_WIDTH")) { return GL_COLOR_TABLE_WIDTH; } +#endif +#ifdef GL_COMBINER_INPUT_NV +if (!strcmp(name, "GL_COMBINER_INPUT_NV")) +{ + return GL_COMBINER_INPUT_NV; +} +#endif +#ifdef GL_COMBINER_SCALE_NV +if (!strcmp(name, "GL_COMBINER_SCALE_NV")) +{ + return GL_COMBINER_SCALE_NV; +} +#endif +#ifdef GL_COMBINE_ALPHA_ARB if (!strcmp(name, "GL_COMBINE_ALPHA_ARB")) { return GL_COMBINE_ALPHA_ARB; } +#endif +#ifdef GL_COMBINE_ALPHA_EXT if (!strcmp(name, "GL_COMBINE_ALPHA_EXT")) { return GL_COMBINE_ALPHA_EXT; } -if (!strcmp(name, "GL_COMBINER_INPUT_NV")) -{ - return GL_COMBINER_INPUT_NV; -} -if (!strcmp(name, "GL_COMBINER_SCALE_NV")) +#endif +#ifdef GL_CONIC_CURVE_TO_NV +if (!strcmp(name, "GL_CONIC_CURVE_TO_NV")) { - return GL_COMBINER_SCALE_NV; + return GL_CONIC_CURVE_TO_NV; } +#endif +#ifdef GL_CONVOLUTION_WIDTH if (!strcmp(name, "GL_CONVOLUTION_WIDTH")) { return GL_CONVOLUTION_WIDTH; } +#endif +#ifdef GL_COORD_REPLACE_ARB if (!strcmp(name, "GL_COORD_REPLACE_ARB")) { return GL_COORD_REPLACE_ARB; } +#endif +#ifdef GL_COPY_WRITE_BUFFER if (!strcmp(name, "GL_COPY_WRITE_BUFFER")) { return GL_COPY_WRITE_BUFFER; } +#endif +#ifdef GL_COUNTER_RANGE_AMD if (!strcmp(name, "GL_COUNTER_RANGE_AMD")) { return GL_COUNTER_RANGE_AMD; } +#endif +#ifdef GL_CUBIC_CURVE_TO_NV if (!strcmp(name, "GL_CUBIC_CURVE_TO_NV")) { return GL_CUBIC_CURVE_TO_NV; } +#endif +#ifdef GL_CURRENT_ATTRIB_NV if (!strcmp(name, "GL_CURRENT_ATTRIB_NV")) { return GL_CURRENT_ATTRIB_NV; } +#endif +#ifdef GL_CURRENT_FOG_COORD if (!strcmp(name, "GL_CURRENT_FOG_COORD")) { return GL_CURRENT_FOG_COORD; } +#endif +#ifdef GL_CURRENT_MATRIX_NV if (!strcmp(name, "GL_CURRENT_MATRIX_NV")) { return GL_CURRENT_MATRIX_NV; } +#endif +#ifdef GL_CURRENT_QUERY_ARB if (!strcmp(name, "GL_CURRENT_QUERY_ARB")) { return GL_CURRENT_QUERY_ARB; } +#endif +#ifdef GL_DEBUG_TYPE_MARKER if (!strcmp(name, "GL_DEBUG_TYPE_MARKER")) { return GL_DEBUG_TYPE_MARKER; } +#endif +#ifdef GL_DEPTH32F_STENCIL8 if (!strcmp(name, "GL_DEPTH32F_STENCIL8")) { return GL_DEPTH32F_STENCIL8; } +#endif +#ifdef GL_DEPTH_CLEAR_VALUE if (!strcmp(name, "GL_DEPTH_CLEAR_VALUE")) { return GL_DEPTH_CLEAR_VALUE; } +#endif +#ifdef GL_DEPTH_COMPONENT16 if (!strcmp(name, "GL_DEPTH_COMPONENT16")) { return GL_DEPTH_COMPONENT16; } +#endif +#ifdef GL_DEPTH_COMPONENT24 if (!strcmp(name, "GL_DEPTH_COMPONENT24")) { return GL_DEPTH_COMPONENT24; } +#endif +#ifdef GL_DEPTH_COMPONENT32 if (!strcmp(name, "GL_DEPTH_COMPONENT32")) { return GL_DEPTH_COMPONENT32; } +#endif +#ifdef GL_DEPTH_STENCIL_EXT if (!strcmp(name, "GL_DEPTH_STENCIL_EXT")) { return GL_DEPTH_STENCIL_EXT; } +#endif +#ifdef GL_DOUBLE_MAT2x3_EXT if (!strcmp(name, "GL_DOUBLE_MAT2x3_EXT")) { return GL_DOUBLE_MAT2x3_EXT; } +#endif +#ifdef GL_DOUBLE_MAT2x4_EXT if (!strcmp(name, "GL_DOUBLE_MAT2x4_EXT")) { return GL_DOUBLE_MAT2x4_EXT; } +#endif +#ifdef GL_DOUBLE_MAT3x2_EXT if (!strcmp(name, "GL_DOUBLE_MAT3x2_EXT")) { return GL_DOUBLE_MAT3x2_EXT; } +#endif +#ifdef GL_DOUBLE_MAT3x4_EXT if (!strcmp(name, "GL_DOUBLE_MAT3x4_EXT")) { return GL_DOUBLE_MAT3x4_EXT; } +#endif +#ifdef GL_DOUBLE_MAT4x2_EXT if (!strcmp(name, "GL_DOUBLE_MAT4x2_EXT")) { return GL_DOUBLE_MAT4x2_EXT; } +#endif +#ifdef GL_DOUBLE_MAT4x3_EXT if (!strcmp(name, "GL_DOUBLE_MAT4x3_EXT")) { return GL_DOUBLE_MAT4x3_EXT; } +#endif +#ifdef GL_DRAW_BUFFER10_ARB if (!strcmp(name, "GL_DRAW_BUFFER10_ARB")) { return GL_DRAW_BUFFER10_ARB; } +#endif +#ifdef GL_DRAW_BUFFER10_ATI if (!strcmp(name, "GL_DRAW_BUFFER10_ATI")) { return GL_DRAW_BUFFER10_ATI; } +#endif +#ifdef GL_DRAW_BUFFER11_ARB if (!strcmp(name, "GL_DRAW_BUFFER11_ARB")) { return GL_DRAW_BUFFER11_ARB; } +#endif +#ifdef GL_DRAW_BUFFER11_ATI if (!strcmp(name, "GL_DRAW_BUFFER11_ATI")) { return GL_DRAW_BUFFER11_ATI; } +#endif +#ifdef GL_DRAW_BUFFER12_ARB if (!strcmp(name, "GL_DRAW_BUFFER12_ARB")) { return GL_DRAW_BUFFER12_ARB; } +#endif +#ifdef GL_DRAW_BUFFER12_ATI if (!strcmp(name, "GL_DRAW_BUFFER12_ATI")) { return GL_DRAW_BUFFER12_ATI; } +#endif +#ifdef GL_DRAW_BUFFER13_ARB if (!strcmp(name, "GL_DRAW_BUFFER13_ARB")) { return GL_DRAW_BUFFER13_ARB; } +#endif +#ifdef GL_DRAW_BUFFER13_ATI if (!strcmp(name, "GL_DRAW_BUFFER13_ATI")) { return GL_DRAW_BUFFER13_ATI; } +#endif +#ifdef GL_DRAW_BUFFER14_ARB if (!strcmp(name, "GL_DRAW_BUFFER14_ARB")) { return GL_DRAW_BUFFER14_ARB; } +#endif +#ifdef GL_DRAW_BUFFER14_ATI if (!strcmp(name, "GL_DRAW_BUFFER14_ATI")) { return GL_DRAW_BUFFER14_ATI; } +#endif +#ifdef GL_DRAW_BUFFER15_ARB if (!strcmp(name, "GL_DRAW_BUFFER15_ARB")) { return GL_DRAW_BUFFER15_ARB; } +#endif +#ifdef GL_DRAW_BUFFER15_ATI if (!strcmp(name, "GL_DRAW_BUFFER15_ATI")) { return GL_DRAW_BUFFER15_ATI; } +#endif +#ifdef GL_DRAW_PIXELS_APPLE if (!strcmp(name, "GL_DRAW_PIXELS_APPLE")) { return GL_DRAW_PIXELS_APPLE; } +#endif +#ifdef GL_ELEMENT_ARRAY_ATI if (!strcmp(name, "GL_ELEMENT_ARRAY_ATI")) { return GL_ELEMENT_ARRAY_ATI; } +#endif +#ifdef GL_EXT_draw_buffers2 if (!strcmp(name, "GL_EXT_draw_buffers2")) { return GL_EXT_draw_buffers2; } +#endif +#ifdef GL_EXT_index_texture if (!strcmp(name, "GL_EXT_index_texture")) { return GL_EXT_index_texture; } +#endif +#ifdef GL_EXT_light_texture if (!strcmp(name, "GL_EXT_light_texture")) { return GL_EXT_light_texture; } +#endif +#ifdef GL_EXT_packed_pixels if (!strcmp(name, "GL_EXT_packed_pixels")) { return GL_EXT_packed_pixels; } +#endif +#ifdef GL_EXT_texture_array if (!strcmp(name, "GL_EXT_texture_array")) { return GL_EXT_texture_array; } +#endif +#ifdef GL_EXT_texture_snorm if (!strcmp(name, "GL_EXT_texture_snorm")) { return GL_EXT_texture_snorm; } +#endif +#ifdef GL_EXT_vertex_shader if (!strcmp(name, "GL_EXT_vertex_shader")) { return GL_EXT_vertex_shader; } +#endif +#ifdef GL_FILL_RECTANGLE_NV +if (!strcmp(name, "GL_FILL_RECTANGLE_NV")) +{ + return GL_FILL_RECTANGLE_NV; +} +#endif +#ifdef GL_FRAGMENT_FOG_SGIX if (!strcmp(name, "GL_FRAGMENT_FOG_SGIX")) { return GL_FRAGMENT_FOG_SGIX; } +#endif +#ifdef GL_FRAGMENT_INPUT_NV +if (!strcmp(name, "GL_FRAGMENT_INPUT_NV")) +{ + return GL_FRAGMENT_INPUT_NV; +} +#endif +#ifdef GL_FRAMEBUFFER_BLEND if (!strcmp(name, "GL_FRAMEBUFFER_BLEND")) { return GL_FRAMEBUFFER_BLEND; } +#endif +#ifdef GL_FUNC_SUBTRACT_EXT if (!strcmp(name, "GL_FUNC_SUBTRACT_EXT")) { return GL_FUNC_SUBTRACT_EXT; } +#endif +#ifdef GL_GENERIC_ATTRIB_NV if (!strcmp(name, "GL_GENERIC_ATTRIB_NV")) { return GL_GENERIC_ATTRIB_NV; } +#endif +#ifdef GL_GREEN_INTEGER_EXT if (!strcmp(name, "GL_GREEN_INTEGER_EXT")) { return GL_GREEN_INTEGER_EXT; } +#endif +#ifdef GL_HP_occlusion_test if (!strcmp(name, "GL_HP_occlusion_test")) { return GL_HP_occlusion_test; } +#endif +#ifdef GL_HSL_LUMINOSITY_NV if (!strcmp(name, "GL_HSL_LUMINOSITY_NV")) { return GL_HSL_LUMINOSITY_NV; } +#endif +#ifdef GL_HSL_SATURATION_NV if (!strcmp(name, "GL_HSL_SATURATION_NV")) { return GL_HSL_SATURATION_NV; } +#endif +#ifdef GL_IMAGE_2D_RECT_EXT if (!strcmp(name, "GL_IMAGE_2D_RECT_EXT")) { return GL_IMAGE_2D_RECT_EXT; } +#endif +#ifdef GL_IMAGE_CLASS_1_X_8 if (!strcmp(name, "GL_IMAGE_CLASS_1_X_8")) { return GL_IMAGE_CLASS_1_X_8; } +#endif +#ifdef GL_IMAGE_CLASS_2_X_8 if (!strcmp(name, "GL_IMAGE_CLASS_2_X_8")) { return GL_IMAGE_CLASS_2_X_8; } +#endif +#ifdef GL_IMAGE_CLASS_4_X_8 if (!strcmp(name, "GL_IMAGE_CLASS_4_X_8")) { return GL_IMAGE_CLASS_4_X_8; } +#endif +#ifdef GL_INDEX_CLEAR_VALUE if (!strcmp(name, "GL_INDEX_CLEAR_VALUE")) { return GL_INDEX_CLEAR_VALUE; } +#endif +#ifdef GL_INTEL_map_texture if (!strcmp(name, "GL_INTEL_map_texture")) { return GL_INTEL_map_texture; } -if (!strcmp(name, "GL_INTENSITY16_SNORM")) -{ - return GL_INTENSITY16_SNORM; -} +#endif +#ifdef GL_INTENSITY16UI_EXT if (!strcmp(name, "GL_INTENSITY16UI_EXT")) { return GL_INTENSITY16UI_EXT; } +#endif +#ifdef GL_INTENSITY16_SNORM +if (!strcmp(name, "GL_INTENSITY16_SNORM")) +{ + return GL_INTENSITY16_SNORM; +} +#endif +#ifdef GL_INTENSITY32UI_EXT if (!strcmp(name, "GL_INTENSITY32UI_EXT")) { return GL_INTENSITY32UI_EXT; } +#endif +#ifdef GL_INT_IMAGE_2D_RECT if (!strcmp(name, "GL_INT_IMAGE_2D_RECT")) { return GL_INT_IMAGE_2D_RECT; } +#endif +#ifdef GL_INVALID_OPERATION if (!strcmp(name, "GL_INVALID_OPERATION")) { return GL_INVALID_OPERATION; } +#endif +#ifdef GL_KTX_buffer_region if (!strcmp(name, "GL_KTX_buffer_region")) { return GL_KTX_buffer_region; } +#endif +#ifdef GL_LOG_WARNING_REGAL if (!strcmp(name, "GL_LOG_WARNING_REGAL")) { return GL_LOG_WARNING_REGAL; } -if (!strcmp(name, "GL_LUMINANCE16_SNORM")) -{ - return GL_LUMINANCE16_SNORM; -} +#endif +#ifdef GL_LUMINANCE16UI_EXT if (!strcmp(name, "GL_LUMINANCE16UI_EXT")) { return GL_LUMINANCE16UI_EXT; } +#endif +#ifdef GL_LUMINANCE16_SNORM +if (!strcmp(name, "GL_LUMINANCE16_SNORM")) +{ + return GL_LUMINANCE16_SNORM; +} +#endif +#ifdef GL_LUMINANCE32UI_EXT if (!strcmp(name, "GL_LUMINANCE32UI_EXT")) { return GL_LUMINANCE32UI_EXT; } +#endif +#ifdef GL_LUMINANCE4_ALPHA4 if (!strcmp(name, "GL_LUMINANCE4_ALPHA4")) { return GL_LUMINANCE4_ALPHA4; } +#endif +#ifdef GL_LUMINANCE6_ALPHA2 if (!strcmp(name, "GL_LUMINANCE6_ALPHA2")) { return GL_LUMINANCE6_ALPHA2; } +#endif +#ifdef GL_LUMINANCE8_ALPHA8 if (!strcmp(name, "GL_LUMINANCE8_ALPHA8")) { return GL_LUMINANCE8_ALPHA8; } +#endif +#ifdef GL_MAGNITUDE_BIAS_NV if (!strcmp(name, "GL_MAGNITUDE_BIAS_NV")) { return GL_MAGNITUDE_BIAS_NV; } +#endif +#ifdef GL_MAP1_BINORMAL_EXT if (!strcmp(name, "GL_MAP1_BINORMAL_EXT")) { return GL_MAP1_BINORMAL_EXT; } +#endif +#ifdef GL_MAP2_BINORMAL_EXT if (!strcmp(name, "GL_MAP2_BINORMAL_EXT")) { return GL_MAP2_BINORMAL_EXT; } +#endif +#ifdef GL_MAX_ELEMENT_INDEX if (!strcmp(name, "GL_MAX_ELEMENT_INDEX")) { return GL_MAX_ELEMENT_INDEX; } +#endif +#ifdef GL_MAX_IMAGE_SAMPLES if (!strcmp(name, "GL_MAX_IMAGE_SAMPLES")) { return GL_MAX_IMAGE_SAMPLES; } +#endif +#ifdef GL_MAX_SAMPLES_ANGLE if (!strcmp(name, "GL_MAX_SAMPLES_ANGLE")) { return GL_MAX_SAMPLES_ANGLE; } +#endif +#ifdef GL_MAX_TEXTURE_UNITS if (!strcmp(name, "GL_MAX_TEXTURE_UNITS")) { return GL_MAX_TEXTURE_UNITS; } +#endif +#ifdef GL_MAX_VIEWPORT_DIMS if (!strcmp(name, "GL_MAX_VIEWPORT_DIMS")) { return GL_MAX_VIEWPORT_DIMS; } +#endif +#ifdef GL_MINMAX_FORMAT_EXT if (!strcmp(name, "GL_MINMAX_FORMAT_EXT")) { return GL_MINMAX_FORMAT_EXT; } +#endif +#ifdef GL_MITER_TRUNCATE_NV if (!strcmp(name, "GL_MITER_TRUNCATE_NV")) { return GL_MITER_TRUNCATE_NV; } +#endif +#ifdef GL_MODULATE_ADD_ATIX if (!strcmp(name, "GL_MODULATE_ADD_ATIX")) { return GL_MODULATE_ADD_ATIX; } +#endif +#ifdef GL_MOVE_TO_RESETS_NV if (!strcmp(name, "GL_MOVE_TO_RESETS_NV")) { return GL_MOVE_TO_RESETS_NV; } +#endif +#ifdef GL_NORMAL_ARRAY_TYPE if (!strcmp(name, "GL_NORMAL_ARRAY_TYPE")) { return GL_NORMAL_ARRAY_TYPE; } +#endif +#ifdef GL_NUM_SAMPLE_COUNTS if (!strcmp(name, "GL_NUM_SAMPLE_COUNTS")) { return GL_NUM_SAMPLE_COUNTS; } +#endif +#ifdef GL_NV_deep_texture3D if (!strcmp(name, "GL_NV_deep_texture3D")) { return GL_NV_deep_texture3D; } +#endif +#ifdef GL_NV_fill_rectangle +if (!strcmp(name, "GL_NV_fill_rectangle")) +{ + return GL_NV_fill_rectangle; +} +#endif +#ifdef GL_NV_path_rendering if (!strcmp(name, "GL_NV_path_rendering")) { return GL_NV_path_rendering; } +#endif +#ifdef GL_NV_texture_shader if (!strcmp(name, "GL_NV_texture_shader")) { return GL_NV_texture_shader; } +#endif +#ifdef GL_NV_vertex_program if (!strcmp(name, "GL_NV_vertex_program")) { return GL_NV_vertex_program; } +#endif +#ifdef GL_OBJECT_POINT_SGIS if (!strcmp(name, "GL_OBJECT_POINT_SGIS")) { return GL_OBJECT_POINT_SGIS; } +#endif +#ifdef GL_OPERAND3_ALPHA_NV if (!strcmp(name, "GL_OPERAND3_ALPHA_NV")) { return GL_OPERAND3_ALPHA_NV; } +#endif +#ifdef GL_OP_EXP_BASE_2_EXT if (!strcmp(name, "GL_OP_EXP_BASE_2_EXT")) { return GL_OP_EXP_BASE_2_EXT; } +#endif +#ifdef GL_OP_LOG_BASE_2_EXT if (!strcmp(name, "GL_OP_LOG_BASE_2_EXT")) { return GL_OP_LOG_BASE_2_EXT; } +#endif +#ifdef GL_OP_RECIP_SQRT_EXT if (!strcmp(name, "GL_OP_RECIP_SQRT_EXT")) { return GL_OP_RECIP_SQRT_EXT; } +#endif +#ifdef GL_OUTPUT_COLOR0_EXT if (!strcmp(name, "GL_OUTPUT_COLOR0_EXT")) { return GL_OUTPUT_COLOR0_EXT; } +#endif +#ifdef GL_OUTPUT_COLOR1_EXT if (!strcmp(name, "GL_OUTPUT_COLOR1_EXT")) { return GL_OUTPUT_COLOR1_EXT; } +#endif +#ifdef GL_OUTPUT_VERTEX_EXT if (!strcmp(name, "GL_OUTPUT_VERTEX_EXT")) { return GL_OUTPUT_VERTEX_EXT; } +#endif +#ifdef GL_PACK_IMAGE_HEIGHT if (!strcmp(name, "GL_PACK_IMAGE_HEIGHT")) { return GL_PACK_IMAGE_HEIGHT; } +#endif +#ifdef GL_PACK_RESAMPLE_OML if (!strcmp(name, "GL_PACK_RESAMPLE_OML")) { return GL_PACK_RESAMPLE_OML; } +#endif +#ifdef GL_PALETTE4_RGB8_OES if (!strcmp(name, "GL_PALETTE4_RGB8_OES")) { return GL_PALETTE4_RGB8_OES; } +#endif +#ifdef GL_PALETTE8_RGB8_OES if (!strcmp(name, "GL_PALETTE8_RGB8_OES")) { return GL_PALETTE8_RGB8_OES; } +#endif +#ifdef GL_PATH_DASH_CAPS_NV if (!strcmp(name, "GL_PATH_DASH_CAPS_NV")) { return GL_PATH_DASH_CAPS_NV; } +#endif +#ifdef GL_PATH_FILL_MASK_NV if (!strcmp(name, "GL_PATH_FILL_MASK_NV")) { return GL_PATH_FILL_MASK_NV; } +#endif +#ifdef GL_PATH_FILL_MODE_NV if (!strcmp(name, "GL_PATH_FILL_MODE_NV")) { return GL_PATH_FILL_MODE_NV; } +#endif +#ifdef GL_PATH_FORMAT_PS_NV if (!strcmp(name, "GL_PATH_FORMAT_PS_NV")) { return GL_PATH_FORMAT_PS_NV; } +#endif +#ifdef GL_PATH_GEN_COEFF_NV if (!strcmp(name, "GL_PATH_GEN_COEFF_NV")) { return GL_PATH_GEN_COEFF_NV; } +#endif +#ifdef GL_PIXEL_PACK_BUFFER if (!strcmp(name, "GL_PIXEL_PACK_BUFFER")) { return GL_PIXEL_PACK_BUFFER; } +#endif +#ifdef GL_POINT_SMOOTH_HINT if (!strcmp(name, "GL_POINT_SMOOTH_HINT")) { return GL_POINT_SMOOTH_HINT; } +#endif +#ifdef GL_PRIMARY_COLOR_ARB if (!strcmp(name, "GL_PRIMARY_COLOR_ARB")) { return GL_PRIMARY_COLOR_ARB; } +#endif +#ifdef GL_PRIMARY_COLOR_EXT if (!strcmp(name, "GL_PRIMARY_COLOR_EXT")) { return GL_PRIMARY_COLOR_EXT; } +#endif +#ifdef GL_PRIMITIVE_RESTART if (!strcmp(name, "GL_PRIMITIVE_RESTART")) { return GL_PRIMITIVE_RESTART; } +#endif +#ifdef GL_PROGRAM_LENGTH_NV if (!strcmp(name, "GL_PROGRAM_LENGTH_NV")) { return GL_PROGRAM_LENGTH_NV; } +#endif +#ifdef GL_PROGRAM_SEPARABLE if (!strcmp(name, "GL_PROGRAM_SEPARABLE")) { return GL_PROGRAM_SEPARABLE; } +#endif +#ifdef GL_PROGRAM_STRING_NV if (!strcmp(name, "GL_PROGRAM_STRING_NV")) { return GL_PROGRAM_STRING_NV; } +#endif +#ifdef GL_PROGRAM_TARGET_NV if (!strcmp(name, "GL_PROGRAM_TARGET_NV")) { return GL_PROGRAM_TARGET_NV; } +#endif +#ifdef GL_PROJECTION_MATRIX if (!strcmp(name, "GL_PROJECTION_MATRIX")) { return GL_PROJECTION_MATRIX; } +#endif +#ifdef GL_PROXY_COLOR_TABLE if (!strcmp(name, "GL_PROXY_COLOR_TABLE")) { return GL_PROXY_COLOR_TABLE; } +#endif +#ifdef GL_R1UI_C4UB_V3F_SUN if (!strcmp(name, "GL_R1UI_C4UB_V3F_SUN")) { return GL_R1UI_C4UB_V3F_SUN; } +#endif +#ifdef GL_REFLECTION_MAP_NV if (!strcmp(name, "GL_REFLECTION_MAP_NV")) { return GL_REFLECTION_MAP_NV; } +#endif +#ifdef GL_REPLACE_VALUE_AMD if (!strcmp(name, "GL_REPLACE_VALUE_AMD")) { return GL_REPLACE_VALUE_AMD; } +#endif +#ifdef GL_RGB16_SIGNED_SGIX if (!strcmp(name, "GL_RGB16_SIGNED_SGIX")) { return GL_RGB16_SIGNED_SGIX; } +#endif +#ifdef GL_RGB_FLOAT16_APPLE if (!strcmp(name, "GL_RGB_FLOAT16_APPLE")) { return GL_RGB_FLOAT16_APPLE; } +#endif +#ifdef GL_RGB_FLOAT32_APPLE if (!strcmp(name, "GL_RGB_FLOAT32_APPLE")) { return GL_RGB_FLOAT32_APPLE; } -if (!strcmp(name, "GL_SAMPLE_MASK_VALUE")) +#endif +#ifdef GL_RGB_RAW_422_APPLE +if (!strcmp(name, "GL_RGB_RAW_422_APPLE")) { - return GL_SAMPLE_MASK_VALUE; + return GL_RGB_RAW_422_APPLE; } +#endif +#ifdef GL_SAMPLER_1D_SHADOW if (!strcmp(name, "GL_SAMPLER_1D_SHADOW")) { return GL_SAMPLER_1D_SHADOW; } +#endif +#ifdef GL_SAMPLER_2D_SHADOW if (!strcmp(name, "GL_SAMPLER_2D_SHADOW")) { return GL_SAMPLER_2D_SHADOW; } +#endif +#ifdef GL_SAMPLE_MASK_VALUE +if (!strcmp(name, "GL_SAMPLE_MASK_VALUE")) +{ + return GL_SAMPLE_MASK_VALUE; +} +#endif +#ifdef GL_SGIS_fog_function if (!strcmp(name, "GL_SGIS_fog_function")) { return GL_SGIS_fog_function; } +#endif +#ifdef GL_SGIX_flush_raster if (!strcmp(name, "GL_SGIX_flush_raster")) { return GL_SGIX_flush_raster; } +#endif +#ifdef GL_SHADER_IMAGE_LOAD if (!strcmp(name, "GL_SHADER_IMAGE_LOAD")) { return GL_SHADER_IMAGE_LOAD; } +#endif +#ifdef GL_SHADER_OBJECT_ARB if (!strcmp(name, "GL_SHADER_OBJECT_ARB")) { return GL_SHADER_OBJECT_ARB; } +#endif +#ifdef GL_SHADER_OBJECT_EXT +if (!strcmp(name, "GL_SHADER_OBJECT_EXT")) +{ + return GL_SHADER_OBJECT_EXT; +} +#endif +#ifdef GL_SIGNED_NORMALIZED +if (!strcmp(name, "GL_SIGNED_NORMALIZED")) +{ + return GL_SIGNED_NORMALIZED; +} +#endif +#ifdef GL_SIGNED_NORMALIZED if (!strcmp(name, "GL_SIGNED_NORMALIZED")) { return GL_SIGNED_NORMALIZED; } +#endif +#ifdef GL_SOURCE0_ALPHA_ARB if (!strcmp(name, "GL_SOURCE0_ALPHA_ARB")) { return GL_SOURCE0_ALPHA_ARB; } +#endif +#ifdef GL_SOURCE0_ALPHA_EXT if (!strcmp(name, "GL_SOURCE0_ALPHA_EXT")) { return GL_SOURCE0_ALPHA_EXT; } +#endif +#ifdef GL_SOURCE1_ALPHA_ARB if (!strcmp(name, "GL_SOURCE1_ALPHA_ARB")) { return GL_SOURCE1_ALPHA_ARB; } +#endif +#ifdef GL_SOURCE1_ALPHA_EXT if (!strcmp(name, "GL_SOURCE1_ALPHA_EXT")) { return GL_SOURCE1_ALPHA_EXT; } +#endif +#ifdef GL_SOURCE2_ALPHA_ARB if (!strcmp(name, "GL_SOURCE2_ALPHA_ARB")) { return GL_SOURCE2_ALPHA_ARB; } +#endif +#ifdef GL_SOURCE2_ALPHA_EXT if (!strcmp(name, "GL_SOURCE2_ALPHA_EXT")) { return GL_SOURCE2_ALPHA_EXT; } +#endif +#ifdef GL_STENCIL_BACK_FAIL if (!strcmp(name, "GL_STENCIL_BACK_FAIL")) { return GL_STENCIL_BACK_FAIL; } +#endif +#ifdef GL_STENCIL_BACK_FUNC if (!strcmp(name, "GL_STENCIL_BACK_FUNC")) { return GL_STENCIL_BACK_FUNC; } +#endif +#ifdef GL_STENCIL_WRITEMASK if (!strcmp(name, "GL_STENCIL_WRITEMASK")) { return GL_STENCIL_WRITEMASK; } +#endif +#ifdef GL_SUN_triangle_list if (!strcmp(name, "GL_SUN_triangle_list")) { return GL_SUN_triangle_list; } +#endif +#ifdef GL_SURFACE_MAPPED_NV if (!strcmp(name, "GL_SURFACE_MAPPED_NV")) { return GL_SURFACE_MAPPED_NV; } +#endif +#ifdef GL_SYNC_CL_EVENT_ARB if (!strcmp(name, "GL_SYNC_CL_EVENT_ARB")) { return GL_SYNC_CL_EVENT_ARB; } +#endif +#ifdef GL_TANGENT_ARRAY_EXT if (!strcmp(name, "GL_TANGENT_ARRAY_EXT")) { return GL_TANGENT_ARRAY_EXT; } +#endif +#ifdef GL_TEXCOORD1_BIT_PGI if (!strcmp(name, "GL_TEXCOORD1_BIT_PGI")) { return GL_TEXCOORD1_BIT_PGI; } +#endif +#ifdef GL_TEXCOORD2_BIT_PGI if (!strcmp(name, "GL_TEXCOORD2_BIT_PGI")) { return GL_TEXCOORD2_BIT_PGI; } +#endif +#ifdef GL_TEXCOORD3_BIT_PGI if (!strcmp(name, "GL_TEXCOORD3_BIT_PGI")) { return GL_TEXCOORD3_BIT_PGI; } +#endif +#ifdef GL_TEXCOORD4_BIT_PGI if (!strcmp(name, "GL_TEXCOORD4_BIT_PGI")) { return GL_TEXCOORD4_BIT_PGI; } +#endif +#ifdef GL_TEXTURE_BLUE_SIZE if (!strcmp(name, "GL_TEXTURE_BLUE_SIZE")) { return GL_TEXTURE_BLUE_SIZE; } +#endif +#ifdef GL_TEXTURE_BLUE_TYPE if (!strcmp(name, "GL_TEXTURE_BLUE_TYPE")) { return GL_TEXTURE_BLUE_TYPE; } +#endif +#ifdef GL_TEXTURE_DEPTH_EXT if (!strcmp(name, "GL_TEXTURE_DEPTH_EXT")) { return GL_TEXTURE_DEPTH_EXT; } +#endif +#ifdef GL_TEXTURE_ENV_COLOR if (!strcmp(name, "GL_TEXTURE_ENV_COLOR")) { return GL_TEXTURE_ENV_COLOR; } +#endif +#ifdef GL_TEXTURE_LIGHT_EXT if (!strcmp(name, "GL_TEXTURE_LIGHT_EXT")) { return GL_TEXTURE_LIGHT_EXT; } +#endif +#ifdef GL_TEXTURE_MAX_LEVEL if (!strcmp(name, "GL_TEXTURE_MAX_LEVEL")) { return GL_TEXTURE_MAX_LEVEL; } +#endif +#ifdef GL_TEXTURE_RECTANGLE if (!strcmp(name, "GL_TEXTURE_RECTANGLE")) { return GL_TEXTURE_RECTANGLE; } +#endif +#ifdef GL_TEXTURE_SHADER_NV if (!strcmp(name, "GL_TEXTURE_SHADER_NV")) { return GL_TEXTURE_SHADER_NV; } +#endif +#ifdef GL_TEXTURE_SWIZZLE_A if (!strcmp(name, "GL_TEXTURE_SWIZZLE_A")) { return GL_TEXTURE_SWIZZLE_A; } +#endif +#ifdef GL_TEXTURE_SWIZZLE_B if (!strcmp(name, "GL_TEXTURE_SWIZZLE_B")) { return GL_TEXTURE_SWIZZLE_B; } +#endif +#ifdef GL_TEXTURE_SWIZZLE_G if (!strcmp(name, "GL_TEXTURE_SWIZZLE_G")) { return GL_TEXTURE_SWIZZLE_G; } +#endif +#ifdef GL_TEXTURE_SWIZZLE_R if (!strcmp(name, "GL_TEXTURE_SWIZZLE_R")) { return GL_TEXTURE_SWIZZLE_R; } +#endif +#ifdef GL_TRIANGLE_LIST_SUN if (!strcmp(name, "GL_TRIANGLE_LIST_SUN")) { return GL_TRIANGLE_LIST_SUN; } +#endif +#ifdef GL_TRIANGLE_MESH_SUN if (!strcmp(name, "GL_TRIANGLE_MESH_SUN")) { return GL_TRIANGLE_MESH_SUN; } +#endif +#ifdef GL_UNPACK_ROW_LENGTH if (!strcmp(name, "GL_UNPACK_ROW_LENGTH")) { return GL_UNPACK_ROW_LENGTH; } +#endif +#ifdef GL_UNPACK_SWAP_BYTES if (!strcmp(name, "GL_UNPACK_SWAP_BYTES")) { return GL_UNPACK_SWAP_BYTES; } +#endif +#ifdef GL_UNSIGNED_INT16_NV if (!strcmp(name, "GL_UNSIGNED_INT16_NV")) { return GL_UNSIGNED_INT16_NV; } -if (!strcmp(name, "GL_UNSIGNED_INT_24_8")) +#endif +#ifdef GL_UNSIGNED_INT64_NV +if (!strcmp(name, "GL_UNSIGNED_INT64_NV")) { - return GL_UNSIGNED_INT_24_8; + return GL_UNSIGNED_INT64_NV; } +#endif +#ifdef GL_UNSIGNED_INT64_NV if (!strcmp(name, "GL_UNSIGNED_INT64_NV")) { return GL_UNSIGNED_INT64_NV; } +#endif +#ifdef GL_UNSIGNED_INT_24_8 +if (!strcmp(name, "GL_UNSIGNED_INT_24_8")) +{ + return GL_UNSIGNED_INT_24_8; +} +#endif +#ifdef GL_UNSIGNED_INT_VEC2 if (!strcmp(name, "GL_UNSIGNED_INT_VEC2")) { return GL_UNSIGNED_INT_VEC2; } +#endif +#ifdef GL_UNSIGNED_INT_VEC3 if (!strcmp(name, "GL_UNSIGNED_INT_VEC3")) { return GL_UNSIGNED_INT_VEC3; } +#endif +#ifdef GL_UNSIGNED_INT_VEC4 if (!strcmp(name, "GL_UNSIGNED_INT_VEC4")) { return GL_UNSIGNED_INT_VEC4; } +#endif +#ifdef GL_VARIANT_ARRAY_EXT if (!strcmp(name, "GL_VARIANT_ARRAY_EXT")) { return GL_VARIANT_ARRAY_EXT; } +#endif +#ifdef GL_VARIANT_VALUE_EXT if (!strcmp(name, "GL_VARIANT_VALUE_EXT")) { return GL_VARIANT_VALUE_EXT; } +#endif +#ifdef GL_VERTEX_ARRAY_SIZE if (!strcmp(name, "GL_VERTEX_ARRAY_SIZE")) { return GL_VERTEX_ARRAY_SIZE; } +#endif +#ifdef GL_VERTEX_ARRAY_TYPE if (!strcmp(name, "GL_VERTEX_ARRAY_TYPE")) { return GL_VERTEX_ARRAY_TYPE; } +#endif +#ifdef GL_VERTEX_PROGRAM_NV if (!strcmp(name, "GL_VERTEX_PROGRAM_NV")) { return GL_VERTEX_PROGRAM_NV; } +#endif +#ifdef GL_VERTEX_SHADER_ARB if (!strcmp(name, "GL_VERTEX_SHADER_ARB")) { return GL_VERTEX_SHADER_ARB; } +#endif +#ifdef GL_VERTEX_SHADER_BIT if (!strcmp(name, "GL_VERTEX_SHADER_BIT")) { return GL_VERTEX_SHADER_BIT; } +#endif +#ifdef GL_VERTEX_SHADER_EXT if (!strcmp(name, "GL_VERTEX_SHADER_EXT")) { return GL_VERTEX_SHADER_EXT; } +#endif +#ifdef GL_VERTEX_SOURCE_ATI if (!strcmp(name, "GL_VERTEX_SOURCE_ATI")) { return GL_VERTEX_SOURCE_ATI; } +#endif +#ifdef GL_VERTEX_SUBROUTINE if (!strcmp(name, "GL_VERTEX_SUBROUTINE")) { return GL_VERTEX_SUBROUTINE; } +#endif +#ifdef GL_VIBRANCE_SCALE_NV if (!strcmp(name, "GL_VIBRANCE_SCALE_NV")) { return GL_VIBRANCE_SCALE_NV; } +#endif +#ifdef GL_VIEW_CLASS_8_BITS if (!strcmp(name, "GL_VIEW_CLASS_8_BITS")) { return GL_VIEW_CLASS_8_BITS; } +#endif +#ifdef GL_WIN_phong_shading if (!strcmp(name, "GL_WIN_phong_shading")) { return GL_WIN_phong_shading; } +#endif +#ifdef GL_YCBAYCR8A_4224_NV if (!strcmp(name, "GL_YCBAYCR8A_4224_NV")) { return GL_YCBAYCR8A_4224_NV; } +#endif return _GL_UNDEFINED; case 21: +#ifdef GL_ACTIVE_PROGRAM_EXT if (!strcmp(name, "GL_ACTIVE_PROGRAM_EXT")) { return GL_ACTIVE_PROGRAM_EXT; } +#endif +#ifdef GL_ACTIVE_SUBROUTINES if (!strcmp(name, "GL_ACTIVE_SUBROUTINES")) { return GL_ACTIVE_SUBROUTINES; } +#endif +#ifdef GL_ACTIVE_TEXTURE_ARB if (!strcmp(name, "GL_ACTIVE_TEXTURE_ARB")) { return GL_ACTIVE_TEXTURE_ARB; } +#endif +#ifdef GL_ACTIVE_VARYINGS_NV if (!strcmp(name, "GL_ACTIVE_VARYINGS_NV")) { return GL_ACTIVE_VARYINGS_NV; } +#endif +#ifdef GL_AMD_sparse_texture if (!strcmp(name, "GL_AMD_sparse_texture")) { return GL_AMD_sparse_texture; } +#endif +#ifdef GL_ANY_SAMPLES_PASSED if (!strcmp(name, "GL_ANY_SAMPLES_PASSED")) { return GL_ANY_SAMPLES_PASSED; } +#endif +#ifdef GL_APPLE_float_pixels if (!strcmp(name, "GL_APPLE_float_pixels")) { return GL_APPLE_float_pixels; } +#endif +#ifdef GL_APPLE_pixel_buffer if (!strcmp(name, "GL_APPLE_pixel_buffer")) { return GL_APPLE_pixel_buffer; } +#endif +#ifdef GL_ARB_buffer_storage if (!strcmp(name, "GL_ARB_buffer_storage")) { return GL_ARB_buffer_storage; } +#endif +#ifdef GL_ARB_compute_shader if (!strcmp(name, "GL_ARB_compute_shader")) { return GL_ARB_compute_shader; } +#endif +#ifdef GL_ARB_draw_instanced if (!strcmp(name, "GL_ARB_draw_instanced")) { return GL_ARB_draw_instanced; } +#endif +#ifdef GL_ARB_matrix_palette if (!strcmp(name, "GL_ARB_matrix_palette")) { return GL_ARB_matrix_palette; } +#endif +#ifdef GL_ARB_sample_shading if (!strcmp(name, "GL_ARB_sample_shading")) { return GL_ARB_sample_shading; } +#endif +#ifdef GL_ARB_shader_objects if (!strcmp(name, "GL_ARB_shader_objects")) { return GL_ARB_shader_objects; } +#endif +#ifdef GL_ARB_shadow_ambient if (!strcmp(name, "GL_ARB_shadow_ambient")) { return GL_ARB_shadow_ambient; } +#endif +#ifdef GL_ARB_sparse_texture if (!strcmp(name, "GL_ARB_sparse_texture")) { return GL_ARB_sparse_texture; } +#endif +#ifdef GL_ARB_texture_gather if (!strcmp(name, "GL_ARB_texture_gather")) { return GL_ARB_texture_gather; } +#endif +#ifdef GL_ARB_vertex_program if (!strcmp(name, "GL_ARB_vertex_program")) { return GL_ARB_vertex_program; } +#endif +#ifdef GL_ARB_viewport_array if (!strcmp(name, "GL_ARB_viewport_array")) { return GL_ARB_viewport_array; } +#endif +#ifdef GL_ATIX_point_sprites +if (!strcmp(name, "GL_ATIX_point_sprites")) +{ + return GL_ATIX_point_sprites; +} +#endif +#ifdef GL_ATI_envmap_bumpmap if (!strcmp(name, "GL_ATI_envmap_bumpmap")) { return GL_ATI_envmap_bumpmap; } +#endif +#ifdef GL_ATI_vertex_streams if (!strcmp(name, "GL_ATI_vertex_streams")) { return GL_ATI_vertex_streams; } -if (!strcmp(name, "GL_ATIX_point_sprites")) -{ - return GL_ATIX_point_sprites; -} +#endif +#ifdef GL_ATTRIB_STACK_DEPTH if (!strcmp(name, "GL_ATTRIB_STACK_DEPTH")) { return GL_ATTRIB_STACK_DEPTH; } +#endif +#ifdef GL_BINORMAL_ARRAY_EXT if (!strcmp(name, "GL_BINORMAL_ARRAY_EXT")) { return GL_BINORMAL_ARRAY_EXT; } +#endif +#ifdef GL_BLEND_EQUATION_EXT if (!strcmp(name, "GL_BLEND_EQUATION_EXT")) { return GL_BLEND_EQUATION_EXT; } +#endif +#ifdef GL_BLEND_EQUATION_RGB if (!strcmp(name, "GL_BLEND_EQUATION_RGB")) { return GL_BLEND_EQUATION_RGB; } +#endif +#ifdef GL_BUFFER_MAP_POINTER if (!strcmp(name, "GL_BUFFER_MAP_POINTER")) { return GL_BUFFER_MAP_POINTER; } +#endif +#ifdef GL_BUMP_TEX_UNITS_ATI if (!strcmp(name, "GL_BUMP_TEX_UNITS_ATI")) { return GL_BUMP_TEX_UNITS_ATI; } +#endif +#ifdef GL_CLAMP_TO_EDGE_SGIS if (!strcmp(name, "GL_CLAMP_TO_EDGE_SGIS")) { return GL_CLAMP_TO_EDGE_SGIS; } +#endif +#ifdef GL_CLAMP_VERTEX_COLOR if (!strcmp(name, "GL_CLAMP_VERTEX_COLOR")) { return GL_CLAMP_VERTEX_COLOR; } +#endif +#ifdef GL_CLIENT_STORAGE_BIT if (!strcmp(name, "GL_CLIENT_STORAGE_BIT")) { return GL_CLIENT_STORAGE_BIT; } +#endif +#ifdef GL_CLIP_NEAR_HINT_PGI if (!strcmp(name, "GL_CLIP_NEAR_HINT_PGI")) { return GL_CLIP_NEAR_HINT_PGI; } +#endif +#ifdef GL_COLOR_ARRAY_STRIDE if (!strcmp(name, "GL_COLOR_ARRAY_STRIDE")) { return GL_COLOR_ARRAY_STRIDE; } +#endif +#ifdef GL_COLOR_ATTACHMENT10 if (!strcmp(name, "GL_COLOR_ATTACHMENT10")) { return GL_COLOR_ATTACHMENT10; } +#endif +#ifdef GL_COLOR_ATTACHMENT11 if (!strcmp(name, "GL_COLOR_ATTACHMENT11")) { return GL_COLOR_ATTACHMENT11; } +#endif +#ifdef GL_COLOR_ATTACHMENT12 if (!strcmp(name, "GL_COLOR_ATTACHMENT12")) { return GL_COLOR_ATTACHMENT12; } +#endif +#ifdef GL_COLOR_ATTACHMENT13 if (!strcmp(name, "GL_COLOR_ATTACHMENT13")) { return GL_COLOR_ATTACHMENT13; } +#endif +#ifdef GL_COLOR_ATTACHMENT14 if (!strcmp(name, "GL_COLOR_ATTACHMENT14")) { return GL_COLOR_ATTACHMENT14; } +#endif +#ifdef GL_COLOR_ATTACHMENT15 if (!strcmp(name, "GL_COLOR_ATTACHMENT15")) { return GL_COLOR_ATTACHMENT15; } +#endif +#ifdef GL_COLOR_SUM_CLAMP_NV if (!strcmp(name, "GL_COLOR_SUM_CLAMP_NV")) { return GL_COLOR_SUM_CLAMP_NV; } +#endif +#ifdef GL_COLOR_TABLE_FORMAT if (!strcmp(name, "GL_COLOR_TABLE_FORMAT")) { return GL_COLOR_TABLE_FORMAT; } +#endif +#ifdef GL_COMPRESSED_R11_EAC if (!strcmp(name, "GL_COMPRESSED_R11_EAC")) { return GL_COMPRESSED_R11_EAC; } +#endif +#ifdef GL_COMPRESSED_RGB_ARB if (!strcmp(name, "GL_COMPRESSED_RGB_ARB")) { return GL_COMPRESSED_RGB_ARB; } +#endif +#ifdef GL_COMPUTE_PROGRAM_NV if (!strcmp(name, "GL_COMPUTE_PROGRAM_NV")) { return GL_COMPUTE_PROGRAM_NV; } +#endif +#ifdef GL_COMPUTE_SHADER_BIT if (!strcmp(name, "GL_COMPUTE_SHADER_BIT")) { return GL_COMPUTE_SHADER_BIT; } +#endif +#ifdef GL_COMPUTE_SUBROUTINE if (!strcmp(name, "GL_COMPUTE_SUBROUTINE")) { return GL_COMPUTE_SUBROUTINE; } +#endif +#ifdef GL_CONSTANT_ALPHA_EXT if (!strcmp(name, "GL_CONSTANT_ALPHA_EXT")) { return GL_CONSTANT_ALPHA_EXT; } +#endif +#ifdef GL_CONSTANT_COLOR0_NV if (!strcmp(name, "GL_CONSTANT_COLOR0_NV")) { return GL_CONSTANT_COLOR0_NV; } +#endif +#ifdef GL_CONSTANT_COLOR1_NV if (!strcmp(name, "GL_CONSTANT_COLOR1_NV")) { return GL_CONSTANT_COLOR1_NV; } +#endif +#ifdef GL_CONSTANT_COLOR_EXT if (!strcmp(name, "GL_CONSTANT_COLOR_EXT")) { return GL_CONSTANT_COLOR_EXT; } +#endif +#ifdef GL_CONVOLUTION_1D_EXT if (!strcmp(name, "GL_CONVOLUTION_1D_EXT")) { return GL_CONVOLUTION_1D_EXT; } +#endif +#ifdef GL_CONVOLUTION_2D_EXT if (!strcmp(name, "GL_CONVOLUTION_2D_EXT")) { return GL_CONVOLUTION_2D_EXT; } +#endif +#ifdef GL_CONVOLUTION_FORMAT if (!strcmp(name, "GL_CONVOLUTION_FORMAT")) { return GL_CONVOLUTION_FORMAT; } +#endif +#ifdef GL_CONVOLUTION_HEIGHT if (!strcmp(name, "GL_CONVOLUTION_HEIGHT")) { return GL_CONVOLUTION_HEIGHT; } +#endif +#ifdef GL_CURRENT_MATRIX_ARB if (!strcmp(name, "GL_CURRENT_MATRIX_ARB")) { return GL_CURRENT_MATRIX_ARB; } +#endif +#ifdef GL_CURRENT_VERTEX_EXT if (!strcmp(name, "GL_CURRENT_VERTEX_EXT")) { return GL_CURRENT_VERTEX_EXT; } +#endif +#ifdef GL_CURRENT_WEIGHT_ARB if (!strcmp(name, "GL_CURRENT_WEIGHT_ARB")) { return GL_CURRENT_WEIGHT_ARB; } +#endif +#ifdef GL_DEBUG_SEVERITY_LOW if (!strcmp(name, "GL_DEBUG_SEVERITY_LOW")) { return GL_DEBUG_SEVERITY_LOW; } +#endif +#ifdef GL_DEBUG_SOURCE_OTHER if (!strcmp(name, "GL_DEBUG_SOURCE_OTHER")) { return GL_DEBUG_SOURCE_OTHER; } +#endif +#ifdef GL_DEPTH_COMPONENT32F if (!strcmp(name, "GL_DEPTH_COMPONENT32F")) { return GL_DEPTH_COMPONENT32F; } +#endif +#ifdef GL_DEPTH_TEXTURE_MODE if (!strcmp(name, "GL_DEPTH_TEXTURE_MODE")) { return GL_DEPTH_TEXTURE_MODE; } +#endif +#ifdef GL_EMBOSS_CONSTANT_NV if (!strcmp(name, "GL_EMBOSS_CONSTANT_NV")) { return GL_EMBOSS_CONSTANT_NV; } +#endif +#ifdef GL_EXT_blend_logic_op if (!strcmp(name, "GL_EXT_blend_logic_op")) { return GL_EXT_blend_logic_op; } +#endif +#ifdef GL_EXT_blend_subtract if (!strcmp(name, "GL_EXT_blend_subtract")) { return GL_EXT_blend_subtract; } +#endif +#ifdef GL_EXT_color_subtable if (!strcmp(name, "GL_EXT_color_subtable")) { return GL_EXT_color_subtable; } +#endif +#ifdef GL_EXT_draw_instanced if (!strcmp(name, "GL_EXT_draw_instanced")) { return GL_EXT_draw_instanced; } +#endif +#ifdef GL_EXT_index_material if (!strcmp(name, "GL_EXT_index_material")) { return GL_EXT_index_material; } +#endif +#ifdef GL_EXT_misc_attribute if (!strcmp(name, "GL_EXT_misc_attribute")) { return GL_EXT_misc_attribute; } +#endif +#ifdef GL_EXT_polygon_offset if (!strcmp(name, "GL_EXT_polygon_offset")) { return GL_EXT_polygon_offset; } +#endif +#ifdef GL_EXT_rescale_normal if (!strcmp(name, "GL_EXT_rescale_normal")) { return GL_EXT_rescale_normal; } +#endif +#ifdef GL_EXT_texture_object if (!strcmp(name, "GL_EXT_texture_object")) { return GL_EXT_texture_object; } +#endif +#ifdef GL_FENCE_CONDITION_NV if (!strcmp(name, "GL_FENCE_CONDITION_NV")) { return GL_FENCE_CONDITION_NV; } +#endif +#ifdef GL_FLOAT_RGBA_MODE_NV if (!strcmp(name, "GL_FLOAT_RGBA_MODE_NV")) { return GL_FLOAT_RGBA_MODE_NV; } +#endif +#ifdef GL_FOG_COORDINATE_EXT if (!strcmp(name, "GL_FOG_COORDINATE_EXT")) { return GL_FOG_COORDINATE_EXT; } +#endif +#ifdef GL_FONT_HEIGHT_BIT_NV if (!strcmp(name, "GL_FONT_HEIGHT_BIT_NV")) { return GL_FONT_HEIGHT_BIT_NV; } +#endif +#ifdef GL_FRAGMENT_COLOR_EXT if (!strcmp(name, "GL_FRAGMENT_COLOR_EXT")) { return GL_FRAGMENT_COLOR_EXT; } +#endif +#ifdef GL_FRAGMENT_DEPTH_EXT if (!strcmp(name, "GL_FRAGMENT_DEPTH_EXT")) { return GL_FRAGMENT_DEPTH_EXT; } +#endif +#ifdef GL_GLYPH_WIDTH_BIT_NV if (!strcmp(name, "GL_GLYPH_WIDTH_BIT_NV")) { return GL_GLYPH_WIDTH_BIT_NV; } +#endif +#ifdef GL_HISTOGRAM_RED_SIZE if (!strcmp(name, "GL_HISTOGRAM_RED_SIZE")) { return GL_HISTOGRAM_RED_SIZE; } +#endif +#ifdef GL_HISTOGRAM_SINK_EXT if (!strcmp(name, "GL_HISTOGRAM_SINK_EXT")) { return GL_HISTOGRAM_SINK_EXT; } +#endif +#ifdef GL_HP_image_transform if (!strcmp(name, "GL_HP_image_transform")) { return GL_HP_image_transform; } +#endif +#ifdef GL_HSL_LUMINOSITY_KHR +if (!strcmp(name, "GL_HSL_LUMINOSITY_KHR")) +{ + return GL_HSL_LUMINOSITY_KHR; +} +#endif +#ifdef GL_HSL_SATURATION_KHR +if (!strcmp(name, "GL_HSL_SATURATION_KHR")) +{ + return GL_HSL_SATURATION_KHR; +} +#endif +#ifdef GL_IBM_rasterpos_clip if (!strcmp(name, "GL_IBM_rasterpos_clip")) { return GL_IBM_rasterpos_clip; } +#endif +#ifdef GL_IMAGE_1D_ARRAY_EXT if (!strcmp(name, "GL_IMAGE_1D_ARRAY_EXT")) { return GL_IMAGE_1D_ARRAY_EXT; } +#endif +#ifdef GL_IMAGE_2D_ARRAY_EXT if (!strcmp(name, "GL_IMAGE_2D_ARRAY_EXT")) { return GL_IMAGE_2D_ARRAY_EXT; } +#endif +#ifdef GL_IMAGE_BINDING_NAME if (!strcmp(name, "GL_IMAGE_BINDING_NAME")) { return GL_IMAGE_BINDING_NAME; } +#endif +#ifdef GL_IMAGE_CLASS_1_X_16 if (!strcmp(name, "GL_IMAGE_CLASS_1_X_16")) { return GL_IMAGE_CLASS_1_X_16; } +#endif +#ifdef GL_IMAGE_CLASS_1_X_32 if (!strcmp(name, "GL_IMAGE_CLASS_1_X_32")) { return GL_IMAGE_CLASS_1_X_32; } +#endif +#ifdef GL_IMAGE_CLASS_2_X_16 if (!strcmp(name, "GL_IMAGE_CLASS_2_X_16")) { return GL_IMAGE_CLASS_2_X_16; } +#endif +#ifdef GL_IMAGE_CLASS_2_X_32 if (!strcmp(name, "GL_IMAGE_CLASS_2_X_32")) { return GL_IMAGE_CLASS_2_X_32; } +#endif +#ifdef GL_IMAGE_CLASS_4_X_16 if (!strcmp(name, "GL_IMAGE_CLASS_4_X_16")) { return GL_IMAGE_CLASS_4_X_16; } +#endif +#ifdef GL_IMAGE_CLASS_4_X_32 if (!strcmp(name, "GL_IMAGE_CLASS_4_X_32")) { return GL_IMAGE_CLASS_4_X_32; } +#endif +#ifdef GL_IMAGE_PIXEL_FORMAT if (!strcmp(name, "GL_IMAGE_PIXEL_FORMAT")) { return GL_IMAGE_PIXEL_FORMAT; } +#endif +#ifdef GL_INDEX_ARRAY_STRIDE if (!strcmp(name, "GL_INDEX_ARRAY_STRIDE")) { return GL_INDEX_ARRAY_STRIDE; } -if (!strcmp(name, "GL_INT_2_10_10_10_REV")) -{ - return GL_INT_2_10_10_10_REV; -} +#endif +#ifdef GL_INTERLACE_READ_OML if (!strcmp(name, "GL_INTERLACE_READ_OML")) { return GL_INTERLACE_READ_OML; } +#endif +#ifdef GL_INT_2_10_10_10_REV +if (!strcmp(name, "GL_INT_2_10_10_10_REV")) +{ + return GL_INT_2_10_10_10_REV; +} +#endif +#ifdef GL_INT_IMAGE_1D_ARRAY if (!strcmp(name, "GL_INT_IMAGE_1D_ARRAY")) { return GL_INT_IMAGE_1D_ARRAY; } +#endif +#ifdef GL_INT_IMAGE_2D_ARRAY if (!strcmp(name, "GL_INT_IMAGE_2D_ARRAY")) { return GL_INT_IMAGE_2D_ARRAY; } +#endif +#ifdef GL_INT_IMAGE_CUBE_EXT if (!strcmp(name, "GL_INT_IMAGE_CUBE_EXT")) { return GL_INT_IMAGE_CUBE_EXT; } +#endif +#ifdef GL_INT_SAMPLER_1D_EXT if (!strcmp(name, "GL_INT_SAMPLER_1D_EXT")) { return GL_INT_SAMPLER_1D_EXT; } +#endif +#ifdef GL_INT_SAMPLER_2D_EXT if (!strcmp(name, "GL_INT_SAMPLER_2D_EXT")) { return GL_INT_SAMPLER_2D_EXT; } +#endif +#ifdef GL_INT_SAMPLER_3D_EXT if (!strcmp(name, "GL_INT_SAMPLER_3D_EXT")) { return GL_INT_SAMPLER_3D_EXT; } +#endif +#ifdef GL_INT_SAMPLER_BUFFER if (!strcmp(name, "GL_INT_SAMPLER_BUFFER")) { return GL_INT_SAMPLER_BUFFER; } +#endif +#ifdef GL_KTX_STENCIL_REGION if (!strcmp(name, "GL_KTX_STENCIL_REGION")) { return GL_KTX_STENCIL_REGION; } +#endif +#ifdef GL_LARGE_CW_ARC_TO_NV if (!strcmp(name, "GL_LARGE_CW_ARC_TO_NV")) { return GL_LARGE_CW_ARC_TO_NV; } +#endif +#ifdef GL_LIGHT_ENV_MODE_EXT if (!strcmp(name, "GL_LIGHT_ENV_MODE_EXT")) { return GL_LIGHT_ENV_MODE_EXT; } +#endif +#ifdef GL_LINEAR_ATTENUATION if (!strcmp(name, "GL_LINEAR_ATTENUATION")) { return GL_LINEAR_ATTENUATION; } +#endif +#ifdef GL_LOCAL_CONSTANT_EXT if (!strcmp(name, "GL_LOCAL_CONSTANT_EXT")) { return GL_LOCAL_CONSTANT_EXT; } +#endif +#ifdef GL_LOCATION_COMPONENT if (!strcmp(name, "GL_LOCATION_COMPONENT")) { return GL_LOCATION_COMPONENT; } +#endif +#ifdef GL_LOG_INTERNAL_REGAL if (!strcmp(name, "GL_LOG_INTERNAL_REGAL")) { return GL_LOG_INTERNAL_REGAL; } +#endif +#ifdef GL_LUMINANCE12_ALPHA4 if (!strcmp(name, "GL_LUMINANCE12_ALPHA4")) { return GL_LUMINANCE12_ALPHA4; } +#endif +#ifdef GL_MAGNITUDE_SCALE_NV if (!strcmp(name, "GL_MAGNITUDE_SCALE_NV")) { return GL_MAGNITUDE_SCALE_NV; } +#endif +#ifdef GL_MAP1_GRID_SEGMENTS if (!strcmp(name, "GL_MAP1_GRID_SEGMENTS")) { return GL_MAP1_GRID_SEGMENTS; } +#endif +#ifdef GL_MAP2_GRID_SEGMENTS if (!strcmp(name, "GL_MAP2_GRID_SEGMENTS")) { return GL_MAP2_GRID_SEGMENTS; } +#endif +#ifdef GL_MAP_PERSISTENT_BIT if (!strcmp(name, "GL_MAP_PERSISTENT_BIT")) { return GL_MAP_PERSISTENT_BIT; } +#endif +#ifdef GL_MATRIX_PALETTE_ARB if (!strcmp(name, "GL_MATRIX_PALETTE_ARB")) { return GL_MATRIX_PALETTE_ARB; } +#endif +#ifdef GL_MAX_CLIP_DISTANCES if (!strcmp(name, "GL_MAX_CLIP_DISTANCES")) { return GL_MAX_CLIP_DISTANCES; } +#endif +#ifdef GL_MAX_CULL_DISTANCES +if (!strcmp(name, "GL_MAX_CULL_DISTANCES")) +{ + return GL_MAX_CULL_DISTANCES; +} +#endif +#ifdef GL_MAX_INTENSITY_SGIS if (!strcmp(name, "GL_MAX_INTENSITY_SGIS")) { return GL_MAX_INTENSITY_SGIS; } +#endif +#ifdef GL_MAX_LUMINANCE_SGIS if (!strcmp(name, "GL_MAX_LUMINANCE_SGIS")) { return GL_MAX_LUMINANCE_SGIS; } +#endif +#ifdef GL_MAX_PATCH_VERTICES if (!strcmp(name, "GL_MAX_PATCH_VERTICES")) { return GL_MAX_PATCH_VERTICES; } +#endif +#ifdef GL_MAX_TESS_GEN_LEVEL if (!strcmp(name, "GL_MAX_TESS_GEN_LEVEL")) { return GL_MAX_TESS_GEN_LEVEL; } +#endif +#ifdef GL_MAX_TEXTURE_COORDS if (!strcmp(name, "GL_MAX_TEXTURE_COORDS")) { return GL_MAX_TEXTURE_COORDS; } +#endif +#ifdef GL_MAX_VARYING_FLOATS if (!strcmp(name, "GL_MAX_VARYING_FLOATS")) { return GL_MAX_VARYING_FLOATS; } +#endif +#ifdef GL_MAX_VERTEX_ATTRIBS if (!strcmp(name, "GL_MAX_VERTEX_ATTRIBS")) { return GL_MAX_VERTEX_ATTRIBS; } +#endif +#ifdef GL_MAX_VERTEX_STREAMS if (!strcmp(name, "GL_MAX_VERTEX_STREAMS")) { return GL_MAX_VERTEX_STREAMS; } -if (!strcmp(name, "GL_MESA_ycbcr_texture")) +#endif +#ifdef GL_MAX_VERTEX_STREAMS +if (!strcmp(name, "GL_MAX_VERTEX_STREAMS")) { - return GL_MESA_ycbcr_texture; + return GL_MAX_VERTEX_STREAMS; } +#endif +#ifdef GL_MIN_INTENSITY_SGIS if (!strcmp(name, "GL_MIN_INTENSITY_SGIS")) { return GL_MIN_INTENSITY_SGIS; } +#endif +#ifdef GL_MIN_LUMINANCE_SGIS if (!strcmp(name, "GL_MIN_LUMINANCE_SGIS")) { return GL_MIN_LUMINANCE_SGIS; } +#endif +#ifdef GL_NV_occlusion_query if (!strcmp(name, "GL_NV_occlusion_query")) { return GL_NV_occlusion_query; } +#endif +#ifdef GL_NV_texture_barrier if (!strcmp(name, "GL_NV_texture_barrier")) { return GL_NV_texture_barrier; } +#endif +#ifdef GL_NV_texture_shader2 if (!strcmp(name, "GL_NV_texture_shader2")) { return GL_NV_texture_shader2; } +#endif +#ifdef GL_NV_texture_shader3 if (!strcmp(name, "GL_NV_texture_shader3")) { return GL_NV_texture_shader3; } +#endif +#ifdef GL_NV_vertex_program2 if (!strcmp(name, "GL_NV_vertex_program2")) { return GL_NV_vertex_program2; } +#endif +#ifdef GL_NV_vertex_program3 if (!strcmp(name, "GL_NV_vertex_program3")) { return GL_NV_vertex_program3; } +#endif +#ifdef GL_NV_vertex_program4 if (!strcmp(name, "GL_NV_vertex_program4")) { return GL_NV_vertex_program4; } +#endif +#ifdef GL_NV_viewport_array2 +if (!strcmp(name, "GL_NV_viewport_array2")) +{ + return GL_NV_viewport_array2; +} +#endif +#ifdef GL_OBJECT_SUBTYPE_ARB if (!strcmp(name, "GL_OBJECT_SUBTYPE_ARB")) { return GL_OBJECT_SUBTYPE_ARB; } +#endif +#ifdef GL_OPERAND0_ALPHA_ARB if (!strcmp(name, "GL_OPERAND0_ALPHA_ARB")) { return GL_OPERAND0_ALPHA_ARB; } +#endif +#ifdef GL_OPERAND0_ALPHA_EXT if (!strcmp(name, "GL_OPERAND0_ALPHA_EXT")) { return GL_OPERAND0_ALPHA_EXT; } +#endif +#ifdef GL_OPERAND1_ALPHA_ARB if (!strcmp(name, "GL_OPERAND1_ALPHA_ARB")) { return GL_OPERAND1_ALPHA_ARB; } +#endif +#ifdef GL_OPERAND1_ALPHA_EXT if (!strcmp(name, "GL_OPERAND1_ALPHA_EXT")) { return GL_OPERAND1_ALPHA_EXT; } +#endif +#ifdef GL_OPERAND2_ALPHA_ARB if (!strcmp(name, "GL_OPERAND2_ALPHA_ARB")) { return GL_OPERAND2_ALPHA_ARB; } +#endif +#ifdef GL_OPERAND2_ALPHA_EXT if (!strcmp(name, "GL_OPERAND2_ALPHA_EXT")) { return GL_OPERAND2_ALPHA_EXT; } +#endif +#ifdef GL_PACK_CMYK_HINT_EXT if (!strcmp(name, "GL_PACK_CMYK_HINT_EXT")) { return GL_PACK_CMYK_HINT_EXT; } +#endif +#ifdef GL_PACK_RESAMPLE_SGIX if (!strcmp(name, "GL_PACK_RESAMPLE_SGIX")) { return GL_PACK_RESAMPLE_SGIX; } +#endif +#ifdef GL_PALETTE4_RGBA4_OES if (!strcmp(name, "GL_PALETTE4_RGBA4_OES")) { return GL_PALETTE4_RGBA4_OES; } +#endif +#ifdef GL_PALETTE4_RGBA8_OES if (!strcmp(name, "GL_PALETTE4_RGBA8_OES")) { return GL_PALETTE4_RGBA8_OES; } +#endif +#ifdef GL_PALETTE8_RGBA4_OES if (!strcmp(name, "GL_PALETTE8_RGBA4_OES")) { return GL_PALETTE8_RGBA4_OES; } +#endif +#ifdef GL_PALETTE8_RGBA8_OES if (!strcmp(name, "GL_PALETTE8_RGBA8_OES")) { return GL_PALETTE8_RGBA8_OES; } +#endif +#ifdef GL_PARTIAL_SUCCESS_NV if (!strcmp(name, "GL_PARTIAL_SUCCESS_NV")) { return GL_PARTIAL_SUCCESS_NV; } +#endif +#ifdef GL_PASS_THROUGH_TOKEN if (!strcmp(name, "GL_PASS_THROUGH_TOKEN")) { return GL_PASS_THROUGH_TOKEN; } +#endif +#ifdef GL_PATH_FORMAT_SVG_NV if (!strcmp(name, "GL_PATH_FORMAT_SVG_NV")) { return GL_PATH_FORMAT_SVG_NV; } +#endif +#ifdef GL_PATH_JOIN_STYLE_NV if (!strcmp(name, "GL_PATH_JOIN_STYLE_NV")) { return GL_PATH_JOIN_STYLE_NV; } +#endif +#ifdef GL_PERFMON_RESULT_AMD if (!strcmp(name, "GL_PERFMON_RESULT_AMD")) { return GL_PERFMON_RESULT_AMD; } +#endif +#ifdef GL_POINT_SIZE_MAX_ARB if (!strcmp(name, "GL_POINT_SIZE_MAX_ARB")) { return GL_POINT_SIZE_MAX_ARB; } +#endif +#ifdef GL_POINT_SIZE_MAX_EXT if (!strcmp(name, "GL_POINT_SIZE_MAX_EXT")) { return GL_POINT_SIZE_MAX_EXT; } +#endif +#ifdef GL_POINT_SIZE_MIN_ARB if (!strcmp(name, "GL_POINT_SIZE_MIN_ARB")) { return GL_POINT_SIZE_MIN_ARB; } +#endif +#ifdef GL_POINT_SIZE_MIN_EXT if (!strcmp(name, "GL_POINT_SIZE_MIN_EXT")) { return GL_POINT_SIZE_MIN_EXT; } +#endif +#ifdef GL_POLYGON_OFFSET_EXT if (!strcmp(name, "GL_POLYGON_OFFSET_EXT")) { return GL_POLYGON_OFFSET_EXT; } +#endif +#ifdef GL_PROGRAM_FORMAT_ARB if (!strcmp(name, "GL_PROGRAM_FORMAT_ARB")) { return GL_PROGRAM_FORMAT_ARB; } +#endif +#ifdef GL_PROGRAM_LENGTH_ARB if (!strcmp(name, "GL_PROGRAM_LENGTH_ARB")) { return GL_PROGRAM_LENGTH_ARB; } +#endif +#ifdef GL_PROGRAM_MATRIX_EXT if (!strcmp(name, "GL_PROGRAM_MATRIX_EXT")) { return GL_PROGRAM_MATRIX_EXT; } +#endif +#ifdef GL_PROGRAM_OBJECT_ARB if (!strcmp(name, "GL_PROGRAM_OBJECT_ARB")) { return GL_PROGRAM_OBJECT_ARB; } +#endif +#ifdef GL_PROGRAM_OBJECT_EXT +if (!strcmp(name, "GL_PROGRAM_OBJECT_EXT")) +{ + return GL_PROGRAM_OBJECT_EXT; +} +#endif +#ifdef GL_PROGRAM_POINT_SIZE if (!strcmp(name, "GL_PROGRAM_POINT_SIZE")) { return GL_PROGRAM_POINT_SIZE; } +#endif +#ifdef GL_PROGRAM_STRING_ARB if (!strcmp(name, "GL_PROGRAM_STRING_ARB")) { return GL_PROGRAM_STRING_ARB; } +#endif +#ifdef GL_QUERY_COUNTER_BITS if (!strcmp(name, "GL_QUERY_COUNTER_BITS")) { return GL_QUERY_COUNTER_BITS; } +#endif +#ifdef GL_QUERY_RESULT_ANGLE if (!strcmp(name, "GL_QUERY_RESULT_ANGLE")) { return GL_QUERY_RESULT_ANGLE; } +#endif +#ifdef GL_R11F_G11F_B10F_EXT if (!strcmp(name, "GL_R11F_G11F_B10F_EXT")) { return GL_R11F_G11F_B10F_EXT; } +#endif +#ifdef GL_RASTERIZER_DISCARD if (!strcmp(name, "GL_RASTERIZER_DISCARD")) { return GL_RASTERIZER_DISCARD; } +#endif +#ifdef GL_RASTER_SAMPLES_EXT +if (!strcmp(name, "GL_RASTER_SAMPLES_EXT")) +{ + return GL_RASTER_SAMPLES_EXT; +} +#endif +#ifdef GL_RASTER_SAMPLES_EXT +if (!strcmp(name, "GL_RASTER_SAMPLES_EXT")) +{ + return GL_RASTER_SAMPLES_EXT; +} +#endif +#ifdef GL_READ_PIXELS_FORMAT if (!strcmp(name, "GL_READ_PIXELS_FORMAT")) { return GL_READ_PIXELS_FORMAT; } +#endif +#ifdef GL_RED_MAX_CLAMP_INGR if (!strcmp(name, "GL_RED_MAX_CLAMP_INGR")) { return GL_RED_MAX_CLAMP_INGR; } +#endif +#ifdef GL_RED_MIN_CLAMP_INGR if (!strcmp(name, "GL_RED_MIN_CLAMP_INGR")) { return GL_RED_MIN_CLAMP_INGR; } +#endif +#ifdef GL_REFLECTION_MAP_ARB if (!strcmp(name, "GL_REFLECTION_MAP_ARB")) { return GL_REFLECTION_MAP_ARB; } +#endif +#ifdef GL_REFLECTION_MAP_EXT if (!strcmp(name, "GL_REFLECTION_MAP_EXT")) { return GL_REFLECTION_MAP_EXT; } +#endif +#ifdef GL_REGAL_error_string if (!strcmp(name, "GL_REGAL_error_string")) { return GL_REGAL_error_string; } +#endif +#ifdef GL_REGAL_proc_address +if (!strcmp(name, "GL_REGAL_proc_address")) +{ + return GL_REGAL_proc_address; +} +#endif +#ifdef GL_RELATIVE_ARC_TO_NV if (!strcmp(name, "GL_RELATIVE_ARC_TO_NV")) { return GL_RELATIVE_ARC_TO_NV; } +#endif +#ifdef GL_RENDERBUFFER_WIDTH if (!strcmp(name, "GL_RENDERBUFFER_WIDTH")) { return GL_RENDERBUFFER_WIDTH; } +#endif +#ifdef GL_REPLACE_MIDDLE_SUN if (!strcmp(name, "GL_REPLACE_MIDDLE_SUN")) { return GL_REPLACE_MIDDLE_SUN; } +#endif +#ifdef GL_REPLACE_OLDEST_SUN if (!strcmp(name, "GL_REPLACE_OLDEST_SUN")) { return GL_REPLACE_OLDEST_SUN; } +#endif +#ifdef GL_RESCALE_NORMAL_EXT if (!strcmp(name, "GL_RESCALE_NORMAL_EXT")) { return GL_RESCALE_NORMAL_EXT; } +#endif +#ifdef GL_RGBA16_SIGNED_SGIX if (!strcmp(name, "GL_RGBA16_SIGNED_SGIX")) { return GL_RGBA16_SIGNED_SGIX; } +#endif +#ifdef GL_RGBA_FLOAT16_APPLE if (!strcmp(name, "GL_RGBA_FLOAT16_APPLE")) { return GL_RGBA_FLOAT16_APPLE; } +#endif +#ifdef GL_RGBA_FLOAT32_APPLE if (!strcmp(name, "GL_RGBA_FLOAT32_APPLE")) { return GL_RGBA_FLOAT32_APPLE; } +#endif +#ifdef GL_SAMPLER_BUFFER_AMD +if (!strcmp(name, "GL_SAMPLER_BUFFER_AMD")) +{ + return GL_SAMPLER_BUFFER_AMD; +} +#endif +#ifdef GL_SAMPLER_BUFFER_EXT +if (!strcmp(name, "GL_SAMPLER_BUFFER_EXT")) +{ + return GL_SAMPLER_BUFFER_EXT; +} +#endif +#ifdef GL_SAMPLER_OBJECT_AMD +if (!strcmp(name, "GL_SAMPLER_OBJECT_AMD")) +{ + return GL_SAMPLER_OBJECT_AMD; +} +#endif +#ifdef GL_SAMPLES_PASSED_ARB +if (!strcmp(name, "GL_SAMPLES_PASSED_ARB")) +{ + return GL_SAMPLES_PASSED_ARB; +} +#endif +#ifdef GL_SAMPLE_BUFFERS_ARB if (!strcmp(name, "GL_SAMPLE_BUFFERS_ARB")) { return GL_SAMPLE_BUFFERS_ARB; } +#endif +#ifdef GL_SAMPLE_BUFFERS_EXT if (!strcmp(name, "GL_SAMPLE_BUFFERS_EXT")) { return GL_SAMPLE_BUFFERS_EXT; } +#endif +#ifdef GL_SAMPLE_LOCATION_NV +if (!strcmp(name, "GL_SAMPLE_LOCATION_NV")) +{ + return GL_SAMPLE_LOCATION_NV; +} +#endif +#ifdef GL_SAMPLE_PATTERN_EXT if (!strcmp(name, "GL_SAMPLE_PATTERN_EXT")) { return GL_SAMPLE_PATTERN_EXT; } +#endif +#ifdef GL_SAMPLE_POSITION_NV if (!strcmp(name, "GL_SAMPLE_POSITION_NV")) { return GL_SAMPLE_POSITION_NV; } -if (!strcmp(name, "GL_SAMPLER_BUFFER_AMD")) -{ - return GL_SAMPLER_BUFFER_AMD; -} -if (!strcmp(name, "GL_SAMPLER_BUFFER_EXT")) -{ - return GL_SAMPLER_BUFFER_EXT; -} -if (!strcmp(name, "GL_SAMPLER_OBJECT_AMD")) -{ - return GL_SAMPLER_OBJECT_AMD; -} +#endif +#ifdef GL_SAMPLE_SHADING_ARB if (!strcmp(name, "GL_SAMPLE_SHADING_ARB")) { return GL_SAMPLE_SHADING_ARB; } -if (!strcmp(name, "GL_SAMPLES_PASSED_ARB")) +#endif +#ifdef GL_SECONDARY_COLOR_NV +if (!strcmp(name, "GL_SECONDARY_COLOR_NV")) { - return GL_SAMPLES_PASSED_ARB; + return GL_SECONDARY_COLOR_NV; } +#endif +#ifdef GL_SECONDARY_COLOR_NV if (!strcmp(name, "GL_SECONDARY_COLOR_NV")) { return GL_SECONDARY_COLOR_NV; } +#endif +#ifdef GL_SGIS_pixel_texture if (!strcmp(name, "GL_SGIS_pixel_texture")) { return GL_SGIS_pixel_texture; } +#endif +#ifdef GL_SGIX_depth_texture if (!strcmp(name, "GL_SGIX_depth_texture")) { return GL_SGIX_depth_texture; } +#endif +#ifdef GL_SGIX_list_priority if (!strcmp(name, "GL_SGIX_list_priority")) { return GL_SGIX_list_priority; } +#endif +#ifdef GL_SGIX_pixel_texture if (!strcmp(name, "GL_SGIX_pixel_texture")) { return GL_SGIX_pixel_texture; } +#endif +#ifdef GL_SGIX_texture_range if (!strcmp(name, "GL_SGIX_texture_range")) { return GL_SGIX_texture_range; } +#endif +#ifdef GL_SHADER_IMAGE_STORE if (!strcmp(name, "GL_SHADER_IMAGE_STORE")) { return GL_SHADER_IMAGE_STORE; } +#endif +#ifdef GL_SHADER_INCLUDE_ARB if (!strcmp(name, "GL_SHADER_INCLUDE_ARB")) { return GL_SHADER_INCLUDE_ARB; } +#endif +#ifdef GL_SIGNED_IDENTITY_NV if (!strcmp(name, "GL_SIGNED_IDENTITY_NV")) { return GL_SIGNED_IDENTITY_NV; } +#endif +#ifdef GL_SLUMINANCE8_ALPHA8 if (!strcmp(name, "GL_SLUMINANCE8_ALPHA8")) { return GL_SLUMINANCE8_ALPHA8; } +#endif +#ifdef GL_SMALL_CW_ARC_TO_NV if (!strcmp(name, "GL_SMALL_CW_ARC_TO_NV")) { return GL_SMALL_CW_ARC_TO_NV; } +#endif +#ifdef GL_SRC_ALPHA_SATURATE if (!strcmp(name, "GL_SRC_ALPHA_SATURATE")) { return GL_SRC_ALPHA_SATURATE; } +#endif +#ifdef GL_STENCIL_ATTACHMENT if (!strcmp(name, "GL_STENCIL_ATTACHMENT")) { return GL_STENCIL_ATTACHMENT; } +#endif +#ifdef GL_STENCIL_BUFFER_BIT if (!strcmp(name, "GL_STENCIL_BUFFER_BIT")) { return GL_STENCIL_BUFFER_BIT; } +#endif +#ifdef GL_STENCIL_COMPONENTS if (!strcmp(name, "GL_STENCIL_COMPONENTS")) { return GL_STENCIL_COMPONENTS; } +#endif +#ifdef GL_STENCIL_INDEX1_EXT if (!strcmp(name, "GL_STENCIL_INDEX1_EXT")) { return GL_STENCIL_INDEX1_EXT; } +#endif +#ifdef GL_STENCIL_INDEX4_EXT if (!strcmp(name, "GL_STENCIL_INDEX4_EXT")) { return GL_STENCIL_INDEX4_EXT; } +#endif +#ifdef GL_STENCIL_INDEX8_EXT if (!strcmp(name, "GL_STENCIL_INDEX8_EXT")) { return GL_STENCIL_INDEX8_EXT; } +#endif +#ifdef GL_STENCIL_RENDERABLE if (!strcmp(name, "GL_STENCIL_RENDERABLE")) { return GL_STENCIL_RENDERABLE; } +#endif +#ifdef GL_STENCIL_SAMPLES_NV +if (!strcmp(name, "GL_STENCIL_SAMPLES_NV")) +{ + return GL_STENCIL_SAMPLES_NV; +} +#endif +#ifdef GL_STENCIL_SAMPLES_NV +if (!strcmp(name, "GL_STENCIL_SAMPLES_NV")) +{ + return GL_STENCIL_SAMPLES_NV; +} +#endif +#ifdef GL_STENCIL_VALUE_MASK if (!strcmp(name, "GL_STENCIL_VALUE_MASK")) { return GL_STENCIL_VALUE_MASK; } +#endif +#ifdef GL_SUNX_constant_data if (!strcmp(name, "GL_SUNX_constant_data")) { return GL_SUNX_constant_data; } +#endif +#ifdef GL_SWIZZLE_STQ_DQ_ATI if (!strcmp(name, "GL_SWIZZLE_STQ_DQ_ATI")) { return GL_SWIZZLE_STQ_DQ_ATI; } +#endif +#ifdef GL_SWIZZLE_STR_DR_ATI if (!strcmp(name, "GL_SWIZZLE_STR_DR_ATI")) { return GL_SWIZZLE_STR_DR_ATI; } +#endif +#ifdef GL_SYNC_X11_FENCE_EXT if (!strcmp(name, "GL_SYNC_X11_FENCE_EXT")) { return GL_SYNC_X11_FENCE_EXT; } +#endif +#ifdef GL_TEXTURE_ALPHA_SIZE if (!strcmp(name, "GL_TEXTURE_ALPHA_SIZE")) { return GL_TEXTURE_ALPHA_SIZE; } +#endif +#ifdef GL_TEXTURE_ALPHA_TYPE if (!strcmp(name, "GL_TEXTURE_ALPHA_TYPE")) { return GL_TEXTURE_ALPHA_TYPE; } +#endif +#ifdef GL_TEXTURE_BASE_LEVEL if (!strcmp(name, "GL_TEXTURE_BASE_LEVEL")) { return GL_TEXTURE_BASE_LEVEL; } +#endif +#ifdef GL_TEXTURE_BINDING_1D if (!strcmp(name, "GL_TEXTURE_BINDING_1D")) { return GL_TEXTURE_BINDING_1D; } +#endif +#ifdef GL_TEXTURE_BINDING_2D if (!strcmp(name, "GL_TEXTURE_BINDING_2D")) { return GL_TEXTURE_BINDING_2D; } +#endif +#ifdef GL_TEXTURE_BINDING_3D if (!strcmp(name, "GL_TEXTURE_BINDING_3D")) { return GL_TEXTURE_BINDING_3D; } +#endif +#ifdef GL_TEXTURE_BUFFER_ARB if (!strcmp(name, "GL_TEXTURE_BUFFER_ARB")) { return GL_TEXTURE_BUFFER_ARB; } +#endif +#ifdef GL_TEXTURE_BUFFER_EXT if (!strcmp(name, "GL_TEXTURE_BUFFER_EXT")) { return GL_TEXTURE_BUFFER_EXT; } +#endif +#ifdef GL_TEXTURE_COMPONENTS if (!strcmp(name, "GL_TEXTURE_COMPONENTS")) { return GL_TEXTURE_COMPONENTS; } +#endif +#ifdef GL_TEXTURE_COMPRESSED if (!strcmp(name, "GL_TEXTURE_COMPRESSED")) { return GL_TEXTURE_COMPRESSED; } +#endif +#ifdef GL_TEXTURE_DEPTH_SIZE if (!strcmp(name, "GL_TEXTURE_DEPTH_SIZE")) { return GL_TEXTURE_DEPTH_SIZE; } +#endif +#ifdef GL_TEXTURE_DEPTH_TYPE if (!strcmp(name, "GL_TEXTURE_DEPTH_TYPE")) { return GL_TEXTURE_DEPTH_TYPE; } +#endif +#ifdef GL_TEXTURE_DS_SIZE_NV if (!strcmp(name, "GL_TEXTURE_DS_SIZE_NV")) { return GL_TEXTURE_DS_SIZE_NV; } +#endif +#ifdef GL_TEXTURE_DT_SIZE_NV if (!strcmp(name, "GL_TEXTURE_DT_SIZE_NV")) { return GL_TEXTURE_DT_SIZE_NV; } +#endif +#ifdef GL_TEXTURE_GREEN_SIZE if (!strcmp(name, "GL_TEXTURE_GREEN_SIZE")) { return GL_TEXTURE_GREEN_SIZE; } +#endif +#ifdef GL_TEXTURE_GREEN_TYPE if (!strcmp(name, "GL_TEXTURE_GREEN_TYPE")) { return GL_TEXTURE_GREEN_TYPE; } +#endif +#ifdef GL_TEXTURE_HI_SIZE_NV if (!strcmp(name, "GL_TEXTURE_HI_SIZE_NV")) { return GL_TEXTURE_HI_SIZE_NV; } +#endif +#ifdef GL_TEXTURE_IMAGE_TYPE if (!strcmp(name, "GL_TEXTURE_IMAGE_TYPE")) { return GL_TEXTURE_IMAGE_TYPE; } +#endif +#ifdef GL_TEXTURE_LO_SIZE_NV if (!strcmp(name, "GL_TEXTURE_LO_SIZE_NV")) { return GL_TEXTURE_LO_SIZE_NV; } +#endif +#ifdef GL_TEXTURE_MAG_FILTER if (!strcmp(name, "GL_TEXTURE_MAG_FILTER")) { return GL_TEXTURE_MAG_FILTER; } +#endif +#ifdef GL_TEXTURE_MIN_FILTER if (!strcmp(name, "GL_TEXTURE_MIN_FILTER")) { return GL_TEXTURE_MIN_FILTER; } +#endif +#ifdef GL_TEXTURE_NORMAL_EXT if (!strcmp(name, "GL_TEXTURE_NORMAL_EXT")) { return GL_TEXTURE_NORMAL_EXT; } +#endif +#ifdef GL_TEXTURE_SPARSE_ARB if (!strcmp(name, "GL_TEXTURE_SPARSE_ARB")) { return GL_TEXTURE_SPARSE_ARB; } +#endif +#ifdef GL_TEXTURE_WRAP_R_EXT if (!strcmp(name, "GL_TEXTURE_WRAP_R_EXT")) { return GL_TEXTURE_WRAP_R_EXT; } +#endif +#ifdef GL_TIME_ELAPSED_ANGLE if (!strcmp(name, "GL_TIME_ELAPSED_ANGLE")) { return GL_TIME_ELAPSED_ANGLE; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK if (!strcmp(name, "GL_TRANSFORM_FEEDBACK")) { return GL_TRANSFORM_FEEDBACK; } +#endif +#ifdef GL_UNIFORM_BUFFER_EXT if (!strcmp(name, "GL_UNIFORM_BUFFER_EXT")) { return GL_UNIFORM_BUFFER_EXT; } +#endif +#ifdef GL_UNPACK_SKIP_IMAGES if (!strcmp(name, "GL_UNPACK_SKIP_IMAGES")) { return GL_UNPACK_SKIP_IMAGES; } +#endif +#ifdef GL_UNPACK_SKIP_PIXELS if (!strcmp(name, "GL_UNPACK_SKIP_PIXELS")) { return GL_UNPACK_SKIP_PIXELS; } +#endif +#ifdef GL_UNSIGNED_INT64_AMD if (!strcmp(name, "GL_UNSIGNED_INT64_AMD")) { return GL_UNSIGNED_INT64_AMD; } +#endif +#ifdef GL_UNSIGNED_INT64_ARB +if (!strcmp(name, "GL_UNSIGNED_INT64_ARB")) +{ + return GL_UNSIGNED_INT64_ARB; +} +#endif +#ifdef GL_UNSIGNED_INT64_ARB if (!strcmp(name, "GL_UNSIGNED_INT64_ARB")) { return GL_UNSIGNED_INT64_ARB; } +#endif +#ifdef GL_UNSIGNED_INVERT_NV if (!strcmp(name, "GL_UNSIGNED_INVERT_NV")) { return GL_UNSIGNED_INVERT_NV; } +#endif +#ifdef GL_VERTEX_PROGRAM_ARB if (!strcmp(name, "GL_VERTEX_PROGRAM_ARB")) { return GL_VERTEX_PROGRAM_ARB; } +#endif +#ifdef GL_VERTEX_STREAM0_ATI if (!strcmp(name, "GL_VERTEX_STREAM0_ATI")) { return GL_VERTEX_STREAM0_ATI; } +#endif +#ifdef GL_VERTEX_STREAM1_ATI if (!strcmp(name, "GL_VERTEX_STREAM1_ATI")) { return GL_VERTEX_STREAM1_ATI; } +#endif +#ifdef GL_VERTEX_STREAM2_ATI if (!strcmp(name, "GL_VERTEX_STREAM2_ATI")) { return GL_VERTEX_STREAM2_ATI; } +#endif +#ifdef GL_VERTEX_STREAM3_ATI if (!strcmp(name, "GL_VERTEX_STREAM3_ATI")) { return GL_VERTEX_STREAM3_ATI; } +#endif +#ifdef GL_VERTEX_STREAM4_ATI if (!strcmp(name, "GL_VERTEX_STREAM4_ATI")) { return GL_VERTEX_STREAM4_ATI; } +#endif +#ifdef GL_VERTEX_STREAM5_ATI if (!strcmp(name, "GL_VERTEX_STREAM5_ATI")) { return GL_VERTEX_STREAM5_ATI; } +#endif +#ifdef GL_VERTEX_STREAM6_ATI if (!strcmp(name, "GL_VERTEX_STREAM6_ATI")) { return GL_VERTEX_STREAM6_ATI; } +#endif +#ifdef GL_VERTEX_STREAM7_ATI if (!strcmp(name, "GL_VERTEX_STREAM7_ATI")) { return GL_VERTEX_STREAM7_ATI; } +#endif +#ifdef GL_VIEW_CLASS_16_BITS if (!strcmp(name, "GL_VIEW_CLASS_16_BITS")) { return GL_VIEW_CLASS_16_BITS; } +#endif +#ifdef GL_VIEW_CLASS_24_BITS if (!strcmp(name, "GL_VIEW_CLASS_24_BITS")) { return GL_VIEW_CLASS_24_BITS; } +#endif +#ifdef GL_VIEW_CLASS_32_BITS if (!strcmp(name, "GL_VIEW_CLASS_32_BITS")) { return GL_VIEW_CLASS_32_BITS; } +#endif +#ifdef GL_VIEW_CLASS_48_BITS if (!strcmp(name, "GL_VIEW_CLASS_48_BITS")) { return GL_VIEW_CLASS_48_BITS; } +#endif +#ifdef GL_VIEW_CLASS_64_BITS if (!strcmp(name, "GL_VIEW_CLASS_64_BITS")) { return GL_VIEW_CLASS_64_BITS; } +#endif +#ifdef GL_VIEW_CLASS_96_BITS if (!strcmp(name, "GL_VIEW_CLASS_96_BITS")) { return GL_VIEW_CLASS_96_BITS; } +#endif +#ifdef GL_WIDE_LINE_HINT_PGI if (!strcmp(name, "GL_WIDE_LINE_HINT_PGI")) { return GL_WIDE_LINE_HINT_PGI; } +#endif return _GL_UNDEFINED; case 22: +#ifdef GL_422_REV_AVERAGE_EXT if (!strcmp(name, "GL_422_REV_AVERAGE_EXT")) { return GL_422_REV_AVERAGE_EXT; } +#endif +#ifdef GL_ALL_STATIC_DATA_IBM if (!strcmp(name, "GL_ALL_STATIC_DATA_IBM")) { return GL_ALL_STATIC_DATA_IBM; } +#endif +#ifdef GL_ALPHA16_SIGNED_SGIX if (!strcmp(name, "GL_ALPHA16_SIGNED_SGIX")) { return GL_ALPHA16_SIGNED_SGIX; } +#endif +#ifdef GL_ALPHA_FLOAT16_APPLE if (!strcmp(name, "GL_ALPHA_FLOAT16_APPLE")) { return GL_ALPHA_FLOAT16_APPLE; } +#endif +#ifdef GL_ALPHA_FLOAT32_APPLE if (!strcmp(name, "GL_ALPHA_FLOAT32_APPLE")) { return GL_ALPHA_FLOAT32_APPLE; } +#endif +#ifdef GL_AMBIENT_AND_DIFFUSE if (!strcmp(name, "GL_AMBIENT_AND_DIFFUSE")) { return GL_AMBIENT_AND_DIFFUSE; } +#endif +#ifdef GL_AMD_name_gen_delete if (!strcmp(name, "GL_AMD_name_gen_delete")) { return GL_AMD_name_gen_delete; } +#endif +#ifdef GL_ANGLE_depth_texture if (!strcmp(name, "GL_ANGLE_depth_texture")) { return GL_ANGLE_depth_texture; } +#endif +#ifdef GL_ANGLE_texture_usage if (!strcmp(name, "GL_ANGLE_texture_usage")) { return GL_ANGLE_texture_usage; } +#endif +#ifdef GL_APPLE_element_array if (!strcmp(name, "GL_APPLE_element_array")) { return GL_APPLE_element_array; } +#endif +#ifdef GL_APPLE_texture_range if (!strcmp(name, "GL_APPLE_texture_range")) { return GL_APPLE_texture_range; } +#endif +#ifdef GL_ARB_fragment_shader if (!strcmp(name, "GL_ARB_fragment_shader")) { return GL_ARB_fragment_shader; } +#endif +#ifdef GL_ARB_gpu_shader_fp64 if (!strcmp(name, "GL_ARB_gpu_shader_fp64")) { return GL_ARB_gpu_shader_fp64; } +#endif +#ifdef GL_ARB_occlusion_query if (!strcmp(name, "GL_ARB_occlusion_query")) { return GL_ARB_occlusion_query; } +#endif +#ifdef GL_ARB_sampler_objects if (!strcmp(name, "GL_ARB_sampler_objects")) { return GL_ARB_sampler_objects; } +#endif +#ifdef GL_ARB_sparse_texture2 +if (!strcmp(name, "GL_ARB_sparse_texture2")) +{ + return GL_ARB_sparse_texture2; +} +#endif +#ifdef GL_ARB_texture_barrier +if (!strcmp(name, "GL_ARB_texture_barrier")) +{ + return GL_ARB_texture_barrier; +} +#endif +#ifdef GL_ARB_texture_env_add if (!strcmp(name, "GL_ARB_texture_env_add")) { return GL_ARB_texture_env_add; } +#endif +#ifdef GL_ARB_texture_storage if (!strcmp(name, "GL_ARB_texture_storage")) { return GL_ARB_texture_storage; } +#endif +#ifdef GL_ARB_texture_swizzle if (!strcmp(name, "GL_ARB_texture_swizzle")) { return GL_ARB_texture_swizzle; } +#endif +#ifdef GL_ATI_fragment_shader if (!strcmp(name, "GL_ATI_fragment_shader")) { return GL_ATI_fragment_shader; } +#endif +#ifdef GL_BLEND_DST_ALPHA_EXT if (!strcmp(name, "GL_BLEND_DST_ALPHA_EXT")) { return GL_BLEND_DST_ALPHA_EXT; } +#endif +#ifdef GL_BLEND_SRC_ALPHA_EXT if (!strcmp(name, "GL_BLEND_SRC_ALPHA_EXT")) { return GL_BLEND_SRC_ALPHA_EXT; } +#endif +#ifdef GL_BLUE_MAX_CLAMP_INGR if (!strcmp(name, "GL_BLUE_MAX_CLAMP_INGR")) { return GL_BLUE_MAX_CLAMP_INGR; } +#endif +#ifdef GL_BLUE_MIN_CLAMP_INGR if (!strcmp(name, "GL_BLUE_MIN_CLAMP_INGR")) { return GL_BLUE_MIN_CLAMP_INGR; } +#endif +#ifdef GL_BUFFER_ACCESS_FLAGS if (!strcmp(name, "GL_BUFFER_ACCESS_FLAGS")) { return GL_BUFFER_ACCESS_FLAGS; } +#endif +#ifdef GL_BUFFER_OBJECT_APPLE if (!strcmp(name, "GL_BUFFER_OBJECT_APPLE")) { return GL_BUFFER_OBJECT_APPLE; } +#endif +#ifdef GL_BUMP_ROT_MATRIX_ATI if (!strcmp(name, "GL_BUMP_ROT_MATRIX_ATI")) { return GL_BUMP_ROT_MATRIX_ATI; } +#endif +#ifdef GL_CLAMP_TO_BORDER_ARB if (!strcmp(name, "GL_CLAMP_TO_BORDER_ARB")) { return GL_CLAMP_TO_BORDER_ARB; } +#endif +#ifdef GL_COLOR_ARRAY_POINTER if (!strcmp(name, "GL_COLOR_ARRAY_POINTER")) { return GL_COLOR_ARRAY_POINTER; } +#endif +#ifdef GL_COLOR_MATERIAL_FACE if (!strcmp(name, "GL_COLOR_MATERIAL_FACE")) { return GL_COLOR_MATERIAL_FACE; } +#endif +#ifdef GL_COMBINER_MAPPING_NV if (!strcmp(name, "GL_COMBINER_MAPPING_NV")) { return GL_COMBINER_MAPPING_NV; } +#endif +#ifdef GL_COMBINER_MUX_SUM_NV if (!strcmp(name, "GL_COMBINER_MUX_SUM_NV")) { return GL_COMBINER_MUX_SUM_NV; } +#endif +#ifdef GL_COMMAND_BARRIER_BIT if (!strcmp(name, "GL_COMMAND_BARRIER_BIT")) { return GL_COMMAND_BARRIER_BIT; } +#endif +#ifdef GL_COMPILE_AND_EXECUTE if (!strcmp(name, "GL_COMPILE_AND_EXECUTE")) { return GL_COMPILE_AND_EXECUTE; } +#endif +#ifdef GL_COMPRESSED_RG11_EAC if (!strcmp(name, "GL_COMPRESSED_RG11_EAC")) { return GL_COMPRESSED_RG11_EAC; } +#endif +#ifdef GL_COMPRESSED_RGBA_ARB if (!strcmp(name, "GL_COMPRESSED_RGBA_ARB")) { return GL_COMPRESSED_RGBA_ARB; } +#endif +#ifdef GL_COMPRESSED_RG_RGTC2 if (!strcmp(name, "GL_COMPRESSED_RG_RGTC2")) { return GL_COMPRESSED_RG_RGTC2; } +#endif +#ifdef GL_COMPRESSED_SRGB_EXT if (!strcmp(name, "GL_COMPRESSED_SRGB_EXT")) { return GL_COMPRESSED_SRGB_EXT; } +#endif +#ifdef GL_CONDITION_SATISFIED if (!strcmp(name, "GL_CONDITION_SATISFIED")) { return GL_CONDITION_SATISFIED; } +#endif +#ifdef GL_CURRENT_QUERY_ANGLE if (!strcmp(name, "GL_CURRENT_QUERY_ANGLE")) { return GL_CURRENT_QUERY_ANGLE; } +#endif +#ifdef GL_CURRENT_TANGENT_EXT if (!strcmp(name, "GL_CURRENT_TANGENT_EXT")) { return GL_CURRENT_TANGENT_EXT; } +#endif +#ifdef GL_DEBUG_SEVERITY_HIGH if (!strcmp(name, "GL_DEBUG_SEVERITY_HIGH")) { return GL_DEBUG_SEVERITY_HIGH; } +#endif +#ifdef GL_DEPTH_CLAMP_FAR_AMD if (!strcmp(name, "GL_DEPTH_CLAMP_FAR_AMD")) { return GL_DEPTH_CLAMP_FAR_AMD; } +#endif +#ifdef GL_DYNAMIC_STORAGE_BIT if (!strcmp(name, "GL_DYNAMIC_STORAGE_BIT")) { return GL_DYNAMIC_STORAGE_BIT; } +#endif +#ifdef GL_EDGE_FLAG_ARRAY_EXT if (!strcmp(name, "GL_EDGE_FLAG_ARRAY_EXT")) { return GL_EDGE_FLAG_ARRAY_EXT; } +#endif +#ifdef GL_ELEMENT_ARRAY_APPLE if (!strcmp(name, "GL_ELEMENT_ARRAY_APPLE")) { return GL_ELEMENT_ARRAY_APPLE; } +#endif +#ifdef GL_EXTENDED_RANGE_SGIS if (!strcmp(name, "GL_EXTENDED_RANGE_SGIS")) { return GL_EXTENDED_RANGE_SGIS; } +#endif +#ifdef GL_EXT_pixel_transform if (!strcmp(name, "GL_EXT_pixel_transform")) { return GL_EXT_pixel_transform; } +#endif +#ifdef GL_EXT_secondary_color if (!strcmp(name, "GL_EXT_secondary_color")) { return GL_EXT_secondary_color; } +#endif +#ifdef GL_EXT_sparse_texture2 +if (!strcmp(name, "GL_EXT_sparse_texture2")) +{ + return GL_EXT_sparse_texture2; +} +#endif +#ifdef GL_EXT_texture_env_add if (!strcmp(name, "GL_EXT_texture_env_add")) { return GL_EXT_texture_env_add; } +#endif +#ifdef GL_EXT_texture_integer if (!strcmp(name, "GL_EXT_texture_integer")) { return GL_EXT_texture_integer; } +#endif +#ifdef GL_EXT_texture_swizzle if (!strcmp(name, "GL_EXT_texture_swizzle")) { return GL_EXT_texture_swizzle; } +#endif +#ifdef GL_EXT_x11_sync_object if (!strcmp(name, "GL_EXT_x11_sync_object")) { return GL_EXT_x11_sync_object; } +#endif +#ifdef GL_FONT_UNAVAILABLE_NV +if (!strcmp(name, "GL_FONT_UNAVAILABLE_NV")) +{ + return GL_FONT_UNAVAILABLE_NV; +} +#endif +#ifdef GL_FRAGMENT_LIGHT0_EXT if (!strcmp(name, "GL_FRAGMENT_LIGHT0_EXT")) { return GL_FRAGMENT_LIGHT0_EXT; } +#endif +#ifdef GL_FRAGMENT_LIGHT7_EXT if (!strcmp(name, "GL_FRAGMENT_LIGHT7_EXT")) { return GL_FRAGMENT_LIGHT7_EXT; } +#endif +#ifdef GL_FRAGMENT_NORMAL_EXT if (!strcmp(name, "GL_FRAGMENT_NORMAL_EXT")) { return GL_FRAGMENT_NORMAL_EXT; } +#endif +#ifdef GL_FRAGMENT_PROGRAM_NV if (!strcmp(name, "GL_FRAGMENT_PROGRAM_NV")) { return GL_FRAGMENT_PROGRAM_NV; } +#endif +#ifdef GL_FRAGMENT_SHADER_ARB if (!strcmp(name, "GL_FRAGMENT_SHADER_ARB")) { return GL_FRAGMENT_SHADER_ARB; } +#endif +#ifdef GL_FRAGMENT_SHADER_ATI if (!strcmp(name, "GL_FRAGMENT_SHADER_ATI")) { return GL_FRAGMENT_SHADER_ATI; } +#endif +#ifdef GL_FRAGMENT_SHADER_BIT if (!strcmp(name, "GL_FRAGMENT_SHADER_BIT")) { return GL_FRAGMENT_SHADER_BIT; } +#endif +#ifdef GL_FRAGMENT_SUBROUTINE if (!strcmp(name, "GL_FRAGMENT_SUBROUTINE")) { return GL_FRAGMENT_SUBROUTINE; } +#endif +#ifdef GL_FRAMEBUFFER_BINDING if (!strcmp(name, "GL_FRAMEBUFFER_BINDING")) { return GL_FRAMEBUFFER_BINDING; } +#endif +#ifdef GL_FRAMEBUFFER_DEFAULT if (!strcmp(name, "GL_FRAMEBUFFER_DEFAULT")) { return GL_FRAMEBUFFER_DEFAULT; } +#endif +#ifdef GL_GEOMETRY_INPUT_TYPE if (!strcmp(name, "GL_GEOMETRY_INPUT_TYPE")) { return GL_GEOMETRY_INPUT_TYPE; } +#endif +#ifdef GL_GEOMETRY_PROGRAM_NV if (!strcmp(name, "GL_GEOMETRY_PROGRAM_NV")) { return GL_GEOMETRY_PROGRAM_NV; } +#endif +#ifdef GL_GEOMETRY_SHADER_ARB if (!strcmp(name, "GL_GEOMETRY_SHADER_ARB")) { return GL_GEOMETRY_SHADER_ARB; } +#endif +#ifdef GL_GEOMETRY_SHADER_BIT if (!strcmp(name, "GL_GEOMETRY_SHADER_BIT")) { return GL_GEOMETRY_SHADER_BIT; } +#endif +#ifdef GL_GEOMETRY_SHADER_EXT if (!strcmp(name, "GL_GEOMETRY_SHADER_EXT")) { return GL_GEOMETRY_SHADER_EXT; } +#endif +#ifdef GL_GEOMETRY_SUBROUTINE if (!strcmp(name, "GL_GEOMETRY_SUBROUTINE")) { return GL_GEOMETRY_SUBROUTINE; } +#endif +#ifdef GL_GLYPH_HEIGHT_BIT_NV if (!strcmp(name, "GL_GLYPH_HEIGHT_BIT_NV")) { return GL_GLYPH_HEIGHT_BIT_NV; } +#endif +#ifdef GL_HALF_BIAS_NEGATE_NV if (!strcmp(name, "GL_HALF_BIAS_NEGATE_NV")) { return GL_HALF_BIAS_NEGATE_NV; } +#endif +#ifdef GL_HALF_BIAS_NORMAL_NV if (!strcmp(name, "GL_HALF_BIAS_NORMAL_NV")) { return GL_HALF_BIAS_NORMAL_NV; } +#endif +#ifdef GL_HISTOGRAM_BLUE_SIZE if (!strcmp(name, "GL_HISTOGRAM_BLUE_SIZE")) { return GL_HISTOGRAM_BLUE_SIZE; } +#endif +#ifdef GL_HISTOGRAM_WIDTH_EXT if (!strcmp(name, "GL_HISTOGRAM_WIDTH_EXT")) { return GL_HISTOGRAM_WIDTH_EXT; } +#endif +#ifdef GL_HP_texture_lighting if (!strcmp(name, "GL_HP_texture_lighting")) { return GL_HP_texture_lighting; } +#endif +#ifdef GL_IMAGE_BINDING_LAYER if (!strcmp(name, "GL_IMAGE_BINDING_LAYER")) { return GL_IMAGE_BINDING_LAYER; } +#endif +#ifdef GL_IMAGE_BINDING_LEVEL if (!strcmp(name, "GL_IMAGE_BINDING_LEVEL")) { return GL_IMAGE_BINDING_LEVEL; } +#endif +#ifdef GL_INDEX_ARRAY_POINTER if (!strcmp(name, "GL_INDEX_ARRAY_POINTER")) { return GL_INDEX_ARRAY_POINTER; } +#endif +#ifdef GL_INGR_interlace_read if (!strcmp(name, "GL_INGR_interlace_read")) { return GL_INGR_interlace_read; } +#endif +#ifdef GL_INTERLACE_READ_INGR if (!strcmp(name, "GL_INTERLACE_READ_INGR")) { return GL_INTERLACE_READ_INGR; } +#endif +#ifdef GL_INTERLEAVED_ATTRIBS if (!strcmp(name, "GL_INTERLEAVED_ATTRIBS")) { return GL_INTERLEAVED_ATTRIBS; } +#endif +#ifdef GL_INT_SAMPLER_2D_RECT if (!strcmp(name, "GL_INT_SAMPLER_2D_RECT")) { return GL_INT_SAMPLER_2D_RECT; } +#endif +#ifdef GL_INVARIANT_VALUE_EXT if (!strcmp(name, "GL_INVARIANT_VALUE_EXT")) { return GL_INVARIANT_VALUE_EXT; } +#endif +#ifdef GL_LARGE_CCW_ARC_TO_NV if (!strcmp(name, "GL_LARGE_CCW_ARC_TO_NV")) { return GL_LARGE_CCW_ARC_TO_NV; } +#endif +#ifdef GL_LAYOUT_LINEAR_INTEL if (!strcmp(name, "GL_LAYOUT_LINEAR_INTEL")) { return GL_LAYOUT_LINEAR_INTEL; } +#endif +#ifdef GL_LIGHT_MODEL_AMBIENT if (!strcmp(name, "GL_LIGHT_MODEL_AMBIENT")) { return GL_LIGHT_MODEL_AMBIENT; } +#endif +#ifdef GL_LINES_ADJACENCY_ARB if (!strcmp(name, "GL_LINES_ADJACENCY_ARB")) { return GL_LINES_ADJACENCY_ARB; } +#endif +#ifdef GL_LINES_ADJACENCY_EXT if (!strcmp(name, "GL_LINES_ADJACENCY_EXT")) { return GL_LINES_ADJACENCY_EXT; } +#endif +#ifdef GL_LINE_STIPPLE_REPEAT if (!strcmp(name, "GL_LINE_STIPPLE_REPEAT")) { return GL_LINE_STIPPLE_REPEAT; } +#endif +#ifdef GL_LUMINANCE12_ALPHA12 if (!strcmp(name, "GL_LUMINANCE12_ALPHA12")) { return GL_LUMINANCE12_ALPHA12; } +#endif +#ifdef GL_LUMINANCE16_ALPHA16 if (!strcmp(name, "GL_LUMINANCE16_ALPHA16")) { return GL_LUMINANCE16_ALPHA16; } +#endif +#ifdef GL_MAP_TESSELLATION_NV if (!strcmp(name, "GL_MAP_TESSELLATION_NV")) { return GL_MAP_TESSELLATION_NV; } +#endif +#ifdef GL_MAT_AMBIENT_BIT_PGI if (!strcmp(name, "GL_MAT_AMBIENT_BIT_PGI")) { return GL_MAT_AMBIENT_BIT_PGI; } +#endif +#ifdef GL_MAT_DIFFUSE_BIT_PGI if (!strcmp(name, "GL_MAT_DIFFUSE_BIT_PGI")) { return GL_MAT_DIFFUSE_BIT_PGI; } +#endif +#ifdef GL_MAX_3D_TEXTURE_SIZE if (!strcmp(name, "GL_MAX_3D_TEXTURE_SIZE")) { return GL_MAX_3D_TEXTURE_SIZE; } +#endif +#ifdef GL_MAX_IMAGE_UNITS_EXT if (!strcmp(name, "GL_MAX_IMAGE_UNITS_EXT")) { return GL_MAX_IMAGE_UNITS_EXT; } +#endif +#ifdef GL_MAX_INTEGER_SAMPLES if (!strcmp(name, "GL_MAX_INTEGER_SAMPLES")) { return GL_MAX_INTEGER_SAMPLES; } +#endif +#ifdef GL_MAX_PIXEL_MAP_TABLE if (!strcmp(name, "GL_MAX_PIXEL_MAP_TABLE")) { return GL_MAX_PIXEL_MAP_TABLE; } +#endif +#ifdef GL_MAX_VARYING_VECTORS if (!strcmp(name, "GL_MAX_VARYING_VECTORS")) { return GL_MAX_VARYING_VECTORS; } +#endif +#ifdef GL_MAX_VERTEX_HINT_PGI if (!strcmp(name, "GL_MAX_VERTEX_HINT_PGI")) { return GL_MAX_VERTEX_HINT_PGI; } -if (!strcmp(name, "GL_MESA_resize_buffers")) -{ - return GL_MESA_resize_buffers; -} -if (!strcmp(name, "GL_MESAX_texture_stack")) -{ - return GL_MESAX_texture_stack; -} +#endif +#ifdef GL_MIN_LOD_WARNING_AMD if (!strcmp(name, "GL_MIN_LOD_WARNING_AMD")) { return GL_MIN_LOD_WARNING_AMD; } +#endif +#ifdef GL_MIRRORED_REPEAT_ARB if (!strcmp(name, "GL_MIRRORED_REPEAT_ARB")) { return GL_MIRRORED_REPEAT_ARB; } +#endif +#ifdef GL_MIRRORED_REPEAT_IBM if (!strcmp(name, "GL_MIRRORED_REPEAT_IBM")) { return GL_MIRRORED_REPEAT_IBM; } +#endif +#ifdef GL_MULTISAMPLE_BIT_ARB if (!strcmp(name, "GL_MULTISAMPLE_BIT_ARB")) { return GL_MULTISAMPLE_BIT_ARB; } +#endif +#ifdef GL_MULTISAMPLE_BIT_EXT if (!strcmp(name, "GL_MULTISAMPLE_BIT_EXT")) { return GL_MULTISAMPLE_BIT_EXT; } +#endif +#ifdef GL_NEGATIVE_ONE_TO_ONE +if (!strcmp(name, "GL_NEGATIVE_ONE_TO_ONE")) +{ + return GL_NEGATIVE_ONE_TO_ONE; +} +#endif +#ifdef GL_NORMAL_ARRAY_STRIDE if (!strcmp(name, "GL_NORMAL_ARRAY_STRIDE")) { return GL_NORMAL_ARRAY_STRIDE; } +#endif +#ifdef GL_NUM_FILL_STREAMS_NV if (!strcmp(name, "GL_NUM_FILL_STREAMS_NV")) { return GL_NUM_FILL_STREAMS_NV; } +#endif +#ifdef GL_NVX_gpu_memory_info +if (!strcmp(name, "GL_NVX_gpu_memory_info")) +{ + return GL_NVX_gpu_memory_info; +} +#endif +#ifdef GL_NV_bindless_texture if (!strcmp(name, "GL_NV_bindless_texture")) { return GL_NV_bindless_texture; } +#endif +#ifdef GL_NV_compute_program5 if (!strcmp(name, "GL_NV_compute_program5")) { return GL_NV_compute_program5; } +#endif +#ifdef GL_NV_fragment_program if (!strcmp(name, "GL_NV_fragment_program")) { return GL_NV_fragment_program; } +#endif +#ifdef GL_NV_geometry_shader4 if (!strcmp(name, "GL_NV_geometry_shader4")) { return GL_NV_geometry_shader4; } +#endif +#ifdef GL_NV_gpu_program_fp64 if (!strcmp(name, "GL_NV_gpu_program_fp64")) { return GL_NV_gpu_program_fp64; } +#endif +#ifdef GL_NV_pixel_data_range if (!strcmp(name, "GL_NV_pixel_data_range")) { return GL_NV_pixel_data_range; } -if (!strcmp(name, "GL_NVX_gpu_memory_info")) +#endif +#ifdef GL_NV_sample_locations +if (!strcmp(name, "GL_NV_sample_locations")) { - return GL_NVX_gpu_memory_info; + return GL_NV_sample_locations; } +#endif +#ifdef GL_ONE_MINUS_DST_ALPHA if (!strcmp(name, "GL_ONE_MINUS_DST_ALPHA")) { return GL_ONE_MINUS_DST_ALPHA; } +#endif +#ifdef GL_ONE_MINUS_DST_COLOR if (!strcmp(name, "GL_ONE_MINUS_DST_COLOR")) { return GL_ONE_MINUS_DST_COLOR; } +#endif +#ifdef GL_ONE_MINUS_SRC_ALPHA if (!strcmp(name, "GL_ONE_MINUS_SRC_ALPHA")) { return GL_ONE_MINUS_SRC_ALPHA; } +#endif +#ifdef GL_ONE_MINUS_SRC_COLOR if (!strcmp(name, "GL_ONE_MINUS_SRC_COLOR")) { return GL_ONE_MINUS_SRC_COLOR; } +#endif +#ifdef GL_PATH_COORD_COUNT_NV if (!strcmp(name, "GL_PATH_COORD_COUNT_NV")) { return GL_PATH_COORD_COUNT_NV; } +#endif +#ifdef GL_PATH_DASH_OFFSET_NV if (!strcmp(name, "GL_PATH_DASH_OFFSET_NV")) { return GL_PATH_DASH_OFFSET_NV; } +#endif +#ifdef GL_PATH_MITER_LIMIT_NV if (!strcmp(name, "GL_PATH_MITER_LIMIT_NV")) { return GL_PATH_MITER_LIMIT_NV; } +#endif +#ifdef GL_PATH_STENCIL_REF_NV if (!strcmp(name, "GL_PATH_STENCIL_REF_NV")) { return GL_PATH_STENCIL_REF_NV; } +#endif +#ifdef GL_PATH_STROKE_MASK_NV if (!strcmp(name, "GL_PATH_STROKE_MASK_NV")) { return GL_PATH_STROKE_MASK_NV; } +#endif +#ifdef GL_PIXEL_UNPACK_BUFFER if (!strcmp(name, "GL_PIXEL_UNPACK_BUFFER")) { return GL_PIXEL_UNPACK_BUFFER; } +#endif +#ifdef GL_POLYGON_OFFSET_FILL if (!strcmp(name, "GL_POLYGON_OFFSET_FILL")) { return GL_POLYGON_OFFSET_FILL; } +#endif +#ifdef GL_POLYGON_OFFSET_LINE if (!strcmp(name, "GL_POLYGON_OFFSET_LINE")) { return GL_POLYGON_OFFSET_LINE; } +#endif +#ifdef GL_POLYGON_SMOOTH_HINT if (!strcmp(name, "GL_POLYGON_SMOOTH_HINT")) { return GL_POLYGON_SMOOTH_HINT; } +#endif +#ifdef GL_POLYGON_STIPPLE_BIT if (!strcmp(name, "GL_POLYGON_STIPPLE_BIT")) { return GL_POLYGON_STIPPLE_BIT; } +#endif +#ifdef GL_PRESENT_DURATION_NV if (!strcmp(name, "GL_PRESENT_DURATION_NV")) { return GL_PRESENT_DURATION_NV; } +#endif +#ifdef GL_PROGRAM_ATTRIBS_ARB if (!strcmp(name, "GL_PROGRAM_ATTRIBS_ARB")) { return GL_PROGRAM_ATTRIBS_ARB; } +#endif +#ifdef GL_PROGRAM_BINDING_ARB if (!strcmp(name, "GL_PROGRAM_BINDING_ARB")) { return GL_PROGRAM_BINDING_ARB; } +#endif +#ifdef GL_PROGRAM_RESIDENT_NV if (!strcmp(name, "GL_PROGRAM_RESIDENT_NV")) { return GL_PROGRAM_RESIDENT_NV; } +#endif +#ifdef GL_PROXY_HISTOGRAM_EXT if (!strcmp(name, "GL_PROXY_HISTOGRAM_EXT")) { return GL_PROXY_HISTOGRAM_EXT; } +#endif +#ifdef GL_QUERY_WAIT_INVERTED +if (!strcmp(name, "GL_QUERY_WAIT_INVERTED")) +{ + return GL_QUERY_WAIT_INVERTED; +} +#endif +#ifdef GL_RELATIVE_LINE_TO_NV if (!strcmp(name, "GL_RELATIVE_LINE_TO_NV")) { return GL_RELATIVE_LINE_TO_NV; } +#endif +#ifdef GL_RELATIVE_MOVE_TO_NV if (!strcmp(name, "GL_RELATIVE_MOVE_TO_NV")) { return GL_RELATIVE_MOVE_TO_NV; } +#endif +#ifdef GL_RENDERBUFFER_HEIGHT if (!strcmp(name, "GL_RENDERBUFFER_HEIGHT")) { return GL_RENDERBUFFER_HEIGHT; } +#endif +#ifdef GL_RGBA_FLOAT_MODE_ARB if (!strcmp(name, "GL_RGBA_FLOAT_MODE_ARB")) { return GL_RGBA_FLOAT_MODE_ARB; } +#endif +#ifdef GL_SAMPLER_2D_RECT_ARB +if (!strcmp(name, "GL_SAMPLER_2D_RECT_ARB")) +{ + return GL_SAMPLER_2D_RECT_ARB; +} +#endif +#ifdef GL_SAMPLER_2D_RECT_ARB +if (!strcmp(name, "GL_SAMPLER_2D_RECT_ARB")) +{ + return GL_SAMPLER_2D_RECT_ARB; +} +#endif +#ifdef GL_SAMPLER_CUBE_SHADOW +if (!strcmp(name, "GL_SAMPLER_CUBE_SHADOW")) +{ + return GL_SAMPLER_CUBE_SHADOW; +} +#endif +#ifdef GL_SAMPLE_ALPHA_TO_ONE if (!strcmp(name, "GL_SAMPLE_ALPHA_TO_ONE")) { return GL_SAMPLE_ALPHA_TO_ONE; } +#endif +#ifdef GL_SAMPLE_BUFFERS_3DFX if (!strcmp(name, "GL_SAMPLE_BUFFERS_3DFX")) { return GL_SAMPLE_BUFFERS_3DFX; } +#endif +#ifdef GL_SAMPLE_BUFFERS_SGIS if (!strcmp(name, "GL_SAMPLE_BUFFERS_SGIS")) { return GL_SAMPLE_BUFFERS_SGIS; } +#endif +#ifdef GL_SAMPLE_COVERAGE_ARB if (!strcmp(name, "GL_SAMPLE_COVERAGE_ARB")) { return GL_SAMPLE_COVERAGE_ARB; } -if (!strcmp(name, "GL_SAMPLE_PATTERN_SGIS")) -{ - return GL_SAMPLE_PATTERN_SGIS; -} -if (!strcmp(name, "GL_SAMPLER_2D_RECT_ARB")) +#endif +#ifdef GL_SAMPLE_LOCATION_ARB +if (!strcmp(name, "GL_SAMPLE_LOCATION_ARB")) { - return GL_SAMPLER_2D_RECT_ARB; + return GL_SAMPLE_LOCATION_ARB; } -if (!strcmp(name, "GL_SAMPLER_CUBE_SHADOW")) +#endif +#ifdef GL_SAMPLE_PATTERN_SGIS +if (!strcmp(name, "GL_SAMPLE_PATTERN_SGIS")) { - return GL_SAMPLER_CUBE_SHADOW; + return GL_SAMPLE_PATTERN_SGIS; } +#endif +#ifdef GL_SEPARATE_ATTRIBS_NV if (!strcmp(name, "GL_SEPARATE_ATTRIBS_NV")) { return GL_SEPARATE_ATTRIBS_NV; } +#endif +#ifdef GL_SGIS_detail_texture if (!strcmp(name, "GL_SGIS_detail_texture")) { return GL_SGIS_detail_texture; } +#endif +#ifdef GL_SGIS_texture_select if (!strcmp(name, "GL_SGIS_texture_select")) { return GL_SGIS_texture_select; } +#endif +#ifdef GL_SGIX_ir_instrument1 if (!strcmp(name, "GL_SGIX_ir_instrument1")) { return GL_SGIX_ir_instrument1; } +#endif +#ifdef GL_SGIX_shadow_ambient if (!strcmp(name, "GL_SGIX_shadow_ambient")) { return GL_SGIX_shadow_ambient; } +#endif +#ifdef GL_SGIX_vertex_preclip if (!strcmp(name, "GL_SGIX_vertex_preclip")) { return GL_SGIX_vertex_preclip; } +#endif +#ifdef GL_SHADER_IMAGE_ATOMIC if (!strcmp(name, "GL_SHADER_IMAGE_ATOMIC")) { return GL_SHADER_IMAGE_ATOMIC; } +#endif +#ifdef GL_SHADER_OPERATION_NV if (!strcmp(name, "GL_SHADER_OPERATION_NV")) { return GL_SHADER_OPERATION_NV; } +#endif +#ifdef GL_SHADOW_AMBIENT_SGIX if (!strcmp(name, "GL_SHADOW_AMBIENT_SGIX")) { return GL_SHADOW_AMBIENT_SGIX; } +#endif +#ifdef GL_SIGNED_INTENSITY_NV +if (!strcmp(name, "GL_SIGNED_INTENSITY_NV")) +{ + return GL_SIGNED_INTENSITY_NV; +} +#endif +#ifdef GL_SIGNED_INTENSITY_NV if (!strcmp(name, "GL_SIGNED_INTENSITY_NV")) { return GL_SIGNED_INTENSITY_NV; } +#endif +#ifdef GL_SIGNED_LUMINANCE_NV if (!strcmp(name, "GL_SIGNED_LUMINANCE_NV")) { return GL_SIGNED_LUMINANCE_NV; } -if (!strcmp(name, "GL_SMALL_CCW_ARC_TO_NV")) +#endif +#ifdef GL_SIGNED_LUMINANCE_NV +if (!strcmp(name, "GL_SIGNED_LUMINANCE_NV")) +{ + return GL_SIGNED_LUMINANCE_NV; +} +#endif +#ifdef GL_SMALL_CCW_ARC_TO_NV +if (!strcmp(name, "GL_SMALL_CCW_ARC_TO_NV")) { return GL_SMALL_CCW_ARC_TO_NV; } +#endif +#ifdef GL_STENCIL_CLEAR_VALUE if (!strcmp(name, "GL_STENCIL_CLEAR_VALUE")) { return GL_STENCIL_CLEAR_VALUE; } +#endif +#ifdef GL_STENCIL_INDEX16_EXT if (!strcmp(name, "GL_STENCIL_INDEX16_EXT")) { return GL_STENCIL_INDEX16_EXT; } +#endif +#ifdef GL_SWIZZLE_STRQ_DQ_ATI if (!strcmp(name, "GL_SWIZZLE_STRQ_DQ_ATI")) { return GL_SWIZZLE_STRQ_DQ_ATI; } +#endif +#ifdef GL_SYSTEM_FONT_NAME_NV if (!strcmp(name, "GL_SYSTEM_FONT_NAME_NV")) { return GL_SYSTEM_FONT_NAME_NV; } +#endif +#ifdef GL_TESS_CONTROL_SHADER if (!strcmp(name, "GL_TESS_CONTROL_SHADER")) { return GL_TESS_CONTROL_SHADER; } +#endif +#ifdef GL_TESS_GEN_POINT_MODE if (!strcmp(name, "GL_TESS_GEN_POINT_MODE")) { return GL_TESS_GEN_POINT_MODE; } +#endif +#ifdef GL_TEXTURE_BUFFER_SIZE if (!strcmp(name, "GL_TEXTURE_BUFFER_SIZE")) { return GL_TEXTURE_BUFFER_SIZE; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY")) { return GL_TEXTURE_COORD_ARRAY; } +#endif +#ifdef GL_TEXTURE_MAG_SIZE_NV if (!strcmp(name, "GL_TEXTURE_MAG_SIZE_NV")) { return GL_TEXTURE_MAG_SIZE_NV; } +#endif +#ifdef GL_TEXTURE_SHARED_SIZE if (!strcmp(name, "GL_TEXTURE_SHARED_SIZE")) { return GL_TEXTURE_SHARED_SIZE; } +#endif +#ifdef GL_TEXTURE_STACK_DEPTH if (!strcmp(name, "GL_TEXTURE_STACK_DEPTH")) { return GL_TEXTURE_STACK_DEPTH; } +#endif +#ifdef GL_TEXTURE_USAGE_ANGLE if (!strcmp(name, "GL_TEXTURE_USAGE_ANGLE")) { return GL_TEXTURE_USAGE_ANGLE; } +#endif +#ifdef GL_TRIANGLES_ADJACENCY if (!strcmp(name, "GL_TRIANGLES_ADJACENCY")) { return GL_TRIANGLES_ADJACENCY; } +#endif +#ifdef GL_UNIFORM_BARRIER_BIT if (!strcmp(name, "GL_UNIFORM_BARRIER_BIT")) { return GL_UNIFORM_BARRIER_BIT; } +#endif +#ifdef GL_UNIFORM_BLOCK_INDEX if (!strcmp(name, "GL_UNIFORM_BLOCK_INDEX")) { return GL_UNIFORM_BLOCK_INDEX; } +#endif +#ifdef GL_UNIFORM_BUFFER_SIZE if (!strcmp(name, "GL_UNIFORM_BUFFER_SIZE")) { return GL_UNIFORM_BUFFER_SIZE; } +#endif +#ifdef GL_UNIFORM_NAME_LENGTH if (!strcmp(name, "GL_UNIFORM_NAME_LENGTH")) { return GL_UNIFORM_NAME_LENGTH; } +#endif +#ifdef GL_UNPACK_IMAGE_HEIGHT if (!strcmp(name, "GL_UNPACK_IMAGE_HEIGHT")) { return GL_UNPACK_IMAGE_HEIGHT; } +#endif +#ifdef GL_UNPACK_RESAMPLE_OML if (!strcmp(name, "GL_UNPACK_RESAMPLE_OML")) { return GL_UNPACK_RESAMPLE_OML; } +#endif +#ifdef GL_UNSIGNED_BYTE_3_3_2 if (!strcmp(name, "GL_UNSIGNED_BYTE_3_3_2")) { return GL_UNSIGNED_BYTE_3_3_2; } +#endif +#ifdef GL_UNSIGNED_NORMALIZED if (!strcmp(name, "GL_UNSIGNED_NORMALIZED")) { return GL_UNSIGNED_NORMALIZED; } +#endif +#ifdef GL_VBO_FREE_MEMORY_ATI if (!strcmp(name, "GL_VBO_FREE_MEMORY_ATI")) { return GL_VBO_FREE_MEMORY_ATI; } +#endif +#ifdef GL_VERTEX_ARRAY_STRIDE if (!strcmp(name, "GL_VERTEX_ARRAY_STRIDE")) { return GL_VERTEX_ARRAY_STRIDE; } +#endif +#ifdef GL_VERTEX_PRECLIP_SGIX +if (!strcmp(name, "GL_VERTEX_PRECLIP_SGIX")) +{ + return GL_VERTEX_PRECLIP_SGIX; +} +#endif +#ifdef GL_VERTEX_PRECLIP_SGIX if (!strcmp(name, "GL_VERTEX_PRECLIP_SGIX")) { return GL_VERTEX_PRECLIP_SGIX; } +#endif +#ifdef GL_VERTICAL_LINE_TO_NV if (!strcmp(name, "GL_VERTICAL_LINE_TO_NV")) { return GL_VERTICAL_LINE_TO_NV; } +#endif +#ifdef GL_VIEW_CLASS_128_BITS if (!strcmp(name, "GL_VIEW_CLASS_128_BITS")) { return GL_VIEW_CLASS_128_BITS; } +#endif +#ifdef GL_VIEW_CLASS_RGTC2_RG if (!strcmp(name, "GL_VIEW_CLASS_RGTC2_RG")) { return GL_VIEW_CLASS_RGTC2_RG; } +#endif return _GL_UNDEFINED; case 23: +#ifdef GL_ALL_BARRIER_BITS_EXT if (!strcmp(name, "GL_ALL_BARRIER_BITS_EXT")) { return GL_ALL_BARRIER_BITS_EXT; } +#endif +#ifdef GL_ALPHA_MAX_CLAMP_INGR if (!strcmp(name, "GL_ALPHA_MAX_CLAMP_INGR")) { return GL_ALPHA_MAX_CLAMP_INGR; } +#endif +#ifdef GL_ALPHA_MIN_CLAMP_INGR if (!strcmp(name, "GL_ALPHA_MIN_CLAMP_INGR")) { return GL_ALPHA_MIN_CLAMP_INGR; } +#endif +#ifdef GL_ALWAYS_FAST_HINT_PGI if (!strcmp(name, "GL_ALWAYS_FAST_HINT_PGI")) { return GL_ALWAYS_FAST_HINT_PGI; } +#endif +#ifdef GL_ALWAYS_SOFT_HINT_PGI if (!strcmp(name, "GL_ALWAYS_SOFT_HINT_PGI")) { return GL_ALWAYS_SOFT_HINT_PGI; } +#endif +#ifdef GL_AMD_gpu_shader_int64 +if (!strcmp(name, "GL_AMD_gpu_shader_int64")) +{ + return GL_AMD_gpu_shader_int64; +} +#endif +#ifdef GL_AMD_sample_positions if (!strcmp(name, "GL_AMD_sample_positions")) { return GL_AMD_sample_positions; } +#endif +#ifdef GL_AMD_texture_texture4 if (!strcmp(name, "GL_AMD_texture_texture4")) { return GL_AMD_texture_texture4; } +#endif +#ifdef GL_ANGLE_program_binary if (!strcmp(name, "GL_ANGLE_program_binary")) { return GL_ANGLE_program_binary; } +#endif +#ifdef GL_APPLE_client_storage if (!strcmp(name, "GL_APPLE_client_storage")) { return GL_APPLE_client_storage; } +#endif +#ifdef GL_APPLE_transform_hint if (!strcmp(name, "GL_APPLE_transform_hint")) { return GL_APPLE_transform_hint; } +#endif +#ifdef GL_ARB_arrays_of_arrays if (!strcmp(name, "GL_ARB_arrays_of_arrays")) { return GL_ARB_arrays_of_arrays; } +#endif +#ifdef GL_ARB_bindless_texture if (!strcmp(name, "GL_ARB_bindless_texture")) { return GL_ARB_bindless_texture; } +#endif +#ifdef GL_ARB_enhanced_layouts if (!strcmp(name, "GL_ARB_enhanced_layouts")) { return GL_ARB_enhanced_layouts; } +#endif +#ifdef GL_ARB_fragment_program if (!strcmp(name, "GL_ARB_fragment_program")) { return GL_ARB_fragment_program; } +#endif +#ifdef GL_ARB_framebuffer_sRGB if (!strcmp(name, "GL_ARB_framebuffer_sRGB")) { return GL_ARB_framebuffer_sRGB; } +#endif +#ifdef GL_ARB_geometry_shader4 if (!strcmp(name, "GL_ARB_geometry_shader4")) { return GL_ARB_geometry_shader4; } +#endif +#ifdef GL_ARB_gpu_shader_int64 +if (!strcmp(name, "GL_ARB_gpu_shader_int64")) +{ + return GL_ARB_gpu_shader_int64; +} +#endif +#ifdef GL_ARB_half_float_pixel if (!strcmp(name, "GL_ARB_half_float_pixel")) { return GL_ARB_half_float_pixel; } +#endif +#ifdef GL_ARB_instanced_arrays if (!strcmp(name, "GL_ARB_instanced_arrays")) { return GL_ARB_instanced_arrays; } +#endif +#ifdef GL_ARB_map_buffer_range if (!strcmp(name, "GL_ARB_map_buffer_range")) { return GL_ARB_map_buffer_range; } +#endif +#ifdef GL_ARB_occlusion_query2 if (!strcmp(name, "GL_ARB_occlusion_query2")) { return GL_ARB_occlusion_query2; } +#endif +#ifdef GL_ARB_point_parameters if (!strcmp(name, "GL_ARB_point_parameters")) { return GL_ARB_point_parameters; } +#endif +#ifdef GL_ARB_provoking_vertex if (!strcmp(name, "GL_ARB_provoking_vertex")) { return GL_ARB_provoking_vertex; } +#endif +#ifdef GL_ARB_sample_locations +if (!strcmp(name, "GL_ARB_sample_locations")) +{ + return GL_ARB_sample_locations; +} +#endif +#ifdef GL_ARB_shader_precision if (!strcmp(name, "GL_ARB_shader_precision")) { return GL_ARB_shader_precision; } +#endif +#ifdef GL_ARB_texture_cube_map if (!strcmp(name, "GL_ARB_texture_cube_map")) { return GL_ARB_texture_cube_map; } +#endif +#ifdef GL_ARB_texture_env_dot3 if (!strcmp(name, "GL_ARB_texture_env_dot3")) { return GL_ARB_texture_env_dot3; } +#endif +#ifdef GL_ARB_texture_stencil8 if (!strcmp(name, "GL_ARB_texture_stencil8")) { return GL_ARB_texture_stencil8; } +#endif +#ifdef GL_ARB_transpose_matrix if (!strcmp(name, "GL_ARB_transpose_matrix")) { return GL_ARB_transpose_matrix; } +#endif +#ifdef GL_ARRAY_BUFFER_BINDING if (!strcmp(name, "GL_ARRAY_BUFFER_BINDING")) { return GL_ARRAY_BUFFER_BINDING; } +#endif +#ifdef GL_ASYNC_HISTOGRAM_SGIX if (!strcmp(name, "GL_ASYNC_HISTOGRAM_SGIX")) { return GL_ASYNC_HISTOGRAM_SGIX; } +#endif +#ifdef GL_ASYNC_TEX_IMAGE_SGIX if (!strcmp(name, "GL_ASYNC_TEX_IMAGE_SGIX")) { return GL_ASYNC_TEX_IMAGE_SGIX; } +#endif +#ifdef GL_ATI_separate_stencil if (!strcmp(name, "GL_ATI_separate_stencil")) { return GL_ATI_separate_stencil; } +#endif +#ifdef GL_ATTRIB_ARRAY_SIZE_NV if (!strcmp(name, "GL_ATTRIB_ARRAY_SIZE_NV")) { return GL_ATTRIB_ARRAY_SIZE_NV; } +#endif +#ifdef GL_ATTRIB_ARRAY_TYPE_NV if (!strcmp(name, "GL_ATTRIB_ARRAY_TYPE_NV")) { return GL_ATTRIB_ARRAY_TYPE_NV; } +#endif +#ifdef GL_AUTO_GENERATE_MIPMAP if (!strcmp(name, "GL_AUTO_GENERATE_MIPMAP")) { return GL_AUTO_GENERATE_MIPMAP; } +#endif +#ifdef GL_BLEND_EQUATION_ALPHA if (!strcmp(name, "GL_BLEND_EQUATION_ALPHA")) { return GL_BLEND_EQUATION_ALPHA; } +#endif +#ifdef GL_BUFFER_STORAGE_FLAGS if (!strcmp(name, "GL_BUFFER_STORAGE_FLAGS")) { return GL_BUFFER_STORAGE_FLAGS; } +#endif +#ifdef GL_CG_VERTEX_SHADER_EXT if (!strcmp(name, "GL_CG_VERTEX_SHADER_EXT")) { return GL_CG_VERTEX_SHADER_EXT; } +#endif +#ifdef GL_CLAMP_FRAGMENT_COLOR if (!strcmp(name, "GL_CLAMP_FRAGMENT_COLOR")) { return GL_CLAMP_FRAGMENT_COLOR; } +#endif +#ifdef GL_CLAMP_READ_COLOR_ARB if (!strcmp(name, "GL_CLAMP_READ_COLOR_ARB")) { return GL_CLAMP_READ_COLOR_ARB; } +#endif +#ifdef GL_CLAMP_TO_BORDER_SGIS if (!strcmp(name, "GL_CLAMP_TO_BORDER_SGIS")) { return GL_CLAMP_TO_BORDER_SGIS; } +#endif +#ifdef GL_COLOR_ARRAY_LIST_IBM if (!strcmp(name, "GL_COLOR_ARRAY_LIST_IBM")) { return GL_COLOR_ARRAY_LIST_IBM; } +#endif +#ifdef GL_COLOR_ARRAY_SIZE_EXT if (!strcmp(name, "GL_COLOR_ARRAY_SIZE_EXT")) { return GL_COLOR_ARRAY_SIZE_EXT; } +#endif +#ifdef GL_COLOR_ARRAY_TYPE_EXT if (!strcmp(name, "GL_COLOR_ARRAY_TYPE_EXT")) { return GL_COLOR_ARRAY_TYPE_EXT; } +#endif +#ifdef GL_COLOR_TABLE_BIAS_SGI if (!strcmp(name, "GL_COLOR_TABLE_BIAS_SGI")) { return GL_COLOR_TABLE_BIAS_SGI; } +#endif +#ifdef GL_COLOR_TABLE_RED_SIZE if (!strcmp(name, "GL_COLOR_TABLE_RED_SIZE")) { return GL_COLOR_TABLE_RED_SIZE; } +#endif +#ifdef GL_COMPARE_R_TO_TEXTURE if (!strcmp(name, "GL_COMPARE_R_TO_TEXTURE")) { return GL_COMPARE_R_TO_TEXTURE; } +#endif +#ifdef GL_COMPRESSED_ALPHA_ARB if (!strcmp(name, "GL_COMPRESSED_ALPHA_ARB")) { return GL_COMPRESSED_ALPHA_ARB; } +#endif +#ifdef GL_COMPRESSED_INTENSITY if (!strcmp(name, "GL_COMPRESSED_INTENSITY")) { return GL_COMPRESSED_INTENSITY; } +#endif +#ifdef GL_COMPRESSED_LUMINANCE if (!strcmp(name, "GL_COMPRESSED_LUMINANCE")) { return GL_COMPRESSED_LUMINANCE; } +#endif +#ifdef GL_COMPRESSED_RED_RGTC1 if (!strcmp(name, "GL_COMPRESSED_RED_RGTC1")) { return GL_COMPRESSED_RED_RGTC1; } +#endif +#ifdef GL_COMPRESSED_RGB8_ETC2 if (!strcmp(name, "GL_COMPRESSED_RGB8_ETC2")) { return GL_COMPRESSED_RGB8_ETC2; } +#endif +#ifdef GL_CONSTANT_ATTENUATION if (!strcmp(name, "GL_CONSTANT_ATTENUATION")) { return GL_CONSTANT_ATTENUATION; } +#endif +#ifdef GL_CONTEXT_PROFILE_MASK if (!strcmp(name, "GL_CONTEXT_PROFILE_MASK")) { return GL_CONTEXT_PROFILE_MASK; } +#endif +#ifdef GL_CURRENT_BINORMAL_EXT if (!strcmp(name, "GL_CURRENT_BINORMAL_EXT")) { return GL_CURRENT_BINORMAL_EXT; } +#endif +#ifdef GL_CURRENT_RASTER_COLOR if (!strcmp(name, "GL_CURRENT_RASTER_COLOR")) { return GL_CURRENT_RASTER_COLOR; } +#endif +#ifdef GL_CURRENT_RASTER_INDEX if (!strcmp(name, "GL_CURRENT_RASTER_INDEX")) { return GL_CURRENT_RASTER_INDEX; } +#endif +#ifdef GL_DEBUG_SOURCE_API_ARB if (!strcmp(name, "GL_DEBUG_SOURCE_API_ARB")) { return GL_DEBUG_SOURCE_API_ARB; } +#endif +#ifdef GL_DEBUG_TYPE_ERROR_ARB if (!strcmp(name, "GL_DEBUG_TYPE_ERROR_ARB")) { return GL_DEBUG_TYPE_ERROR_ARB; } +#endif +#ifdef GL_DEBUG_TYPE_OTHER_ARB if (!strcmp(name, "GL_DEBUG_TYPE_OTHER_ARB")) { return GL_DEBUG_TYPE_OTHER_ARB; } +#endif +#ifdef GL_DEBUG_TYPE_POP_GROUP if (!strcmp(name, "GL_DEBUG_TYPE_POP_GROUP")) { return GL_DEBUG_TYPE_POP_GROUP; } +#endif +#ifdef GL_DEPTH24_STENCIL8_EXT if (!strcmp(name, "GL_DEPTH24_STENCIL8_EXT")) { return GL_DEPTH24_STENCIL8_EXT; } +#endif +#ifdef GL_DEPTH32F_STENCIL8_NV if (!strcmp(name, "GL_DEPTH32F_STENCIL8_NV")) { return GL_DEPTH32F_STENCIL8_NV; } +#endif +#ifdef GL_DEPTH_ATTACHMENT_EXT if (!strcmp(name, "GL_DEPTH_ATTACHMENT_EXT")) { return GL_DEPTH_ATTACHMENT_EXT; } +#endif +#ifdef GL_DEPTH_CLAMP_NEAR_AMD if (!strcmp(name, "GL_DEPTH_CLAMP_NEAR_AMD")) { return GL_DEPTH_CLAMP_NEAR_AMD; } +#endif +#ifdef GL_DRAW_FRAMEBUFFER_EXT if (!strcmp(name, "GL_DRAW_FRAMEBUFFER_EXT")) { return GL_DRAW_FRAMEBUFFER_EXT; } +#endif +#ifdef GL_DRAW_INDIRECT_BUFFER if (!strcmp(name, "GL_DRAW_INDIRECT_BUFFER")) { return GL_DRAW_INDIRECT_BUFFER; } +#endif +#ifdef GL_ELEMENT_ARRAY_BUFFER if (!strcmp(name, "GL_ELEMENT_ARRAY_BUFFER")) { return GL_ELEMENT_ARRAY_BUFFER; } +#endif +#ifdef GL_EXT_bindable_uniform if (!strcmp(name, "GL_EXT_bindable_uniform")) { return GL_EXT_bindable_uniform; } +#endif +#ifdef GL_EXT_clip_volume_hint if (!strcmp(name, "GL_EXT_clip_volume_hint")) { return GL_EXT_clip_volume_hint; } +#endif +#ifdef GL_EXT_coordinate_frame if (!strcmp(name, "GL_EXT_coordinate_frame")) { return GL_EXT_coordinate_frame; } +#endif +#ifdef GL_EXT_framebuffer_blit if (!strcmp(name, "GL_EXT_framebuffer_blit")) { return GL_EXT_framebuffer_blit; } +#endif +#ifdef GL_EXT_framebuffer_sRGB if (!strcmp(name, "GL_EXT_framebuffer_sRGB")) { return GL_EXT_framebuffer_sRGB; } +#endif +#ifdef GL_EXT_geometry_shader4 if (!strcmp(name, "GL_EXT_geometry_shader4")) { return GL_EXT_geometry_shader4; } +#endif +#ifdef GL_EXT_paletted_texture if (!strcmp(name, "GL_EXT_paletted_texture")) { return GL_EXT_paletted_texture; } +#endif +#ifdef GL_EXT_point_parameters if (!strcmp(name, "GL_EXT_point_parameters")) { return GL_EXT_point_parameters; } +#endif +#ifdef GL_EXT_provoking_vertex if (!strcmp(name, "GL_EXT_provoking_vertex")) { return GL_EXT_provoking_vertex; } +#endif +#ifdef GL_EXT_stencil_two_side if (!strcmp(name, "GL_EXT_stencil_two_side")) { return GL_EXT_stencil_two_side; } +#endif +#ifdef GL_EXT_texture_cube_map if (!strcmp(name, "GL_EXT_texture_cube_map")) { return GL_EXT_texture_cube_map; } +#endif +#ifdef GL_EXT_texture_env_dot3 if (!strcmp(name, "GL_EXT_texture_env_dot3")) { return GL_EXT_texture_env_dot3; } +#endif +#ifdef GL_EXT_texture_lod_bias if (!strcmp(name, "GL_EXT_texture_lod_bias")) { return GL_EXT_texture_lod_bias; } +#endif +#ifdef GL_EXT_vertex_weighting if (!strcmp(name, "GL_EXT_vertex_weighting")) { return GL_EXT_vertex_weighting; } +#endif +#ifdef GL_FEEDBACK_BUFFER_SIZE if (!strcmp(name, "GL_FEEDBACK_BUFFER_SIZE")) { return GL_FEEDBACK_BUFFER_SIZE; } +#endif +#ifdef GL_FEEDBACK_BUFFER_TYPE if (!strcmp(name, "GL_FEEDBACK_BUFFER_TYPE")) { return GL_FEEDBACK_BUFFER_TYPE; } -if (!strcmp(name, "GL_FOG_COORD_ARRAY_TYPE")) -{ - return GL_FOG_COORD_ARRAY_TYPE; -} +#endif +#ifdef GL_FOG_COORDINATE_ARRAY if (!strcmp(name, "GL_FOG_COORDINATE_ARRAY")) { return GL_FOG_COORDINATE_ARRAY; } +#endif +#ifdef GL_FOG_COORD_ARRAY_TYPE +if (!strcmp(name, "GL_FOG_COORD_ARRAY_TYPE")) +{ + return GL_FOG_COORD_ARRAY_TYPE; +} +#endif +#ifdef GL_FOG_DISTANCE_MODE_NV if (!strcmp(name, "GL_FOG_DISTANCE_MODE_NV")) { return GL_FOG_DISTANCE_MODE_NV; } +#endif +#ifdef GL_FONT_ASCENDER_BIT_NV if (!strcmp(name, "GL_FONT_ASCENDER_BIT_NV")) { return GL_FONT_ASCENDER_BIT_NV; } +#endif +#ifdef GL_FORCE_BLUE_TO_ONE_NV if (!strcmp(name, "GL_FORCE_BLUE_TO_ONE_NV")) { return GL_FORCE_BLUE_TO_ONE_NV; } +#endif +#ifdef GL_FRAGMENT_PROGRAM_ARB if (!strcmp(name, "GL_FRAGMENT_PROGRAM_ARB")) { return GL_FRAGMENT_PROGRAM_ARB; } +#endif +#ifdef GL_FRAMEBUFFER_COMPLETE if (!strcmp(name, "GL_FRAMEBUFFER_COMPLETE")) { return GL_FRAMEBUFFER_COMPLETE; } +#endif +#ifdef GL_FRAMEBUFFER_SRGB_EXT if (!strcmp(name, "GL_FRAMEBUFFER_SRGB_EXT")) { return GL_FRAMEBUFFER_SRGB_EXT; } +#endif +#ifdef GL_GENERATE_MIPMAP_HINT if (!strcmp(name, "GL_GENERATE_MIPMAP_HINT")) { return GL_GENERATE_MIPMAP_HINT; } +#endif +#ifdef GL_GENERATE_MIPMAP_SGIS if (!strcmp(name, "GL_GENERATE_MIPMAP_SGIS")) { return GL_GENERATE_MIPMAP_SGIS; } +#endif +#ifdef GL_GEOMETRY_OUTPUT_TYPE if (!strcmp(name, "GL_GEOMETRY_OUTPUT_TYPE")) { return GL_GEOMETRY_OUTPUT_TYPE; } +#endif +#ifdef GL_GREEN_MAX_CLAMP_INGR if (!strcmp(name, "GL_GREEN_MAX_CLAMP_INGR")) { return GL_GREEN_MAX_CLAMP_INGR; } +#endif +#ifdef GL_GREEN_MIN_CLAMP_INGR if (!strcmp(name, "GL_GREEN_MIN_CLAMP_INGR")) { return GL_GREEN_MIN_CLAMP_INGR; } +#endif +#ifdef GL_GUILTY_CONTEXT_RESET +if (!strcmp(name, "GL_GUILTY_CONTEXT_RESET")) +{ + return GL_GUILTY_CONTEXT_RESET; +} +#endif +#ifdef GL_HISTOGRAM_ALPHA_SIZE if (!strcmp(name, "GL_HISTOGRAM_ALPHA_SIZE")) { return GL_HISTOGRAM_ALPHA_SIZE; } +#endif +#ifdef GL_HISTOGRAM_FORMAT_EXT if (!strcmp(name, "GL_HISTOGRAM_FORMAT_EXT")) { return GL_HISTOGRAM_FORMAT_EXT; } +#endif +#ifdef GL_HISTOGRAM_GREEN_SIZE if (!strcmp(name, "GL_HISTOGRAM_GREEN_SIZE")) { return GL_HISTOGRAM_GREEN_SIZE; } +#endif +#ifdef GL_IMAGE_2D_MULTISAMPLE if (!strcmp(name, "GL_IMAGE_2D_MULTISAMPLE")) { return GL_IMAGE_2D_MULTISAMPLE; } +#endif +#ifdef GL_IMAGE_BINDING_ACCESS if (!strcmp(name, "GL_IMAGE_BINDING_ACCESS")) { return GL_IMAGE_BINDING_ACCESS; } +#endif +#ifdef GL_IMAGE_BINDING_FORMAT if (!strcmp(name, "GL_IMAGE_BINDING_FORMAT")) { return GL_IMAGE_BINDING_FORMAT; } +#endif +#ifdef GL_IMAGE_CLASS_11_11_10 if (!strcmp(name, "GL_IMAGE_CLASS_11_11_10")) { return GL_IMAGE_CLASS_11_11_10; } +#endif +#ifdef GL_IMAGE_CUBE_MAP_ARRAY if (!strcmp(name, "GL_IMAGE_CUBE_MAP_ARRAY")) { return GL_IMAGE_CUBE_MAP_ARRAY; } +#endif +#ifdef GL_INDEX_ARRAY_LIST_IBM if (!strcmp(name, "GL_INDEX_ARRAY_LIST_IBM")) { return GL_INDEX_ARRAY_LIST_IBM; } +#endif +#ifdef GL_INDEX_ARRAY_TYPE_EXT if (!strcmp(name, "GL_INDEX_ARRAY_TYPE_EXT")) { return GL_INDEX_ARRAY_TYPE_EXT; } +#endif +#ifdef GL_INT_IMAGE_BUFFER_EXT if (!strcmp(name, "GL_INT_IMAGE_BUFFER_EXT")) { return GL_INT_IMAGE_BUFFER_EXT; } +#endif +#ifdef GL_INT_SAMPLER_1D_ARRAY if (!strcmp(name, "GL_INT_SAMPLER_1D_ARRAY")) { return GL_INT_SAMPLER_1D_ARRAY; } +#endif +#ifdef GL_INT_SAMPLER_2D_ARRAY if (!strcmp(name, "GL_INT_SAMPLER_2D_ARRAY")) { return GL_INT_SAMPLER_2D_ARRAY; } +#endif +#ifdef GL_INT_SAMPLER_CUBE_EXT if (!strcmp(name, "GL_INT_SAMPLER_CUBE_EXT")) { return GL_INT_SAMPLER_CUBE_EXT; } +#endif +#ifdef GL_INVERSE_TRANSPOSE_NV if (!strcmp(name, "GL_INVERSE_TRANSPOSE_NV")) { return GL_INVERSE_TRANSPOSE_NV; } +#endif +#ifdef GL_LAYOUT_DEFAULT_INTEL if (!strcmp(name, "GL_LAYOUT_DEFAULT_INTEL")) { return GL_LAYOUT_DEFAULT_INTEL; } +#endif +#ifdef GL_LIGHT_MODEL_TWO_SIDE if (!strcmp(name, "GL_LIGHT_MODEL_TWO_SIDE")) { return GL_LIGHT_MODEL_TWO_SIDE; } +#endif +#ifdef GL_LINEAR_MIPMAP_LINEAR if (!strcmp(name, "GL_LINEAR_MIPMAP_LINEAR")) { return GL_LINEAR_MIPMAP_LINEAR; } +#endif +#ifdef GL_LINE_STIPPLE_PATTERN if (!strcmp(name, "GL_LINE_STIPPLE_PATTERN")) { return GL_LINE_STIPPLE_PATTERN; } +#endif +#ifdef GL_LINE_STRIP_ADJACENCY if (!strcmp(name, "GL_LINE_STRIP_ADJACENCY")) { return GL_LINE_STRIP_ADJACENCY; } +#endif +#ifdef GL_MAP1_TEXTURE_COORD_1 if (!strcmp(name, "GL_MAP1_TEXTURE_COORD_1")) { return GL_MAP1_TEXTURE_COORD_1; } +#endif +#ifdef GL_MAP1_TEXTURE_COORD_2 if (!strcmp(name, "GL_MAP1_TEXTURE_COORD_2")) { return GL_MAP1_TEXTURE_COORD_2; } +#endif +#ifdef GL_MAP1_TEXTURE_COORD_3 if (!strcmp(name, "GL_MAP1_TEXTURE_COORD_3")) { return GL_MAP1_TEXTURE_COORD_3; } +#endif +#ifdef GL_MAP1_TEXTURE_COORD_4 if (!strcmp(name, "GL_MAP1_TEXTURE_COORD_4")) { return GL_MAP1_TEXTURE_COORD_4; } +#endif +#ifdef GL_MAP2_TEXTURE_COORD_1 if (!strcmp(name, "GL_MAP2_TEXTURE_COORD_1")) { return GL_MAP2_TEXTURE_COORD_1; } +#endif +#ifdef GL_MAP2_TEXTURE_COORD_2 if (!strcmp(name, "GL_MAP2_TEXTURE_COORD_2")) { return GL_MAP2_TEXTURE_COORD_2; } +#endif +#ifdef GL_MAP2_TEXTURE_COORD_3 if (!strcmp(name, "GL_MAP2_TEXTURE_COORD_3")) { return GL_MAP2_TEXTURE_COORD_3; } +#endif +#ifdef GL_MAP2_TEXTURE_COORD_4 if (!strcmp(name, "GL_MAP2_TEXTURE_COORD_4")) { return GL_MAP2_TEXTURE_COORD_4; } +#endif +#ifdef GL_MAT_EMISSION_BIT_PGI if (!strcmp(name, "GL_MAT_EMISSION_BIT_PGI")) { return GL_MAT_EMISSION_BIT_PGI; } +#endif +#ifdef GL_MAT_SPECULAR_BIT_PGI if (!strcmp(name, "GL_MAT_SPECULAR_BIT_PGI")) { return GL_MAT_SPECULAR_BIT_PGI; } +#endif +#ifdef GL_MAX_DRAW_BUFFERS_ARB if (!strcmp(name, "GL_MAX_DRAW_BUFFERS_ARB")) { return GL_MAX_DRAW_BUFFERS_ARB; } +#endif +#ifdef GL_MAX_DRAW_BUFFERS_ATI if (!strcmp(name, "GL_MAX_DRAW_BUFFERS_ATI")) { return GL_MAX_DRAW_BUFFERS_ATI; } +#endif +#ifdef GL_MAX_ELEMENTS_INDICES if (!strcmp(name, "GL_MAX_ELEMENTS_INDICES")) { return GL_MAX_ELEMENTS_INDICES; } +#endif +#ifdef GL_MAX_NAME_STACK_DEPTH if (!strcmp(name, "GL_MAX_NAME_STACK_DEPTH")) { return GL_MAX_NAME_STACK_DEPTH; } +#endif +#ifdef GL_MAX_SPOT_EXPONENT_NV if (!strcmp(name, "GL_MAX_SPOT_EXPONENT_NV")) { return GL_MAX_SPOT_EXPONENT_NV; } +#endif +#ifdef GL_MAX_TEXTURE_LOD_BIAS if (!strcmp(name, "GL_MAX_TEXTURE_LOD_BIAS")) { return GL_MAX_TEXTURE_LOD_BIAS; } +#endif +#ifdef GL_MAX_VERTEX_UNITS_ARB if (!strcmp(name, "GL_MAX_VERTEX_UNITS_ARB")) { return GL_MAX_VERTEX_UNITS_ARB; } +#endif +#ifdef GL_MIN_SPARSE_LEVEL_AMD if (!strcmp(name, "GL_MIN_SPARSE_LEVEL_AMD")) { return GL_MIN_SPARSE_LEVEL_AMD; } +#endif +#ifdef GL_MIRROR_CLAMP_TO_EDGE if (!strcmp(name, "GL_MIRROR_CLAMP_TO_EDGE")) { return GL_MIRROR_CLAMP_TO_EDGE; } +#endif +#ifdef GL_MOVE_TO_CONTINUES_NV if (!strcmp(name, "GL_MOVE_TO_CONTINUES_NV")) { return GL_MOVE_TO_CONTINUES_NV; } +#endif +#ifdef GL_MULTISAMPLE_BIT_3DFX if (!strcmp(name, "GL_MULTISAMPLE_BIT_3DFX")) { return GL_MULTISAMPLE_BIT_3DFX; } -if (!strcmp(name, "GL_NORMAL_ARRAY_POINTER")) -{ - return GL_NORMAL_ARRAY_POINTER; -} +#endif +#ifdef GL_NORMALIZED_RANGE_EXT if (!strcmp(name, "GL_NORMALIZED_RANGE_EXT")) { return GL_NORMALIZED_RANGE_EXT; } +#endif +#ifdef GL_NORMAL_ARRAY_POINTER +if (!strcmp(name, "GL_NORMAL_ARRAY_POINTER")) +{ + return GL_NORMAL_ARRAY_POINTER; +} +#endif +#ifdef GL_NUM_ACTIVE_VARIABLES if (!strcmp(name, "GL_NUM_ACTIVE_VARIABLES")) { return GL_NUM_ACTIVE_VARIABLES; } +#endif +#ifdef GL_NV_fragment_program2 if (!strcmp(name, "GL_NV_fragment_program2")) { return GL_NV_fragment_program2; } +#endif +#ifdef GL_NV_fragment_program4 if (!strcmp(name, "GL_NV_fragment_program4")) { return GL_NV_fragment_program4; } +#endif +#ifdef GL_NV_geometry_program4 if (!strcmp(name, "GL_NV_geometry_program4")) { return GL_NV_geometry_program4; } +#endif +#ifdef GL_NV_primitive_restart if (!strcmp(name, "GL_NV_primitive_restart")) { return GL_NV_primitive_restart; } +#endif +#ifdef GL_NV_texgen_reflection if (!strcmp(name, "GL_NV_texgen_reflection")) { return GL_NV_texgen_reflection; } +#endif +#ifdef GL_NV_texture_rectangle if (!strcmp(name, "GL_NV_texture_rectangle")) { return GL_NV_texture_rectangle; } +#endif +#ifdef GL_NV_vertex_program1_1 if (!strcmp(name, "GL_NV_vertex_program1_1")) { return GL_NV_vertex_program1_1; } +#endif +#ifdef GL_OES_byte_coordinates if (!strcmp(name, "GL_OES_byte_coordinates")) { return GL_OES_byte_coordinates; } +#endif +#ifdef GL_OES_single_precision if (!strcmp(name, "GL_OES_single_precision")) { return GL_OES_single_precision; } +#endif +#ifdef GL_OFFSET_TEXTURE_2D_NV if (!strcmp(name, "GL_OFFSET_TEXTURE_2D_NV")) { return GL_OFFSET_TEXTURE_2D_NV; } +#endif +#ifdef GL_ONE_MINUS_SRC1_ALPHA if (!strcmp(name, "GL_ONE_MINUS_SRC1_ALPHA")) { return GL_ONE_MINUS_SRC1_ALPHA; } +#endif +#ifdef GL_ONE_MINUS_SRC1_COLOR if (!strcmp(name, "GL_ONE_MINUS_SRC1_COLOR")) { return GL_ONE_MINUS_SRC1_COLOR; } +#endif +#ifdef GL_OP_CROSS_PRODUCT_EXT if (!strcmp(name, "GL_OP_CROSS_PRODUCT_EXT")) { return GL_OP_CROSS_PRODUCT_EXT; } +#endif +#ifdef GL_PACK_ROW_BYTES_APPLE if (!strcmp(name, "GL_PACK_ROW_BYTES_APPLE")) { return GL_PACK_ROW_BYTES_APPLE; } +#endif +#ifdef GL_PACK_SKIP_IMAGES_EXT if (!strcmp(name, "GL_PACK_SKIP_IMAGES_EXT")) { return GL_PACK_SKIP_IMAGES_EXT; } +#endif +#ifdef GL_PALETTE4_RGB5_A1_OES if (!strcmp(name, "GL_PALETTE4_RGB5_A1_OES")) { return GL_PALETTE4_RGB5_A1_OES; } +#endif +#ifdef GL_PALETTE8_RGB5_A1_OES if (!strcmp(name, "GL_PALETTE8_RGB5_A1_OES")) { return GL_PALETTE8_RGB5_A1_OES; } +#endif +#ifdef GL_PARAMETER_BUFFER_ARB if (!strcmp(name, "GL_PARAMETER_BUFFER_ARB")) { return GL_PARAMETER_BUFFER_ARB; } +#endif +#ifdef GL_PATH_FOG_GEN_MODE_NV if (!strcmp(name, "GL_PATH_FOG_GEN_MODE_NV")) { return GL_PATH_FOG_GEN_MODE_NV; } +#endif +#ifdef GL_PATH_STENCIL_FUNC_NV if (!strcmp(name, "GL_PATH_STENCIL_FUNC_NV")) { return GL_PATH_STENCIL_FUNC_NV; } +#endif +#ifdef GL_PATH_STROKE_BOUND_NV +if (!strcmp(name, "GL_PATH_STROKE_BOUND_NV")) +{ + return GL_PATH_STROKE_BOUND_NV; +} +#endif +#ifdef GL_PATH_STROKE_WIDTH_NV if (!strcmp(name, "GL_PATH_STROKE_WIDTH_NV")) { return GL_PATH_STROKE_WIDTH_NV; } +#endif +#ifdef GL_PERFQUERY_WAIT_INTEL +if (!strcmp(name, "GL_PERFQUERY_WAIT_INTEL")) +{ + return GL_PERFQUERY_WAIT_INTEL; +} +#endif +#ifdef GL_PIXEL_MAG_FILTER_EXT if (!strcmp(name, "GL_PIXEL_MAG_FILTER_EXT")) { return GL_PIXEL_MAG_FILTER_EXT; } +#endif +#ifdef GL_PIXEL_MIN_FILTER_EXT if (!strcmp(name, "GL_PIXEL_MIN_FILTER_EXT")) { return GL_PIXEL_MIN_FILTER_EXT; } +#endif +#ifdef GL_POLYGON_OFFSET_POINT if (!strcmp(name, "GL_POLYGON_OFFSET_POINT")) { return GL_POLYGON_OFFSET_POINT; } +#endif +#ifdef GL_POLYGON_OFFSET_UNITS if (!strcmp(name, "GL_POLYGON_OFFSET_UNITS")) { return GL_POLYGON_OFFSET_UNITS; } -if (!strcmp(name, "GL_PRIMITIVE_RESTART_NV")) -{ - return GL_PRIMITIVE_RESTART_NV; -} +#endif +#ifdef GL_PRIMITIVES_GENERATED if (!strcmp(name, "GL_PRIMITIVES_GENERATED")) { return GL_PRIMITIVES_GENERATED; } +#endif +#ifdef GL_PRIMITIVE_RESTART_NV +if (!strcmp(name, "GL_PRIMITIVE_RESTART_NV")) +{ + return GL_PRIMITIVE_RESTART_NV; +} +#endif +#ifdef GL_PROGRAM_BINARY_ANGLE if (!strcmp(name, "GL_PROGRAM_BINARY_ANGLE")) { return GL_PROGRAM_BINARY_ANGLE; } +#endif +#ifdef GL_PROGRAM_PARAMETER_NV if (!strcmp(name, "GL_PROGRAM_PARAMETER_NV")) { return GL_PROGRAM_PARAMETER_NV; } +#endif +#ifdef GL_PROVOKING_VERTEX_EXT if (!strcmp(name, "GL_PROVOKING_VERTEX_EXT")) { return GL_PROVOKING_VERTEX_EXT; } +#endif +#ifdef GL_PROXY_TEXTURE_1D_EXT if (!strcmp(name, "GL_PROXY_TEXTURE_1D_EXT")) { return GL_PROXY_TEXTURE_1D_EXT; } +#endif +#ifdef GL_PROXY_TEXTURE_2D_EXT if (!strcmp(name, "GL_PROXY_TEXTURE_2D_EXT")) { return GL_PROXY_TEXTURE_2D_EXT; } +#endif +#ifdef GL_PROXY_TEXTURE_3D_EXT if (!strcmp(name, "GL_PROXY_TEXTURE_3D_EXT")) { return GL_PROXY_TEXTURE_3D_EXT; } +#endif +#ifdef GL_QUERY_BUFFER_BINDING if (!strcmp(name, "GL_QUERY_BUFFER_BINDING")) { return GL_QUERY_BUFFER_BINDING; } +#endif +#ifdef GL_QUERY_BY_REGION_WAIT if (!strcmp(name, "GL_QUERY_BY_REGION_WAIT")) { return GL_QUERY_BY_REGION_WAIT; } +#endif +#ifdef GL_QUERY_RESULT_NO_WAIT if (!strcmp(name, "GL_QUERY_RESULT_NO_WAIT")) { return GL_QUERY_RESULT_NO_WAIT; } +#endif +#ifdef GL_R1UI_C4F_N3F_V3F_SUN if (!strcmp(name, "GL_R1UI_C4F_N3F_V3F_SUN")) { return GL_R1UI_C4F_N3F_V3F_SUN; } +#endif +#ifdef GL_R1UI_T2F_N3F_V3F_SUN if (!strcmp(name, "GL_R1UI_T2F_N3F_V3F_SUN")) { return GL_R1UI_T2F_N3F_V3F_SUN; } +#endif +#ifdef GL_READ_FRAMEBUFFER_EXT if (!strcmp(name, "GL_READ_FRAMEBUFFER_EXT")) { return GL_READ_FRAMEBUFFER_EXT; } +#endif +#ifdef GL_RENDERBUFFER_BINDING if (!strcmp(name, "GL_RENDERBUFFER_BINDING")) { return GL_RENDERBUFFER_BINDING; } +#endif +#ifdef GL_RENDERBUFFER_SAMPLES if (!strcmp(name, "GL_RENDERBUFFER_SAMPLES")) { return GL_RENDERBUFFER_SAMPLES; } +#endif +#ifdef GL_REPLACEMENT_CODE_SUN if (!strcmp(name, "GL_REPLACEMENT_CODE_SUN")) { return GL_REPLACEMENT_CODE_SUN; } +#endif +#ifdef GL_RESAMPLE_AVERAGE_OML if (!strcmp(name, "GL_RESAMPLE_AVERAGE_OML")) { return GL_RESAMPLE_AVERAGE_OML; } -if (!strcmp(name, "GL_SAMPLE_COUNT_BITS_NV")) -{ - return GL_SAMPLE_COUNT_BITS_NV; -} -if (!strcmp(name, "GL_SAMPLE_MASK_VALUE_NV")) -{ - return GL_SAMPLE_MASK_VALUE_NV; -} +#endif +#ifdef GL_SAMPLER_1D_ARRAY_EXT if (!strcmp(name, "GL_SAMPLER_1D_ARRAY_EXT")) { return GL_SAMPLER_1D_ARRAY_EXT; } +#endif +#ifdef GL_SAMPLER_2D_ARRAY_EXT if (!strcmp(name, "GL_SAMPLER_2D_ARRAY_EXT")) { return GL_SAMPLER_2D_ARRAY_EXT; } +#endif +#ifdef GL_SAMPLE_COUNT_BITS_NV +if (!strcmp(name, "GL_SAMPLE_COUNT_BITS_NV")) +{ + return GL_SAMPLE_COUNT_BITS_NV; +} +#endif +#ifdef GL_SAMPLE_MASK_VALUE_NV +if (!strcmp(name, "GL_SAMPLE_MASK_VALUE_NV")) +{ + return GL_SAMPLE_MASK_VALUE_NV; +} +#endif +#ifdef GL_SCALE_BY_ONE_HALF_NV if (!strcmp(name, "GL_SCALE_BY_ONE_HALF_NV")) { return GL_SCALE_BY_ONE_HALF_NV; } +#endif +#ifdef GL_SECONDARY_COLOR_ATIX if (!strcmp(name, "GL_SECONDARY_COLOR_ATIX")) { return GL_SECONDARY_COLOR_ATIX; } +#endif +#ifdef GL_SEPARATE_ATTRIBS_EXT if (!strcmp(name, "GL_SEPARATE_ATTRIBS_EXT")) { return GL_SEPARATE_ATTRIBS_EXT; } +#endif +#ifdef GL_SGIS_generate_mipmap if (!strcmp(name, "GL_SGIS_generate_mipmap")) { return GL_SGIS_generate_mipmap; } +#endif +#ifdef GL_SGIS_sharpen_texture if (!strcmp(name, "GL_SGIS_sharpen_texture")) { return GL_SGIS_sharpen_texture; } +#endif +#ifdef GL_SGIS_texture_filter4 if (!strcmp(name, "GL_SGIS_texture_filter4")) { return GL_SGIS_texture_filter4; } +#endif +#ifdef GL_SGIX_async_histogram if (!strcmp(name, "GL_SGIX_async_histogram")) { return GL_SGIX_async_histogram; } +#endif +#ifdef GL_SGIX_reference_plane if (!strcmp(name, "GL_SGIX_reference_plane")) { return GL_SGIX_reference_plane; } +#endif +#ifdef GL_SGIX_texture_add_env if (!strcmp(name, "GL_SGIX_texture_add_env")) { return GL_SGIX_texture_add_env; } +#endif +#ifdef GL_SHADER_CONSISTENT_NV if (!strcmp(name, "GL_SHADER_CONSISTENT_NV")) { return GL_SHADER_CONSISTENT_NV; } +#endif +#ifdef GL_SHADER_SOURCE_LENGTH if (!strcmp(name, "GL_SHADER_SOURCE_LENGTH")) { return GL_SHADER_SOURCE_LENGTH; } +#endif +#ifdef GL_SHADER_STORAGE_BLOCK if (!strcmp(name, "GL_SHADER_STORAGE_BLOCK")) { return GL_SHADER_STORAGE_BLOCK; } +#endif +#ifdef GL_SIGNED_INTENSITY8_NV +if (!strcmp(name, "GL_SIGNED_INTENSITY8_NV")) +{ + return GL_SIGNED_INTENSITY8_NV; +} +#endif +#ifdef GL_SIGNED_INTENSITY8_NV if (!strcmp(name, "GL_SIGNED_INTENSITY8_NV")) { return GL_SIGNED_INTENSITY8_NV; } +#endif +#ifdef GL_SIGNED_LUMINANCE8_NV if (!strcmp(name, "GL_SIGNED_LUMINANCE8_NV")) { return GL_SIGNED_LUMINANCE8_NV; } +#endif +#ifdef GL_SIGNED_LUMINANCE8_NV +if (!strcmp(name, "GL_SIGNED_LUMINANCE8_NV")) +{ + return GL_SIGNED_LUMINANCE8_NV; +} +#endif +#ifdef GL_SLUMINANCE_ALPHA_EXT if (!strcmp(name, "GL_SLUMINANCE_ALPHA_EXT")) { return GL_SLUMINANCE_ALPHA_EXT; } +#endif +#ifdef GL_STENCIL_OP_VALUE_AMD if (!strcmp(name, "GL_STENCIL_OP_VALUE_AMD")) { return GL_STENCIL_OP_VALUE_AMD; } +#endif +#ifdef GL_STENCIL_TAG_BITS_EXT if (!strcmp(name, "GL_STENCIL_TAG_BITS_EXT")) { return GL_STENCIL_TAG_BITS_EXT; } +#endif +#ifdef GL_STORAGE_CACHED_APPLE +if (!strcmp(name, "GL_STORAGE_CACHED_APPLE")) +{ + return GL_STORAGE_CACHED_APPLE; +} +#endif +#ifdef GL_STORAGE_CACHED_APPLE if (!strcmp(name, "GL_STORAGE_CACHED_APPLE")) { return GL_STORAGE_CACHED_APPLE; } +#endif +#ifdef GL_STORAGE_CLIENT_APPLE if (!strcmp(name, "GL_STORAGE_CLIENT_APPLE")) { return GL_STORAGE_CLIENT_APPLE; } +#endif +#ifdef GL_STORAGE_SHARED_APPLE if (!strcmp(name, "GL_STORAGE_SHARED_APPLE")) { return GL_STORAGE_SHARED_APPLE; } +#endif +#ifdef GL_STORAGE_SHARED_APPLE +if (!strcmp(name, "GL_STORAGE_SHARED_APPLE")) +{ + return GL_STORAGE_SHARED_APPLE; +} +#endif +#ifdef GL_TESS_CONTROL_TEXTURE if (!strcmp(name, "GL_TESS_CONTROL_TEXTURE")) { return GL_TESS_CONTROL_TEXTURE; } +#endif +#ifdef GL_TEXTURE_1D_ARRAY_EXT if (!strcmp(name, "GL_TEXTURE_1D_ARRAY_EXT")) { return GL_TEXTURE_1D_ARRAY_EXT; } +#endif +#ifdef GL_TEXTURE_2D_ARRAY_EXT if (!strcmp(name, "GL_TEXTURE_2D_ARRAY_EXT")) { return GL_TEXTURE_2D_ARRAY_EXT; } +#endif +#ifdef GL_TEXTURE_BORDER_COLOR if (!strcmp(name, "GL_TEXTURE_BORDER_COLOR")) { return GL_TEXTURE_BORDER_COLOR; } +#endif +#ifdef GL_TEXTURE_COMPARE_FUNC if (!strcmp(name, "GL_TEXTURE_COMPARE_FUNC")) { return GL_TEXTURE_COMPARE_FUNC; } +#endif +#ifdef GL_TEXTURE_COMPARE_MODE if (!strcmp(name, "GL_TEXTURE_COMPARE_MODE")) { return GL_TEXTURE_COMPARE_MODE; } +#endif +#ifdef GL_TEXTURE_COMPARE_SGIX if (!strcmp(name, "GL_TEXTURE_COMPARE_SGIX")) { return GL_TEXTURE_COMPARE_SGIX; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_ARB +if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_ARB")) +{ + return GL_TEXTURE_CUBE_MAP_ARB; +} +#endif +#ifdef GL_TEXTURE_CUBE_MAP_ARB if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_ARB")) { return GL_TEXTURE_CUBE_MAP_ARB; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_EXT if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_EXT")) { return GL_TEXTURE_CUBE_MAP_EXT; } +#endif +#ifdef GL_TEXTURE_IMAGE_FORMAT if (!strcmp(name, "GL_TEXTURE_IMAGE_FORMAT")) { return GL_TEXTURE_IMAGE_FORMAT; } +#endif +#ifdef GL_TEXTURE_LOD_BIAS_EXT if (!strcmp(name, "GL_TEXTURE_LOD_BIAS_EXT")) { return GL_TEXTURE_LOD_BIAS_EXT; } +#endif +#ifdef GL_TEXTURE_MAX_LOD_SGIS if (!strcmp(name, "GL_TEXTURE_MAX_LOD_SGIS")) { return GL_TEXTURE_MAX_LOD_SGIS; } +#endif +#ifdef GL_TEXTURE_MIN_LOD_SGIS if (!strcmp(name, "GL_TEXTURE_MIN_LOD_SGIS")) { return GL_TEXTURE_MIN_LOD_SGIS; } +#endif +#ifdef GL_TEXTURE_PRIORITY_EXT if (!strcmp(name, "GL_TEXTURE_PRIORITY_EXT")) { return GL_TEXTURE_PRIORITY_EXT; } +#endif +#ifdef GL_TEXTURE_RECTANGLE_NV if (!strcmp(name, "GL_TEXTURE_RECTANGLE_NV")) { return GL_TEXTURE_RECTANGLE_NV; } +#endif +#ifdef GL_TEXTURE_RED_SIZE_EXT if (!strcmp(name, "GL_TEXTURE_RED_SIZE_EXT")) { return GL_TEXTURE_RED_SIZE_EXT; } +#endif +#ifdef GL_TEXTURE_RED_TYPE_ARB if (!strcmp(name, "GL_TEXTURE_RED_TYPE_ARB")) { return GL_TEXTURE_RED_TYPE_ARB; } +#endif +#ifdef GL_TEXTURE_RESIDENT_EXT if (!strcmp(name, "GL_TEXTURE_RESIDENT_EXT")) { return GL_TEXTURE_RESIDENT_EXT; } +#endif +#ifdef GL_TEXTURE_STENCIL_SIZE if (!strcmp(name, "GL_TEXTURE_STENCIL_SIZE")) { return GL_TEXTURE_STENCIL_SIZE; } +#endif +#ifdef GL_TEXTURE_SWIZZLE_RGBA if (!strcmp(name, "GL_TEXTURE_SWIZZLE_RGBA")) { return GL_TEXTURE_SWIZZLE_RGBA; } +#endif +#ifdef GL_TOP_LEVEL_ARRAY_SIZE if (!strcmp(name, "GL_TOP_LEVEL_ARRAY_SIZE")) { return GL_TOP_LEVEL_ARRAY_SIZE; } +#endif +#ifdef GL_TRANSFORM_HINT_APPLE if (!strcmp(name, "GL_TRANSFORM_HINT_APPLE")) { return GL_TRANSFORM_HINT_APPLE; } +#endif +#ifdef GL_UNIFORM_ARRAY_STRIDE if (!strcmp(name, "GL_UNIFORM_ARRAY_STRIDE")) { return GL_UNIFORM_ARRAY_STRIDE; } +#endif +#ifdef GL_UNIFORM_BUFFER_START if (!strcmp(name, "GL_UNIFORM_BUFFER_START")) { return GL_UNIFORM_BUFFER_START; } +#endif +#ifdef GL_UNIFORM_IS_ROW_MAJOR if (!strcmp(name, "GL_UNIFORM_IS_ROW_MAJOR")) { return GL_UNIFORM_IS_ROW_MAJOR; } +#endif +#ifdef GL_UNPACK_CMYK_HINT_EXT if (!strcmp(name, "GL_UNPACK_CMYK_HINT_EXT")) { return GL_UNPACK_CMYK_HINT_EXT; } +#endif +#ifdef GL_UNPACK_RESAMPLE_SGIX if (!strcmp(name, "GL_UNPACK_RESAMPLE_SGIX")) { return GL_UNPACK_RESAMPLE_SGIX; } +#endif +#ifdef GL_UNSIGNED_IDENTITY_NV if (!strcmp(name, "GL_UNSIGNED_IDENTITY_NV")) { return GL_UNSIGNED_IDENTITY_NV; } +#endif +#ifdef GL_UNSIGNED_INT_24_8_NV if (!strcmp(name, "GL_UNSIGNED_INT_24_8_NV")) { return GL_UNSIGNED_INT_24_8_NV; } +#endif +#ifdef GL_UNSIGNED_INT_8_8_8_8 if (!strcmp(name, "GL_UNSIGNED_INT_8_8_8_8")) { return GL_UNSIGNED_INT_8_8_8_8; } +#endif +#ifdef GL_UNSIGNED_SHORT_5_6_5 if (!strcmp(name, "GL_UNSIGNED_SHORT_5_6_5")) { return GL_UNSIGNED_SHORT_5_6_5; } +#endif +#ifdef GL_USE_MISSING_GLYPH_NV if (!strcmp(name, "GL_USE_MISSING_GLYPH_NV")) { return GL_USE_MISSING_GLYPH_NV; } +#endif +#ifdef GL_VARIANT_DATATYPE_EXT if (!strcmp(name, "GL_VARIANT_DATATYPE_EXT")) { return GL_VARIANT_DATATYPE_EXT; } +#endif +#ifdef GL_VERTEX_ARRAY_BINDING if (!strcmp(name, "GL_VERTEX_ARRAY_BINDING")) { return GL_VERTEX_ARRAY_BINDING; } +#endif +#ifdef GL_VERTEX_ARRAY_POINTER if (!strcmp(name, "GL_VERTEX_ARRAY_POINTER")) { return GL_VERTEX_ARRAY_POINTER; } +#endif +#ifdef GL_VERTEX_DATA_HINT_PGI if (!strcmp(name, "GL_VERTEX_DATA_HINT_PGI")) { return GL_VERTEX_DATA_HINT_PGI; } +#endif +#ifdef GL_VERTEX_WEIGHTING_EXT if (!strcmp(name, "GL_VERTEX_WEIGHTING_EXT")) { return GL_VERTEX_WEIGHTING_EXT; } +#endif +#ifdef GL_VIEW_CLASS_RGTC1_RED if (!strcmp(name, "GL_VIEW_CLASS_RGTC1_RED")) { return GL_VIEW_CLASS_RGTC1_RED; } +#endif +#ifdef GL_WEIGHTED_AVERAGE_ARB +if (!strcmp(name, "GL_WEIGHTED_AVERAGE_ARB")) +{ + return GL_WEIGHTED_AVERAGE_ARB; +} +#endif +#ifdef GL_WEIGHTED_AVERAGE_EXT +if (!strcmp(name, "GL_WEIGHTED_AVERAGE_EXT")) +{ + return GL_WEIGHTED_AVERAGE_EXT; +} +#endif +#ifdef GL_WEIGHT_SUM_UNITY_ARB if (!strcmp(name, "GL_WEIGHT_SUM_UNITY_ARB")) { return GL_WEIGHT_SUM_UNITY_ARB; } +#endif return _GL_UNDEFINED; case 24: +#ifdef GL_ACTIVE_UNIFORM_BLOCKS if (!strcmp(name, "GL_ACTIVE_UNIFORM_BLOCKS")) { return GL_ACTIVE_UNIFORM_BLOCKS; } +#endif +#ifdef GL_APPLE_specular_vector if (!strcmp(name, "GL_APPLE_specular_vector")) { return GL_APPLE_specular_vector; } +#endif +#ifdef GL_ARB_ES2_compatibility if (!strcmp(name, "GL_ARB_ES2_compatibility")) { return GL_ARB_ES2_compatibility; } +#endif +#ifdef GL_ARB_ES3_compatibility if (!strcmp(name, "GL_ARB_ES3_compatibility")) { return GL_ARB_ES3_compatibility; } +#endif +#ifdef GL_ARB_half_float_vertex if (!strcmp(name, "GL_ARB_half_float_vertex")) { return GL_ARB_half_float_vertex; } +#endif +#ifdef GL_ARB_seamless_cube_map if (!strcmp(name, "GL_ARB_seamless_cube_map")) { return GL_ARB_seamless_cube_map; } +#endif +#ifdef GL_ARB_shader_group_vote if (!strcmp(name, "GL_ARB_shader_group_vote")) { return GL_ARB_shader_group_vote; } +#endif +#ifdef GL_ARB_shader_image_size if (!strcmp(name, "GL_ARB_shader_image_size")) { return GL_ARB_shader_image_size; } +#endif +#ifdef GL_ARB_shader_subroutine if (!strcmp(name, "GL_ARB_shader_subroutine")) { return GL_ARB_shader_subroutine; } +#endif +#ifdef GL_ARB_stencil_texturing if (!strcmp(name, "GL_ARB_stencil_texturing")) { return GL_ARB_stencil_texturing; } +#endif +#ifdef GL_ARB_texture_query_lod if (!strcmp(name, "GL_ARB_texture_query_lod")) { return GL_ARB_texture_query_lod; } +#endif +#ifdef GL_ARB_texture_rectangle if (!strcmp(name, "GL_ARB_texture_rectangle")) { return GL_ARB_texture_rectangle; } +#endif +#ifdef GL_ARB_vertex_array_bgra if (!strcmp(name, "GL_ARB_vertex_array_bgra")) { return GL_ARB_vertex_array_bgra; } +#endif +#ifdef GL_ATI_map_object_buffer if (!strcmp(name, "GL_ATI_map_object_buffer")) { return GL_ATI_map_object_buffer; } +#endif +#ifdef GL_ATOMIC_COUNTER_BUFFER if (!strcmp(name, "GL_ATOMIC_COUNTER_BUFFER")) { return GL_ATOMIC_COUNTER_BUFFER; } +#endif +#ifdef GL_BACK_NORMALS_HINT_PGI if (!strcmp(name, "GL_BACK_NORMALS_HINT_PGI")) { return GL_BACK_NORMALS_HINT_PGI; } +#endif +#ifdef GL_BACK_PRIMARY_COLOR_NV if (!strcmp(name, "GL_BACK_PRIMARY_COLOR_NV")) { return GL_BACK_PRIMARY_COLOR_NV; } +#endif +#ifdef GL_BUFFER_GPU_ADDRESS_NV if (!strcmp(name, "GL_BUFFER_GPU_ADDRESS_NV")) { return GL_BUFFER_GPU_ADDRESS_NV; } +#endif +#ifdef GL_CIRCULAR_CW_ARC_TO_NV if (!strcmp(name, "GL_CIRCULAR_CW_ARC_TO_NV")) { return GL_CIRCULAR_CW_ARC_TO_NV; } +#endif +#ifdef GL_CLIENT_ACTIVE_TEXTURE if (!strcmp(name, "GL_CLIENT_ACTIVE_TEXTURE")) { return GL_CLIENT_ACTIVE_TEXTURE; } +#endif +#ifdef GL_COLOR_ARRAY_COUNT_EXT if (!strcmp(name, "GL_COLOR_ARRAY_COUNT_EXT")) { return GL_COLOR_ARRAY_COUNT_EXT; } +#endif +#ifdef GL_COLOR_ARRAY_LENGTH_NV if (!strcmp(name, "GL_COLOR_ARRAY_LENGTH_NV")) { return GL_COLOR_ARRAY_LENGTH_NV; } +#endif +#ifdef GL_COLOR_ATTACHMENT0_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT0_EXT")) { return GL_COLOR_ATTACHMENT0_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT1_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT1_EXT")) { return GL_COLOR_ATTACHMENT1_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT2_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT2_EXT")) { return GL_COLOR_ATTACHMENT2_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT3_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT3_EXT")) { return GL_COLOR_ATTACHMENT3_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT4_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT4_EXT")) { return GL_COLOR_ATTACHMENT4_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT5_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT5_EXT")) { return GL_COLOR_ATTACHMENT5_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT6_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT6_EXT")) { return GL_COLOR_ATTACHMENT6_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT7_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT7_EXT")) { return GL_COLOR_ATTACHMENT7_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT8_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT8_EXT")) { return GL_COLOR_ATTACHMENT8_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT9_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT9_EXT")) { return GL_COLOR_ATTACHMENT9_EXT; } +#endif +#ifdef GL_COLOR_TABLE_BLUE_SIZE if (!strcmp(name, "GL_COLOR_TABLE_BLUE_SIZE")) { return GL_COLOR_TABLE_BLUE_SIZE; } +#endif +#ifdef GL_COLOR_TABLE_SCALE_SGI if (!strcmp(name, "GL_COLOR_TABLE_SCALE_SGI")) { return GL_COLOR_TABLE_SCALE_SGI; } +#endif +#ifdef GL_COLOR_TABLE_WIDTH_EXT if (!strcmp(name, "GL_COLOR_TABLE_WIDTH_EXT")) { return GL_COLOR_TABLE_WIDTH_EXT; } +#endif +#ifdef GL_COLOR_TABLE_WIDTH_SGI if (!strcmp(name, "GL_COLOR_TABLE_WIDTH_SGI")) { return GL_COLOR_TABLE_WIDTH_SGI; } +#endif +#ifdef GL_COMBINER_AB_OUTPUT_NV if (!strcmp(name, "GL_COMBINER_AB_OUTPUT_NV")) { return GL_COMBINER_AB_OUTPUT_NV; } +#endif +#ifdef GL_COMBINER_CD_OUTPUT_NV if (!strcmp(name, "GL_COMBINER_CD_OUTPUT_NV")) { return GL_COMBINER_CD_OUTPUT_NV; } +#endif +#ifdef GL_COMPLETION_STATUS_ARB +if (!strcmp(name, "GL_COMPLETION_STATUS_ARB")) +{ + return GL_COMPLETION_STATUS_ARB; +} +#endif +#ifdef GL_COMPRESSED_SLUMINANCE if (!strcmp(name, "GL_COMPRESSED_SLUMINANCE")) { return GL_COMPRESSED_SLUMINANCE; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ETC2 if (!strcmp(name, "GL_COMPRESSED_SRGB8_ETC2")) { return GL_COMPRESSED_SRGB8_ETC2; } +#endif +#ifdef GL_COMPRESSED_SRGB_ALPHA if (!strcmp(name, "GL_COMPRESSED_SRGB_ALPHA")) { return GL_COMPRESSED_SRGB_ALPHA; } +#endif +#ifdef GL_CONTEXT_ROBUST_ACCESS +if (!strcmp(name, "GL_CONTEXT_ROBUST_ACCESS")) +{ + return GL_CONTEXT_ROBUST_ACCESS; +} +#endif +#ifdef GL_CONVOLUTION_HINT_SGIX if (!strcmp(name, "GL_CONVOLUTION_HINT_SGIX")) { return GL_CONVOLUTION_HINT_SGIX; } +#endif +#ifdef GL_CONVOLUTION_WIDTH_EXT if (!strcmp(name, "GL_CONVOLUTION_WIDTH_EXT")) { return GL_CONVOLUTION_WIDTH_EXT; } +#endif +#ifdef GL_CURRENT_VERTEX_ATTRIB if (!strcmp(name, "GL_CURRENT_VERTEX_ATTRIB")) { return GL_CURRENT_VERTEX_ATTRIB; } +#endif +#ifdef GL_DEBUG_LOGGED_MESSAGES if (!strcmp(name, "GL_DEBUG_LOGGED_MESSAGES")) { return GL_DEBUG_LOGGED_MESSAGES; } +#endif +#ifdef GL_DEBUG_SEVERITY_MEDIUM if (!strcmp(name, "GL_DEBUG_SEVERITY_MEDIUM")) { return GL_DEBUG_SEVERITY_MEDIUM; } +#endif +#ifdef GL_DEBUG_TYPE_PUSH_GROUP if (!strcmp(name, "GL_DEBUG_TYPE_PUSH_GROUP")) { return GL_DEBUG_TYPE_PUSH_GROUP; } +#endif +#ifdef GL_DEPTH_BOUNDS_TEST_EXT if (!strcmp(name, "GL_DEPTH_BOUNDS_TEST_EXT")) { return GL_DEPTH_BOUNDS_TEST_EXT; } +#endif +#ifdef GL_DEPTH_COMPONENT16_ARB if (!strcmp(name, "GL_DEPTH_COMPONENT16_ARB")) { return GL_DEPTH_COMPONENT16_ARB; } +#endif +#ifdef GL_DEPTH_COMPONENT24_ARB if (!strcmp(name, "GL_DEPTH_COMPONENT24_ARB")) { return GL_DEPTH_COMPONENT24_ARB; } +#endif +#ifdef GL_DEPTH_COMPONENT32F_NV +if (!strcmp(name, "GL_DEPTH_COMPONENT32F_NV")) +{ + return GL_DEPTH_COMPONENT32F_NV; +} +#endif +#ifdef GL_DEPTH_COMPONENT32_ARB if (!strcmp(name, "GL_DEPTH_COMPONENT32_ARB")) { return GL_DEPTH_COMPONENT32_ARB; } -if (!strcmp(name, "GL_DEPTH_COMPONENT32F_NV")) +#endif +#ifdef GL_DSDT_MAG_INTENSITY_NV +if (!strcmp(name, "GL_DSDT_MAG_INTENSITY_NV")) { - return GL_DEPTH_COMPONENT32F_NV; + return GL_DSDT_MAG_INTENSITY_NV; } +#endif +#ifdef GL_DSDT_MAG_INTENSITY_NV if (!strcmp(name, "GL_DSDT_MAG_INTENSITY_NV")) { return GL_DSDT_MAG_INTENSITY_NV; } +#endif +#ifdef GL_EVAL_TRIANGULAR_2D_NV if (!strcmp(name, "GL_EVAL_TRIANGULAR_2D_NV")) { return GL_EVAL_TRIANGULAR_2D_NV; } +#endif +#ifdef GL_EXT_depth_bounds_test if (!strcmp(name, "GL_EXT_depth_bounds_test")) { return GL_EXT_depth_bounds_test; } +#endif +#ifdef GL_EXT_fragment_lighting if (!strcmp(name, "GL_EXT_fragment_lighting")) { return GL_EXT_fragment_lighting; } +#endif +#ifdef GL_EXT_multi_draw_arrays if (!strcmp(name, "GL_EXT_multi_draw_arrays")) { return GL_EXT_multi_draw_arrays; } +#endif +#ifdef GL_EXT_stencil_clear_tag if (!strcmp(name, "GL_EXT_stencil_clear_tag")) { return GL_EXT_stencil_clear_tag; } +#endif +#ifdef GL_EXT_texture_rectangle if (!strcmp(name, "GL_EXT_texture_rectangle")) { return GL_EXT_texture_rectangle; } +#endif +#ifdef GL_EXT_vertex_array_bgra if (!strcmp(name, "GL_EXT_vertex_array_bgra")) { return GL_EXT_vertex_array_bgra; } +#endif +#ifdef GL_EYE_PLANE_ABSOLUTE_NV if (!strcmp(name, "GL_EYE_PLANE_ABSOLUTE_NV")) { return GL_EYE_PLANE_ABSOLUTE_NV; } +#endif +#ifdef GL_FOG_COORDINATE_SOURCE if (!strcmp(name, "GL_FOG_COORDINATE_SOURCE")) { return GL_FOG_COORDINATE_SOURCE; } +#endif +#ifdef GL_FOG_OFFSET_VALUE_SGIX if (!strcmp(name, "GL_FOG_OFFSET_VALUE_SGIX")) { return GL_FOG_OFFSET_VALUE_SGIX; } +#endif +#ifdef GL_FONT_DESCENDER_BIT_NV if (!strcmp(name, "GL_FONT_DESCENDER_BIT_NV")) { return GL_FONT_DESCENDER_BIT_NV; } +#endif +#ifdef GL_FRAGMENT_LIGHTING_EXT if (!strcmp(name, "GL_FRAGMENT_LIGHTING_EXT")) { return GL_FRAGMENT_LIGHTING_EXT; } +#endif +#ifdef GL_FRAGMENT_MATERIAL_EXT if (!strcmp(name, "GL_FRAGMENT_MATERIAL_EXT")) { return GL_FRAGMENT_MATERIAL_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_UNDEFINED if (!strcmp(name, "GL_FRAMEBUFFER_UNDEFINED")) { return GL_FRAMEBUFFER_UNDEFINED; } +#endif +#ifdef GL_FULL_STIPPLE_HINT_PGI if (!strcmp(name, "GL_FULL_STIPPLE_HINT_PGI")) { return GL_FULL_STIPPLE_HINT_PGI; } +#endif +#ifdef GL_FUNC_REVERSE_SUBTRACT if (!strcmp(name, "GL_FUNC_REVERSE_SUBTRACT")) { return GL_FUNC_REVERSE_SUBTRACT; } +#endif +#ifdef GL_GEOMETRY_VERTICES_OUT if (!strcmp(name, "GL_GEOMETRY_VERTICES_OUT")) { return GL_GEOMETRY_VERTICES_OUT; } +#endif +#ifdef GL_GREMEDY_string_marker if (!strcmp(name, "GL_GREMEDY_string_marker")) { return GL_GREMEDY_string_marker; } +#endif +#ifdef GL_HORIZONTAL_LINE_TO_NV if (!strcmp(name, "GL_HORIZONTAL_LINE_TO_NV")) { return GL_HORIZONTAL_LINE_TO_NV; } +#endif +#ifdef GL_IMAGE_BINDING_LAYERED if (!strcmp(name, "GL_IMAGE_BINDING_LAYERED")) { return GL_IMAGE_BINDING_LAYERED; } +#endif +#ifdef GL_INDEX_ARRAY_COUNT_EXT if (!strcmp(name, "GL_INDEX_ARRAY_COUNT_EXT")) { return GL_INDEX_ARRAY_COUNT_EXT; } +#endif +#ifdef GL_INDEX_ARRAY_LENGTH_NV if (!strcmp(name, "GL_INDEX_ARRAY_LENGTH_NV")) { return GL_INDEX_ARRAY_LENGTH_NV; } +#endif +#ifdef GL_INTEL_parallel_arrays if (!strcmp(name, "GL_INTEL_parallel_arrays")) { return GL_INTEL_parallel_arrays; } +#endif +#ifdef GL_INTEL_texture_scissor if (!strcmp(name, "GL_INTEL_texture_scissor")) { return GL_INTEL_texture_scissor; } +#endif +#ifdef GL_INTENSITY_FLOAT16_ATI if (!strcmp(name, "GL_INTENSITY_FLOAT16_ATI")) { return GL_INTENSITY_FLOAT16_ATI; } +#endif +#ifdef GL_INTENSITY_FLOAT32_ATI if (!strcmp(name, "GL_INTENSITY_FLOAT32_ATI")) { return GL_INTENSITY_FLOAT32_ATI; } +#endif +#ifdef GL_INTENSITY_SIGNED_SGIX if (!strcmp(name, "GL_INTENSITY_SIGNED_SGIX")) { return GL_INTENSITY_SIGNED_SGIX; } +#endif +#ifdef GL_INT_IMAGE_2D_RECT_EXT if (!strcmp(name, "GL_INT_IMAGE_2D_RECT_EXT")) { return GL_INT_IMAGE_2D_RECT_EXT; } +#endif +#ifdef GL_LINEAR_MIPMAP_NEAREST if (!strcmp(name, "GL_LINEAR_MIPMAP_NEAREST")) { return GL_LINEAR_MIPMAP_NEAREST; } +#endif +#ifdef GL_LOSE_CONTEXT_ON_RESET +if (!strcmp(name, "GL_LOSE_CONTEXT_ON_RESET")) +{ + return GL_LOSE_CONTEXT_ON_RESET; +} +#endif +#ifdef GL_LUMINANCE4_ALPHA4_EXT if (!strcmp(name, "GL_LUMINANCE4_ALPHA4_EXT")) { return GL_LUMINANCE4_ALPHA4_EXT; } +#endif +#ifdef GL_LUMINANCE6_ALPHA2_EXT if (!strcmp(name, "GL_LUMINANCE6_ALPHA2_EXT")) { return GL_LUMINANCE6_ALPHA2_EXT; } +#endif +#ifdef GL_LUMINANCE8_ALPHA8_EXT if (!strcmp(name, "GL_LUMINANCE8_ALPHA8_EXT")) { return GL_LUMINANCE8_ALPHA8_EXT; } +#endif +#ifdef GL_LUMINANCE_ALPHA8I_EXT if (!strcmp(name, "GL_LUMINANCE_ALPHA8I_EXT")) { return GL_LUMINANCE_ALPHA8I_EXT; } +#endif +#ifdef GL_LUMINANCE_ALPHA_SNORM if (!strcmp(name, "GL_LUMINANCE_ALPHA_SNORM")) { return GL_LUMINANCE_ALPHA_SNORM; } +#endif +#ifdef GL_LUMINANCE_FLOAT16_ATI if (!strcmp(name, "GL_LUMINANCE_FLOAT16_ATI")) { return GL_LUMINANCE_FLOAT16_ATI; } +#endif +#ifdef GL_LUMINANCE_FLOAT32_ATI if (!strcmp(name, "GL_LUMINANCE_FLOAT32_ATI")) { return GL_LUMINANCE_FLOAT32_ATI; } +#endif +#ifdef GL_LUMINANCE_INTEGER_EXT if (!strcmp(name, "GL_LUMINANCE_INTEGER_EXT")) { return GL_LUMINANCE_INTEGER_EXT; } +#endif +#ifdef GL_LUMINANCE_SIGNED_SGIX if (!strcmp(name, "GL_LUMINANCE_SIGNED_SGIX")) { return GL_LUMINANCE_SIGNED_SGIX; } +#endif +#ifdef GL_MAP_ATTRIB_U_ORDER_NV if (!strcmp(name, "GL_MAP_ATTRIB_U_ORDER_NV")) { return GL_MAP_ATTRIB_U_ORDER_NV; } +#endif +#ifdef GL_MAP_ATTRIB_V_ORDER_NV if (!strcmp(name, "GL_MAP_ATTRIB_V_ORDER_NV")) { return GL_MAP_ATTRIB_V_ORDER_NV; } +#endif +#ifdef GL_MAT_SHININESS_BIT_PGI if (!strcmp(name, "GL_MAT_SHININESS_BIT_PGI")) { return GL_MAT_SHININESS_BIT_PGI; } +#endif +#ifdef GL_MAX_ACTIVE_LIGHTS_EXT if (!strcmp(name, "GL_MAX_ACTIVE_LIGHTS_EXT")) { return GL_MAX_ACTIVE_LIGHTS_EXT; } +#endif +#ifdef GL_MAX_COLOR_ATTACHMENTS if (!strcmp(name, "GL_MAX_COLOR_ATTACHMENTS")) { return GL_MAX_COLOR_ATTACHMENTS; } +#endif +#ifdef GL_MAX_CONVOLUTION_WIDTH if (!strcmp(name, "GL_MAX_CONVOLUTION_WIDTH")) { return GL_MAX_CONVOLUTION_WIDTH; } +#endif +#ifdef GL_MAX_ELEMENTS_VERTICES if (!strcmp(name, "GL_MAX_ELEMENTS_VERTICES")) { return GL_MAX_ELEMENTS_VERTICES; } +#endif +#ifdef GL_MAX_FRAMEBUFFER_WIDTH if (!strcmp(name, "GL_MAX_FRAMEBUFFER_WIDTH")) { return GL_MAX_FRAMEBUFFER_WIDTH; } +#endif +#ifdef GL_MAX_IMAGE_SAMPLES_EXT if (!strcmp(name, "GL_MAX_IMAGE_SAMPLES_EXT")) { return GL_MAX_IMAGE_SAMPLES_EXT; } +#endif +#ifdef GL_MAX_RENDERBUFFER_SIZE if (!strcmp(name, "GL_MAX_RENDERBUFFER_SIZE")) { return GL_MAX_RENDERBUFFER_SIZE; } +#endif +#ifdef GL_MAX_SAMPLE_MASK_WORDS if (!strcmp(name, "GL_MAX_SAMPLE_MASK_WORDS")) { return GL_MAX_SAMPLE_MASK_WORDS; } +#endif +#ifdef GL_MAX_TEXTURE_COORDS_NV if (!strcmp(name, "GL_MAX_TEXTURE_COORDS_NV")) { return GL_MAX_TEXTURE_COORDS_NV; } +#endif +#ifdef GL_MAX_TEXTURE_UNITS_ARB if (!strcmp(name, "GL_MAX_TEXTURE_UNITS_ARB")) { return GL_MAX_TEXTURE_UNITS_ARB; } +#endif +#ifdef GL_MAX_TRACK_MATRICES_NV if (!strcmp(name, "GL_MAX_TRACK_MATRICES_NV")) { return GL_MAX_TRACK_MATRICES_NV; } +#endif +#ifdef GL_MAX_UNIFORM_LOCATIONS if (!strcmp(name, "GL_MAX_UNIFORM_LOCATIONS")) { return GL_MAX_UNIFORM_LOCATIONS; } +#endif +#ifdef GL_MODELVIEW0_MATRIX_EXT if (!strcmp(name, "GL_MODELVIEW0_MATRIX_EXT")) { return GL_MODELVIEW0_MATRIX_EXT; } +#endif +#ifdef GL_MODELVIEW1_MATRIX_EXT if (!strcmp(name, "GL_MODELVIEW1_MATRIX_EXT")) { return GL_MODELVIEW1_MATRIX_EXT; } +#endif +#ifdef GL_MODELVIEW_STACK_DEPTH if (!strcmp(name, "GL_MODELVIEW_STACK_DEPTH")) { return GL_MODELVIEW_STACK_DEPTH; } +#endif +#ifdef GL_MODULATE_SUBTRACT_ATI if (!strcmp(name, "GL_MODULATE_SUBTRACT_ATI")) { return GL_MODULATE_SUBTRACT_ATI; } +#endif +#ifdef GL_NAMED_STRING_TYPE_ARB if (!strcmp(name, "GL_NAMED_STRING_TYPE_ARB")) { return GL_NAMED_STRING_TYPE_ARB; } +#endif +#ifdef GL_NEAREST_MIPMAP_LINEAR if (!strcmp(name, "GL_NEAREST_MIPMAP_LINEAR")) { return GL_NEAREST_MIPMAP_LINEAR; } +#endif +#ifdef GL_NORMAL_ARRAY_LIST_IBM if (!strcmp(name, "GL_NORMAL_ARRAY_LIST_IBM")) { return GL_NORMAL_ARRAY_LIST_IBM; } +#endif +#ifdef GL_NORMAL_ARRAY_TYPE_EXT if (!strcmp(name, "GL_NORMAL_ARRAY_TYPE_EXT")) { return GL_NORMAL_ARRAY_TYPE_EXT; } +#endif +#ifdef GL_NO_RESET_NOTIFICATION +if (!strcmp(name, "GL_NO_RESET_NOTIFICATION")) +{ + return GL_NO_RESET_NOTIFICATION; +} +#endif +#ifdef GL_NUM_SPARSE_LEVELS_ARB if (!strcmp(name, "GL_NUM_SPARSE_LEVELS_ARB")) { return GL_NUM_SPARSE_LEVELS_ARB; } +#endif +#ifdef GL_NV_conditional_render if (!strcmp(name, "GL_NV_conditional_render")) { return GL_NV_conditional_render; } +#endif +#ifdef GL_NV_depth_buffer_float if (!strcmp(name, "GL_NV_depth_buffer_float")) { return GL_NV_depth_buffer_float; } +#endif +#ifdef GL_NV_light_max_exponent if (!strcmp(name, "GL_NV_light_max_exponent")) { return GL_NV_light_max_exponent; } +#endif +#ifdef GL_NV_register_combiners if (!strcmp(name, "GL_NV_register_combiners")) { return GL_NV_register_combiners; } +#endif +#ifdef GL_NV_shader_buffer_load if (!strcmp(name, "GL_NV_shader_buffer_load")) { return GL_NV_shader_buffer_load; } +#endif +#ifdef GL_NV_transform_feedback if (!strcmp(name, "GL_NV_transform_feedback")) { return GL_NV_transform_feedback; } +#endif +#ifdef GL_NV_vertex_array_range if (!strcmp(name, "GL_NV_vertex_array_range")) { return GL_NV_vertex_array_range; } +#endif +#ifdef GL_PACK_IMAGE_HEIGHT_EXT if (!strcmp(name, "GL_PACK_IMAGE_HEIGHT_EXT")) { return GL_PACK_IMAGE_HEIGHT_EXT; } +#endif +#ifdef GL_PALETTE4_R5_G6_B5_OES if (!strcmp(name, "GL_PALETTE4_R5_G6_B5_OES")) { return GL_PALETTE4_R5_G6_B5_OES; } +#endif +#ifdef GL_PALETTE8_R5_G6_B5_OES if (!strcmp(name, "GL_PALETTE8_R5_G6_B5_OES")) { return GL_PALETTE8_R5_G6_B5_OES; } +#endif +#ifdef GL_PARALLEL_ARRAYS_INTEL if (!strcmp(name, "GL_PARALLEL_ARRAYS_INTEL")) { return GL_PARALLEL_ARRAYS_INTEL; } +#endif +#ifdef GL_PATH_CLIENT_LENGTH_NV if (!strcmp(name, "GL_PATH_CLIENT_LENGTH_NV")) { return GL_PATH_CLIENT_LENGTH_NV; } +#endif +#ifdef GL_PATH_COMMAND_COUNT_NV if (!strcmp(name, "GL_PATH_COMMAND_COUNT_NV")) { return GL_PATH_COMMAND_COUNT_NV; } +#endif +#ifdef GL_PERFQUERY_FLUSH_INTEL +if (!strcmp(name, "GL_PERFQUERY_FLUSH_INTEL")) +{ + return GL_PERFQUERY_FLUSH_INTEL; +} +#endif +#ifdef GL_PIXEL_COUNTER_BITS_NV if (!strcmp(name, "GL_PIXEL_COUNTER_BITS_NV")) { return GL_PIXEL_COUNTER_BITS_NV; } +#endif +#ifdef GL_PIXEL_MAP_A_TO_A_SIZE if (!strcmp(name, "GL_PIXEL_MAP_A_TO_A_SIZE")) { return GL_PIXEL_MAP_A_TO_A_SIZE; } +#endif +#ifdef GL_PIXEL_MAP_B_TO_B_SIZE if (!strcmp(name, "GL_PIXEL_MAP_B_TO_B_SIZE")) { return GL_PIXEL_MAP_B_TO_B_SIZE; } +#endif +#ifdef GL_PIXEL_MAP_G_TO_G_SIZE if (!strcmp(name, "GL_PIXEL_MAP_G_TO_G_SIZE")) { return GL_PIXEL_MAP_G_TO_G_SIZE; } +#endif +#ifdef GL_PIXEL_MAP_I_TO_A_SIZE if (!strcmp(name, "GL_PIXEL_MAP_I_TO_A_SIZE")) { return GL_PIXEL_MAP_I_TO_A_SIZE; } +#endif +#ifdef GL_PIXEL_MAP_I_TO_B_SIZE if (!strcmp(name, "GL_PIXEL_MAP_I_TO_B_SIZE")) { return GL_PIXEL_MAP_I_TO_B_SIZE; } +#endif +#ifdef GL_PIXEL_MAP_I_TO_G_SIZE if (!strcmp(name, "GL_PIXEL_MAP_I_TO_G_SIZE")) { return GL_PIXEL_MAP_I_TO_G_SIZE; } +#endif +#ifdef GL_PIXEL_MAP_I_TO_I_SIZE if (!strcmp(name, "GL_PIXEL_MAP_I_TO_I_SIZE")) { return GL_PIXEL_MAP_I_TO_I_SIZE; } +#endif +#ifdef GL_PIXEL_MAP_I_TO_R_SIZE if (!strcmp(name, "GL_PIXEL_MAP_I_TO_R_SIZE")) { return GL_PIXEL_MAP_I_TO_R_SIZE; } +#endif +#ifdef GL_PIXEL_MAP_R_TO_R_SIZE if (!strcmp(name, "GL_PIXEL_MAP_R_TO_R_SIZE")) { return GL_PIXEL_MAP_R_TO_R_SIZE; } +#endif +#ifdef GL_PIXEL_MAP_S_TO_S_SIZE if (!strcmp(name, "GL_PIXEL_MAP_S_TO_S_SIZE")) { return GL_PIXEL_MAP_S_TO_S_SIZE; } +#endif +#ifdef GL_PIXEL_PACK_BUFFER_ARB if (!strcmp(name, "GL_PIXEL_PACK_BUFFER_ARB")) { return GL_PIXEL_PACK_BUFFER_ARB; } +#endif +#ifdef GL_PIXEL_PACK_BUFFER_EXT if (!strcmp(name, "GL_PIXEL_PACK_BUFFER_EXT")) { return GL_PIXEL_PACK_BUFFER_EXT; } +#endif +#ifdef GL_PLUS_CLAMPED_ALPHA_NV if (!strcmp(name, "GL_PLUS_CLAMPED_ALPHA_NV")) { return GL_PLUS_CLAMPED_ALPHA_NV; } +#endif +#ifdef GL_POLYGON_OFFSET_FACTOR if (!strcmp(name, "GL_POLYGON_OFFSET_FACTOR")) { return GL_POLYGON_OFFSET_FACTOR; } +#endif +#ifdef GL_PROGRAM_BINARY_LENGTH if (!strcmp(name, "GL_PROGRAM_BINARY_LENGTH")) { return GL_PROGRAM_BINARY_LENGTH; } +#endif +#ifdef GL_PROXY_COLOR_TABLE_SGI if (!strcmp(name, "GL_PROXY_COLOR_TABLE_SGI")) { return GL_PROXY_COLOR_TABLE_SGI; } +#endif +#ifdef GL_QUADRATIC_ATTENUATION if (!strcmp(name, "GL_QUADRATIC_ATTENUATION")) { return GL_QUADRATIC_ATTENUATION; } +#endif +#ifdef GL_QUADRATIC_CURVE_TO_NV if (!strcmp(name, "GL_QUADRATIC_CURVE_TO_NV")) { return GL_QUADRATIC_CURVE_TO_NV; } +#endif +#ifdef GL_RASTERIZER_DISCARD_NV if (!strcmp(name, "GL_RASTERIZER_DISCARD_NV")) { return GL_RASTERIZER_DISCARD_NV; } +#endif +#ifdef GL_REGAL_extension_query if (!strcmp(name, "GL_REGAL_extension_query")) { return GL_REGAL_extension_query; } +#endif +#ifdef GL_REGISTER_COMBINERS_NV if (!strcmp(name, "GL_REGISTER_COMBINERS_NV")) { return GL_REGISTER_COMBINERS_NV; } +#endif +#ifdef GL_RENDERBUFFER_RED_SIZE if (!strcmp(name, "GL_RENDERBUFFER_RED_SIZE")) { return GL_RENDERBUFFER_RED_SIZE; } +#endif +#ifdef GL_RESAMPLE_DECIMATE_OML if (!strcmp(name, "GL_RESAMPLE_DECIMATE_OML")) { return GL_RESAMPLE_DECIMATE_OML; } +#endif +#ifdef GL_RGBA_INTEGER_MODE_EXT if (!strcmp(name, "GL_RGBA_INTEGER_MODE_EXT")) { return GL_RGBA_INTEGER_MODE_EXT; } -if (!strcmp(name, "GL_SAMPLE_COVERAGE_VALUE")) -{ - return GL_SAMPLE_COVERAGE_VALUE; -} -if (!strcmp(name, "GL_SAMPLE_MASK_VALUE_EXT")) -{ - return GL_SAMPLE_MASK_VALUE_EXT; -} +#endif +#ifdef GL_SAMPLER_1D_SHADOW_ARB if (!strcmp(name, "GL_SAMPLER_1D_SHADOW_ARB")) { return GL_SAMPLER_1D_SHADOW_ARB; } +#endif +#ifdef GL_SAMPLER_2D_SHADOW_ARB if (!strcmp(name, "GL_SAMPLER_2D_SHADOW_ARB")) { return GL_SAMPLER_2D_SHADOW_ARB; } +#endif +#ifdef GL_SAMPLE_COVERAGE_VALUE +if (!strcmp(name, "GL_SAMPLE_COVERAGE_VALUE")) +{ + return GL_SAMPLE_COVERAGE_VALUE; +} +#endif +#ifdef GL_SAMPLE_MASK_VALUE_EXT +if (!strcmp(name, "GL_SAMPLE_MASK_VALUE_EXT")) +{ + return GL_SAMPLE_MASK_VALUE_EXT; +} +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY")) { return GL_SECONDARY_COLOR_ARRAY; } +#endif +#ifdef GL_SELECTION_BUFFER_SIZE if (!strcmp(name, "GL_SELECTION_BUFFER_SIZE")) { return GL_SELECTION_BUFFER_SIZE; } +#endif +#ifdef GL_SGIX_texture_lod_bias if (!strcmp(name, "GL_SGIX_texture_lod_bias")) { return GL_SGIX_texture_lod_bias; } +#endif +#ifdef GL_SHADER_BINARY_FORMATS if (!strcmp(name, "GL_SHADER_BINARY_FORMATS")) { return GL_SHADER_BINARY_FORMATS; } +#endif +#ifdef GL_SHADER_STORAGE_BUFFER if (!strcmp(name, "GL_SHADER_STORAGE_BUFFER")) { return GL_SHADER_STORAGE_BUFFER; } +#endif +#ifdef GL_SKIP_MISSING_GLYPH_NV if (!strcmp(name, "GL_SKIP_MISSING_GLYPH_NV")) { return GL_SKIP_MISSING_GLYPH_NV; } +#endif +#ifdef GL_STANDARD_FONT_NAME_NV if (!strcmp(name, "GL_STANDARD_FONT_NAME_NV")) { return GL_STANDARD_FONT_NAME_NV; } +#endif +#ifdef GL_STENCIL_BACK_FAIL_ATI if (!strcmp(name, "GL_STENCIL_BACK_FAIL_ATI")) { return GL_STENCIL_BACK_FAIL_ATI; } +#endif +#ifdef GL_STENCIL_BACK_FUNC_ATI if (!strcmp(name, "GL_STENCIL_BACK_FUNC_ATI")) { return GL_STENCIL_BACK_FUNC_ATI; } +#endif +#ifdef GL_STORAGE_PRIVATE_APPLE if (!strcmp(name, "GL_STORAGE_PRIVATE_APPLE")) { return GL_STORAGE_PRIVATE_APPLE; } +#endif +#ifdef GL_SUN_read_video_pixels if (!strcmp(name, "GL_SUN_read_video_pixels")) { return GL_SUN_read_video_pixels; } +#endif +#ifdef GL_SURFACE_REGISTERED_NV if (!strcmp(name, "GL_SURFACE_REGISTERED_NV")) { return GL_SURFACE_REGISTERED_NV; } +#endif +#ifdef GL_TESSELLATION_MODE_AMD if (!strcmp(name, "GL_TESSELLATION_MODE_AMD")) { return GL_TESSELLATION_MODE_AMD; } +#endif +#ifdef GL_TESS_GEN_VERTEX_ORDER if (!strcmp(name, "GL_TESS_GEN_VERTEX_ORDER")) { return GL_TESS_GEN_VERTEX_ORDER; } +#endif +#ifdef GL_TEXTURE_BLUE_SIZE_EXT if (!strcmp(name, "GL_TEXTURE_BLUE_SIZE_EXT")) { return GL_TEXTURE_BLUE_SIZE_EXT; } +#endif +#ifdef GL_TEXTURE_BLUE_TYPE_ARB if (!strcmp(name, "GL_TEXTURE_BLUE_TYPE_ARB")) { return GL_TEXTURE_BLUE_TYPE_ARB; } +#endif +#ifdef GL_TEXTURE_BUFFER_FORMAT if (!strcmp(name, "GL_TEXTURE_BUFFER_FORMAT")) { return GL_TEXTURE_BUFFER_FORMAT; } +#endif +#ifdef GL_TEXTURE_BUFFER_OFFSET if (!strcmp(name, "GL_TEXTURE_BUFFER_OFFSET")) { return GL_TEXTURE_BUFFER_OFFSET; } +#endif +#ifdef GL_TEXTURE_GATHER_SHADOW if (!strcmp(name, "GL_TEXTURE_GATHER_SHADOW")) { return GL_TEXTURE_GATHER_SHADOW; } +#endif +#ifdef GL_TEXTURE_GEQUAL_R_SGIX if (!strcmp(name, "GL_TEXTURE_GEQUAL_R_SGIX")) { return GL_TEXTURE_GEQUAL_R_SGIX; } +#endif +#ifdef GL_TEXTURE_LEQUAL_R_SGIX if (!strcmp(name, "GL_TEXTURE_LEQUAL_R_SGIX")) { return GL_TEXTURE_LEQUAL_R_SGIX; } +#endif +#ifdef GL_TEXTURE_RECTANGLE_ARB if (!strcmp(name, "GL_TEXTURE_RECTANGLE_ARB")) { return GL_TEXTURE_RECTANGLE_ARB; } +#endif +#ifdef GL_TEXTURE_RECTANGLE_EXT if (!strcmp(name, "GL_TEXTURE_RECTANGLE_EXT")) { return GL_TEXTURE_RECTANGLE_EXT; } +#endif +#ifdef GL_TEXTURE_SWIZZLE_A_EXT if (!strcmp(name, "GL_TEXTURE_SWIZZLE_A_EXT")) { return GL_TEXTURE_SWIZZLE_A_EXT; } +#endif +#ifdef GL_TEXTURE_SWIZZLE_B_EXT if (!strcmp(name, "GL_TEXTURE_SWIZZLE_B_EXT")) { return GL_TEXTURE_SWIZZLE_B_EXT; } +#endif +#ifdef GL_TEXTURE_SWIZZLE_G_EXT if (!strcmp(name, "GL_TEXTURE_SWIZZLE_G_EXT")) { return GL_TEXTURE_SWIZZLE_G_EXT; } +#endif +#ifdef GL_TEXTURE_SWIZZLE_R_EXT if (!strcmp(name, "GL_TEXTURE_SWIZZLE_R_EXT")) { return GL_TEXTURE_SWIZZLE_R_EXT; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_NV if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_NV")) { return GL_TRANSFORM_FEEDBACK_NV; } +#endif +#ifdef GL_UNIFORM_BLOCK_BINDING if (!strcmp(name, "GL_UNIFORM_BLOCK_BINDING")) { return GL_UNIFORM_BLOCK_BINDING; } +#endif +#ifdef GL_UNIFORM_MATRIX_STRIDE if (!strcmp(name, "GL_UNIFORM_MATRIX_STRIDE")) { return GL_UNIFORM_MATRIX_STRIDE; } -if (!strcmp(name, "GL_UNSIGNED_INT_24_8_EXT")) +#endif +#ifdef GL_UNKNOWN_CONTEXT_RESET +if (!strcmp(name, "GL_UNKNOWN_CONTEXT_RESET")) { - return GL_UNSIGNED_INT_24_8_EXT; + return GL_UNKNOWN_CONTEXT_RESET; } +#endif +#ifdef GL_UNSIGNED_INT8_VEC2_NV if (!strcmp(name, "GL_UNSIGNED_INT8_VEC2_NV")) { return GL_UNSIGNED_INT8_VEC2_NV; } +#endif +#ifdef GL_UNSIGNED_INT8_VEC3_NV if (!strcmp(name, "GL_UNSIGNED_INT8_VEC3_NV")) { return GL_UNSIGNED_INT8_VEC3_NV; } +#endif +#ifdef GL_UNSIGNED_INT8_VEC4_NV if (!strcmp(name, "GL_UNSIGNED_INT8_VEC4_NV")) { return GL_UNSIGNED_INT8_VEC4_NV; } +#endif +#ifdef GL_UNSIGNED_INT_24_8_EXT +if (!strcmp(name, "GL_UNSIGNED_INT_24_8_EXT")) +{ + return GL_UNSIGNED_INT_24_8_EXT; +} +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_1D if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_1D")) { return GL_UNSIGNED_INT_IMAGE_1D; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_2D if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_2D")) { return GL_UNSIGNED_INT_IMAGE_2D; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_3D if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_3D")) { return GL_UNSIGNED_INT_IMAGE_3D; } +#endif +#ifdef GL_UNSIGNED_INT_VEC2_EXT if (!strcmp(name, "GL_UNSIGNED_INT_VEC2_EXT")) { return GL_UNSIGNED_INT_VEC2_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_VEC3_EXT if (!strcmp(name, "GL_UNSIGNED_INT_VEC3_EXT")) { return GL_UNSIGNED_INT_VEC3_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_VEC4_EXT if (!strcmp(name, "GL_UNSIGNED_INT_VEC4_EXT")) { return GL_UNSIGNED_INT_VEC4_EXT; } +#endif +#ifdef GL_VERTEX_ARRAY_LIST_IBM if (!strcmp(name, "GL_VERTEX_ARRAY_LIST_IBM")) { return GL_VERTEX_ARRAY_LIST_IBM; } +#endif +#ifdef GL_VERTEX_ARRAY_RANGE_NV if (!strcmp(name, "GL_VERTEX_ARRAY_RANGE_NV")) { return GL_VERTEX_ARRAY_RANGE_NV; } +#endif +#ifdef GL_VERTEX_ARRAY_SIZE_EXT if (!strcmp(name, "GL_VERTEX_ARRAY_SIZE_EXT")) { return GL_VERTEX_ARRAY_SIZE_EXT; } +#endif +#ifdef GL_VERTEX_ARRAY_TYPE_EXT if (!strcmp(name, "GL_VERTEX_ARRAY_TYPE_EXT")) { return GL_VERTEX_ARRAY_TYPE_EXT; } +#endif +#ifdef GL_VERTEX_ATTRIB_BINDING if (!strcmp(name, "GL_VERTEX_ATTRIB_BINDING")) { return GL_VERTEX_ATTRIB_BINDING; } +#endif +#ifdef GL_VERTEX_BINDING_BUFFER +if (!strcmp(name, "GL_VERTEX_BINDING_BUFFER")) +{ + return GL_VERTEX_BINDING_BUFFER; +} +#endif +#ifdef GL_VERTEX_BINDING_OFFSET if (!strcmp(name, "GL_VERTEX_BINDING_OFFSET")) { return GL_VERTEX_BINDING_OFFSET; } +#endif +#ifdef GL_VERTEX_BINDING_STRIDE if (!strcmp(name, "GL_VERTEX_BINDING_STRIDE")) { return GL_VERTEX_BINDING_STRIDE; } +#endif +#ifdef GL_VERTEX_ID_SWIZZLE_AMD if (!strcmp(name, "GL_VERTEX_ID_SWIZZLE_AMD")) { return GL_VERTEX_ID_SWIZZLE_AMD; } +#endif +#ifdef GL_VIDEO_BUFFER_PITCH_NV if (!strcmp(name, "GL_VIDEO_BUFFER_PITCH_NV")) { return GL_VIDEO_BUFFER_PITCH_NV; } +#endif +#ifdef GL_VIEWPORT_BOUNDS_RANGE +if (!strcmp(name, "GL_VIEWPORT_BOUNDS_RANGE")) +{ + return GL_VIEWPORT_BOUNDS_RANGE; +} +#endif +#ifdef GL_VIEW_CLASS_BPTC_FLOAT if (!strcmp(name, "GL_VIEW_CLASS_BPTC_FLOAT")) { return GL_VIEW_CLASS_BPTC_FLOAT; } +#endif +#ifdef GL_VIEW_CLASS_BPTC_UNORM if (!strcmp(name, "GL_VIEW_CLASS_BPTC_UNORM")) { return GL_VIEW_CLASS_BPTC_UNORM; } -if (!strcmp(name, "GL_VIEWPORT_BOUNDS_RANGE")) -{ - return GL_VIEWPORT_BOUNDS_RANGE; -} +#endif +#ifdef GL_WEIGHT_ARRAY_SIZE_ARB if (!strcmp(name, "GL_WEIGHT_ARRAY_SIZE_ARB")) { return GL_WEIGHT_ARRAY_SIZE_ARB; } +#endif +#ifdef GL_WEIGHT_ARRAY_TYPE_ARB if (!strcmp(name, "GL_WEIGHT_ARRAY_TYPE_ARB")) { return GL_WEIGHT_ARRAY_TYPE_ARB; } +#endif return _GL_UNDEFINED; case 25: +#ifdef GL_AMD_conservative_depth if (!strcmp(name, "GL_AMD_conservative_depth")) { return GL_AMD_conservative_depth; } +#endif +#ifdef GL_AMD_draw_buffers_blend if (!strcmp(name, "GL_AMD_draw_buffers_blend")) { return GL_AMD_draw_buffers_blend; } +#endif +#ifdef GL_ANGLE_framebuffer_blit if (!strcmp(name, "GL_ANGLE_framebuffer_blit")) { return GL_ANGLE_framebuffer_blit; } +#endif +#ifdef GL_ANGLE_instanced_arrays if (!strcmp(name, "GL_ANGLE_instanced_arrays")) { return GL_ANGLE_instanced_arrays; } +#endif +#ifdef GL_APPLE_object_purgeable if (!strcmp(name, "GL_APPLE_object_purgeable")) { return GL_APPLE_object_purgeable; } +#endif +#ifdef GL_ARB_color_buffer_float if (!strcmp(name, "GL_ARB_color_buffer_float")) { return GL_ARB_color_buffer_float; } +#endif +#ifdef GL_ARB_conservative_depth if (!strcmp(name, "GL_ARB_conservative_depth")) { return GL_ARB_conservative_depth; } +#endif +#ifdef GL_ARB_depth_buffer_float if (!strcmp(name, "GL_ARB_depth_buffer_float")) { return GL_ARB_depth_buffer_float; } +#endif +#ifdef GL_ARB_derivative_control +if (!strcmp(name, "GL_ARB_derivative_control")) +{ + return GL_ARB_derivative_control; +} +#endif +#ifdef GL_ARB_draw_buffers_blend if (!strcmp(name, "GL_ARB_draw_buffers_blend")) { return GL_ARB_draw_buffers_blend; } +#endif +#ifdef GL_ARB_framebuffer_object if (!strcmp(name, "GL_ARB_framebuffer_object")) { return GL_ARB_framebuffer_object; } +#endif +#ifdef GL_ARB_get_program_binary if (!strcmp(name, "GL_ARB_get_program_binary")) { return GL_ARB_get_program_binary; } +#endif +#ifdef GL_ARB_invalidate_subdata if (!strcmp(name, "GL_ARB_invalidate_subdata")) { return GL_ARB_invalidate_subdata; } +#endif +#ifdef GL_ARB_shader_texture_lod if (!strcmp(name, "GL_ARB_shader_texture_lod")) { return GL_ARB_shader_texture_lod; } +#endif +#ifdef GL_ARB_texture_rgb10_a2ui if (!strcmp(name, "GL_ARB_texture_rgb10_a2ui")) { return GL_ARB_texture_rgb10_a2ui; } +#endif +#ifdef GL_ASYNC_DRAW_PIXELS_SGIX if (!strcmp(name, "GL_ASYNC_DRAW_PIXELS_SGIX")) { return GL_ASYNC_DRAW_PIXELS_SGIX; } +#endif +#ifdef GL_ASYNC_READ_PIXELS_SGIX if (!strcmp(name, "GL_ASYNC_READ_PIXELS_SGIX")) { return GL_ASYNC_READ_PIXELS_SGIX; } -if (!strcmp(name, "GL_ATI_shader_texture_lod")) -{ - return GL_ATI_shader_texture_lod; -} +#endif +#ifdef GL_ATIX_texture_env_route if (!strcmp(name, "GL_ATIX_texture_env_route")) { return GL_ATIX_texture_env_route; } +#endif +#ifdef GL_ATI_shader_texture_lod +if (!strcmp(name, "GL_ATI_shader_texture_lod")) +{ + return GL_ATI_shader_texture_lod; +} +#endif +#ifdef GL_ATTRIB_ARRAY_STRIDE_NV if (!strcmp(name, "GL_ATTRIB_ARRAY_STRIDE_NV")) { return GL_ATTRIB_ARRAY_STRIDE_NV; } +#endif +#ifdef GL_BLEND_EQUATION_RGB_EXT if (!strcmp(name, "GL_BLEND_EQUATION_RGB_EXT")) { return GL_BLEND_EQUATION_RGB_EXT; } +#endif +#ifdef GL_BUFFER_MAP_POINTER_ARB if (!strcmp(name, "GL_BUFFER_MAP_POINTER_ARB")) { return GL_BUFFER_MAP_POINTER_ARB; } +#endif +#ifdef GL_BUMP_NUM_TEX_UNITS_ATI if (!strcmp(name, "GL_BUMP_NUM_TEX_UNITS_ATI")) { return GL_BUMP_NUM_TEX_UNITS_ATI; } +#endif +#ifdef GL_CG_FRAGMENT_SHADER_EXT if (!strcmp(name, "GL_CG_FRAGMENT_SHADER_EXT")) { return GL_CG_FRAGMENT_SHADER_EXT; } +#endif +#ifdef GL_CIRCULAR_CCW_ARC_TO_NV if (!strcmp(name, "GL_CIRCULAR_CCW_ARC_TO_NV")) { return GL_CIRCULAR_CCW_ARC_TO_NV; } +#endif +#ifdef GL_CLAMP_VERTEX_COLOR_ARB if (!strcmp(name, "GL_CLAMP_VERTEX_COLOR_ARB")) { return GL_CLAMP_VERTEX_COLOR_ARB; } +#endif +#ifdef GL_CLIENT_ALL_ATTRIB_BITS if (!strcmp(name, "GL_CLIENT_ALL_ATTRIB_BITS")) { return GL_CLIENT_ALL_ATTRIB_BITS; } +#endif +#ifdef GL_CLIENT_PIXEL_STORE_BIT if (!strcmp(name, "GL_CLIENT_PIXEL_STORE_BIT")) { return GL_CLIENT_PIXEL_STORE_BIT; } +#endif +#ifdef GL_COLOR_ARRAY_ADDRESS_NV if (!strcmp(name, "GL_COLOR_ARRAY_ADDRESS_NV")) { return GL_COLOR_ARRAY_ADDRESS_NV; } +#endif +#ifdef GL_COLOR_ARRAY_STRIDE_EXT if (!strcmp(name, "GL_COLOR_ARRAY_STRIDE_EXT")) { return GL_COLOR_ARRAY_STRIDE_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT10_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT10_EXT")) { return GL_COLOR_ATTACHMENT10_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT11_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT11_EXT")) { return GL_COLOR_ATTACHMENT11_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT12_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT12_EXT")) { return GL_COLOR_ATTACHMENT12_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT13_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT13_EXT")) { return GL_COLOR_ATTACHMENT13_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT14_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT14_EXT")) { return GL_COLOR_ATTACHMENT14_EXT; } +#endif +#ifdef GL_COLOR_ATTACHMENT15_EXT if (!strcmp(name, "GL_COLOR_ATTACHMENT15_EXT")) { return GL_COLOR_ATTACHMENT15_EXT; } +#endif +#ifdef GL_COLOR_TABLE_ALPHA_SIZE if (!strcmp(name, "GL_COLOR_TABLE_ALPHA_SIZE")) { return GL_COLOR_TABLE_ALPHA_SIZE; } +#endif +#ifdef GL_COLOR_TABLE_FORMAT_EXT if (!strcmp(name, "GL_COLOR_TABLE_FORMAT_EXT")) { return GL_COLOR_TABLE_FORMAT_EXT; } +#endif +#ifdef GL_COLOR_TABLE_FORMAT_SGI if (!strcmp(name, "GL_COLOR_TABLE_FORMAT_SGI")) { return GL_COLOR_TABLE_FORMAT_SGI; } +#endif +#ifdef GL_COLOR_TABLE_GREEN_SIZE if (!strcmp(name, "GL_COLOR_TABLE_GREEN_SIZE")) { return GL_COLOR_TABLE_GREEN_SIZE; } +#endif +#ifdef GL_COMBINER_SUM_OUTPUT_NV if (!strcmp(name, "GL_COMBINER_SUM_OUTPUT_NV")) { return GL_COMBINER_SUM_OUTPUT_NV; } +#endif +#ifdef GL_COMPARE_REF_TO_TEXTURE if (!strcmp(name, "GL_COMPARE_REF_TO_TEXTURE")) { return GL_COMPARE_REF_TO_TEXTURE; } +#endif +#ifdef GL_COMPATIBLE_SUBROUTINES if (!strcmp(name, "GL_COMPATIBLE_SUBROUTINES")) { return GL_COMPATIBLE_SUBROUTINES; } +#endif +#ifdef GL_CONTEXT_FLAG_DEBUG_BIT if (!strcmp(name, "GL_CONTEXT_FLAG_DEBUG_BIT")) { return GL_CONTEXT_FLAG_DEBUG_BIT; } +#endif +#ifdef GL_CONVOLUTION_FORMAT_EXT if (!strcmp(name, "GL_CONVOLUTION_FORMAT_EXT")) { return GL_CONVOLUTION_FORMAT_EXT; } +#endif +#ifdef GL_CONVOLUTION_HEIGHT_EXT if (!strcmp(name, "GL_CONVOLUTION_HEIGHT_EXT")) { return GL_CONVOLUTION_HEIGHT_EXT; } +#endif +#ifdef GL_COVERAGE_MODULATION_NV +if (!strcmp(name, "GL_COVERAGE_MODULATION_NV")) +{ + return GL_COVERAGE_MODULATION_NV; +} +#endif +#ifdef GL_COVERAGE_MODULATION_NV +if (!strcmp(name, "GL_COVERAGE_MODULATION_NV")) +{ + return GL_COVERAGE_MODULATION_NV; +} +#endif +#ifdef GL_CURRENT_FOG_COORDINATE if (!strcmp(name, "GL_CURRENT_FOG_COORDINATE")) { return GL_CURRENT_FOG_COORDINATE; } +#endif +#ifdef GL_CURRENT_TEXTURE_COORDS if (!strcmp(name, "GL_CURRENT_TEXTURE_COORDS")) { return GL_CURRENT_TEXTURE_COORDS; } +#endif +#ifdef GL_DEBUG_SEVERITY_LOW_AMD if (!strcmp(name, "GL_DEBUG_SEVERITY_LOW_AMD")) { return GL_DEBUG_SEVERITY_LOW_AMD; } +#endif +#ifdef GL_DEBUG_SEVERITY_LOW_ARB if (!strcmp(name, "GL_DEBUG_SEVERITY_LOW_ARB")) { return GL_DEBUG_SEVERITY_LOW_ARB; } +#endif +#ifdef GL_DEBUG_SOURCE_OTHER_ARB if (!strcmp(name, "GL_DEBUG_SOURCE_OTHER_ARB")) { return GL_DEBUG_SOURCE_OTHER_ARB; } +#endif +#ifdef GL_DEBUG_TYPE_PERFORMANCE if (!strcmp(name, "GL_DEBUG_TYPE_PERFORMANCE")) { return GL_DEBUG_TYPE_PERFORMANCE; } +#endif +#ifdef GL_DEBUG_TYPE_PORTABILITY if (!strcmp(name, "GL_DEBUG_TYPE_PORTABILITY")) { return GL_DEBUG_TYPE_PORTABILITY; } +#endif +#ifdef GL_DEPTH_COMPONENT16_SGIX if (!strcmp(name, "GL_DEPTH_COMPONENT16_SGIX")) { return GL_DEPTH_COMPONENT16_SGIX; } +#endif +#ifdef GL_DEPTH_COMPONENT24_SGIX if (!strcmp(name, "GL_DEPTH_COMPONENT24_SGIX")) { return GL_DEPTH_COMPONENT24_SGIX; } +#endif +#ifdef GL_DEPTH_COMPONENT32_SGIX if (!strcmp(name, "GL_DEPTH_COMPONENT32_SGIX")) { return GL_DEPTH_COMPONENT32_SGIX; } +#endif +#ifdef GL_DEPTH_TEXTURE_MODE_ARB if (!strcmp(name, "GL_DEPTH_TEXTURE_MODE_ARB")) { return GL_DEPTH_TEXTURE_MODE_ARB; } +#endif +#ifdef GL_DRAW_FRAMEBUFFER_ANGLE if (!strcmp(name, "GL_DRAW_FRAMEBUFFER_ANGLE")) { return GL_DRAW_FRAMEBUFFER_ANGLE; } +#endif +#ifdef GL_EDGE_FLAG_ARRAY_STRIDE if (!strcmp(name, "GL_EDGE_FLAG_ARRAY_STRIDE")) { return GL_EDGE_FLAG_ARRAY_STRIDE; } +#endif +#ifdef GL_ELEMENT_ARRAY_TYPE_ATI if (!strcmp(name, "GL_ELEMENT_ARRAY_TYPE_ATI")) { return GL_ELEMENT_ARRAY_TYPE_ATI; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB0_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB0_NV")) { return GL_EVAL_VERTEX_ATTRIB0_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB1_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB1_NV")) { return GL_EVAL_VERTEX_ATTRIB1_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB2_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB2_NV")) { return GL_EVAL_VERTEX_ATTRIB2_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB3_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB3_NV")) { return GL_EVAL_VERTEX_ATTRIB3_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB4_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB4_NV")) { return GL_EVAL_VERTEX_ATTRIB4_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB5_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB5_NV")) { return GL_EVAL_VERTEX_ATTRIB5_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB6_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB6_NV")) { return GL_EVAL_VERTEX_ATTRIB6_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB7_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB7_NV")) { return GL_EVAL_VERTEX_ATTRIB7_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB8_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB8_NV")) { return GL_EVAL_VERTEX_ATTRIB8_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB9_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB9_NV")) { return GL_EVAL_VERTEX_ATTRIB9_NV; } +#endif +#ifdef GL_EXT_framebuffer_object if (!strcmp(name, "GL_EXT_framebuffer_object")) { return GL_EXT_framebuffer_object; } +#endif +#ifdef GL_EXT_raster_multisample +if (!strcmp(name, "GL_EXT_raster_multisample")) +{ + return GL_EXT_raster_multisample; +} +#endif +#ifdef GL_EXT_shader_integer_mix +if (!strcmp(name, "GL_EXT_shader_integer_mix")) +{ + return GL_EXT_shader_integer_mix; +} +#endif +#ifdef GL_EXT_texture_edge_clamp if (!strcmp(name, "GL_EXT_texture_edge_clamp")) { return GL_EXT_texture_edge_clamp; } +#endif +#ifdef GL_EXT_transform_feedback if (!strcmp(name, "GL_EXT_transform_feedback")) { return GL_EXT_transform_feedback; } +#endif +#ifdef GL_FOG_COORD_ARRAY_STRIDE if (!strcmp(name, "GL_FOG_COORD_ARRAY_STRIDE")) { return GL_FOG_COORD_ARRAY_STRIDE; } +#endif +#ifdef GL_FOG_PATCHY_FACTOR_SGIX if (!strcmp(name, "GL_FOG_PATCHY_FACTOR_SGIX")) { return GL_FOG_PATCHY_FACTOR_SGIX; } +#endif +#ifdef GL_FONT_UNINTELLIGIBLE_NV +if (!strcmp(name, "GL_FONT_UNINTELLIGIBLE_NV")) +{ + return GL_FONT_UNINTELLIGIBLE_NV; +} +#endif +#ifdef GL_FRAMEBUFFER_RENDERABLE if (!strcmp(name, "GL_FRAMEBUFFER_RENDERABLE")) { return GL_FRAMEBUFFER_RENDERABLE; } +#endif +#ifdef GL_GET_TEXTURE_IMAGE_TYPE if (!strcmp(name, "GL_GET_TEXTURE_IMAGE_TYPE")) { return GL_GET_TEXTURE_IMAGE_TYPE; } +#endif +#ifdef GL_HISTOGRAM_RED_SIZE_EXT if (!strcmp(name, "GL_HISTOGRAM_RED_SIZE_EXT")) { return GL_HISTOGRAM_RED_SIZE_EXT; } +#endif +#ifdef GL_IBM_vertex_array_lists if (!strcmp(name, "GL_IBM_vertex_array_lists")) { return GL_IBM_vertex_array_lists; } +#endif +#ifdef GL_IMAGE_BINDING_NAME_EXT if (!strcmp(name, "GL_IMAGE_BINDING_NAME_EXT")) { return GL_IMAGE_BINDING_NAME_EXT; } +#endif +#ifdef GL_IMAGE_CLASS_10_10_10_2 if (!strcmp(name, "GL_IMAGE_CLASS_10_10_10_2")) { return GL_IMAGE_CLASS_10_10_10_2; } +#endif +#ifdef GL_INDEX_ARRAY_ADDRESS_NV if (!strcmp(name, "GL_INDEX_ARRAY_ADDRESS_NV")) { return GL_INDEX_ARRAY_ADDRESS_NV; } +#endif +#ifdef GL_INDEX_ARRAY_STRIDE_EXT if (!strcmp(name, "GL_INDEX_ARRAY_STRIDE_EXT")) { return GL_INDEX_ARRAY_STRIDE_EXT; } +#endif +#ifdef GL_INNOCENT_CONTEXT_RESET +if (!strcmp(name, "GL_INNOCENT_CONTEXT_RESET")) +{ + return GL_INNOCENT_CONTEXT_RESET; +} +#endif +#ifdef GL_INTEL_framebuffer_CMAA +if (!strcmp(name, "GL_INTEL_framebuffer_CMAA")) +{ + return GL_INTEL_framebuffer_CMAA; +} +#endif +#ifdef GL_INTERLEAVED_ATTRIBS_NV if (!strcmp(name, "GL_INTERLEAVED_ATTRIBS_NV")) { return GL_INTERLEAVED_ATTRIBS_NV; } +#endif +#ifdef GL_INT_IMAGE_1D_ARRAY_EXT if (!strcmp(name, "GL_INT_IMAGE_1D_ARRAY_EXT")) { return GL_INT_IMAGE_1D_ARRAY_EXT; } +#endif +#ifdef GL_INT_IMAGE_2D_ARRAY_EXT if (!strcmp(name, "GL_INT_IMAGE_2D_ARRAY_EXT")) { return GL_INT_IMAGE_2D_ARRAY_EXT; } +#endif +#ifdef GL_INT_SAMPLER_BUFFER_AMD if (!strcmp(name, "GL_INT_SAMPLER_BUFFER_AMD")) { return GL_INT_SAMPLER_BUFFER_AMD; } +#endif +#ifdef GL_INT_SAMPLER_BUFFER_EXT if (!strcmp(name, "GL_INT_SAMPLER_BUFFER_EXT")) { return GL_INT_SAMPLER_BUFFER_EXT; } +#endif +#ifdef GL_INVARIANT_DATATYPE_EXT if (!strcmp(name, "GL_INVARIANT_DATATYPE_EXT")) { return GL_INVARIANT_DATATYPE_EXT; } +#endif +#ifdef GL_INVERTED_SCREEN_W_REND if (!strcmp(name, "GL_INVERTED_SCREEN_W_REND")) { return GL_INVERTED_SCREEN_W_REND; } +#endif +#ifdef GL_LAST_VERTEX_CONVENTION +if (!strcmp(name, "GL_LAST_VERTEX_CONVENTION")) +{ + return GL_LAST_VERTEX_CONVENTION; +} +#endif +#ifdef GL_LAST_VERTEX_CONVENTION if (!strcmp(name, "GL_LAST_VERTEX_CONVENTION")) { return GL_LAST_VERTEX_CONVENTION; } +#endif +#ifdef GL_LAYER_PROVOKING_VERTEX if (!strcmp(name, "GL_LAYER_PROVOKING_VERTEX")) { return GL_LAYER_PROVOKING_VERTEX; } +#endif +#ifdef GL_LINE_WIDTH_GRANULARITY if (!strcmp(name, "GL_LINE_WIDTH_GRANULARITY")) { return GL_LINE_WIDTH_GRANULARITY; } +#endif +#ifdef GL_LUMINANCE12_ALPHA4_EXT if (!strcmp(name, "GL_LUMINANCE12_ALPHA4_EXT")) { return GL_LUMINANCE12_ALPHA4_EXT; } +#endif +#ifdef GL_LUMINANCE_ALPHA16F_ARB if (!strcmp(name, "GL_LUMINANCE_ALPHA16F_ARB")) { return GL_LUMINANCE_ALPHA16F_ARB; } +#endif +#ifdef GL_LUMINANCE_ALPHA16I_EXT if (!strcmp(name, "GL_LUMINANCE_ALPHA16I_EXT")) { return GL_LUMINANCE_ALPHA16I_EXT; } +#endif +#ifdef GL_LUMINANCE_ALPHA32F_ARB if (!strcmp(name, "GL_LUMINANCE_ALPHA32F_ARB")) { return GL_LUMINANCE_ALPHA32F_ARB; } +#endif +#ifdef GL_LUMINANCE_ALPHA32I_EXT if (!strcmp(name, "GL_LUMINANCE_ALPHA32I_EXT")) { return GL_LUMINANCE_ALPHA32I_EXT; } +#endif +#ifdef GL_LUMINANCE_ALPHA8UI_EXT if (!strcmp(name, "GL_LUMINANCE_ALPHA8UI_EXT")) { return GL_LUMINANCE_ALPHA8UI_EXT; } +#endif +#ifdef GL_MANUAL_GENERATE_MIPMAP if (!strcmp(name, "GL_MANUAL_GENERATE_MIPMAP")) { return GL_MANUAL_GENERATE_MIPMAP; } +#endif +#ifdef GL_MAP_FLUSH_EXPLICIT_BIT if (!strcmp(name, "GL_MAP_FLUSH_EXPLICIT_BIT")) { return GL_MAP_FLUSH_EXPLICIT_BIT; } +#endif +#ifdef GL_MAP_UNSYNCHRONIZED_BIT if (!strcmp(name, "GL_MAP_UNSYNCHRONIZED_BIT")) { return GL_MAP_UNSYNCHRONIZED_BIT; } +#endif +#ifdef GL_MATERIAL_SIDE_HINT_PGI if (!strcmp(name, "GL_MATERIAL_SIDE_HINT_PGI")) { return GL_MATERIAL_SIDE_HINT_PGI; } +#endif +#ifdef GL_MATRIX_INDEX_ARRAY_ARB if (!strcmp(name, "GL_MATRIX_INDEX_ARRAY_ARB")) { return GL_MATRIX_INDEX_ARRAY_ARB; } +#endif +#ifdef GL_MAX_ATTRIB_STACK_DEPTH if (!strcmp(name, "GL_MAX_ATTRIB_STACK_DEPTH")) { return GL_MAX_ATTRIB_STACK_DEPTH; } +#endif +#ifdef GL_MAX_CONVOLUTION_HEIGHT if (!strcmp(name, "GL_MAX_CONVOLUTION_HEIGHT")) { return GL_MAX_CONVOLUTION_HEIGHT; } +#endif +#ifdef GL_MAX_FRAMEBUFFER_HEIGHT if (!strcmp(name, "GL_MAX_FRAMEBUFFER_HEIGHT")) { return GL_MAX_FRAMEBUFFER_HEIGHT; } +#endif +#ifdef GL_MAX_FRAMEBUFFER_LAYERS if (!strcmp(name, "GL_MAX_FRAMEBUFFER_LAYERS")) { return GL_MAX_FRAMEBUFFER_LAYERS; } +#endif +#ifdef GL_MAX_RASTER_SAMPLES_EXT +if (!strcmp(name, "GL_MAX_RASTER_SAMPLES_EXT")) +{ + return GL_MAX_RASTER_SAMPLES_EXT; +} +#endif +#ifdef GL_MAX_RASTER_SAMPLES_EXT +if (!strcmp(name, "GL_MAX_RASTER_SAMPLES_EXT")) +{ + return GL_MAX_RASTER_SAMPLES_EXT; +} +#endif +#ifdef GL_MAX_TEXTURE_COORDS_ARB if (!strcmp(name, "GL_MAX_TEXTURE_COORDS_ARB")) { return GL_MAX_TEXTURE_COORDS_ARB; } +#endif +#ifdef GL_MAX_UNIFORM_BLOCK_SIZE if (!strcmp(name, "GL_MAX_UNIFORM_BLOCK_SIZE")) { return GL_MAX_UNIFORM_BLOCK_SIZE; } +#endif +#ifdef GL_MAX_VARYING_COMPONENTS if (!strcmp(name, "GL_MAX_VARYING_COMPONENTS")) { return GL_MAX_VARYING_COMPONENTS; } +#endif +#ifdef GL_MAX_VARYING_FLOATS_ARB if (!strcmp(name, "GL_MAX_VARYING_FLOATS_ARB")) { return GL_MAX_VARYING_FLOATS_ARB; } +#endif +#ifdef GL_MAX_VERTEX_ATTRIBS_ARB if (!strcmp(name, "GL_MAX_VERTEX_ATTRIBS_ARB")) { return GL_MAX_VERTEX_ATTRIBS_ARB; } +#endif +#ifdef GL_MAX_VERTEX_STREAMS_ATI if (!strcmp(name, "GL_MAX_VERTEX_STREAMS_ATI")) { return GL_MAX_VERTEX_STREAMS_ATI; } +#endif +#ifdef GL_MODULATE_SUBTRACT_ATIX if (!strcmp(name, "GL_MODULATE_SUBTRACT_ATIX")) { return GL_MODULATE_SUBTRACT_ATIX; } +#endif +#ifdef GL_NEAREST_MIPMAP_NEAREST if (!strcmp(name, "GL_NEAREST_MIPMAP_NEAREST")) { return GL_NEAREST_MIPMAP_NEAREST; } +#endif +#ifdef GL_NORMAL_ARRAY_COUNT_EXT if (!strcmp(name, "GL_NORMAL_ARRAY_COUNT_EXT")) { return GL_NORMAL_ARRAY_COUNT_EXT; } +#endif +#ifdef GL_NORMAL_ARRAY_LENGTH_NV if (!strcmp(name, "GL_NORMAL_ARRAY_LENGTH_NV")) { return GL_NORMAL_ARRAY_LENGTH_NV; } +#endif +#ifdef GL_NVX_conditional_render +if (!strcmp(name, "GL_NVX_conditional_render")) +{ + return GL_NVX_conditional_render; +} +#endif +#ifdef GL_NV_conservative_raster +if (!strcmp(name, "GL_NV_conservative_raster")) +{ + return GL_NV_conservative_raster; +} +#endif +#ifdef GL_NV_copy_depth_to_color if (!strcmp(name, "GL_NV_copy_depth_to_color")) { return GL_NV_copy_depth_to_color; } +#endif +#ifdef GL_NV_register_combiners2 if (!strcmp(name, "GL_NV_register_combiners2")) { return GL_NV_register_combiners2; } +#endif +#ifdef GL_NV_shader_atomic_float if (!strcmp(name, "GL_NV_shader_atomic_float")) { return GL_NV_shader_atomic_float; } +#endif +#ifdef GL_NV_shader_atomic_int64 +if (!strcmp(name, "GL_NV_shader_atomic_int64")) +{ + return GL_NV_shader_atomic_int64; +} +#endif +#ifdef GL_NV_shader_thread_group +if (!strcmp(name, "GL_NV_shader_thread_group")) +{ + return GL_NV_shader_thread_group; +} +#endif +#ifdef GL_NV_texture_multisample if (!strcmp(name, "GL_NV_texture_multisample")) { return GL_NV_texture_multisample; } +#endif +#ifdef GL_NV_transform_feedback2 if (!strcmp(name, "GL_NV_transform_feedback2")) { return GL_NV_transform_feedback2; } +#endif +#ifdef GL_NV_vertex_array_range2 if (!strcmp(name, "GL_NV_vertex_array_range2")) { return GL_NV_vertex_array_range2; } -if (!strcmp(name, "GL_NVX_conditional_render")) -{ - return GL_NVX_conditional_render; -} +#endif +#ifdef GL_OBJECT_BUFFER_SIZE_ATI if (!strcmp(name, "GL_OBJECT_BUFFER_SIZE_ATI")) { return GL_OBJECT_BUFFER_SIZE_ATI; } +#endif +#ifdef GL_OBJECT_LINK_STATUS_ARB if (!strcmp(name, "GL_OBJECT_LINK_STATUS_ARB")) { return GL_OBJECT_LINK_STATUS_ARB; } +#endif +#ifdef GL_OFFSET_TEXTURE_BIAS_NV if (!strcmp(name, "GL_OFFSET_TEXTURE_BIAS_NV")) { return GL_OFFSET_TEXTURE_BIAS_NV; } +#endif +#ifdef GL_OP_MULTIPLY_MATRIX_EXT if (!strcmp(name, "GL_OP_MULTIPLY_MATRIX_EXT")) { return GL_OP_MULTIPLY_MATRIX_EXT; } +#endif +#ifdef GL_OUTPUT_POINT_SIZE_ATIX if (!strcmp(name, "GL_OUTPUT_POINT_SIZE_ATIX")) { return GL_OUTPUT_POINT_SIZE_ATIX; } +#endif +#ifdef GL_PATH_ERROR_POSITION_NV if (!strcmp(name, "GL_PATH_ERROR_POSITION_NV")) { return GL_PATH_ERROR_POSITION_NV; } +#endif +#ifdef GL_PATH_GEN_COMPONENTS_NV if (!strcmp(name, "GL_PATH_GEN_COMPONENTS_NV")) { return GL_PATH_GEN_COMPONENTS_NV; } +#endif +#ifdef GL_PER_STAGE_CONSTANTS_NV if (!strcmp(name, "GL_PER_STAGE_CONSTANTS_NV")) { return GL_PER_STAGE_CONSTANTS_NV; } +#endif +#ifdef GL_PIXEL_CUBIC_WEIGHT_EXT if (!strcmp(name, "GL_PIXEL_CUBIC_WEIGHT_EXT")) { return GL_PIXEL_CUBIC_WEIGHT_EXT; } +#endif +#ifdef GL_PIXEL_TRANSFORM_2D_EXT if (!strcmp(name, "GL_PIXEL_TRANSFORM_2D_EXT")) { return GL_PIXEL_TRANSFORM_2D_EXT; } +#endif +#ifdef GL_POINT_SIZE_GRANULARITY if (!strcmp(name, "GL_POINT_SIZE_GRANULARITY")) { return GL_POINT_SIZE_GRANULARITY; } +#endif +#ifdef GL_POINT_SPRITE_R_MODE_NV if (!strcmp(name, "GL_POINT_SPRITE_R_MODE_NV")) { return GL_POINT_SPRITE_R_MODE_NV; } +#endif +#ifdef GL_PROGRAM_BINARY_FORMATS if (!strcmp(name, "GL_PROGRAM_BINARY_FORMATS")) { return GL_PROGRAM_BINARY_FORMATS; } +#endif +#ifdef GL_PROGRAM_PARAMETERS_ARB if (!strcmp(name, "GL_PROGRAM_PARAMETERS_ARB")) { return GL_PROGRAM_PARAMETERS_ARB; } +#endif +#ifdef GL_PROGRAM_POINT_SIZE_ARB if (!strcmp(name, "GL_PROGRAM_POINT_SIZE_ARB")) { return GL_PROGRAM_POINT_SIZE_ARB; } +#endif +#ifdef GL_PROGRAM_POINT_SIZE_EXT if (!strcmp(name, "GL_PROGRAM_POINT_SIZE_EXT")) { return GL_PROGRAM_POINT_SIZE_EXT; } +#endif +#ifdef GL_PROJECTION_STACK_DEPTH if (!strcmp(name, "GL_PROJECTION_STACK_DEPTH")) { return GL_PROJECTION_STACK_DEPTH; } +#endif +#ifdef GL_PROXY_TEXTURE_1D_ARRAY if (!strcmp(name, "GL_PROXY_TEXTURE_1D_ARRAY")) { return GL_PROXY_TEXTURE_1D_ARRAY; } +#endif +#ifdef GL_PROXY_TEXTURE_2D_ARRAY if (!strcmp(name, "GL_PROXY_TEXTURE_2D_ARRAY")) { return GL_PROXY_TEXTURE_2D_ARRAY; } +#endif +#ifdef GL_PROXY_TEXTURE_CUBE_MAP if (!strcmp(name, "GL_PROXY_TEXTURE_CUBE_MAP")) { return GL_PROXY_TEXTURE_CUBE_MAP; } +#endif +#ifdef GL_QUERY_COUNTER_BITS_ARB if (!strcmp(name, "GL_QUERY_COUNTER_BITS_ARB")) { return GL_QUERY_COUNTER_BITS_ARB; } +#endif +#ifdef GL_QUERY_NO_WAIT_INVERTED +if (!strcmp(name, "GL_QUERY_NO_WAIT_INVERTED")) +{ + return GL_QUERY_NO_WAIT_INVERTED; +} +#endif +#ifdef GL_QUERY_RESULT_AVAILABLE if (!strcmp(name, "GL_QUERY_RESULT_AVAILABLE")) { return GL_QUERY_RESULT_AVAILABLE; } +#endif +#ifdef GL_RASTERIZER_DISCARD_EXT if (!strcmp(name, "GL_RASTERIZER_DISCARD_EXT")) { return GL_RASTERIZER_DISCARD_EXT; } +#endif +#ifdef GL_RASTER_MULTISAMPLE_EXT +if (!strcmp(name, "GL_RASTER_MULTISAMPLE_EXT")) +{ + return GL_RASTER_MULTISAMPLE_EXT; +} +#endif +#ifdef GL_RASTER_MULTISAMPLE_EXT +if (!strcmp(name, "GL_RASTER_MULTISAMPLE_EXT")) +{ + return GL_RASTER_MULTISAMPLE_EXT; +} +#endif +#ifdef GL_READ_FRAMEBUFFER_ANGLE if (!strcmp(name, "GL_READ_FRAMEBUFFER_ANGLE")) { return GL_READ_FRAMEBUFFER_ANGLE; } +#endif +#ifdef GL_RENDERBUFFER_BLUE_SIZE if (!strcmp(name, "GL_RENDERBUFFER_BLUE_SIZE")) { return GL_RENDERBUFFER_BLUE_SIZE; } +#endif +#ifdef GL_RENDERBUFFER_WIDTH_EXT if (!strcmp(name, "GL_RENDERBUFFER_WIDTH_EXT")) { return GL_RENDERBUFFER_WIDTH_EXT; } +#endif +#ifdef GL_RESAMPLE_DECIMATE_SGIX if (!strcmp(name, "GL_RESAMPLE_DECIMATE_SGIX")) { return GL_RESAMPLE_DECIMATE_SGIX; } +#endif +#ifdef GL_RESAMPLE_REPLICATE_OML if (!strcmp(name, "GL_RESAMPLE_REPLICATE_OML")) { return GL_RESAMPLE_REPLICATE_OML; } +#endif +#ifdef GL_RESAMPLE_ZERO_FILL_OML if (!strcmp(name, "GL_RESAMPLE_ZERO_FILL_OML")) { return GL_RESAMPLE_ZERO_FILL_OML; } -if (!strcmp(name, "GL_SAMPLE_COVERAGE_INVERT")) -{ - return GL_SAMPLE_COVERAGE_INVERT; -} -if (!strcmp(name, "GL_SAMPLE_MASK_INVERT_EXT")) -{ - return GL_SAMPLE_MASK_INVERT_EXT; -} -if (!strcmp(name, "GL_SAMPLE_MASK_VALUE_SGIS")) -{ - return GL_SAMPLE_MASK_VALUE_SGIS; -} +#endif +#ifdef GL_SAMPLER_2D_MULTISAMPLE if (!strcmp(name, "GL_SAMPLER_2D_MULTISAMPLE")) { return GL_SAMPLER_2D_MULTISAMPLE; } +#endif +#ifdef GL_SAMPLER_2D_RECT_SHADOW if (!strcmp(name, "GL_SAMPLER_2D_RECT_SHADOW")) { return GL_SAMPLER_2D_RECT_SHADOW; } +#endif +#ifdef GL_SAMPLER_CUBE_MAP_ARRAY if (!strcmp(name, "GL_SAMPLER_CUBE_MAP_ARRAY")) { return GL_SAMPLER_CUBE_MAP_ARRAY; } +#endif +#ifdef GL_SAMPLE_COVERAGE_INVERT +if (!strcmp(name, "GL_SAMPLE_COVERAGE_INVERT")) +{ + return GL_SAMPLE_COVERAGE_INVERT; +} +#endif +#ifdef GL_SAMPLE_MASK_INVERT_EXT +if (!strcmp(name, "GL_SAMPLE_MASK_INVERT_EXT")) +{ + return GL_SAMPLE_MASK_INVERT_EXT; +} +#endif +#ifdef GL_SAMPLE_MASK_VALUE_SGIS +if (!strcmp(name, "GL_SAMPLE_MASK_VALUE_SGIS")) +{ + return GL_SAMPLE_MASK_VALUE_SGIS; +} +#endif +#ifdef GL_SGIS_point_line_texgen if (!strcmp(name, "GL_SGIS_point_line_texgen")) { return GL_SGIS_point_line_texgen; } +#endif +#ifdef GL_SGIX_tag_sample_buffer if (!strcmp(name, "GL_SGIX_tag_sample_buffer")) { return GL_SGIX_tag_sample_buffer; } +#endif +#ifdef GL_SHADOW_ATTENUATION_EXT if (!strcmp(name, "GL_SHADOW_ATTENUATION_EXT")) { return GL_SHADOW_ATTENUATION_EXT; } +#endif +#ifdef GL_SLUMINANCE8_ALPHA8_EXT if (!strcmp(name, "GL_SLUMINANCE8_ALPHA8_EXT")) { return GL_SLUMINANCE8_ALPHA8_EXT; } +#endif +#ifdef GL_SPARSE_STORAGE_BIT_ARB +if (!strcmp(name, "GL_SPARSE_STORAGE_BIT_ARB")) +{ + return GL_SPARSE_STORAGE_BIT_ARB; +} +#endif +#ifdef GL_STENCIL_ATTACHMENT_EXT if (!strcmp(name, "GL_STENCIL_ATTACHMENT_EXT")) { return GL_STENCIL_ATTACHMENT_EXT; } +#endif +#ifdef GL_STENCIL_BACK_WRITEMASK if (!strcmp(name, "GL_STENCIL_BACK_WRITEMASK")) { return GL_STENCIL_BACK_WRITEMASK; } +#endif +#ifdef GL_SUBSAMPLE_DISTANCE_AMD if (!strcmp(name, "GL_SUBSAMPLE_DISTANCE_AMD")) { return GL_SUBSAMPLE_DISTANCE_AMD; } +#endif +#ifdef GL_SUPERSAMPLE_SCALE_X_NV +if (!strcmp(name, "GL_SUPERSAMPLE_SCALE_X_NV")) +{ + return GL_SUPERSAMPLE_SCALE_X_NV; +} +#endif +#ifdef GL_SUPERSAMPLE_SCALE_Y_NV +if (!strcmp(name, "GL_SUPERSAMPLE_SCALE_Y_NV")) +{ + return GL_SUPERSAMPLE_SCALE_Y_NV; +} +#endif +#ifdef GL_TANGENT_ARRAY_TYPE_EXT if (!strcmp(name, "GL_TANGENT_ARRAY_TYPE_EXT")) { return GL_TANGENT_ARRAY_TYPE_EXT; } +#endif +#ifdef GL_TESS_EVALUATION_SHADER if (!strcmp(name, "GL_TESS_EVALUATION_SHADER")) { return GL_TESS_EVALUATION_SHADER; } +#endif +#ifdef GL_TEXTURE_1D_BINDING_EXT if (!strcmp(name, "GL_TEXTURE_1D_BINDING_EXT")) { return GL_TEXTURE_1D_BINDING_EXT; } -if (!strcmp(name, "GL_TEXTURE_1D_STACK_MESAX")) -{ - return GL_TEXTURE_1D_STACK_MESAX; -} +#endif +#ifdef GL_TEXTURE_2D_BINDING_EXT if (!strcmp(name, "GL_TEXTURE_2D_BINDING_EXT")) { return GL_TEXTURE_2D_BINDING_EXT; } +#endif +#ifdef GL_TEXTURE_2D_MULTISAMPLE if (!strcmp(name, "GL_TEXTURE_2D_MULTISAMPLE")) { return GL_TEXTURE_2D_MULTISAMPLE; } -if (!strcmp(name, "GL_TEXTURE_2D_STACK_MESAX")) -{ - return GL_TEXTURE_2D_STACK_MESAX; -} +#endif +#ifdef GL_TEXTURE_3D_BINDING_EXT if (!strcmp(name, "GL_TEXTURE_3D_BINDING_EXT")) { return GL_TEXTURE_3D_BINDING_EXT; } +#endif +#ifdef GL_TEXTURE_ALPHA_SIZE_EXT if (!strcmp(name, "GL_TEXTURE_ALPHA_SIZE_EXT")) { return GL_TEXTURE_ALPHA_SIZE_EXT; } +#endif +#ifdef GL_TEXTURE_ALPHA_TYPE_ARB if (!strcmp(name, "GL_TEXTURE_ALPHA_TYPE_ARB")) { return GL_TEXTURE_ALPHA_TYPE_ARB; } +#endif +#ifdef GL_TEXTURE_BINDING_BUFFER if (!strcmp(name, "GL_TEXTURE_BINDING_BUFFER")) { return GL_TEXTURE_BINDING_BUFFER; } +#endif +#ifdef GL_TEXTURE_BUFFER_BINDING +if (!strcmp(name, "GL_TEXTURE_BUFFER_BINDING")) +{ + return GL_TEXTURE_BUFFER_BINDING; +} +#endif +#ifdef GL_TEXTURE_COMPRESSED_ARB if (!strcmp(name, "GL_TEXTURE_COMPRESSED_ARB")) { return GL_TEXTURE_COMPRESSED_ARB; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_ARRAY if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_ARRAY")) { return GL_TEXTURE_CUBE_MAP_ARRAY; } +#endif +#ifdef GL_TEXTURE_DEPTH_SIZE_ARB if (!strcmp(name, "GL_TEXTURE_DEPTH_SIZE_ARB")) { return GL_TEXTURE_DEPTH_SIZE_ARB; } +#endif +#ifdef GL_TEXTURE_DEPTH_TYPE_ARB if (!strcmp(name, "GL_TEXTURE_DEPTH_TYPE_ARB")) { return GL_TEXTURE_DEPTH_TYPE_ARB; } +#endif +#ifdef GL_TEXTURE_FILTER_CONTROL if (!strcmp(name, "GL_TEXTURE_FILTER_CONTROL")) { return GL_TEXTURE_FILTER_CONTROL; } +#endif +#ifdef GL_TEXTURE_GREEN_SIZE_EXT if (!strcmp(name, "GL_TEXTURE_GREEN_SIZE_EXT")) { return GL_TEXTURE_GREEN_SIZE_EXT; } +#endif +#ifdef GL_TEXTURE_GREEN_TYPE_ARB if (!strcmp(name, "GL_TEXTURE_GREEN_TYPE_ARB")) { return GL_TEXTURE_GREEN_TYPE_ARB; } +#endif +#ifdef GL_TEXTURE_INDEX_SIZE_EXT if (!strcmp(name, "GL_TEXTURE_INDEX_SIZE_EXT")) { return GL_TEXTURE_INDEX_SIZE_EXT; } +#endif +#ifdef GL_TEXTURE_INTENSITY_SIZE if (!strcmp(name, "GL_TEXTURE_INTENSITY_SIZE")) { return GL_TEXTURE_INTENSITY_SIZE; } +#endif +#ifdef GL_TEXTURE_INTENSITY_TYPE if (!strcmp(name, "GL_TEXTURE_INTENSITY_TYPE")) { return GL_TEXTURE_INTENSITY_TYPE; } +#endif +#ifdef GL_TEXTURE_LUMINANCE_SIZE if (!strcmp(name, "GL_TEXTURE_LUMINANCE_SIZE")) { return GL_TEXTURE_LUMINANCE_SIZE; } +#endif +#ifdef GL_TEXTURE_LUMINANCE_TYPE if (!strcmp(name, "GL_TEXTURE_LUMINANCE_TYPE")) { return GL_TEXTURE_LUMINANCE_TYPE; } +#endif +#ifdef GL_TEXTURE_MAX_LEVEL_SGIS if (!strcmp(name, "GL_TEXTURE_MAX_LEVEL_SGIS")) { return GL_TEXTURE_MAX_LEVEL_SGIS; } +#endif +#ifdef GL_TEXTURE_VIEW_MIN_LAYER if (!strcmp(name, "GL_TEXTURE_VIEW_MIN_LAYER")) { return GL_TEXTURE_VIEW_MIN_LAYER; } +#endif +#ifdef GL_TEXTURE_VIEW_MIN_LEVEL if (!strcmp(name, "GL_TEXTURE_VIEW_MIN_LEVEL")) { return GL_TEXTURE_VIEW_MIN_LEVEL; } +#endif +#ifdef GL_TOP_LEVEL_ARRAY_STRIDE if (!strcmp(name, "GL_TOP_LEVEL_ARRAY_STRIDE")) { return GL_TOP_LEVEL_ARRAY_STRIDE; } +#endif +#ifdef GL_TRANSPOSE_AFFINE_2D_NV if (!strcmp(name, "GL_TRANSPOSE_AFFINE_2D_NV")) { return GL_TRANSPOSE_AFFINE_2D_NV; } +#endif +#ifdef GL_TRANSPOSE_AFFINE_3D_NV if (!strcmp(name, "GL_TRANSPOSE_AFFINE_3D_NV")) { return GL_TRANSPOSE_AFFINE_3D_NV; } +#endif +#ifdef GL_TRANSPOSE_COLOR_MATRIX if (!strcmp(name, "GL_TRANSPOSE_COLOR_MATRIX")) { return GL_TRANSPOSE_COLOR_MATRIX; } +#endif +#ifdef GL_UNIFORM_BUFFER_BINDING if (!strcmp(name, "GL_UNIFORM_BUFFER_BINDING")) { return GL_UNIFORM_BUFFER_BINDING; } +#endif +#ifdef GL_UNPACK_ROW_BYTES_APPLE if (!strcmp(name, "GL_UNPACK_ROW_BYTES_APPLE")) { return GL_UNPACK_ROW_BYTES_APPLE; } +#endif +#ifdef GL_UNPACK_SKIP_IMAGES_EXT if (!strcmp(name, "GL_UNPACK_SKIP_IMAGES_EXT")) { return GL_UNPACK_SKIP_IMAGES_EXT; } +#endif +#ifdef GL_UNSIGNED_INT16_VEC2_NV if (!strcmp(name, "GL_UNSIGNED_INT16_VEC2_NV")) { return GL_UNSIGNED_INT16_VEC2_NV; } +#endif +#ifdef GL_UNSIGNED_INT16_VEC3_NV if (!strcmp(name, "GL_UNSIGNED_INT16_VEC3_NV")) { return GL_UNSIGNED_INT16_VEC3_NV; } +#endif +#ifdef GL_UNSIGNED_INT16_VEC4_NV if (!strcmp(name, "GL_UNSIGNED_INT16_VEC4_NV")) { return GL_UNSIGNED_INT16_VEC4_NV; } +#endif +#ifdef GL_UNSIGNED_INT64_VEC2_NV if (!strcmp(name, "GL_UNSIGNED_INT64_VEC2_NV")) { return GL_UNSIGNED_INT64_VEC2_NV; } +#endif +#ifdef GL_UNSIGNED_INT64_VEC3_NV if (!strcmp(name, "GL_UNSIGNED_INT64_VEC3_NV")) { return GL_UNSIGNED_INT64_VEC3_NV; } +#endif +#ifdef GL_UNSIGNED_INT64_VEC4_NV if (!strcmp(name, "GL_UNSIGNED_INT64_VEC4_NV")) { return GL_UNSIGNED_INT64_VEC4_NV; } +#endif +#ifdef GL_UNSIGNED_SHORT_4_4_4_4 if (!strcmp(name, "GL_UNSIGNED_SHORT_4_4_4_4")) { return GL_UNSIGNED_SHORT_4_4_4_4; } +#endif +#ifdef GL_UNSIGNED_SHORT_5_5_5_1 if (!strcmp(name, "GL_UNSIGNED_SHORT_5_5_5_1")) { return GL_UNSIGNED_SHORT_5_5_5_1; } +#endif +#ifdef GL_VARIANT_ARRAY_TYPE_EXT if (!strcmp(name, "GL_VARIANT_ARRAY_TYPE_EXT")) { return GL_VARIANT_ARRAY_TYPE_EXT; } +#endif +#ifdef GL_VERTEX_ARRAY_COUNT_EXT if (!strcmp(name, "GL_VERTEX_ARRAY_COUNT_EXT")) { return GL_VERTEX_ARRAY_COUNT_EXT; } +#endif +#ifdef GL_VERTEX_ARRAY_LENGTH_NV if (!strcmp(name, "GL_VERTEX_ARRAY_LENGTH_NV")) { return GL_VERTEX_ARRAY_LENGTH_NV; } +#endif +#ifdef GL_VERTEX_BINDING_DIVISOR if (!strcmp(name, "GL_VERTEX_BINDING_DIVISOR")) { return GL_VERTEX_BINDING_DIVISOR; } +#endif +#ifdef GL_VERTICES_SUBMITTED_ARB +if (!strcmp(name, "GL_VERTICES_SUBMITTED_ARB")) +{ + return GL_VERTICES_SUBMITTED_ARB; +} +#endif +#ifdef GL_VIEWPORT_SUBPIXEL_BITS if (!strcmp(name, "GL_VIEWPORT_SUBPIXEL_BITS")) { return GL_VIEWPORT_SUBPIXEL_BITS; } +#endif return _GL_UNDEFINED; case 26: +#ifdef GL_ACCUM_ADJACENT_PAIRS_NV if (!strcmp(name, "GL_ACCUM_ADJACENT_PAIRS_NV")) { return GL_ACCUM_ADJACENT_PAIRS_NV; } +#endif +#ifdef GL_ACTIVE_STENCIL_FACE_EXT if (!strcmp(name, "GL_ACTIVE_STENCIL_FACE_EXT")) { return GL_ACTIVE_STENCIL_FACE_EXT; } +#endif +#ifdef GL_ACTIVE_VERTEX_UNITS_ARB if (!strcmp(name, "GL_ACTIVE_VERTEX_UNITS_ARB")) { return GL_ACTIVE_VERTEX_UNITS_ARB; } +#endif +#ifdef GL_ALLOW_DRAW_FRG_HINT_PGI if (!strcmp(name, "GL_ALLOW_DRAW_FRG_HINT_PGI")) { return GL_ALLOW_DRAW_FRG_HINT_PGI; } +#endif +#ifdef GL_ALLOW_DRAW_MEM_HINT_PGI if (!strcmp(name, "GL_ALLOW_DRAW_MEM_HINT_PGI")) { return GL_ALLOW_DRAW_MEM_HINT_PGI; } +#endif +#ifdef GL_ALLOW_DRAW_OBJ_HINT_PGI if (!strcmp(name, "GL_ALLOW_DRAW_OBJ_HINT_PGI")) { return GL_ALLOW_DRAW_OBJ_HINT_PGI; } +#endif +#ifdef GL_ALLOW_DRAW_WIN_HINT_PGI if (!strcmp(name, "GL_ALLOW_DRAW_WIN_HINT_PGI")) { return GL_ALLOW_DRAW_WIN_HINT_PGI; } +#endif +#ifdef GL_AMD_blend_minmax_factor if (!strcmp(name, "GL_AMD_blend_minmax_factor")) { return GL_AMD_blend_minmax_factor; } +#endif +#ifdef GL_AMD_multi_draw_indirect if (!strcmp(name, "GL_AMD_multi_draw_indirect")) { return GL_AMD_multi_draw_indirect; } +#endif +#ifdef GL_AMD_performance_monitor if (!strcmp(name, "GL_AMD_performance_monitor")) { return GL_AMD_performance_monitor; } +#endif +#ifdef GL_AMD_query_buffer_object if (!strcmp(name, "GL_AMD_query_buffer_object")) { return GL_AMD_query_buffer_object; } +#endif +#ifdef GL_AMD_transform_feedback4 +if (!strcmp(name, "GL_AMD_transform_feedback4")) +{ + return GL_AMD_transform_feedback4; +} +#endif +#ifdef GL_AMD_vertex_shader_layer if (!strcmp(name, "GL_AMD_vertex_shader_layer")) { return GL_AMD_vertex_shader_layer; } +#endif +#ifdef GL_APPLE_aux_depth_stencil if (!strcmp(name, "GL_APPLE_aux_depth_stencil")) { return GL_APPLE_aux_depth_stencil; } +#endif +#ifdef GL_ARB_ES3_1_compatibility +if (!strcmp(name, "GL_ARB_ES3_1_compatibility")) +{ + return GL_ARB_ES3_1_compatibility; +} +#endif +#ifdef GL_ARB_ES3_2_compatibility +if (!strcmp(name, "GL_ARB_ES3_2_compatibility")) +{ + return GL_ARB_ES3_2_compatibility; +} +#endif +#ifdef GL_ARB_blend_func_extended if (!strcmp(name, "GL_ARB_blend_func_extended")) { return GL_ARB_blend_func_extended; } +#endif +#ifdef GL_ARB_clear_buffer_object if (!strcmp(name, "GL_ARB_clear_buffer_object")) { return GL_ARB_clear_buffer_object; } +#endif +#ifdef GL_ARB_direct_state_access +if (!strcmp(name, "GL_ARB_direct_state_access")) +{ + return GL_ARB_direct_state_access; +} +#endif +#ifdef GL_ARB_indirect_parameters if (!strcmp(name, "GL_ARB_indirect_parameters")) { return GL_ARB_indirect_parameters; } +#endif +#ifdef GL_ARB_multi_draw_indirect if (!strcmp(name, "GL_ARB_multi_draw_indirect")) { return GL_ARB_multi_draw_indirect; } +#endif +#ifdef GL_ARB_pixel_buffer_object if (!strcmp(name, "GL_ARB_pixel_buffer_object")) { return GL_ARB_pixel_buffer_object; } +#endif +#ifdef GL_ARB_post_depth_coverage +if (!strcmp(name, "GL_ARB_post_depth_coverage")) +{ + return GL_ARB_post_depth_coverage; +} +#endif +#ifdef GL_ARB_query_buffer_object if (!strcmp(name, "GL_ARB_query_buffer_object")) { return GL_ARB_query_buffer_object; } +#endif +#ifdef GL_ARB_shader_bit_encoding if (!strcmp(name, "GL_ARB_shader_bit_encoding")) { return GL_ARB_shader_bit_encoding; } +#endif +#ifdef GL_ARB_tessellation_shader if (!strcmp(name, "GL_ARB_tessellation_shader")) { return GL_ARB_tessellation_shader; } +#endif +#ifdef GL_ARB_texture_compression if (!strcmp(name, "GL_ARB_texture_compression")) { return GL_ARB_texture_compression; } +#endif +#ifdef GL_ARB_texture_env_combine if (!strcmp(name, "GL_ARB_texture_env_combine")) { return GL_ARB_texture_env_combine; } +#endif +#ifdef GL_ARB_texture_multisample if (!strcmp(name, "GL_ARB_texture_multisample")) { return GL_ARB_texture_multisample; } +#endif +#ifdef GL_ARB_transform_feedback2 if (!strcmp(name, "GL_ARB_transform_feedback2")) { return GL_ARB_transform_feedback2; } +#endif +#ifdef GL_ARB_transform_feedback3 if (!strcmp(name, "GL_ARB_transform_feedback3")) { return GL_ARB_transform_feedback3; } +#endif +#ifdef GL_ARB_vertex_array_object if (!strcmp(name, "GL_ARB_vertex_array_object")) { return GL_ARB_vertex_array_object; } +#endif +#ifdef GL_ARB_vertex_attrib_64bit if (!strcmp(name, "GL_ARB_vertex_attrib_64bit")) { return GL_ARB_vertex_attrib_64bit; } +#endif +#ifdef GL_ARRAY_OBJECT_BUFFER_ATI if (!strcmp(name, "GL_ARRAY_OBJECT_BUFFER_ATI")) { return GL_ARRAY_OBJECT_BUFFER_ATI; } +#endif +#ifdef GL_ARRAY_OBJECT_OFFSET_ATI if (!strcmp(name, "GL_ARRAY_OBJECT_OFFSET_ATI")) { return GL_ARRAY_OBJECT_OFFSET_ATI; } +#endif +#ifdef GL_ATI_texture_mirror_once if (!strcmp(name, "GL_ATI_texture_mirror_once")) { return GL_ATI_texture_mirror_once; } +#endif +#ifdef GL_ATI_vertex_array_object if (!strcmp(name, "GL_ATI_vertex_array_object")) { return GL_ATI_vertex_array_object; } +#endif +#ifdef GL_ATTRIB_ARRAY_POINTER_NV if (!strcmp(name, "GL_ATTRIB_ARRAY_POINTER_NV")) { return GL_ATTRIB_ARRAY_POINTER_NV; } +#endif +#ifdef GL_AUX_DEPTH_STENCIL_APPLE if (!strcmp(name, "GL_AUX_DEPTH_STENCIL_APPLE")) { return GL_AUX_DEPTH_STENCIL_APPLE; } +#endif +#ifdef GL_BACK_SECONDARY_COLOR_NV if (!strcmp(name, "GL_BACK_SECONDARY_COLOR_NV")) { return GL_BACK_SECONDARY_COLOR_NV; } +#endif +#ifdef GL_BINORMAL_ARRAY_TYPE_EXT if (!strcmp(name, "GL_BINORMAL_ARRAY_TYPE_EXT")) { return GL_BINORMAL_ARRAY_TYPE_EXT; } +#endif +#ifdef GL_CLIENT_VERTEX_ARRAY_BIT if (!strcmp(name, "GL_CLIENT_VERTEX_ARRAY_BIT")) { return GL_CLIENT_VERTEX_ARRAY_BIT; } +#endif +#ifdef GL_COLOR_ALPHA_PAIRING_ATI if (!strcmp(name, "GL_COLOR_ALPHA_PAIRING_ATI")) { return GL_COLOR_ALPHA_PAIRING_ATI; } +#endif +#ifdef GL_COLOR_ARRAY_POINTER_EXT if (!strcmp(name, "GL_COLOR_ARRAY_POINTER_EXT")) { return GL_COLOR_ARRAY_POINTER_EXT; } +#endif +#ifdef GL_COMMAND_BARRIER_BIT_EXT if (!strcmp(name, "GL_COMMAND_BARRIER_BIT_EXT")) { return GL_COMMAND_BARRIER_BIT_EXT; } +#endif +#ifdef GL_COMPUTE_WORK_GROUP_SIZE if (!strcmp(name, "GL_COMPUTE_WORK_GROUP_SIZE")) { return GL_COMPUTE_WORK_GROUP_SIZE; } +#endif +#ifdef GL_CONVOLUTION_BORDER_MODE if (!strcmp(name, "GL_CONVOLUTION_BORDER_MODE")) { return GL_CONVOLUTION_BORDER_MODE; } +#endif +#ifdef GL_CONVOLUTION_FILTER_BIAS if (!strcmp(name, "GL_CONVOLUTION_FILTER_BIAS")) { return GL_CONVOLUTION_FILTER_BIAS; } +#endif +#ifdef GL_CURRENT_RASTER_DISTANCE if (!strcmp(name, "GL_CURRENT_RASTER_DISTANCE")) { return GL_CURRENT_RASTER_DISTANCE; } +#endif +#ifdef GL_CURRENT_RASTER_POSITION if (!strcmp(name, "GL_CURRENT_RASTER_POSITION")) { return GL_CURRENT_RASTER_POSITION; } +#endif +#ifdef GL_CURRENT_SECONDARY_COLOR if (!strcmp(name, "GL_CURRENT_SECONDARY_COLOR")) { return GL_CURRENT_SECONDARY_COLOR; } +#endif +#ifdef GL_DEBUG_CALLBACK_FUNCTION if (!strcmp(name, "GL_DEBUG_CALLBACK_FUNCTION")) { return GL_DEBUG_CALLBACK_FUNCTION; } +#endif +#ifdef GL_DEBUG_GROUP_STACK_DEPTH if (!strcmp(name, "GL_DEBUG_GROUP_STACK_DEPTH")) { return GL_DEBUG_GROUP_STACK_DEPTH; } +#endif +#ifdef GL_DEBUG_SEVERITY_HIGH_AMD if (!strcmp(name, "GL_DEBUG_SEVERITY_HIGH_AMD")) { return GL_DEBUG_SEVERITY_HIGH_AMD; } +#endif +#ifdef GL_DEBUG_SEVERITY_HIGH_ARB if (!strcmp(name, "GL_DEBUG_SEVERITY_HIGH_ARB")) { return GL_DEBUG_SEVERITY_HIGH_ARB; } +#endif +#ifdef GL_DRAW_INDIRECT_LENGTH_NV if (!strcmp(name, "GL_DRAW_INDIRECT_LENGTH_NV")) { return GL_DRAW_INDIRECT_LENGTH_NV; } +#endif +#ifdef GL_EDGE_FLAG_ARRAY_POINTER if (!strcmp(name, "GL_EDGE_FLAG_ARRAY_POINTER")) { return GL_EDGE_FLAG_ARRAY_POINTER; } +#endif +#ifdef GL_ELEMENT_ARRAY_LENGTH_NV if (!strcmp(name, "GL_ELEMENT_ARRAY_LENGTH_NV")) { return GL_ELEMENT_ARRAY_LENGTH_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB10_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB10_NV")) { return GL_EVAL_VERTEX_ATTRIB10_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB11_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB11_NV")) { return GL_EVAL_VERTEX_ATTRIB11_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB12_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB12_NV")) { return GL_EVAL_VERTEX_ATTRIB12_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB13_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB13_NV")) { return GL_EVAL_VERTEX_ATTRIB13_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB14_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB14_NV")) { return GL_EVAL_VERTEX_ATTRIB14_NV; } +#endif +#ifdef GL_EVAL_VERTEX_ATTRIB15_NV if (!strcmp(name, "GL_EVAL_VERTEX_ATTRIB15_NV")) { return GL_EVAL_VERTEX_ATTRIB15_NV; } +#endif +#ifdef GL_EXT_blend_func_separate if (!strcmp(name, "GL_EXT_blend_func_separate")) { return GL_EXT_blend_func_separate; } +#endif +#ifdef GL_EXT_direct_state_access if (!strcmp(name, "GL_EXT_direct_state_access")) { return GL_EXT_direct_state_access; } +#endif +#ifdef GL_EXT_draw_range_elements if (!strcmp(name, "GL_EXT_draw_range_elements")) { return GL_EXT_draw_range_elements; } +#endif +#ifdef GL_EXT_index_array_formats if (!strcmp(name, "GL_EXT_index_array_formats")) { return GL_EXT_index_array_formats; } +#endif +#ifdef GL_EXT_pixel_buffer_object if (!strcmp(name, "GL_EXT_pixel_buffer_object")) { return GL_EXT_pixel_buffer_object; } +#endif +#ifdef GL_EXT_post_depth_coverage +if (!strcmp(name, "GL_EXT_post_depth_coverage")) +{ + return GL_EXT_post_depth_coverage; +} +#endif +#ifdef GL_EXT_texture_env_combine if (!strcmp(name, "GL_EXT_texture_env_combine")) { return GL_EXT_texture_env_combine; } +#endif +#ifdef GL_EXT_texture_sRGB_decode if (!strcmp(name, "GL_EXT_texture_sRGB_decode")) { return GL_EXT_texture_sRGB_decode; } +#endif +#ifdef GL_EXT_vertex_attrib_64bit if (!strcmp(name, "GL_EXT_vertex_attrib_64bit")) { return GL_EXT_vertex_attrib_64bit; } +#endif +#ifdef GL_FEEDBACK_BUFFER_POINTER if (!strcmp(name, "GL_FEEDBACK_BUFFER_POINTER")) { return GL_FEEDBACK_BUFFER_POINTER; } +#endif +#ifdef GL_FIRST_VERTEX_CONVENTION +if (!strcmp(name, "GL_FIRST_VERTEX_CONVENTION")) +{ + return GL_FIRST_VERTEX_CONVENTION; +} +#endif +#ifdef GL_FIRST_VERTEX_CONVENTION if (!strcmp(name, "GL_FIRST_VERTEX_CONVENTION")) { return GL_FIRST_VERTEX_CONVENTION; } +#endif +#ifdef GL_FOG_COORD_ARRAY_POINTER if (!strcmp(name, "GL_FOG_COORD_ARRAY_POINTER")) { return GL_FOG_COORD_ARRAY_POINTER; } +#endif +#ifdef GL_FONT_HAS_KERNING_BIT_NV if (!strcmp(name, "GL_FONT_HAS_KERNING_BIT_NV")) { return GL_FONT_HAS_KERNING_BIT_NV; } +#endif +#ifdef GL_FRAMEBUFFER_BARRIER_BIT if (!strcmp(name, "GL_FRAMEBUFFER_BARRIER_BIT")) { return GL_FRAMEBUFFER_BARRIER_BIT; } +#endif +#ifdef GL_FRAMEBUFFER_BINDING_EXT if (!strcmp(name, "GL_FRAMEBUFFER_BINDING_EXT")) { return GL_FRAMEBUFFER_BINDING_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_UNSUPPORTED if (!strcmp(name, "GL_FRAMEBUFFER_UNSUPPORTED")) { return GL_FRAMEBUFFER_UNSUPPORTED; } +#endif +#ifdef GL_GEOMETRY_INPUT_TYPE_ARB if (!strcmp(name, "GL_GEOMETRY_INPUT_TYPE_ARB")) { return GL_GEOMETRY_INPUT_TYPE_ARB; } +#endif +#ifdef GL_GEOMETRY_INPUT_TYPE_EXT if (!strcmp(name, "GL_GEOMETRY_INPUT_TYPE_EXT")) { return GL_GEOMETRY_INPUT_TYPE_EXT; } +#endif +#ifdef GL_GLOBAL_ALPHA_FACTOR_SUN if (!strcmp(name, "GL_GLOBAL_ALPHA_FACTOR_SUN")) { return GL_GLOBAL_ALPHA_FACTOR_SUN; } +#endif +#ifdef GL_HISTOGRAM_BLUE_SIZE_EXT if (!strcmp(name, "GL_HISTOGRAM_BLUE_SIZE_EXT")) { return GL_HISTOGRAM_BLUE_SIZE_EXT; } +#endif +#ifdef GL_IMAGE_BINDING_LAYER_EXT if (!strcmp(name, "GL_IMAGE_BINDING_LAYER_EXT")) { return GL_IMAGE_BINDING_LAYER_EXT; } +#endif +#ifdef GL_IMAGE_BINDING_LEVEL_EXT if (!strcmp(name, "GL_IMAGE_BINDING_LEVEL_EXT")) { return GL_IMAGE_BINDING_LEVEL_EXT; } +#endif +#ifdef GL_INDEX_ARRAY_POINTER_EXT if (!strcmp(name, "GL_INDEX_ARRAY_POINTER_EXT")) { return GL_INDEX_ARRAY_POINTER_EXT; } +#endif +#ifdef GL_INTEL_performance_query +if (!strcmp(name, "GL_INTEL_performance_query")) +{ + return GL_INTEL_performance_query; +} +#endif +#ifdef GL_INTENSITY16_SIGNED_SGIX if (!strcmp(name, "GL_INTENSITY16_SIGNED_SGIX")) { return GL_INTENSITY16_SIGNED_SGIX; } +#endif +#ifdef GL_INTENSITY_FLOAT16_APPLE if (!strcmp(name, "GL_INTENSITY_FLOAT16_APPLE")) { return GL_INTENSITY_FLOAT16_APPLE; } +#endif +#ifdef GL_INTENSITY_FLOAT32_APPLE if (!strcmp(name, "GL_INTENSITY_FLOAT32_APPLE")) { return GL_INTENSITY_FLOAT32_APPLE; } +#endif +#ifdef GL_INTERLEAVED_ATTRIBS_EXT if (!strcmp(name, "GL_INTERLEAVED_ATTRIBS_EXT")) { return GL_INTERLEAVED_ATTRIBS_EXT; } +#endif +#ifdef GL_INTERNALFORMAT_RED_SIZE if (!strcmp(name, "GL_INTERNALFORMAT_RED_SIZE")) { return GL_INTERNALFORMAT_RED_SIZE; } +#endif +#ifdef GL_INTERNALFORMAT_RED_TYPE if (!strcmp(name, "GL_INTERNALFORMAT_RED_TYPE")) { return GL_INTERNALFORMAT_RED_TYPE; } +#endif +#ifdef GL_INT_SAMPLER_2D_RECT_EXT if (!strcmp(name, "GL_INT_SAMPLER_2D_RECT_EXT")) { return GL_INT_SAMPLER_2D_RECT_EXT; } +#endif +#ifdef GL_LUMINANCE12_ALPHA12_EXT if (!strcmp(name, "GL_LUMINANCE12_ALPHA12_EXT")) { return GL_LUMINANCE12_ALPHA12_EXT; } +#endif +#ifdef GL_LUMINANCE16_ALPHA16_EXT if (!strcmp(name, "GL_LUMINANCE16_ALPHA16_EXT")) { return GL_LUMINANCE16_ALPHA16_EXT; } +#endif +#ifdef GL_LUMINANCE16_SIGNED_SGIX if (!strcmp(name, "GL_LUMINANCE16_SIGNED_SGIX")) { return GL_LUMINANCE16_SIGNED_SGIX; } +#endif +#ifdef GL_LUMINANCE8_ALPHA8_SNORM if (!strcmp(name, "GL_LUMINANCE8_ALPHA8_SNORM")) { return GL_LUMINANCE8_ALPHA8_SNORM; } +#endif +#ifdef GL_LUMINANCE_ALPHA16UI_EXT if (!strcmp(name, "GL_LUMINANCE_ALPHA16UI_EXT")) { return GL_LUMINANCE_ALPHA16UI_EXT; } +#endif +#ifdef GL_LUMINANCE_ALPHA32UI_EXT if (!strcmp(name, "GL_LUMINANCE_ALPHA32UI_EXT")) { return GL_LUMINANCE_ALPHA32UI_EXT; } +#endif +#ifdef GL_LUMINANCE_FLOAT16_APPLE if (!strcmp(name, "GL_LUMINANCE_FLOAT16_APPLE")) { return GL_LUMINANCE_FLOAT16_APPLE; } +#endif +#ifdef GL_LUMINANCE_FLOAT32_APPLE if (!strcmp(name, "GL_LUMINANCE_FLOAT32_APPLE")) { return GL_LUMINANCE_FLOAT32_APPLE; } +#endif +#ifdef GL_MAX_3D_TEXTURE_SIZE_EXT if (!strcmp(name, "GL_MAX_3D_TEXTURE_SIZE_EXT")) { return GL_MAX_3D_TEXTURE_SIZE_EXT; } +#endif +#ifdef GL_MAX_COMBINED_DIMENSIONS if (!strcmp(name, "GL_MAX_COMBINED_DIMENSIONS")) { return GL_MAX_COMBINED_DIMENSIONS; } +#endif +#ifdef GL_MAX_FRAGMENT_LIGHTS_EXT if (!strcmp(name, "GL_MAX_FRAGMENT_LIGHTS_EXT")) { return GL_MAX_FRAGMENT_LIGHTS_EXT; } +#endif +#ifdef GL_MAX_FRAMEBUFFER_SAMPLES if (!strcmp(name, "GL_MAX_FRAMEBUFFER_SAMPLES")) { return GL_MAX_FRAMEBUFFER_SAMPLES; } +#endif +#ifdef GL_MAX_MAP_TESSELLATION_NV if (!strcmp(name, "GL_MAX_MAP_TESSELLATION_NV")) { return GL_MAX_MAP_TESSELLATION_NV; } +#endif +#ifdef GL_MAX_PROGRAM_ATTRIBS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_ATTRIBS_ARB")) { return GL_MAX_PROGRAM_ATTRIBS_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_IF_DEPTH_NV if (!strcmp(name, "GL_MAX_PROGRAM_IF_DEPTH_NV")) { return GL_MAX_PROGRAM_IF_DEPTH_NV; } +#endif +#ifdef GL_MAX_SERVER_WAIT_TIMEOUT if (!strcmp(name, "GL_MAX_SERVER_WAIT_TIMEOUT")) { return GL_MAX_SERVER_WAIT_TIMEOUT; } +#endif +#ifdef GL_MAX_TEXTURE_BUFFER_SIZE if (!strcmp(name, "GL_MAX_TEXTURE_BUFFER_SIZE")) { return GL_MAX_TEXTURE_BUFFER_SIZE; } +#endif +#ifdef GL_MAX_TEXTURE_IMAGE_UNITS if (!strcmp(name, "GL_MAX_TEXTURE_IMAGE_UNITS")) { return GL_MAX_TEXTURE_IMAGE_UNITS; } +#endif +#ifdef GL_MAX_TEXTURE_STACK_DEPTH if (!strcmp(name, "GL_MAX_TEXTURE_STACK_DEPTH")) { return GL_MAX_TEXTURE_STACK_DEPTH; } +#endif +#ifdef GL_MODELVIEW_PROJECTION_NV if (!strcmp(name, "GL_MODELVIEW_PROJECTION_NV")) { return GL_MODELVIEW_PROJECTION_NV; } +#endif +#ifdef GL_MODULATE_SIGNED_ADD_ATI if (!strcmp(name, "GL_MODULATE_SIGNED_ADD_ATI")) { return GL_MODULATE_SIGNED_ADD_ATI; } +#endif +#ifdef GL_NAMED_STRING_LENGTH_ARB if (!strcmp(name, "GL_NAMED_STRING_LENGTH_ARB")) { return GL_NAMED_STRING_LENGTH_ARB; } +#endif +#ifdef GL_NORMAL_ARRAY_ADDRESS_NV if (!strcmp(name, "GL_NORMAL_ARRAY_ADDRESS_NV")) { return GL_NORMAL_ARRAY_ADDRESS_NV; } +#endif +#ifdef GL_NORMAL_ARRAY_STRIDE_EXT if (!strcmp(name, "GL_NORMAL_ARRAY_STRIDE_EXT")) { return GL_NORMAL_ARRAY_STRIDE_EXT; } +#endif +#ifdef GL_NV_explicit_multisample if (!strcmp(name, "GL_NV_explicit_multisample")) { return GL_NV_explicit_multisample; } +#endif +#ifdef GL_NV_multisample_coverage if (!strcmp(name, "GL_NV_multisample_coverage")) { return GL_NV_multisample_coverage; } +#endif +#ifdef GL_NV_packed_depth_stencil if (!strcmp(name, "GL_NV_packed_depth_stencil")) { return GL_NV_packed_depth_stencil; } +#endif +#ifdef GL_NV_texture_env_combine4 if (!strcmp(name, "GL_NV_texture_env_combine4")) { return GL_NV_texture_env_combine4; } +#endif +#ifdef GL_OBJECT_BUFFER_USAGE_ATI if (!strcmp(name, "GL_OBJECT_BUFFER_USAGE_ATI")) { return GL_OBJECT_BUFFER_USAGE_ATI; } +#endif +#ifdef GL_OFFSET_TEXTURE_SCALE_NV if (!strcmp(name, "GL_OFFSET_TEXTURE_SCALE_NV")) { return GL_OFFSET_TEXTURE_SCALE_NV; } +#endif +#ifdef GL_PATH_COMPUTED_LENGTH_NV if (!strcmp(name, "GL_PATH_COMPUTED_LENGTH_NV")) { return GL_PATH_COMPUTED_LENGTH_NV; } +#endif +#ifdef GL_PATH_FILL_COVER_MODE_NV if (!strcmp(name, "GL_PATH_FILL_COVER_MODE_NV")) { return GL_PATH_FILL_COVER_MODE_NV; } +#endif +#ifdef GL_PATH_INITIAL_END_CAP_NV if (!strcmp(name, "GL_PATH_INITIAL_END_CAP_NV")) { return GL_PATH_INITIAL_END_CAP_NV; } +#endif +#ifdef GL_PERFMON_RESULT_SIZE_AMD if (!strcmp(name, "GL_PERFMON_RESULT_SIZE_AMD")) { return GL_PERFMON_RESULT_SIZE_AMD; } +#endif +#ifdef GL_PERFORMANCE_MONITOR_AMD if (!strcmp(name, "GL_PERFORMANCE_MONITOR_AMD")) { return GL_PERFORMANCE_MONITOR_AMD; } +#endif +#ifdef GL_PIXEL_UNPACK_BUFFER_ARB if (!strcmp(name, "GL_PIXEL_UNPACK_BUFFER_ARB")) { return GL_PIXEL_UNPACK_BUFFER_ARB; } +#endif +#ifdef GL_PIXEL_UNPACK_BUFFER_EXT if (!strcmp(name, "GL_PIXEL_UNPACK_BUFFER_EXT")) { return GL_PIXEL_UNPACK_BUFFER_EXT; } +#endif +#ifdef GL_POLYGON_OFFSET_BIAS_EXT if (!strcmp(name, "GL_POLYGON_OFFSET_BIAS_EXT")) { return GL_POLYGON_OFFSET_BIAS_EXT; } -if (!strcmp(name, "GL_PRIMITIVE_RESTART_INDEX")) -{ - return GL_PRIMITIVE_RESTART_INDEX; -} +#endif +#ifdef GL_PRIMITIVES_GENERATED_NV if (!strcmp(name, "GL_PRIMITIVES_GENERATED_NV")) { return GL_PRIMITIVES_GENERATED_NV; } +#endif +#ifdef GL_PRIMITIVE_RESTART_INDEX +if (!strcmp(name, "GL_PRIMITIVE_RESTART_INDEX")) +{ + return GL_PRIMITIVE_RESTART_INDEX; +} +#endif +#ifdef GL_PROGRAM_ERROR_STRING_NV if (!strcmp(name, "GL_PROGRAM_ERROR_STRING_NV")) { return GL_PROGRAM_ERROR_STRING_NV; } +#endif +#ifdef GL_PROGRAM_TEMPORARIES_ARB if (!strcmp(name, "GL_PROGRAM_TEMPORARIES_ARB")) { return GL_PROGRAM_TEMPORARIES_ARB; } +#endif +#ifdef GL_PROXY_TEXTURE_RECTANGLE if (!strcmp(name, "GL_PROXY_TEXTURE_RECTANGLE")) { return GL_PROXY_TEXTURE_RECTANGLE; } +#endif +#ifdef GL_QUERY_BY_REGION_NO_WAIT if (!strcmp(name, "GL_QUERY_BY_REGION_NO_WAIT")) { return GL_QUERY_BY_REGION_NO_WAIT; } +#endif +#ifdef GL_QUERY_BY_REGION_WAIT_NV if (!strcmp(name, "GL_QUERY_BY_REGION_WAIT_NV")) { return GL_QUERY_BY_REGION_WAIT_NV; } +#endif +#ifdef GL_RECLAIM_MEMORY_HINT_PGI if (!strcmp(name, "GL_RECLAIM_MEMORY_HINT_PGI")) { return GL_RECLAIM_MEMORY_HINT_PGI; } +#endif +#ifdef GL_RENDERBUFFER_ALPHA_SIZE if (!strcmp(name, "GL_RENDERBUFFER_ALPHA_SIZE")) { return GL_RENDERBUFFER_ALPHA_SIZE; } +#endif +#ifdef GL_RENDERBUFFER_DEPTH_SIZE if (!strcmp(name, "GL_RENDERBUFFER_DEPTH_SIZE")) { return GL_RENDERBUFFER_DEPTH_SIZE; } +#endif +#ifdef GL_RENDERBUFFER_GREEN_SIZE if (!strcmp(name, "GL_RENDERBUFFER_GREEN_SIZE")) { return GL_RENDERBUFFER_GREEN_SIZE; } +#endif +#ifdef GL_RENDERBUFFER_HEIGHT_EXT if (!strcmp(name, "GL_RENDERBUFFER_HEIGHT_EXT")) { return GL_RENDERBUFFER_HEIGHT_EXT; } +#endif +#ifdef GL_REND_screen_coordinates if (!strcmp(name, "GL_REND_screen_coordinates")) { return GL_REND_screen_coordinates; } +#endif +#ifdef GL_RESAMPLE_REPLICATE_SGIX if (!strcmp(name, "GL_RESAMPLE_REPLICATE_SGIX")) { return GL_RESAMPLE_REPLICATE_SGIX; } +#endif +#ifdef GL_RESAMPLE_ZERO_FILL_SGIX if (!strcmp(name, "GL_RESAMPLE_ZERO_FILL_SGIX")) { return GL_RESAMPLE_ZERO_FILL_SGIX; } +#endif +#ifdef GL_RGB_EXTENDED_RANGE_SGIX if (!strcmp(name, "GL_RGB_EXTENDED_RANGE_SGIX")) { return GL_RGB_EXTENDED_RANGE_SGIX; } -if (!strcmp(name, "GL_SAMPLE_ALPHA_TO_ONE_ARB")) +#endif +#ifdef GL_SAMPLER_1D_ARRAY_SHADOW +if (!strcmp(name, "GL_SAMPLER_1D_ARRAY_SHADOW")) { - return GL_SAMPLE_ALPHA_TO_ONE_ARB; + return GL_SAMPLER_1D_ARRAY_SHADOW; } -if (!strcmp(name, "GL_SAMPLE_ALPHA_TO_ONE_EXT")) +#endif +#ifdef GL_SAMPLER_2D_ARRAY_SHADOW +if (!strcmp(name, "GL_SAMPLER_2D_ARRAY_SHADOW")) { - return GL_SAMPLE_ALPHA_TO_ONE_EXT; + return GL_SAMPLER_2D_ARRAY_SHADOW; } -if (!strcmp(name, "GL_SAMPLE_MASK_INVERT_SGIS")) +#endif +#ifdef GL_SAMPLER_CUBE_SHADOW_EXT +if (!strcmp(name, "GL_SAMPLER_CUBE_SHADOW_EXT")) { - return GL_SAMPLE_MASK_INVERT_SGIS; + return GL_SAMPLER_CUBE_SHADOW_EXT; } -if (!strcmp(name, "GL_SAMPLER_1D_ARRAY_SHADOW")) +#endif +#ifdef GL_SAMPLER_RENDERBUFFER_NV +if (!strcmp(name, "GL_SAMPLER_RENDERBUFFER_NV")) { - return GL_SAMPLER_1D_ARRAY_SHADOW; + return GL_SAMPLER_RENDERBUFFER_NV; } -if (!strcmp(name, "GL_SAMPLER_2D_ARRAY_SHADOW")) +#endif +#ifdef GL_SAMPLE_ALPHA_TO_ONE_ARB +if (!strcmp(name, "GL_SAMPLE_ALPHA_TO_ONE_ARB")) { - return GL_SAMPLER_2D_ARRAY_SHADOW; + return GL_SAMPLE_ALPHA_TO_ONE_ARB; } -if (!strcmp(name, "GL_SAMPLER_CUBE_SHADOW_EXT")) +#endif +#ifdef GL_SAMPLE_ALPHA_TO_ONE_EXT +if (!strcmp(name, "GL_SAMPLE_ALPHA_TO_ONE_EXT")) { - return GL_SAMPLER_CUBE_SHADOW_EXT; + return GL_SAMPLE_ALPHA_TO_ONE_EXT; } -if (!strcmp(name, "GL_SAMPLER_RENDERBUFFER_NV")) +#endif +#ifdef GL_SAMPLE_MASK_INVERT_SGIS +if (!strcmp(name, "GL_SAMPLE_MASK_INVERT_SGIS")) { - return GL_SAMPLER_RENDERBUFFER_NV; + return GL_SAMPLE_MASK_INVERT_SGIS; } +#endif +#ifdef GL_SCREEN_COORDINATES_REND if (!strcmp(name, "GL_SCREEN_COORDINATES_REND")) { return GL_SCREEN_COORDINATES_REND; } +#endif +#ifdef GL_SEPARATE_SPECULAR_COLOR if (!strcmp(name, "GL_SEPARATE_SPECULAR_COLOR")) { return GL_SEPARATE_SPECULAR_COLOR; } +#endif +#ifdef GL_SGIS_texture_edge_clamp if (!strcmp(name, "GL_SGIS_texture_edge_clamp")) { return GL_SGIS_texture_edge_clamp; } -if (!strcmp(name, "GL_SGI_texture_color_table")) -{ - return GL_SGI_texture_color_table; -} +#endif +#ifdef GL_SGIX_blend_alpha_minmax if (!strcmp(name, "GL_SGIX_blend_alpha_minmax")) { return GL_SGIX_blend_alpha_minmax; } +#endif +#ifdef GL_SGIX_pixel_texture_bits if (!strcmp(name, "GL_SGIX_pixel_texture_bits")) { return GL_SGIX_pixel_texture_bits; } +#endif +#ifdef GL_SGIX_texture_scale_bias if (!strcmp(name, "GL_SGIX_texture_scale_bias")) { return GL_SGIX_texture_scale_bias; } +#endif +#ifdef GL_SGI_texture_color_table +if (!strcmp(name, "GL_SGI_texture_color_table")) +{ + return GL_SGI_texture_color_table; +} +#endif +#ifdef GL_SMOOTH_LINE_WIDTH_RANGE if (!strcmp(name, "GL_SMOOTH_LINE_WIDTH_RANGE")) { return GL_SMOOTH_LINE_WIDTH_RANGE; } +#endif +#ifdef GL_SMOOTH_POINT_SIZE_RANGE if (!strcmp(name, "GL_SMOOTH_POINT_SIZE_RANGE")) { return GL_SMOOTH_POINT_SIZE_RANGE; } +#endif +#ifdef GL_STANDARD_FONT_FORMAT_NV +if (!strcmp(name, "GL_STANDARD_FONT_FORMAT_NV")) +{ + return GL_STANDARD_FONT_FORMAT_NV; +} +#endif +#ifdef GL_STATIC_VERTEX_ARRAY_IBM if (!strcmp(name, "GL_STATIC_VERTEX_ARRAY_IBM")) { return GL_STATIC_VERTEX_ARRAY_IBM; } +#endif +#ifdef GL_STENCIL_BACK_VALUE_MASK if (!strcmp(name, "GL_STENCIL_BACK_VALUE_MASK")) { return GL_STENCIL_BACK_VALUE_MASK; } +#endif +#ifdef GL_STENCIL_PASS_DEPTH_FAIL if (!strcmp(name, "GL_STENCIL_PASS_DEPTH_FAIL")) { return GL_STENCIL_PASS_DEPTH_FAIL; } +#endif +#ifdef GL_STENCIL_PASS_DEPTH_PASS if (!strcmp(name, "GL_STENCIL_PASS_DEPTH_PASS")) { return GL_STENCIL_PASS_DEPTH_PASS; } +#endif +#ifdef GL_STRICT_SCISSOR_HINT_PGI if (!strcmp(name, "GL_STRICT_SCISSOR_HINT_PGI")) { return GL_STRICT_SCISSOR_HINT_PGI; } +#endif +#ifdef GL_SYNC_FLUSH_COMMANDS_BIT if (!strcmp(name, "GL_SYNC_FLUSH_COMMANDS_BIT")) { return GL_SYNC_FLUSH_COMMANDS_BIT; } +#endif +#ifdef GL_TESSELLATION_FACTOR_AMD +if (!strcmp(name, "GL_TESSELLATION_FACTOR_AMD")) +{ + return GL_TESSELLATION_FACTOR_AMD; +} +#endif +#ifdef GL_TESS_CONTROL_PROGRAM_NV if (!strcmp(name, "GL_TESS_CONTROL_PROGRAM_NV")) { return GL_TESS_CONTROL_PROGRAM_NV; } +#endif +#ifdef GL_TESS_CONTROL_SHADER_BIT if (!strcmp(name, "GL_TESS_CONTROL_SHADER_BIT")) { return GL_TESS_CONTROL_SHADER_BIT; } +#endif +#ifdef GL_TESS_CONTROL_SUBROUTINE if (!strcmp(name, "GL_TESS_CONTROL_SUBROUTINE")) { return GL_TESS_CONTROL_SUBROUTINE; } -if (!strcmp(name, "GL_TESSELLATION_FACTOR_AMD")) -{ - return GL_TESSELLATION_FACTOR_AMD; -} +#endif +#ifdef GL_TESS_EVALUATION_TEXTURE if (!strcmp(name, "GL_TESS_EVALUATION_TEXTURE")) { return GL_TESS_EVALUATION_TEXTURE; } +#endif +#ifdef GL_TEXTURE_BASE_LEVEL_SGIS if (!strcmp(name, "GL_TEXTURE_BASE_LEVEL_SGIS")) { return GL_TEXTURE_BASE_LEVEL_SGIS; } +#endif +#ifdef GL_TEXTURE_COLOR_TABLE_SGI if (!strcmp(name, "GL_TEXTURE_COLOR_TABLE_SGI")) { return GL_TEXTURE_COLOR_TABLE_SGI; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_EXT if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_EXT")) { return GL_TEXTURE_COORD_ARRAY_EXT; } +#endif +#ifdef GL_TEXTURE_FREE_MEMORY_ATI if (!strcmp(name, "GL_TEXTURE_FREE_MEMORY_ATI")) { return GL_TEXTURE_FREE_MEMORY_ATI; } +#endif +#ifdef GL_TEXTURE_INTERNAL_FORMAT if (!strcmp(name, "GL_TEXTURE_INTERNAL_FORMAT")) { return GL_TEXTURE_INTERNAL_FORMAT; } +#endif +#ifdef GL_TEXTURE_OUTPUT_RGB_ATIX if (!strcmp(name, "GL_TEXTURE_OUTPUT_RGB_ATIX")) { return GL_TEXTURE_OUTPUT_RGB_ATIX; } +#endif +#ifdef GL_TEXTURE_POINT_MODE_ATIX if (!strcmp(name, "GL_TEXTURE_POINT_MODE_ATIX")) { return GL_TEXTURE_POINT_MODE_ATIX; } +#endif +#ifdef GL_TEXTURE_RENDERBUFFER_NV if (!strcmp(name, "GL_TEXTURE_RENDERBUFFER_NV")) { return GL_TEXTURE_RENDERBUFFER_NV; } +#endif +#ifdef GL_TEXTURE_SHARED_SIZE_EXT if (!strcmp(name, "GL_TEXTURE_SHARED_SIZE_EXT")) { return GL_TEXTURE_SHARED_SIZE_EXT; } +#endif +#ifdef GL_TEXTURE_SRGB_DECODE_EXT if (!strcmp(name, "GL_TEXTURE_SRGB_DECODE_EXT")) { return GL_TEXTURE_SRGB_DECODE_EXT; } +#endif +#ifdef GL_TEXTURE_VIEW_NUM_LAYERS if (!strcmp(name, "GL_TEXTURE_VIEW_NUM_LAYERS")) { return GL_TEXTURE_VIEW_NUM_LAYERS; } +#endif +#ifdef GL_TEXTURE_VIEW_NUM_LEVELS if (!strcmp(name, "GL_TEXTURE_VIEW_NUM_LEVELS")) { return GL_TEXTURE_VIEW_NUM_LEVELS; } +#endif +#ifdef GL_TRIANGLES_ADJACENCY_ARB if (!strcmp(name, "GL_TRIANGLES_ADJACENCY_ARB")) { return GL_TRIANGLES_ADJACENCY_ARB; } +#endif +#ifdef GL_TRIANGLES_ADJACENCY_EXT if (!strcmp(name, "GL_TRIANGLES_ADJACENCY_EXT")) { return GL_TRIANGLES_ADJACENCY_EXT; } +#endif +#ifdef GL_UNIFORM_BARRIER_BIT_EXT if (!strcmp(name, "GL_UNIFORM_BARRIER_BIT_EXT")) { return GL_UNIFORM_BARRIER_BIT_EXT; } +#endif +#ifdef GL_UNIFORM_BLOCK_DATA_SIZE if (!strcmp(name, "GL_UNIFORM_BLOCK_DATA_SIZE")) { return GL_UNIFORM_BLOCK_DATA_SIZE; } +#endif +#ifdef GL_UNPACK_IMAGE_HEIGHT_EXT if (!strcmp(name, "GL_UNPACK_IMAGE_HEIGHT_EXT")) { return GL_UNPACK_IMAGE_HEIGHT_EXT; } +#endif +#ifdef GL_UNSIGNED_BYTE_2_3_3_REV if (!strcmp(name, "GL_UNSIGNED_BYTE_2_3_3_REV")) { return GL_UNSIGNED_BYTE_2_3_3_REV; } +#endif +#ifdef GL_UNSIGNED_BYTE_3_3_2_EXT if (!strcmp(name, "GL_UNSIGNED_BYTE_3_3_2_EXT")) { return GL_UNSIGNED_BYTE_3_3_2_EXT; } +#endif +#ifdef GL_UNSIGNED_INT64_VEC2_ARB +if (!strcmp(name, "GL_UNSIGNED_INT64_VEC2_ARB")) +{ + return GL_UNSIGNED_INT64_VEC2_ARB; +} +#endif +#ifdef GL_UNSIGNED_INT64_VEC3_ARB +if (!strcmp(name, "GL_UNSIGNED_INT64_VEC3_ARB")) +{ + return GL_UNSIGNED_INT64_VEC3_ARB; +} +#endif +#ifdef GL_UNSIGNED_INT64_VEC4_ARB +if (!strcmp(name, "GL_UNSIGNED_INT64_VEC4_ARB")) +{ + return GL_UNSIGNED_INT64_VEC4_ARB; +} +#endif +#ifdef GL_UNSIGNED_INT_10_10_10_2 if (!strcmp(name, "GL_UNSIGNED_INT_10_10_10_2")) { return GL_UNSIGNED_INT_10_10_10_2; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_CUBE if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_CUBE")) { return GL_UNSIGNED_INT_IMAGE_CUBE; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_1D if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_1D")) { return GL_UNSIGNED_INT_SAMPLER_1D; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_2D if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_2D")) { return GL_UNSIGNED_INT_SAMPLER_2D; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_3D if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_3D")) { return GL_UNSIGNED_INT_SAMPLER_3D; } +#endif +#ifdef GL_UNSIGNED_NORMALIZED_ARB if (!strcmp(name, "GL_UNSIGNED_NORMALIZED_ARB")) { return GL_UNSIGNED_NORMALIZED_ARB; } -if (!strcmp(name, "GL_UNSIGNED_SHORT_8_8_MESA")) -{ - return GL_UNSIGNED_SHORT_8_8_MESA; -} +#endif +#ifdef GL_VERTEX_ARRAY_ADDRESS_NV if (!strcmp(name, "GL_VERTEX_ARRAY_ADDRESS_NV")) { return GL_VERTEX_ARRAY_ADDRESS_NV; } +#endif +#ifdef GL_VERTEX_ARRAY_OBJECT_AMD if (!strcmp(name, "GL_VERTEX_ARRAY_OBJECT_AMD")) { return GL_VERTEX_ARRAY_OBJECT_AMD; } +#endif +#ifdef GL_VERTEX_ARRAY_OBJECT_EXT +if (!strcmp(name, "GL_VERTEX_ARRAY_OBJECT_EXT")) +{ + return GL_VERTEX_ARRAY_OBJECT_EXT; +} +#endif +#ifdef GL_VERTEX_ARRAY_STRIDE_EXT if (!strcmp(name, "GL_VERTEX_ARRAY_STRIDE_EXT")) { return GL_VERTEX_ARRAY_STRIDE_EXT; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY0_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY0_NV")) { return GL_VERTEX_ATTRIB_ARRAY0_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY1_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY1_NV")) { return GL_VERTEX_ATTRIB_ARRAY1_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY2_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY2_NV")) { return GL_VERTEX_ATTRIB_ARRAY2_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY3_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY3_NV")) { return GL_VERTEX_ATTRIB_ARRAY3_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY4_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY4_NV")) { return GL_VERTEX_ATTRIB_ARRAY4_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY5_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY5_NV")) { return GL_VERTEX_ATTRIB_ARRAY5_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY6_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY6_NV")) { return GL_VERTEX_ATTRIB_ARRAY6_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY7_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY7_NV")) { return GL_VERTEX_ATTRIB_ARRAY7_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY8_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY8_NV")) { return GL_VERTEX_ATTRIB_ARRAY8_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY9_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY9_NV")) { return GL_VERTEX_ATTRIB_ARRAY9_NV; } +#endif +#ifdef GL_VERTEX_PROGRAM_TWO_SIDE if (!strcmp(name, "GL_VERTEX_PROGRAM_TWO_SIDE")) { return GL_VERTEX_PROGRAM_TWO_SIDE; } +#endif +#ifdef GL_VERTEX_STATE_PROGRAM_NV if (!strcmp(name, "GL_VERTEX_STATE_PROGRAM_NV")) { return GL_VERTEX_STATE_PROGRAM_NV; } +#endif +#ifdef GL_VERTEX_WEIGHT_ARRAY_EXT if (!strcmp(name, "GL_VERTEX_WEIGHT_ARRAY_EXT")) { return GL_VERTEX_WEIGHT_ARRAY_EXT; } +#endif +#ifdef GL_VIDEO_BUFFER_BINDING_NV if (!strcmp(name, "GL_VIDEO_BUFFER_BINDING_NV")) { return GL_VIDEO_BUFFER_BINDING_NV; } +#endif +#ifdef GL_VIRTUAL_PAGE_SIZE_X_AMD if (!strcmp(name, "GL_VIRTUAL_PAGE_SIZE_X_AMD")) { return GL_VIRTUAL_PAGE_SIZE_X_AMD; } +#endif +#ifdef GL_VIRTUAL_PAGE_SIZE_X_ARB if (!strcmp(name, "GL_VIRTUAL_PAGE_SIZE_X_ARB")) { return GL_VIRTUAL_PAGE_SIZE_X_ARB; } +#endif +#ifdef GL_VIRTUAL_PAGE_SIZE_Y_AMD if (!strcmp(name, "GL_VIRTUAL_PAGE_SIZE_Y_AMD")) { return GL_VIRTUAL_PAGE_SIZE_Y_AMD; } +#endif +#ifdef GL_VIRTUAL_PAGE_SIZE_Y_ARB if (!strcmp(name, "GL_VIRTUAL_PAGE_SIZE_Y_ARB")) { return GL_VIRTUAL_PAGE_SIZE_Y_ARB; } +#endif +#ifdef GL_VIRTUAL_PAGE_SIZE_Z_AMD if (!strcmp(name, "GL_VIRTUAL_PAGE_SIZE_Z_AMD")) { return GL_VIRTUAL_PAGE_SIZE_Z_AMD; } +#endif +#ifdef GL_VIRTUAL_PAGE_SIZE_Z_ARB if (!strcmp(name, "GL_VIRTUAL_PAGE_SIZE_Z_ARB")) { return GL_VIRTUAL_PAGE_SIZE_Z_ARB; } +#endif +#ifdef GL_WEIGHT_ARRAY_STRIDE_ARB if (!strcmp(name, "GL_WEIGHT_ARRAY_STRIDE_ARB")) { return GL_WEIGHT_ARRAY_STRIDE_ARB; } +#endif return _GL_UNDEFINED; case 27: +#ifdef GL_ALIASED_LINE_WIDTH_RANGE if (!strcmp(name, "GL_ALIASED_LINE_WIDTH_RANGE")) { return GL_ALIASED_LINE_WIDTH_RANGE; } +#endif +#ifdef GL_ALIASED_POINT_SIZE_RANGE if (!strcmp(name, "GL_ALIASED_POINT_SIZE_RANGE")) { return GL_ALIASED_POINT_SIZE_RANGE; } +#endif +#ifdef GL_AMD_depth_clamp_separate if (!strcmp(name, "GL_AMD_depth_clamp_separate")) { return GL_AMD_depth_clamp_separate; } +#endif +#ifdef GL_AMD_interleaved_elements if (!strcmp(name, "GL_AMD_interleaved_elements")) { return GL_AMD_interleaved_elements; } +#endif +#ifdef GL_APPLE_flush_buffer_range if (!strcmp(name, "GL_APPLE_flush_buffer_range")) { return GL_APPLE_flush_buffer_range; } +#endif +#ifdef GL_APPLE_vertex_array_range if (!strcmp(name, "GL_APPLE_vertex_array_range")) { return GL_APPLE_vertex_array_range; } +#endif +#ifdef GL_ARB_internalformat_query if (!strcmp(name, "GL_ARB_internalformat_query")) { return GL_ARB_internalformat_query; } +#endif +#ifdef GL_ARB_map_buffer_alignment if (!strcmp(name, "GL_ARB_map_buffer_alignment")) { return GL_ARB_map_buffer_alignment; } +#endif +#ifdef GL_ARB_shading_language_100 if (!strcmp(name, "GL_ARB_shading_language_100")) { return GL_ARB_shading_language_100; } +#endif +#ifdef GL_ARB_sparse_texture_clamp +if (!strcmp(name, "GL_ARB_sparse_texture_clamp")) +{ + return GL_ARB_sparse_texture_clamp; +} +#endif +#ifdef GL_ARB_texture_border_clamp if (!strcmp(name, "GL_ARB_texture_border_clamp")) { return GL_ARB_texture_border_clamp; } +#endif +#ifdef GL_ARB_texture_buffer_range if (!strcmp(name, "GL_ARB_texture_buffer_range")) { return GL_ARB_texture_buffer_range; } +#endif +#ifdef GL_ARB_texture_env_crossbar if (!strcmp(name, "GL_ARB_texture_env_crossbar")) { return GL_ARB_texture_env_crossbar; } +#endif +#ifdef GL_ARB_texture_query_levels if (!strcmp(name, "GL_ARB_texture_query_levels")) { return GL_ARB_texture_query_levels; } +#endif +#ifdef GL_ARB_vertex_buffer_object if (!strcmp(name, "GL_ARB_vertex_buffer_object")) { return GL_ARB_vertex_buffer_object; } +#endif +#ifdef GL_ARRAY_BUFFER_BINDING_ARB if (!strcmp(name, "GL_ARRAY_BUFFER_BINDING_ARB")) { return GL_ARRAY_BUFFER_BINDING_ARB; } +#endif +#ifdef GL_ATI_text_fragment_shader if (!strcmp(name, "GL_ATI_text_fragment_shader")) { return GL_ATI_text_fragment_shader; } +#endif +#ifdef GL_ATI_texture_env_combine3 if (!strcmp(name, "GL_ATI_texture_env_combine3")) { return GL_ATI_texture_env_combine3; } +#endif +#ifdef GL_BLEND_EQUATION_ALPHA_EXT if (!strcmp(name, "GL_BLEND_EQUATION_ALPHA_EXT")) { return GL_BLEND_EQUATION_ALPHA_EXT; } +#endif +#ifdef GL_BUFFER_IMMUTABLE_STORAGE if (!strcmp(name, "GL_BUFFER_IMMUTABLE_STORAGE")) { return GL_BUFFER_IMMUTABLE_STORAGE; } +#endif +#ifdef GL_BUMP_ROT_MATRIX_SIZE_ATI if (!strcmp(name, "GL_BUMP_ROT_MATRIX_SIZE_ATI")) { return GL_BUMP_ROT_MATRIX_SIZE_ATI; } +#endif +#ifdef GL_CLAMP_FRAGMENT_COLOR_ARB if (!strcmp(name, "GL_CLAMP_FRAGMENT_COLOR_ARB")) { return GL_CLAMP_FRAGMENT_COLOR_ARB; } +#endif +#ifdef GL_COLOR_MATERIAL_PARAMETER if (!strcmp(name, "GL_COLOR_MATERIAL_PARAMETER")) { return GL_COLOR_MATERIAL_PARAMETER; } +#endif +#ifdef GL_COLOR_MATRIX_STACK_DEPTH if (!strcmp(name, "GL_COLOR_MATRIX_STACK_DEPTH")) { return GL_COLOR_MATRIX_STACK_DEPTH; } +#endif +#ifdef GL_COLOR_TABLE_RED_SIZE_EXT if (!strcmp(name, "GL_COLOR_TABLE_RED_SIZE_EXT")) { return GL_COLOR_TABLE_RED_SIZE_EXT; } +#endif +#ifdef GL_COLOR_TABLE_RED_SIZE_SGI if (!strcmp(name, "GL_COLOR_TABLE_RED_SIZE_SGI")) { return GL_COLOR_TABLE_RED_SIZE_SGI; } +#endif +#ifdef GL_COMPARE_R_TO_TEXTURE_ARB if (!strcmp(name, "GL_COMPARE_R_TO_TEXTURE_ARB")) { return GL_COMPARE_R_TO_TEXTURE_ARB; } +#endif +#ifdef GL_COMPRESSED_INTENSITY_ARB if (!strcmp(name, "GL_COMPRESSED_INTENSITY_ARB")) { return GL_COMPRESSED_INTENSITY_ARB; } +#endif +#ifdef GL_COMPRESSED_LUMINANCE_ARB if (!strcmp(name, "GL_COMPRESSED_LUMINANCE_ARB")) { return GL_COMPRESSED_LUMINANCE_ARB; } +#endif +#ifdef GL_COMPRESSED_RED_RGTC1_EXT if (!strcmp(name, "GL_COMPRESSED_RED_RGTC1_EXT")) { return GL_COMPRESSED_RED_RGTC1_EXT; } +#endif +#ifdef GL_COMPRESSED_RGB_FXT1_3DFX if (!strcmp(name, "GL_COMPRESSED_RGB_FXT1_3DFX")) { return GL_COMPRESSED_RGB_FXT1_3DFX; } +#endif +#ifdef GL_CONSERVE_MEMORY_HINT_PGI if (!strcmp(name, "GL_CONSERVE_MEMORY_HINT_PGI")) { return GL_CONSERVE_MEMORY_HINT_PGI; } +#endif +#ifdef GL_CONTEXT_CORE_PROFILE_BIT if (!strcmp(name, "GL_CONTEXT_CORE_PROFILE_BIT")) { return GL_CONTEXT_CORE_PROFILE_BIT; } +#endif +#ifdef GL_CONTEXT_RELEASE_BEHAVIOR +if (!strcmp(name, "GL_CONTEXT_RELEASE_BEHAVIOR")) +{ + return GL_CONTEXT_RELEASE_BEHAVIOR; +} +#endif +#ifdef GL_CONVOLUTION_BORDER_COLOR if (!strcmp(name, "GL_CONVOLUTION_BORDER_COLOR")) { return GL_CONVOLUTION_BORDER_COLOR; } +#endif +#ifdef GL_CONVOLUTION_FILTER_SCALE if (!strcmp(name, "GL_CONVOLUTION_FILTER_SCALE")) { return GL_CONVOLUTION_FILTER_SCALE; } +#endif +#ifdef GL_COPY_READ_BUFFER_BINDING +if (!strcmp(name, "GL_COPY_READ_BUFFER_BINDING")) +{ + return GL_COPY_READ_BUFFER_BINDING; +} +#endif +#ifdef GL_CURRENT_MATRIX_INDEX_ARB if (!strcmp(name, "GL_CURRENT_MATRIX_INDEX_ARB")) { return GL_CURRENT_MATRIX_INDEX_ARB; } +#endif +#ifdef GL_DEBUG_CATEGORY_OTHER_AMD if (!strcmp(name, "GL_DEBUG_CATEGORY_OTHER_AMD")) { return GL_DEBUG_CATEGORY_OTHER_AMD; } +#endif +#ifdef GL_DEBUG_OUTPUT_SYNCHRONOUS if (!strcmp(name, "GL_DEBUG_OUTPUT_SYNCHRONOUS")) { return GL_DEBUG_OUTPUT_SYNCHRONOUS; } +#endif +#ifdef GL_DEBUG_SOURCE_APPLICATION if (!strcmp(name, "GL_DEBUG_SOURCE_APPLICATION")) { return GL_DEBUG_SOURCE_APPLICATION; } +#endif +#ifdef GL_DEBUG_SOURCE_THIRD_PARTY if (!strcmp(name, "GL_DEBUG_SOURCE_THIRD_PARTY")) { return GL_DEBUG_SOURCE_THIRD_PARTY; } +#endif +#ifdef GL_DEPTH_STENCIL_ATTACHMENT if (!strcmp(name, "GL_DEPTH_STENCIL_ATTACHMENT")) { return GL_DEPTH_STENCIL_ATTACHMENT; } +#endif +#ifdef GL_DEPTH_STENCIL_TO_BGRA_NV if (!strcmp(name, "GL_DEPTH_STENCIL_TO_BGRA_NV")) { return GL_DEPTH_STENCIL_TO_BGRA_NV; } +#endif +#ifdef GL_DEPTH_STENCIL_TO_RGBA_NV if (!strcmp(name, "GL_DEPTH_STENCIL_TO_RGBA_NV")) { return GL_DEPTH_STENCIL_TO_RGBA_NV; } +#endif +#ifdef GL_DISPATCH_INDIRECT_BUFFER if (!strcmp(name, "GL_DISPATCH_INDIRECT_BUFFER")) { return GL_DISPATCH_INDIRECT_BUFFER; } +#endif +#ifdef GL_DISTANCE_ATTENUATION_EXT if (!strcmp(name, "GL_DISTANCE_ATTENUATION_EXT")) { return GL_DISTANCE_ATTENUATION_EXT; } +#endif +#ifdef GL_DRAW_FRAMEBUFFER_BINDING if (!strcmp(name, "GL_DRAW_FRAMEBUFFER_BINDING")) { return GL_DRAW_FRAMEBUFFER_BINDING; } +#endif +#ifdef GL_DRAW_INDIRECT_ADDRESS_NV if (!strcmp(name, "GL_DRAW_INDIRECT_ADDRESS_NV")) { return GL_DRAW_INDIRECT_ADDRESS_NV; } +#endif +#ifdef GL_DRAW_INDIRECT_UNIFIED_NV if (!strcmp(name, "GL_DRAW_INDIRECT_UNIFIED_NV")) { return GL_DRAW_INDIRECT_UNIFIED_NV; } +#endif +#ifdef GL_DSDT8_MAG8_INTENSITY8_NV if (!strcmp(name, "GL_DSDT8_MAG8_INTENSITY8_NV")) { return GL_DSDT8_MAG8_INTENSITY8_NV; } +#endif +#ifdef GL_DSDT8_MAG8_INTENSITY8_NV +if (!strcmp(name, "GL_DSDT8_MAG8_INTENSITY8_NV")) +{ + return GL_DSDT8_MAG8_INTENSITY8_NV; +} +#endif +#ifdef GL_EDGE_FLAG_ARRAY_LIST_IBM if (!strcmp(name, "GL_EDGE_FLAG_ARRAY_LIST_IBM")) { return GL_EDGE_FLAG_ARRAY_LIST_IBM; } +#endif +#ifdef GL_ELEMENT_ARRAY_ADDRESS_NV if (!strcmp(name, "GL_ELEMENT_ARRAY_ADDRESS_NV")) { return GL_ELEMENT_ARRAY_ADDRESS_NV; } +#endif +#ifdef GL_ELEMENT_ARRAY_BUFFER_ARB if (!strcmp(name, "GL_ELEMENT_ARRAY_BUFFER_ARB")) { return GL_ELEMENT_ARRAY_BUFFER_ARB; } +#endif +#ifdef GL_ELEMENT_ARRAY_TYPE_APPLE if (!strcmp(name, "GL_ELEMENT_ARRAY_TYPE_APPLE")) { return GL_ELEMENT_ARRAY_TYPE_APPLE; } +#endif +#ifdef GL_ELEMENT_ARRAY_UNIFIED_NV if (!strcmp(name, "GL_ELEMENT_ARRAY_UNIFIED_NV")) { return GL_ELEMENT_ARRAY_UNIFIED_NV; } +#endif +#ifdef GL_EXT_packed_depth_stencil if (!strcmp(name, "GL_EXT_packed_depth_stencil")) { return GL_EXT_packed_depth_stencil; } +#endif +#ifdef GL_EXT_polygon_offset_clamp +if (!strcmp(name, "GL_EXT_polygon_offset_clamp")) +{ + return GL_EXT_polygon_offset_clamp; +} +#endif +#ifdef GL_EXT_texture_mirror_clamp if (!strcmp(name, "GL_EXT_texture_mirror_clamp")) { return GL_EXT_texture_mirror_clamp; } +#endif +#ifdef GL_FOG_COORDINATE_ARRAY_EXT if (!strcmp(name, "GL_FOG_COORDINATE_ARRAY_EXT")) { return GL_FOG_COORDINATE_ARRAY_EXT; } +#endif +#ifdef GL_FOG_SPECULAR_TEXTURE_WIN if (!strcmp(name, "GL_FOG_SPECULAR_TEXTURE_WIN")) { return GL_FOG_SPECULAR_TEXTURE_WIN; } +#endif +#ifdef GL_FONT_GLYPHS_AVAILABLE_NV +if (!strcmp(name, "GL_FONT_GLYPHS_AVAILABLE_NV")) +{ + return GL_FONT_GLYPHS_AVAILABLE_NV; +} +#endif +#ifdef GL_FONT_UNITS_PER_EM_BIT_NV if (!strcmp(name, "GL_FONT_UNITS_PER_EM_BIT_NV")) { return GL_FONT_UNITS_PER_EM_BIT_NV; } +#endif +#ifdef GL_FONT_X_MAX_BOUNDS_BIT_NV if (!strcmp(name, "GL_FONT_X_MAX_BOUNDS_BIT_NV")) { return GL_FONT_X_MAX_BOUNDS_BIT_NV; } +#endif +#ifdef GL_FONT_X_MIN_BOUNDS_BIT_NV if (!strcmp(name, "GL_FONT_X_MIN_BOUNDS_BIT_NV")) { return GL_FONT_X_MIN_BOUNDS_BIT_NV; } +#endif +#ifdef GL_FONT_Y_MAX_BOUNDS_BIT_NV if (!strcmp(name, "GL_FONT_Y_MAX_BOUNDS_BIT_NV")) { return GL_FONT_Y_MAX_BOUNDS_BIT_NV; } +#endif +#ifdef GL_FONT_Y_MIN_BOUNDS_BIT_NV if (!strcmp(name, "GL_FONT_Y_MIN_BOUNDS_BIT_NV")) { return GL_FONT_Y_MIN_BOUNDS_BIT_NV; } +#endif +#ifdef GL_FRAMEBUFFER_COMPLETE_EXT if (!strcmp(name, "GL_FRAMEBUFFER_COMPLETE_EXT")) { return GL_FRAMEBUFFER_COMPLETE_EXT; } +#endif +#ifdef GL_GEOMETRY_OUTPUT_TYPE_ARB if (!strcmp(name, "GL_GEOMETRY_OUTPUT_TYPE_ARB")) { return GL_GEOMETRY_OUTPUT_TYPE_ARB; } +#endif +#ifdef GL_GEOMETRY_OUTPUT_TYPE_EXT if (!strcmp(name, "GL_GEOMETRY_OUTPUT_TYPE_EXT")) { return GL_GEOMETRY_OUTPUT_TYPE_EXT; } +#endif +#ifdef GL_GET_TEXTURE_IMAGE_FORMAT if (!strcmp(name, "GL_GET_TEXTURE_IMAGE_FORMAT")) { return GL_GET_TEXTURE_IMAGE_FORMAT; } +#endif +#ifdef GL_GLYPH_HAS_KERNING_BIT_NV if (!strcmp(name, "GL_GLYPH_HAS_KERNING_BIT_NV")) { return GL_GLYPH_HAS_KERNING_BIT_NV; } +#endif +#ifdef GL_GREMEDY_frame_terminator if (!strcmp(name, "GL_GREMEDY_frame_terminator")) { return GL_GREMEDY_frame_terminator; } +#endif +#ifdef GL_GUILTY_CONTEXT_RESET_ARB if (!strcmp(name, "GL_GUILTY_CONTEXT_RESET_ARB")) { return GL_GUILTY_CONTEXT_RESET_ARB; } +#endif +#ifdef GL_HISTOGRAM_ALPHA_SIZE_EXT if (!strcmp(name, "GL_HISTOGRAM_ALPHA_SIZE_EXT")) { return GL_HISTOGRAM_ALPHA_SIZE_EXT; } +#endif +#ifdef GL_HISTOGRAM_GREEN_SIZE_EXT if (!strcmp(name, "GL_HISTOGRAM_GREEN_SIZE_EXT")) { return GL_HISTOGRAM_GREEN_SIZE_EXT; } +#endif +#ifdef GL_HISTOGRAM_LUMINANCE_SIZE if (!strcmp(name, "GL_HISTOGRAM_LUMINANCE_SIZE")) { return GL_HISTOGRAM_LUMINANCE_SIZE; } +#endif +#ifdef GL_IMAGE_2D_MULTISAMPLE_EXT if (!strcmp(name, "GL_IMAGE_2D_MULTISAMPLE_EXT")) { return GL_IMAGE_2D_MULTISAMPLE_EXT; } +#endif +#ifdef GL_IMAGE_BINDING_ACCESS_EXT if (!strcmp(name, "GL_IMAGE_BINDING_ACCESS_EXT")) { return GL_IMAGE_BINDING_ACCESS_EXT; } +#endif +#ifdef GL_IMAGE_BINDING_FORMAT_EXT if (!strcmp(name, "GL_IMAGE_BINDING_FORMAT_EXT")) { return GL_IMAGE_BINDING_FORMAT_EXT; } +#endif +#ifdef GL_IMAGE_CUBE_MAP_ARRAY_EXT if (!strcmp(name, "GL_IMAGE_CUBE_MAP_ARRAY_EXT")) { return GL_IMAGE_CUBE_MAP_ARRAY_EXT; } +#endif +#ifdef GL_INTERNALFORMAT_BLUE_SIZE if (!strcmp(name, "GL_INTERNALFORMAT_BLUE_SIZE")) { return GL_INTERNALFORMAT_BLUE_SIZE; } +#endif +#ifdef GL_INTERNALFORMAT_BLUE_TYPE if (!strcmp(name, "GL_INTERNALFORMAT_BLUE_TYPE")) { return GL_INTERNALFORMAT_BLUE_TYPE; } +#endif +#ifdef GL_INTERNALFORMAT_PREFERRED if (!strcmp(name, "GL_INTERNALFORMAT_PREFERRED")) { return GL_INTERNALFORMAT_PREFERRED; } +#endif +#ifdef GL_INTERNALFORMAT_SUPPORTED if (!strcmp(name, "GL_INTERNALFORMAT_SUPPORTED")) { return GL_INTERNALFORMAT_SUPPORTED; } +#endif +#ifdef GL_INT_IMAGE_2D_MULTISAMPLE if (!strcmp(name, "GL_INT_IMAGE_2D_MULTISAMPLE")) { return GL_INT_IMAGE_2D_MULTISAMPLE; } +#endif +#ifdef GL_INT_IMAGE_CUBE_MAP_ARRAY if (!strcmp(name, "GL_INT_IMAGE_CUBE_MAP_ARRAY")) { return GL_INT_IMAGE_CUBE_MAP_ARRAY; } +#endif +#ifdef GL_INT_SAMPLER_1D_ARRAY_EXT if (!strcmp(name, "GL_INT_SAMPLER_1D_ARRAY_EXT")) { return GL_INT_SAMPLER_1D_ARRAY_EXT; } +#endif +#ifdef GL_INT_SAMPLER_2D_ARRAY_EXT if (!strcmp(name, "GL_INT_SAMPLER_2D_ARRAY_EXT")) { return GL_INT_SAMPLER_2D_ARRAY_EXT; } +#endif +#ifdef GL_LIGHT_MODEL_LOCAL_VIEWER if (!strcmp(name, "GL_LIGHT_MODEL_LOCAL_VIEWER")) { return GL_LIGHT_MODEL_LOCAL_VIEWER; } +#endif +#ifdef GL_LINE_STRIP_ADJACENCY_ARB if (!strcmp(name, "GL_LINE_STRIP_ADJACENCY_ARB")) { return GL_LINE_STRIP_ADJACENCY_ARB; } +#endif +#ifdef GL_LINE_STRIP_ADJACENCY_EXT if (!strcmp(name, "GL_LINE_STRIP_ADJACENCY_EXT")) { return GL_LINE_STRIP_ADJACENCY_EXT; } +#endif +#ifdef GL_LOCAL_CONSTANT_VALUE_EXT if (!strcmp(name, "GL_LOCAL_CONSTANT_VALUE_EXT")) { return GL_LOCAL_CONSTANT_VALUE_EXT; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB0_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB0_4_NV")) { return GL_MAP1_VERTEX_ATTRIB0_4_NV; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB1_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB1_4_NV")) { return GL_MAP1_VERTEX_ATTRIB1_4_NV; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB2_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB2_4_NV")) { return GL_MAP1_VERTEX_ATTRIB2_4_NV; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB3_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB3_4_NV")) { return GL_MAP1_VERTEX_ATTRIB3_4_NV; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB4_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB4_4_NV")) { return GL_MAP1_VERTEX_ATTRIB4_4_NV; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB5_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB5_4_NV")) { return GL_MAP1_VERTEX_ATTRIB5_4_NV; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB6_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB6_4_NV")) { return GL_MAP1_VERTEX_ATTRIB6_4_NV; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB7_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB7_4_NV")) { return GL_MAP1_VERTEX_ATTRIB7_4_NV; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB8_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB8_4_NV")) { return GL_MAP1_VERTEX_ATTRIB8_4_NV; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB9_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB9_4_NV")) { return GL_MAP1_VERTEX_ATTRIB9_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB0_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB0_4_NV")) { return GL_MAP2_VERTEX_ATTRIB0_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB1_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB1_4_NV")) { return GL_MAP2_VERTEX_ATTRIB1_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB2_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB2_4_NV")) { return GL_MAP2_VERTEX_ATTRIB2_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB3_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB3_4_NV")) { return GL_MAP2_VERTEX_ATTRIB3_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB4_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB4_4_NV")) { return GL_MAP2_VERTEX_ATTRIB4_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB5_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB5_4_NV")) { return GL_MAP2_VERTEX_ATTRIB5_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB6_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB6_4_NV")) { return GL_MAP2_VERTEX_ATTRIB6_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB7_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB7_4_NV")) { return GL_MAP2_VERTEX_ATTRIB7_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB8_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB8_4_NV")) { return GL_MAP2_VERTEX_ATTRIB8_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB9_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB9_4_NV")) { return GL_MAP2_VERTEX_ATTRIB9_4_NV; } +#endif +#ifdef GL_MAP_INVALIDATE_RANGE_BIT if (!strcmp(name, "GL_MAP_INVALIDATE_RANGE_BIT")) { return GL_MAP_INVALIDATE_RANGE_BIT; } +#endif +#ifdef GL_MAX_ARRAY_TEXTURE_LAYERS if (!strcmp(name, "GL_MAX_ARRAY_TEXTURE_LAYERS")) { return GL_MAX_ARRAY_TEXTURE_LAYERS; } +#endif +#ifdef GL_MAX_ASYNC_HISTOGRAM_SGIX if (!strcmp(name, "GL_MAX_ASYNC_HISTOGRAM_SGIX")) { return GL_MAX_ASYNC_HISTOGRAM_SGIX; } +#endif +#ifdef GL_MAX_ASYNC_TEX_IMAGE_SGIX if (!strcmp(name, "GL_MAX_ASYNC_TEX_IMAGE_SGIX")) { return GL_MAX_ASYNC_TEX_IMAGE_SGIX; } +#endif +#ifdef GL_MAX_DEBUG_MESSAGE_LENGTH if (!strcmp(name, "GL_MAX_DEBUG_MESSAGE_LENGTH")) { return GL_MAX_DEBUG_MESSAGE_LENGTH; } +#endif +#ifdef GL_MAX_ELEMENTS_INDICES_EXT if (!strcmp(name, "GL_MAX_ELEMENTS_INDICES_EXT")) { return GL_MAX_ELEMENTS_INDICES_EXT; } +#endif +#ifdef GL_MAX_GENERAL_COMBINERS_NV if (!strcmp(name, "GL_MAX_GENERAL_COMBINERS_NV")) { return GL_MAX_GENERAL_COMBINERS_NV; } +#endif +#ifdef GL_MAX_NUM_ACTIVE_VARIABLES if (!strcmp(name, "GL_MAX_NUM_ACTIVE_VARIABLES")) { return GL_MAX_NUM_ACTIVE_VARIABLES; } +#endif +#ifdef GL_MAX_PALETTE_MATRICES_ARB if (!strcmp(name, "GL_MAX_PALETTE_MATRICES_ARB")) { return GL_MAX_PALETTE_MATRICES_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_MATRICES_ARB if (!strcmp(name, "GL_MAX_PROGRAM_MATRICES_ARB")) { return GL_MAX_PROGRAM_MATRICES_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_TEXEL_OFFSET if (!strcmp(name, "GL_MAX_PROGRAM_TEXEL_OFFSET")) { return GL_MAX_PROGRAM_TEXEL_OFFSET; } +#endif +#ifdef GL_MAX_SAMPLE_MASK_WORDS_NV if (!strcmp(name, "GL_MAX_SAMPLE_MASK_WORDS_NV")) { return GL_MAX_SAMPLE_MASK_WORDS_NV; } +#endif +#ifdef GL_MAX_TEXTURE_LOD_BIAS_EXT if (!strcmp(name, "GL_MAX_TEXTURE_LOD_BIAS_EXT")) { return GL_MAX_TEXTURE_LOD_BIAS_EXT; } +#endif +#ifdef GL_MAX_VERTEX_ATTRIB_STRIDE if (!strcmp(name, "GL_MAX_VERTEX_ATTRIB_STRIDE")) { return GL_MAX_VERTEX_ATTRIB_STRIDE; } +#endif +#ifdef GL_MIN_MAP_BUFFER_ALIGNMENT if (!strcmp(name, "GL_MIN_MAP_BUFFER_ALIGNMENT")) { return GL_MIN_MAP_BUFFER_ALIGNMENT; } +#endif +#ifdef GL_MIN_PROGRAM_TEXEL_OFFSET if (!strcmp(name, "GL_MIN_PROGRAM_TEXEL_OFFSET")) { return GL_MIN_PROGRAM_TEXEL_OFFSET; } +#endif +#ifdef GL_MIN_SAMPLE_SHADING_VALUE if (!strcmp(name, "GL_MIN_SAMPLE_SHADING_VALUE")) { return GL_MIN_SAMPLE_SHADING_VALUE; } +#endif +#ifdef GL_MIRROR_CLAMP_TO_EDGE_ATI if (!strcmp(name, "GL_MIRROR_CLAMP_TO_EDGE_ATI")) { return GL_MIRROR_CLAMP_TO_EDGE_ATI; } +#endif +#ifdef GL_MIRROR_CLAMP_TO_EDGE_EXT if (!strcmp(name, "GL_MIRROR_CLAMP_TO_EDGE_EXT")) { return GL_MIRROR_CLAMP_TO_EDGE_EXT; } +#endif +#ifdef GL_MODULATE_SIGNED_ADD_ATIX if (!strcmp(name, "GL_MODULATE_SIGNED_ADD_ATIX")) { return GL_MODULATE_SIGNED_ADD_ATIX; } +#endif +#ifdef GL_NORMAL_ARRAY_POINTER_EXT if (!strcmp(name, "GL_NORMAL_ARRAY_POINTER_EXT")) { return GL_NORMAL_ARRAY_POINTER_EXT; } +#endif +#ifdef GL_NUM_GENERAL_COMBINERS_NV if (!strcmp(name, "GL_NUM_GENERAL_COMBINERS_NV")) { return GL_NUM_GENERAL_COMBINERS_NV; } +#endif +#ifdef GL_NV_depth_range_unclamped if (!strcmp(name, "GL_NV_depth_range_unclamped")) { return GL_NV_depth_range_unclamped; } +#endif +#ifdef GL_NV_shader_thread_shuffle +if (!strcmp(name, "GL_NV_shader_thread_shuffle")) +{ + return GL_NV_shader_thread_shuffle; +} +#endif +#ifdef GL_NV_tessellation_program5 if (!strcmp(name, "GL_NV_tessellation_program5")) { return GL_NV_tessellation_program5; } +#endif +#ifdef GL_NV_texture_expand_normal if (!strcmp(name, "GL_NV_texture_expand_normal")) { return GL_NV_texture_expand_normal; } +#endif +#ifdef GL_OBJECT_DELETE_STATUS_ARB if (!strcmp(name, "GL_OBJECT_DELETE_STATUS_ARB")) { return GL_OBJECT_DELETE_STATUS_ARB; } +#endif +#ifdef GL_OFFSET_TEXTURE_MATRIX_NV if (!strcmp(name, "GL_OFFSET_TEXTURE_MATRIX_NV")) { return GL_OFFSET_TEXTURE_MATRIX_NV; } +#endif +#ifdef GL_ONE_MINUS_CONSTANT_ALPHA if (!strcmp(name, "GL_ONE_MINUS_CONSTANT_ALPHA")) { return GL_ONE_MINUS_CONSTANT_ALPHA; } +#endif +#ifdef GL_ONE_MINUS_CONSTANT_COLOR if (!strcmp(name, "GL_ONE_MINUS_CONSTANT_COLOR")) { return GL_ONE_MINUS_CONSTANT_COLOR; } +#endif +#ifdef GL_PATH_COVER_DEPTH_FUNC_NV if (!strcmp(name, "GL_PATH_COVER_DEPTH_FUNC_NV")) { return GL_PATH_COVER_DEPTH_FUNC_NV; } +#endif +#ifdef GL_PATH_DASH_ARRAY_COUNT_NV if (!strcmp(name, "GL_PATH_DASH_ARRAY_COUNT_NV")) { return GL_PATH_DASH_ARRAY_COUNT_NV; } +#endif +#ifdef GL_PATH_GEN_COLOR_FORMAT_NV if (!strcmp(name, "GL_PATH_GEN_COLOR_FORMAT_NV")) { return GL_PATH_GEN_COLOR_FORMAT_NV; } +#endif +#ifdef GL_PATH_INITIAL_DASH_CAP_NV if (!strcmp(name, "GL_PATH_INITIAL_DASH_CAP_NV")) { return GL_PATH_INITIAL_DASH_CAP_NV; } +#endif +#ifdef GL_PATH_TERMINAL_END_CAP_NV if (!strcmp(name, "GL_PATH_TERMINAL_END_CAP_NV")) { return GL_PATH_TERMINAL_END_CAP_NV; } +#endif +#ifdef GL_PIXEL_BUFFER_BARRIER_BIT if (!strcmp(name, "GL_PIXEL_BUFFER_BARRIER_BIT")) { return GL_PIXEL_BUFFER_BARRIER_BIT; } +#endif +#ifdef GL_PIXEL_COUNT_AVAILABLE_NV if (!strcmp(name, "GL_PIXEL_COUNT_AVAILABLE_NV")) { return GL_PIXEL_COUNT_AVAILABLE_NV; } +#endif +#ifdef GL_POLYGON_OFFSET_CLAMP_EXT +if (!strcmp(name, "GL_POLYGON_OFFSET_CLAMP_EXT")) +{ + return GL_POLYGON_OFFSET_CLAMP_EXT; +} +#endif +#ifdef GL_PRIMITIVES_GENERATED_EXT if (!strcmp(name, "GL_PRIMITIVES_GENERATED_EXT")) { return GL_PRIMITIVES_GENERATED_EXT; } +#endif +#ifdef GL_PRIMITIVES_SUBMITTED_ARB +if (!strcmp(name, "GL_PRIMITIVES_SUBMITTED_ARB")) +{ + return GL_PRIMITIVES_SUBMITTED_ARB; +} +#endif +#ifdef GL_PROGRAM_ERROR_STRING_ARB if (!strcmp(name, "GL_PROGRAM_ERROR_STRING_ARB")) { return GL_PROGRAM_ERROR_STRING_ARB; } +#endif +#ifdef GL_PROGRAM_FORMAT_ASCII_ARB if (!strcmp(name, "GL_PROGRAM_FORMAT_ASCII_ARB")) { return GL_PROGRAM_FORMAT_ASCII_ARB; } +#endif +#ifdef GL_PROGRAM_INSTRUCTIONS_ARB if (!strcmp(name, "GL_PROGRAM_INSTRUCTIONS_ARB")) { return GL_PROGRAM_INSTRUCTIONS_ARB; } +#endif +#ifdef GL_PROGRAM_PIPELINE_BINDING if (!strcmp(name, "GL_PROGRAM_PIPELINE_BINDING")) { return GL_PROGRAM_PIPELINE_BINDING; } +#endif +#ifdef GL_QUERY_ALL_EVENT_BITS_AMD +if (!strcmp(name, "GL_QUERY_ALL_EVENT_BITS_AMD")) +{ + return GL_QUERY_ALL_EVENT_BITS_AMD; +} +#endif +#ifdef GL_QUERY_BUFFER_BARRIER_BIT if (!strcmp(name, "GL_QUERY_BUFFER_BARRIER_BIT")) { return GL_QUERY_BUFFER_BARRIER_BIT; } +#endif +#ifdef GL_QUERY_BUFFER_BINDING_AMD if (!strcmp(name, "GL_QUERY_BUFFER_BINDING_AMD")) { return GL_QUERY_BUFFER_BINDING_AMD; } +#endif +#ifdef GL_QUERY_COUNTER_BITS_ANGLE if (!strcmp(name, "GL_QUERY_COUNTER_BITS_ANGLE")) { return GL_QUERY_COUNTER_BITS_ANGLE; } +#endif +#ifdef GL_QUERY_RESULT_NO_WAIT_AMD if (!strcmp(name, "GL_QUERY_RESULT_NO_WAIT_AMD")) { return GL_QUERY_RESULT_NO_WAIT_AMD; } +#endif +#ifdef GL_R1UI_T2F_C4F_N3F_V3F_SUN if (!strcmp(name, "GL_R1UI_T2F_C4F_N3F_V3F_SUN")) { return GL_R1UI_T2F_C4F_N3F_V3F_SUN; } +#endif +#ifdef GL_READ_FRAMEBUFFER_BINDING if (!strcmp(name, "GL_READ_FRAMEBUFFER_BINDING")) { return GL_READ_FRAMEBUFFER_BINDING; } +#endif +#ifdef GL_READ_PIXEL_DATA_RANGE_NV if (!strcmp(name, "GL_READ_PIXEL_DATA_RANGE_NV")) { return GL_READ_PIXEL_DATA_RANGE_NV; } +#endif +#ifdef GL_RELATIVE_ROUNDED_RECT_NV +if (!strcmp(name, "GL_RELATIVE_ROUNDED_RECT_NV")) +{ + return GL_RELATIVE_ROUNDED_RECT_NV; +} +#endif +#ifdef GL_RENDERBUFFER_BINDING_EXT if (!strcmp(name, "GL_RENDERBUFFER_BINDING_EXT")) { return GL_RENDERBUFFER_BINDING_EXT; } +#endif +#ifdef GL_RENDERBUFFER_SAMPLES_EXT if (!strcmp(name, "GL_RENDERBUFFER_SAMPLES_EXT")) { return GL_RENDERBUFFER_SAMPLES_EXT; } +#endif +#ifdef GL_RGBA_EXTENDED_RANGE_SGIX if (!strcmp(name, "GL_RGBA_EXTENDED_RANGE_SGIX")) { return GL_RGBA_EXTENDED_RANGE_SGIX; } +#endif +#ifdef GL_SAMPLE_ALPHA_TO_COVERAGE if (!strcmp(name, "GL_SAMPLE_ALPHA_TO_COVERAGE")) { return GL_SAMPLE_ALPHA_TO_COVERAGE; } +#endif +#ifdef GL_SAMPLE_ALPHA_TO_MASK_EXT if (!strcmp(name, "GL_SAMPLE_ALPHA_TO_MASK_EXT")) { return GL_SAMPLE_ALPHA_TO_MASK_EXT; } +#endif +#ifdef GL_SAMPLE_ALPHA_TO_ONE_SGIS if (!strcmp(name, "GL_SAMPLE_ALPHA_TO_ONE_SGIS")) { return GL_SAMPLE_ALPHA_TO_ONE_SGIS; } +#endif +#ifdef GL_SELECTION_BUFFER_POINTER if (!strcmp(name, "GL_SELECTION_BUFFER_POINTER")) { return GL_SELECTION_BUFFER_POINTER; } +#endif +#ifdef GL_SGIX_vertex_preclip_hint if (!strcmp(name, "GL_SGIX_vertex_preclip_hint")) { return GL_SGIX_vertex_preclip_hint; } +#endif +#ifdef GL_SHADING_LANGUAGE_VERSION if (!strcmp(name, "GL_SHADING_LANGUAGE_VERSION")) { return GL_SHADING_LANGUAGE_VERSION; } +#endif +#ifdef GL_SMOOTH_CUBIC_CURVE_TO_NV if (!strcmp(name, "GL_SMOOTH_CUBIC_CURVE_TO_NV")) { return GL_SMOOTH_CUBIC_CURVE_TO_NV; } +#endif +#ifdef GL_STREAM_RASTERIZATION_AMD +if (!strcmp(name, "GL_STREAM_RASTERIZATION_AMD")) +{ + return GL_STREAM_RASTERIZATION_AMD; +} +#endif +#ifdef GL_STRICT_LIGHTING_HINT_PGI if (!strcmp(name, "GL_STRICT_LIGHTING_HINT_PGI")) { return GL_STRICT_LIGHTING_HINT_PGI; } +#endif +#ifdef GL_TANGENT_ARRAY_STRIDE_EXT if (!strcmp(name, "GL_TANGENT_ARRAY_STRIDE_EXT")) { return GL_TANGENT_ARRAY_STRIDE_EXT; } -if (!strcmp(name, "GL_TEXT_FRAGMENT_SHADER_ATI")) -{ - return GL_TEXT_FRAGMENT_SHADER_ATI; -} +#endif +#ifdef GL_TEXTURE_BINDING_1D_ARRAY if (!strcmp(name, "GL_TEXTURE_BINDING_1D_ARRAY")) { return GL_TEXTURE_BINDING_1D_ARRAY; } +#endif +#ifdef GL_TEXTURE_BINDING_2D_ARRAY if (!strcmp(name, "GL_TEXTURE_BINDING_2D_ARRAY")) { return GL_TEXTURE_BINDING_2D_ARRAY; } +#endif +#ifdef GL_TEXTURE_BINDING_CUBE_MAP if (!strcmp(name, "GL_TEXTURE_BINDING_CUBE_MAP")) { return GL_TEXTURE_BINDING_CUBE_MAP; } +#endif +#ifdef GL_TEXTURE_BORDER_VALUES_NV if (!strcmp(name, "GL_TEXTURE_BORDER_VALUES_NV")) { return GL_TEXTURE_BORDER_VALUES_NV; } +#endif +#ifdef GL_TEXTURE_COLOR_SAMPLES_NV if (!strcmp(name, "GL_TEXTURE_COLOR_SAMPLES_NV")) { return GL_TEXTURE_COLOR_SAMPLES_NV; } +#endif +#ifdef GL_TEXTURE_COMPARE_FUNC_ARB if (!strcmp(name, "GL_TEXTURE_COMPARE_FUNC_ARB")) { return GL_TEXTURE_COMPARE_FUNC_ARB; } +#endif +#ifdef GL_TEXTURE_COMPARE_MODE_ARB if (!strcmp(name, "GL_TEXTURE_COMPARE_MODE_ARB")) { return GL_TEXTURE_COMPARE_MODE_ARB; } +#endif +#ifdef GL_TEXTURE_COMPRESSION_HINT if (!strcmp(name, "GL_TEXTURE_COMPRESSION_HINT")) { return GL_TEXTURE_COMPRESSION_HINT; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_SIZE if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_SIZE")) { return GL_TEXTURE_COORD_ARRAY_SIZE; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_TYPE if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_TYPE")) { return GL_TEXTURE_COORD_ARRAY_TYPE; } +#endif +#ifdef GL_TEXTURE_IMMUTABLE_FORMAT if (!strcmp(name, "GL_TEXTURE_IMMUTABLE_FORMAT")) { return GL_TEXTURE_IMMUTABLE_FORMAT; } +#endif +#ifdef GL_TEXTURE_IMMUTABLE_LEVELS if (!strcmp(name, "GL_TEXTURE_IMMUTABLE_LEVELS")) { return GL_TEXTURE_IMMUTABLE_LEVELS; } +#endif +#ifdef GL_TEXTURE_IMMUTABLE_LEVELS +if (!strcmp(name, "GL_TEXTURE_IMMUTABLE_LEVELS")) +{ + return GL_TEXTURE_IMMUTABLE_LEVELS; +} +#endif +#ifdef GL_TEXTURE_MAX_CLAMP_R_SGIX if (!strcmp(name, "GL_TEXTURE_MAX_CLAMP_R_SGIX")) { return GL_TEXTURE_MAX_CLAMP_R_SGIX; } +#endif +#ifdef GL_TEXTURE_MAX_CLAMP_S_SGIX if (!strcmp(name, "GL_TEXTURE_MAX_CLAMP_S_SGIX")) { return GL_TEXTURE_MAX_CLAMP_S_SGIX; } +#endif +#ifdef GL_TEXTURE_MAX_CLAMP_T_SGIX if (!strcmp(name, "GL_TEXTURE_MAX_CLAMP_T_SGIX")) { return GL_TEXTURE_MAX_CLAMP_T_SGIX; } +#endif +#ifdef GL_TEXTURE_STENCIL_SIZE_EXT if (!strcmp(name, "GL_TEXTURE_STENCIL_SIZE_EXT")) { return GL_TEXTURE_STENCIL_SIZE_EXT; } +#endif +#ifdef GL_TEXTURE_SWIZZLE_RGBA_EXT if (!strcmp(name, "GL_TEXTURE_SWIZZLE_RGBA_EXT")) { return GL_TEXTURE_SWIZZLE_RGBA_EXT; } +#endif +#ifdef GL_TEXT_FRAGMENT_SHADER_ATI +if (!strcmp(name, "GL_TEXT_FRAGMENT_SHADER_ATI")) +{ + return GL_TEXT_FRAGMENT_SHADER_ATI; +} +#endif +#ifdef GL_TRANSPOSE_TEXTURE_MATRIX if (!strcmp(name, "GL_TRANSPOSE_TEXTURE_MATRIX")) { return GL_TRANSPOSE_TEXTURE_MATRIX; } +#endif +#ifdef GL_TRIANGLE_STRIP_ADJACENCY if (!strcmp(name, "GL_TRIANGLE_STRIP_ADJACENCY")) { return GL_TRIANGLE_STRIP_ADJACENCY; } +#endif +#ifdef GL_UNIFORM_BUFFER_LENGTH_NV +if (!strcmp(name, "GL_UNIFORM_BUFFER_LENGTH_NV")) +{ + return GL_UNIFORM_BUFFER_LENGTH_NV; +} +#endif +#ifdef GL_UNSIGNED_INT_5_9_9_9_REV if (!strcmp(name, "GL_UNSIGNED_INT_5_9_9_9_REV")) { return GL_UNSIGNED_INT_5_9_9_9_REV; } +#endif +#ifdef GL_UNSIGNED_INT_8_8_8_8_EXT if (!strcmp(name, "GL_UNSIGNED_INT_8_8_8_8_EXT")) { return GL_UNSIGNED_INT_8_8_8_8_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_8_8_8_8_REV if (!strcmp(name, "GL_UNSIGNED_INT_8_8_8_8_REV")) { return GL_UNSIGNED_INT_8_8_8_8_REV; } +#endif +#ifdef GL_UNSIGNED_SHORT_5_6_5_REV if (!strcmp(name, "GL_UNSIGNED_SHORT_5_6_5_REV")) { return GL_UNSIGNED_SHORT_5_6_5_REV; } +#endif +#ifdef GL_UNSIGNED_SHORT_8_8_APPLE if (!strcmp(name, "GL_UNSIGNED_SHORT_8_8_APPLE")) { return GL_UNSIGNED_SHORT_8_8_APPLE; } +#endif +#ifdef GL_VARIANT_ARRAY_STRIDE_EXT if (!strcmp(name, "GL_VARIANT_ARRAY_STRIDE_EXT")) { return GL_VARIANT_ARRAY_STRIDE_EXT; } +#endif +#ifdef GL_VERTEX_ARRAY_POINTER_EXT if (!strcmp(name, "GL_VERTEX_ARRAY_POINTER_EXT")) { return GL_VERTEX_ARRAY_POINTER_EXT; } +#endif +#ifdef GL_VERTEX_ARRAY_RANGE_APPLE if (!strcmp(name, "GL_VERTEX_ARRAY_RANGE_APPLE")) { return GL_VERTEX_ARRAY_RANGE_APPLE; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY10_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY10_NV")) { return GL_VERTEX_ATTRIB_ARRAY10_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY11_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY11_NV")) { return GL_VERTEX_ATTRIB_ARRAY11_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY12_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY12_NV")) { return GL_VERTEX_ATTRIB_ARRAY12_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY13_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY13_NV")) { return GL_VERTEX_ATTRIB_ARRAY13_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY14_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY14_NV")) { return GL_VERTEX_ATTRIB_ARRAY14_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY15_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY15_NV")) { return GL_VERTEX_ATTRIB_ARRAY15_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_LONG if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_LONG")) { return GL_VERTEX_ATTRIB_ARRAY_LONG; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_SIZE if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_SIZE")) { return GL_VERTEX_ATTRIB_ARRAY_SIZE; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_TYPE if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_TYPE")) { return GL_VERTEX_ATTRIB_ARRAY_TYPE; } +#endif +#ifdef GL_VERTEX_ATTRIB_MAP1_APPLE if (!strcmp(name, "GL_VERTEX_ATTRIB_MAP1_APPLE")) { return GL_VERTEX_ATTRIB_MAP1_APPLE; } +#endif +#ifdef GL_VERTEX_ATTRIB_MAP2_APPLE if (!strcmp(name, "GL_VERTEX_ATTRIB_MAP2_APPLE")) { return GL_VERTEX_ATTRIB_MAP2_APPLE; } +#endif +#ifdef GL_VERTEX_PRECLIP_HINT_SGIX +if (!strcmp(name, "GL_VERTEX_PRECLIP_HINT_SGIX")) +{ + return GL_VERTEX_PRECLIP_HINT_SGIX; +} +#endif +#ifdef GL_VERTEX_PRECLIP_HINT_SGIX if (!strcmp(name, "GL_VERTEX_PRECLIP_HINT_SGIX")) { return GL_VERTEX_PRECLIP_HINT_SGIX; } +#endif +#ifdef GL_VERTEX_SHADER_LOCALS_EXT if (!strcmp(name, "GL_VERTEX_SHADER_LOCALS_EXT")) { return GL_VERTEX_SHADER_LOCALS_EXT; } +#endif +#ifdef GL_VIEW_CLASS_S3TC_DXT1_RGB if (!strcmp(name, "GL_VIEW_CLASS_S3TC_DXT1_RGB")) { return GL_VIEW_CLASS_S3TC_DXT1_RGB; } +#endif +#ifdef GL_VIEW_COMPATIBILITY_CLASS if (!strcmp(name, "GL_VIEW_COMPATIBILITY_CLASS")) { return GL_VIEW_COMPATIBILITY_CLASS; } +#endif +#ifdef GL_WEIGHT_ARRAY_POINTER_ARB if (!strcmp(name, "GL_WEIGHT_ARRAY_POINTER_ARB")) { return GL_WEIGHT_ARRAY_POINTER_ARB; } +#endif +#ifdef GL_Z4Y12Z4CB12Z4CR12_444_NV if (!strcmp(name, "GL_Z4Y12Z4CB12Z4CR12_444_NV")) { return GL_Z4Y12Z4CB12Z4CR12_444_NV; } +#endif return _GL_UNDEFINED; case 28: +#ifdef GL_ACTIVE_UNIFORM_MAX_LENGTH if (!strcmp(name, "GL_ACTIVE_UNIFORM_MAX_LENGTH")) { return GL_ACTIVE_UNIFORM_MAX_LENGTH; } +#endif +#ifdef GL_ALPHA_EXTENDED_RANGE_SGIX if (!strcmp(name, "GL_ALPHA_EXTENDED_RANGE_SGIX")) { return GL_ALPHA_EXTENDED_RANGE_SGIX; } +#endif +#ifdef GL_AMD_occlusion_query_event +if (!strcmp(name, "GL_AMD_occlusion_query_event")) +{ + return GL_AMD_occlusion_query_event; +} +#endif +#ifdef GL_AMD_shader_stencil_export if (!strcmp(name, "GL_AMD_shader_stencil_export")) { return GL_AMD_shader_stencil_export; } +#endif +#ifdef GL_AMD_shader_trinary_minmax if (!strcmp(name, "GL_AMD_shader_trinary_minmax")) { return GL_AMD_shader_trinary_minmax; } +#endif +#ifdef GL_APPLE_vertex_array_object if (!strcmp(name, "GL_APPLE_vertex_array_object")) { return GL_APPLE_vertex_array_object; } +#endif +#ifdef GL_ARB_get_texture_sub_image +if (!strcmp(name, "GL_ARB_get_texture_sub_image")) +{ + return GL_ARB_get_texture_sub_image; +} +#endif +#ifdef GL_ARB_internalformat_query2 if (!strcmp(name, "GL_ARB_internalformat_query2")) { return GL_ARB_internalformat_query2; } +#endif +#ifdef GL_ARB_shader_stencil_export if (!strcmp(name, "GL_ARB_shader_stencil_export")) { return GL_ARB_shader_stencil_export; } +#endif +#ifdef GL_ARB_texture_buffer_object if (!strcmp(name, "GL_ARB_texture_buffer_object")) { return GL_ARB_texture_buffer_object; } +#endif +#ifdef GL_ARB_texture_filter_minmax +if (!strcmp(name, "GL_ARB_texture_filter_minmax")) +{ + return GL_ARB_texture_filter_minmax; +} +#endif +#ifdef GL_ARB_uniform_buffer_object if (!strcmp(name, "GL_ARB_uniform_buffer_object")) { return GL_ARB_uniform_buffer_object; } +#endif +#ifdef GL_ARB_vertex_attrib_binding if (!strcmp(name, "GL_ARB_vertex_attrib_binding")) { return GL_ARB_vertex_attrib_binding; } +#endif +#ifdef GL_ATIX_texture_env_combine3 if (!strcmp(name, "GL_ATIX_texture_env_combine3")) { return GL_ATIX_texture_env_combine3; } +#endif +#ifdef GL_BINORMAL_ARRAY_STRIDE_EXT if (!strcmp(name, "GL_BINORMAL_ARRAY_STRIDE_EXT")) { return GL_BINORMAL_ARRAY_STRIDE_EXT; } +#endif +#ifdef GL_BUFFER_UPDATE_BARRIER_BIT if (!strcmp(name, "GL_BUFFER_UPDATE_BARRIER_BIT")) { return GL_BUFFER_UPDATE_BARRIER_BIT; } +#endif +#ifdef GL_CLIENT_ACTIVE_TEXTURE_ARB if (!strcmp(name, "GL_CLIENT_ACTIVE_TEXTURE_ARB")) { return GL_CLIENT_ACTIVE_TEXTURE_ARB; } +#endif +#ifdef GL_CLIENT_ATTRIB_STACK_DEPTH if (!strcmp(name, "GL_CLIENT_ATTRIB_STACK_DEPTH")) { return GL_CLIENT_ATTRIB_STACK_DEPTH; } +#endif +#ifdef GL_COLOR_TABLE_BLUE_SIZE_EXT if (!strcmp(name, "GL_COLOR_TABLE_BLUE_SIZE_EXT")) { return GL_COLOR_TABLE_BLUE_SIZE_EXT; } +#endif +#ifdef GL_COLOR_TABLE_BLUE_SIZE_SGI if (!strcmp(name, "GL_COLOR_TABLE_BLUE_SIZE_SGI")) { return GL_COLOR_TABLE_BLUE_SIZE_SGI; } +#endif +#ifdef GL_COMPRESSED_RGBA8_ETC2_EAC if (!strcmp(name, "GL_COMPRESSED_RGBA8_ETC2_EAC")) { return GL_COMPRESSED_RGBA8_ETC2_EAC; } +#endif +#ifdef GL_COMPRESSED_RGBA_FXT1_3DFX if (!strcmp(name, "GL_COMPRESSED_RGBA_FXT1_3DFX")) { return GL_COMPRESSED_RGBA_FXT1_3DFX; } +#endif +#ifdef GL_COMPRESSED_SIGNED_R11_EAC if (!strcmp(name, "GL_COMPRESSED_SIGNED_R11_EAC")) { return GL_COMPRESSED_SIGNED_R11_EAC; } +#endif +#ifdef GL_COMPRESSED_SLUMINANCE_EXT if (!strcmp(name, "GL_COMPRESSED_SLUMINANCE_EXT")) { return GL_COMPRESSED_SLUMINANCE_EXT; } +#endif +#ifdef GL_COMPRESSED_SRGB_ALPHA_EXT if (!strcmp(name, "GL_COMPRESSED_SRGB_ALPHA_EXT")) { return GL_COMPRESSED_SRGB_ALPHA_EXT; } +#endif +#ifdef GL_COPY_WRITE_BUFFER_BINDING +if (!strcmp(name, "GL_COPY_WRITE_BUFFER_BINDING")) +{ + return GL_COPY_WRITE_BUFFER_BINDING; +} +#endif +#ifdef GL_CURRENT_RASTER_NORMAL_EXT if (!strcmp(name, "GL_CURRENT_RASTER_NORMAL_EXT")) { return GL_CURRENT_RASTER_NORMAL_EXT; } +#endif +#ifdef GL_CURRENT_VERTEX_ATTRIB_ARB if (!strcmp(name, "GL_CURRENT_VERTEX_ATTRIB_ARB")) { return GL_CURRENT_VERTEX_ATTRIB_ARB; } +#endif +#ifdef GL_CURRENT_VERTEX_WEIGHT_EXT if (!strcmp(name, "GL_CURRENT_VERTEX_WEIGHT_EXT")) { return GL_CURRENT_VERTEX_WEIGHT_EXT; } +#endif +#ifdef GL_DEBUG_CALLBACK_USER_PARAM if (!strcmp(name, "GL_DEBUG_CALLBACK_USER_PARAM")) { return GL_DEBUG_CALLBACK_USER_PARAM; } +#endif +#ifdef GL_DEBUG_LOGGED_MESSAGES_AMD if (!strcmp(name, "GL_DEBUG_LOGGED_MESSAGES_AMD")) { return GL_DEBUG_LOGGED_MESSAGES_AMD; } +#endif +#ifdef GL_DEBUG_LOGGED_MESSAGES_ARB if (!strcmp(name, "GL_DEBUG_LOGGED_MESSAGES_ARB")) { return GL_DEBUG_LOGGED_MESSAGES_ARB; } +#endif +#ifdef GL_DEBUG_SEVERITY_MEDIUM_AMD if (!strcmp(name, "GL_DEBUG_SEVERITY_MEDIUM_AMD")) { return GL_DEBUG_SEVERITY_MEDIUM_AMD; } +#endif +#ifdef GL_DEBUG_SEVERITY_MEDIUM_ARB if (!strcmp(name, "GL_DEBUG_SEVERITY_MEDIUM_ARB")) { return GL_DEBUG_SEVERITY_MEDIUM_ARB; } +#endif +#ifdef GL_DOT_PRODUCT_TEXTURE_1D_NV if (!strcmp(name, "GL_DOT_PRODUCT_TEXTURE_1D_NV")) { return GL_DOT_PRODUCT_TEXTURE_1D_NV; } +#endif +#ifdef GL_DOT_PRODUCT_TEXTURE_2D_NV if (!strcmp(name, "GL_DOT_PRODUCT_TEXTURE_2D_NV")) { return GL_DOT_PRODUCT_TEXTURE_2D_NV; } +#endif +#ifdef GL_DOT_PRODUCT_TEXTURE_3D_NV if (!strcmp(name, "GL_DOT_PRODUCT_TEXTURE_3D_NV")) { return GL_DOT_PRODUCT_TEXTURE_3D_NV; } +#endif +#ifdef GL_EDGE_FLAG_ARRAY_COUNT_EXT if (!strcmp(name, "GL_EDGE_FLAG_ARRAY_COUNT_EXT")) { return GL_EDGE_FLAG_ARRAY_COUNT_EXT; } +#endif +#ifdef GL_EDGE_FLAG_ARRAY_LENGTH_NV if (!strcmp(name, "GL_EDGE_FLAG_ARRAY_LENGTH_NV")) { return GL_EDGE_FLAG_ARRAY_LENGTH_NV; } +#endif +#ifdef GL_ELEMENT_ARRAY_BARRIER_BIT if (!strcmp(name, "GL_ELEMENT_ARRAY_BARRIER_BIT")) { return GL_ELEMENT_ARRAY_BARRIER_BIT; } +#endif +#ifdef GL_ELEMENT_ARRAY_POINTER_ATI if (!strcmp(name, "GL_ELEMENT_ARRAY_POINTER_ATI")) { return GL_ELEMENT_ARRAY_POINTER_ATI; } +#endif +#ifdef GL_EXT_compiled_vertex_array if (!strcmp(name, "GL_EXT_compiled_vertex_array")) { return GL_EXT_compiled_vertex_array; } +#endif +#ifdef GL_EXT_texture_buffer_object if (!strcmp(name, "GL_EXT_texture_buffer_object")) { return GL_EXT_texture_buffer_object; } -if (!strcmp(name, "GL_EYE_DISTANCE_TO_LINE_SGIS")) +#endif +#ifdef GL_EXT_texture_filter_minmax +if (!strcmp(name, "GL_EXT_texture_filter_minmax")) { - return GL_EYE_DISTANCE_TO_LINE_SGIS; + return GL_EXT_texture_filter_minmax; } -if (!strcmp(name, "GL_FOG_COORD_ARRAY_LENGTH_NV")) +#endif +#ifdef GL_EYE_DISTANCE_TO_LINE_SGIS +if (!strcmp(name, "GL_EYE_DISTANCE_TO_LINE_SGIS")) { - return GL_FOG_COORD_ARRAY_LENGTH_NV; + return GL_EYE_DISTANCE_TO_LINE_SGIS; } +#endif +#ifdef GL_FOG_COORDINATE_ARRAY_TYPE if (!strcmp(name, "GL_FOG_COORDINATE_ARRAY_TYPE")) { return GL_FOG_COORDINATE_ARRAY_TYPE; } +#endif +#ifdef GL_FOG_COORDINATE_SOURCE_EXT if (!strcmp(name, "GL_FOG_COORDINATE_SOURCE_EXT")) { return GL_FOG_COORDINATE_SOURCE_EXT; } +#endif +#ifdef GL_FOG_COORD_ARRAY_LENGTH_NV +if (!strcmp(name, "GL_FOG_COORD_ARRAY_LENGTH_NV")) +{ + return GL_FOG_COORD_ARRAY_LENGTH_NV; +} +#endif +#ifdef GL_FRAMEBUFFER_DEFAULT_WIDTH if (!strcmp(name, "GL_FRAMEBUFFER_DEFAULT_WIDTH")) { return GL_FRAMEBUFFER_DEFAULT_WIDTH; } +#endif +#ifdef GL_FUNC_REVERSE_SUBTRACT_EXT if (!strcmp(name, "GL_FUNC_REVERSE_SUBTRACT_EXT")) { return GL_FUNC_REVERSE_SUBTRACT_EXT; } +#endif +#ifdef GL_GENERATE_MIPMAP_HINT_SGIS if (!strcmp(name, "GL_GENERATE_MIPMAP_HINT_SGIS")) { return GL_GENERATE_MIPMAP_HINT_SGIS; } +#endif +#ifdef GL_GEOMETRY_VERTICES_OUT_ARB if (!strcmp(name, "GL_GEOMETRY_VERTICES_OUT_ARB")) { return GL_GEOMETRY_VERTICES_OUT_ARB; } +#endif +#ifdef GL_GEOMETRY_VERTICES_OUT_EXT if (!strcmp(name, "GL_GEOMETRY_VERTICES_OUT_EXT")) { return GL_GEOMETRY_VERTICES_OUT_EXT; } +#endif +#ifdef GL_IBM_multimode_draw_arrays if (!strcmp(name, "GL_IBM_multimode_draw_arrays")) { return GL_IBM_multimode_draw_arrays; } +#endif +#ifdef GL_IMAGE_BINDING_LAYERED_EXT if (!strcmp(name, "GL_IMAGE_BINDING_LAYERED_EXT")) { return GL_IMAGE_BINDING_LAYERED_EXT; } +#endif +#ifdef GL_IMAGE_COMPATIBILITY_CLASS if (!strcmp(name, "GL_IMAGE_COMPATIBILITY_CLASS")) { return GL_IMAGE_COMPATIBILITY_CLASS; } +#endif +#ifdef GL_INTERNALFORMAT_ALPHA_SIZE if (!strcmp(name, "GL_INTERNALFORMAT_ALPHA_SIZE")) { return GL_INTERNALFORMAT_ALPHA_SIZE; } +#endif +#ifdef GL_INTERNALFORMAT_ALPHA_TYPE if (!strcmp(name, "GL_INTERNALFORMAT_ALPHA_TYPE")) { return GL_INTERNALFORMAT_ALPHA_TYPE; } +#endif +#ifdef GL_INTERNALFORMAT_DEPTH_SIZE if (!strcmp(name, "GL_INTERNALFORMAT_DEPTH_SIZE")) { return GL_INTERNALFORMAT_DEPTH_SIZE; } +#endif +#ifdef GL_INTERNALFORMAT_DEPTH_TYPE if (!strcmp(name, "GL_INTERNALFORMAT_DEPTH_TYPE")) { return GL_INTERNALFORMAT_DEPTH_TYPE; } +#endif +#ifdef GL_INTERNALFORMAT_GREEN_SIZE if (!strcmp(name, "GL_INTERNALFORMAT_GREEN_SIZE")) { return GL_INTERNALFORMAT_GREEN_SIZE; } +#endif +#ifdef GL_INTERNALFORMAT_GREEN_TYPE if (!strcmp(name, "GL_INTERNALFORMAT_GREEN_TYPE")) { return GL_INTERNALFORMAT_GREEN_TYPE; } +#endif +#ifdef GL_KHR_context_flush_control +if (!strcmp(name, "GL_KHR_context_flush_control")) +{ + return GL_KHR_context_flush_control; +} +#endif +#ifdef GL_LIGHT_MODEL_COLOR_CONTROL if (!strcmp(name, "GL_LIGHT_MODEL_COLOR_CONTROL")) { return GL_LIGHT_MODEL_COLOR_CONTROL; } +#endif +#ifdef GL_LOSE_CONTEXT_ON_RESET_ARB if (!strcmp(name, "GL_LOSE_CONTEXT_ON_RESET_ARB")) { return GL_LOSE_CONTEXT_ON_RESET_ARB; } +#endif +#ifdef GL_LUMINANCE16_ALPHA16_SNORM if (!strcmp(name, "GL_LUMINANCE16_ALPHA16_SNORM")) { return GL_LUMINANCE16_ALPHA16_SNORM; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB10_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB10_4_NV")) { return GL_MAP1_VERTEX_ATTRIB10_4_NV; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB11_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB11_4_NV")) { return GL_MAP1_VERTEX_ATTRIB11_4_NV; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB12_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB12_4_NV")) { return GL_MAP1_VERTEX_ATTRIB12_4_NV; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB13_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB13_4_NV")) { return GL_MAP1_VERTEX_ATTRIB13_4_NV; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB14_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB14_4_NV")) { return GL_MAP1_VERTEX_ATTRIB14_4_NV; } +#endif +#ifdef GL_MAP1_VERTEX_ATTRIB15_4_NV if (!strcmp(name, "GL_MAP1_VERTEX_ATTRIB15_4_NV")) { return GL_MAP1_VERTEX_ATTRIB15_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB10_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB10_4_NV")) { return GL_MAP2_VERTEX_ATTRIB10_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB11_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB11_4_NV")) { return GL_MAP2_VERTEX_ATTRIB11_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB12_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB12_4_NV")) { return GL_MAP2_VERTEX_ATTRIB12_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB13_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB13_4_NV")) { return GL_MAP2_VERTEX_ATTRIB13_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB14_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB14_4_NV")) { return GL_MAP2_VERTEX_ATTRIB14_4_NV; } +#endif +#ifdef GL_MAP2_VERTEX_ATTRIB15_4_NV if (!strcmp(name, "GL_MAP2_VERTEX_ATTRIB15_4_NV")) { return GL_MAP2_VERTEX_ATTRIB15_4_NV; } +#endif +#ifdef GL_MAP_INVALIDATE_BUFFER_BIT if (!strcmp(name, "GL_MAP_INVALIDATE_BUFFER_BIT")) { return GL_MAP_INVALIDATE_BUFFER_BIT; } +#endif +#ifdef GL_MAT_COLOR_INDEXES_BIT_PGI if (!strcmp(name, "GL_MAT_COLOR_INDEXES_BIT_PGI")) { return GL_MAT_COLOR_INDEXES_BIT_PGI; } +#endif +#ifdef GL_MAX_COLOR_ATTACHMENTS_EXT if (!strcmp(name, "GL_MAX_COLOR_ATTACHMENTS_EXT")) { return GL_MAX_COLOR_ATTACHMENTS_EXT; } +#endif +#ifdef GL_MAX_COLOR_TEXTURE_SAMPLES if (!strcmp(name, "GL_MAX_COLOR_TEXTURE_SAMPLES")) { return GL_MAX_COLOR_TEXTURE_SAMPLES; } +#endif +#ifdef GL_MAX_CONVOLUTION_WIDTH_EXT if (!strcmp(name, "GL_MAX_CONVOLUTION_WIDTH_EXT")) { return GL_MAX_CONVOLUTION_WIDTH_EXT; } +#endif +#ifdef GL_MAX_CUBE_MAP_TEXTURE_SIZE if (!strcmp(name, "GL_MAX_CUBE_MAP_TEXTURE_SIZE")) { return GL_MAX_CUBE_MAP_TEXTURE_SIZE; } +#endif +#ifdef GL_MAX_DEBUG_LOGGED_MESSAGES if (!strcmp(name, "GL_MAX_DEBUG_LOGGED_MESSAGES")) { return GL_MAX_DEBUG_LOGGED_MESSAGES; } +#endif +#ifdef GL_MAX_DEPTH_TEXTURE_SAMPLES if (!strcmp(name, "GL_MAX_DEPTH_TEXTURE_SAMPLES")) { return GL_MAX_DEPTH_TEXTURE_SAMPLES; } +#endif +#ifdef GL_MAX_ELEMENTS_VERTICES_EXT if (!strcmp(name, "GL_MAX_ELEMENTS_VERTICES_EXT")) { return GL_MAX_ELEMENTS_VERTICES_EXT; } +#endif +#ifdef GL_MAX_MODELVIEW_STACK_DEPTH if (!strcmp(name, "GL_MAX_MODELVIEW_STACK_DEPTH")) { return GL_MAX_MODELVIEW_STACK_DEPTH; } +#endif +#ifdef GL_MAX_PROGRAM_CALL_DEPTH_NV +if (!strcmp(name, "GL_MAX_PROGRAM_CALL_DEPTH_NV")) +{ + return GL_MAX_PROGRAM_CALL_DEPTH_NV; +} +#endif +#ifdef GL_MAX_PROGRAM_CALL_DEPTH_NV if (!strcmp(name, "GL_MAX_PROGRAM_CALL_DEPTH_NV")) { return GL_MAX_PROGRAM_CALL_DEPTH_NV; } +#endif +#ifdef GL_MAX_PROGRAM_LOOP_COUNT_NV if (!strcmp(name, "GL_MAX_PROGRAM_LOOP_COUNT_NV")) { return GL_MAX_PROGRAM_LOOP_COUNT_NV; } +#endif +#ifdef GL_MAX_PROGRAM_LOOP_DEPTH_NV if (!strcmp(name, "GL_MAX_PROGRAM_LOOP_DEPTH_NV")) { return GL_MAX_PROGRAM_LOOP_DEPTH_NV; } +#endif +#ifdef GL_MAX_RENDERBUFFER_SIZE_EXT if (!strcmp(name, "GL_MAX_RENDERBUFFER_SIZE_EXT")) { return GL_MAX_RENDERBUFFER_SIZE_EXT; } +#endif +#ifdef GL_MAX_TESS_PATCH_COMPONENTS if (!strcmp(name, "GL_MAX_TESS_PATCH_COMPONENTS")) { return GL_MAX_TESS_PATCH_COMPONENTS; } +#endif +#ifdef GL_MAX_VERTEX_IMAGE_UNIFORMS if (!strcmp(name, "GL_MAX_VERTEX_IMAGE_UNIFORMS")) { return GL_MAX_VERTEX_IMAGE_UNIFORMS; } +#endif +#ifdef GL_MAX_VERTEX_UNIFORM_BLOCKS if (!strcmp(name, "GL_MAX_VERTEX_UNIFORM_BLOCKS")) { return GL_MAX_VERTEX_UNIFORM_BLOCKS; } +#endif +#ifdef GL_NO_RESET_NOTIFICATION_ARB if (!strcmp(name, "GL_NO_RESET_NOTIFICATION_ARB")) { return GL_NO_RESET_NOTIFICATION_ARB; } +#endif +#ifdef GL_NUM_SHADER_BINARY_FORMATS if (!strcmp(name, "GL_NUM_SHADER_BINARY_FORMATS")) { return GL_NUM_SHADER_BINARY_FORMATS; } +#endif +#ifdef GL_NV_shader_atomic_counters if (!strcmp(name, "GL_NV_shader_atomic_counters")) { return GL_NV_shader_atomic_counters; } +#endif +#ifdef GL_NV_vertex_program2_option if (!strcmp(name, "GL_NV_vertex_program2_option")) { return GL_NV_vertex_program2_option; } +#endif +#ifdef GL_OBJECT_COMPILE_STATUS_ARB if (!strcmp(name, "GL_OBJECT_COMPILE_STATUS_ARB")) { return GL_OBJECT_COMPILE_STATUS_ARB; } +#endif +#ifdef GL_OFFSET_HILO_TEXTURE_2D_NV if (!strcmp(name, "GL_OFFSET_HILO_TEXTURE_2D_NV")) { return GL_OFFSET_HILO_TEXTURE_2D_NV; } +#endif +#ifdef GL_OFFSET_TEXTURE_2D_BIAS_NV if (!strcmp(name, "GL_OFFSET_TEXTURE_2D_BIAS_NV")) { return GL_OFFSET_TEXTURE_2D_BIAS_NV; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD0_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD0_EXT")) { return GL_OUTPUT_TEXTURE_COORD0_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD1_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD1_EXT")) { return GL_OUTPUT_TEXTURE_COORD1_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD2_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD2_EXT")) { return GL_OUTPUT_TEXTURE_COORD2_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD3_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD3_EXT")) { return GL_OUTPUT_TEXTURE_COORD3_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD4_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD4_EXT")) { return GL_OUTPUT_TEXTURE_COORD4_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD5_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD5_EXT")) { return GL_OUTPUT_TEXTURE_COORD5_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD6_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD6_EXT")) { return GL_OUTPUT_TEXTURE_COORD6_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD7_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD7_EXT")) { return GL_OUTPUT_TEXTURE_COORD7_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD8_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD8_EXT")) { return GL_OUTPUT_TEXTURE_COORD8_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD9_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD9_EXT")) { return GL_OUTPUT_TEXTURE_COORD9_EXT; } +#endif +#ifdef GL_PATCH_DEFAULT_INNER_LEVEL if (!strcmp(name, "GL_PATCH_DEFAULT_INNER_LEVEL")) { return GL_PATCH_DEFAULT_INNER_LEVEL; } +#endif +#ifdef GL_PATCH_DEFAULT_OUTER_LEVEL if (!strcmp(name, "GL_PATCH_DEFAULT_OUTER_LEVEL")) { return GL_PATCH_DEFAULT_OUTER_LEVEL; } +#endif +#ifdef GL_PATH_DASH_OFFSET_RESET_NV if (!strcmp(name, "GL_PATH_DASH_OFFSET_RESET_NV")) { return GL_PATH_DASH_OFFSET_RESET_NV; } +#endif +#ifdef GL_PATH_FILL_BOUNDING_BOX_NV if (!strcmp(name, "GL_PATH_FILL_BOUNDING_BOX_NV")) { return GL_PATH_FILL_BOUNDING_BOX_NV; } +#endif +#ifdef GL_PATH_STROKE_COVER_MODE_NV if (!strcmp(name, "GL_PATH_STROKE_COVER_MODE_NV")) { return GL_PATH_STROKE_COVER_MODE_NV; } +#endif +#ifdef GL_PATH_TERMINAL_DASH_CAP_NV if (!strcmp(name, "GL_PATH_TERMINAL_DASH_CAP_NV")) { return GL_PATH_TERMINAL_DASH_CAP_NV; } +#endif +#ifdef GL_PIXEL_PACK_BUFFER_BINDING if (!strcmp(name, "GL_PIXEL_PACK_BUFFER_BINDING")) { return GL_PIXEL_PACK_BUFFER_BINDING; } +#endif +#ifdef GL_POINT_FADE_THRESHOLD_SIZE if (!strcmp(name, "GL_POINT_FADE_THRESHOLD_SIZE")) { return GL_POINT_FADE_THRESHOLD_SIZE; } +#endif +#ifdef GL_POINT_SPRITE_COORD_ORIGIN if (!strcmp(name, "GL_POINT_SPRITE_COORD_ORIGIN")) { return GL_POINT_SPRITE_COORD_ORIGIN; } +#endif +#ifdef GL_POLYGON_OFFSET_FACTOR_EXT if (!strcmp(name, "GL_POLYGON_OFFSET_FACTOR_EXT")) { return GL_POLYGON_OFFSET_FACTOR_EXT; } +#endif +#ifdef GL_POST_CONVOLUTION_RED_BIAS if (!strcmp(name, "GL_POST_CONVOLUTION_RED_BIAS")) { return GL_POST_CONVOLUTION_RED_BIAS; } +#endif +#ifdef GL_PREVIOUS_TEXTURE_INPUT_NV if (!strcmp(name, "GL_PREVIOUS_TEXTURE_INPUT_NV")) { return GL_PREVIOUS_TEXTURE_INPUT_NV; } +#endif +#ifdef GL_PROGRAM_ERROR_POSITION_NV if (!strcmp(name, "GL_PROGRAM_ERROR_POSITION_NV")) { return GL_PROGRAM_ERROR_POSITION_NV; } +#endif +#ifdef GL_QUERY_RESULT_AVAILABLE_NV if (!strcmp(name, "GL_QUERY_RESULT_AVAILABLE_NV")) { return GL_QUERY_RESULT_AVAILABLE_NV; } +#endif +#ifdef GL_REGAL_ES1_0_compatibility if (!strcmp(name, "GL_REGAL_ES1_0_compatibility")) { return GL_REGAL_ES1_0_compatibility; } +#endif +#ifdef GL_REGAL_ES1_1_compatibility if (!strcmp(name, "GL_REGAL_ES1_1_compatibility")) { return GL_REGAL_ES1_1_compatibility; } +#endif +#ifdef GL_RELATIVE_ROUNDED_RECT2_NV +if (!strcmp(name, "GL_RELATIVE_ROUNDED_RECT2_NV")) +{ + return GL_RELATIVE_ROUNDED_RECT2_NV; +} +#endif +#ifdef GL_RELATIVE_ROUNDED_RECT4_NV +if (!strcmp(name, "GL_RELATIVE_ROUNDED_RECT4_NV")) +{ + return GL_RELATIVE_ROUNDED_RECT4_NV; +} +#endif +#ifdef GL_RELATIVE_ROUNDED_RECT8_NV +if (!strcmp(name, "GL_RELATIVE_ROUNDED_RECT8_NV")) +{ + return GL_RELATIVE_ROUNDED_RECT8_NV; +} +#endif +#ifdef GL_RENDERBUFFER_RED_SIZE_EXT if (!strcmp(name, "GL_RENDERBUFFER_RED_SIZE_EXT")) { return GL_RENDERBUFFER_RED_SIZE_EXT; } +#endif +#ifdef GL_RENDERBUFFER_STENCIL_SIZE if (!strcmp(name, "GL_RENDERBUFFER_STENCIL_SIZE")) { return GL_RENDERBUFFER_STENCIL_SIZE; } +#endif +#ifdef GL_RGB16_EXTENDED_RANGE_SGIX if (!strcmp(name, "GL_RGB16_EXTENDED_RANGE_SGIX")) { return GL_RGB16_EXTENDED_RANGE_SGIX; } +#endif +#ifdef GL_SAMPLE_ALPHA_TO_MASK_SGIS if (!strcmp(name, "GL_SAMPLE_ALPHA_TO_MASK_SGIS")) { return GL_SAMPLE_ALPHA_TO_MASK_SGIS; } +#endif +#ifdef GL_SAMPLE_COVERAGE_VALUE_ARB if (!strcmp(name, "GL_SAMPLE_COVERAGE_VALUE_ARB")) { return GL_SAMPLE_COVERAGE_VALUE_ARB; } +#endif +#ifdef GL_SCALED_RESOLVE_NICEST_EXT if (!strcmp(name, "GL_SCALED_RESOLVE_NICEST_EXT")) { return GL_SCALED_RESOLVE_NICEST_EXT; } +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_EXT if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_EXT")) { return GL_SECONDARY_COLOR_ARRAY_EXT; } +#endif +#ifdef GL_SGIS_texture_border_clamp if (!strcmp(name, "GL_SGIS_texture_border_clamp")) { return GL_SGIS_texture_border_clamp; } +#endif +#ifdef GL_SGIX_convolution_accuracy if (!strcmp(name, "GL_SGIX_convolution_accuracy")) { return GL_SGIX_convolution_accuracy; } +#endif +#ifdef GL_SGIX_texture_multi_buffer if (!strcmp(name, "GL_SGIX_texture_multi_buffer")) { return GL_SGIX_texture_multi_buffer; } +#endif +#ifdef GL_SIGNED_LUMINANCE_ALPHA_NV +if (!strcmp(name, "GL_SIGNED_LUMINANCE_ALPHA_NV")) +{ + return GL_SIGNED_LUMINANCE_ALPHA_NV; +} +#endif +#ifdef GL_SIGNED_LUMINANCE_ALPHA_NV if (!strcmp(name, "GL_SIGNED_LUMINANCE_ALPHA_NV")) { return GL_SIGNED_LUMINANCE_ALPHA_NV; } +#endif +#ifdef GL_STENCIL_BACK_OP_VALUE_AMD if (!strcmp(name, "GL_STENCIL_BACK_OP_VALUE_AMD")) { return GL_STENCIL_BACK_OP_VALUE_AMD; } +#endif +#ifdef GL_STENCIL_TEST_TWO_SIDE_EXT if (!strcmp(name, "GL_STENCIL_TEST_TWO_SIDE_EXT")) { return GL_STENCIL_TEST_TWO_SIDE_EXT; } +#endif +#ifdef GL_STRICT_DEPTHFUNC_HINT_PGI if (!strcmp(name, "GL_STRICT_DEPTHFUNC_HINT_PGI")) { return GL_STRICT_DEPTHFUNC_HINT_PGI; } +#endif +#ifdef GL_TANGENT_ARRAY_POINTER_EXT if (!strcmp(name, "GL_TANGENT_ARRAY_POINTER_EXT")) { return GL_TANGENT_ARRAY_POINTER_EXT; } +#endif +#ifdef GL_TEXTURE_BINDING_RECTANGLE if (!strcmp(name, "GL_TEXTURE_BINDING_RECTANGLE")) { return GL_TEXTURE_BINDING_RECTANGLE; } +#endif +#ifdef GL_TEXTURE_BUFFER_FORMAT_ARB if (!strcmp(name, "GL_TEXTURE_BUFFER_FORMAT_ARB")) { return GL_TEXTURE_BUFFER_FORMAT_ARB; } +#endif +#ifdef GL_TEXTURE_BUFFER_FORMAT_EXT if (!strcmp(name, "GL_TEXTURE_BUFFER_FORMAT_EXT")) { return GL_TEXTURE_BUFFER_FORMAT_EXT; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_SEAMLESS if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_SEAMLESS")) { return GL_TEXTURE_CUBE_MAP_SEAMLESS; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_SEAMLESS +if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_SEAMLESS")) +{ + return GL_TEXTURE_CUBE_MAP_SEAMLESS; +} +#endif +#ifdef GL_TEXTURE_FETCH_BARRIER_BIT if (!strcmp(name, "GL_TEXTURE_FETCH_BARRIER_BIT")) { return GL_TEXTURE_FETCH_BARRIER_BIT; } +#endif +#ifdef GL_TEXTURE_MATERIAL_FACE_EXT if (!strcmp(name, "GL_TEXTURE_MATERIAL_FACE_EXT")) { return GL_TEXTURE_MATERIAL_FACE_EXT; } +#endif +#ifdef GL_TEXTURE_OUTPUT_ALPHA_ATIX if (!strcmp(name, "GL_TEXTURE_OUTPUT_ALPHA_ATIX")) { return GL_TEXTURE_OUTPUT_ALPHA_ATIX; } +#endif +#ifdef GL_TEXTURE_POINT_SPRITE_ATIX if (!strcmp(name, "GL_TEXTURE_POINT_SPRITE_ATIX")) { return GL_TEXTURE_POINT_SPRITE_ATIX; } +#endif +#ifdef GL_TRACK_MATRIX_TRANSFORM_NV if (!strcmp(name, "GL_TRACK_MATRIX_TRANSFORM_NV")) { return GL_TRACK_MATRIX_TRANSFORM_NV; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_ACTIVE +if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_ACTIVE")) +{ + return GL_TRANSFORM_FEEDBACK_ACTIVE; +} +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER")) { return GL_TRANSFORM_FEEDBACK_BUFFER; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_PAUSED +if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_PAUSED")) +{ + return GL_TRANSFORM_FEEDBACK_PAUSED; +} +#endif +#ifdef GL_UNIFORM_BLOCK_NAME_LENGTH if (!strcmp(name, "GL_UNIFORM_BLOCK_NAME_LENGTH")) { return GL_UNIFORM_BLOCK_NAME_LENGTH; } +#endif +#ifdef GL_UNIFORM_BUFFER_ADDRESS_NV +if (!strcmp(name, "GL_UNIFORM_BUFFER_ADDRESS_NV")) +{ + return GL_UNIFORM_BUFFER_ADDRESS_NV; +} +#endif +#ifdef GL_UNIFORM_BUFFER_UNIFIED_NV +if (!strcmp(name, "GL_UNIFORM_BUFFER_UNIFIED_NV")) +{ + return GL_UNIFORM_BUFFER_UNIFIED_NV; +} +#endif +#ifdef GL_UNKNOWN_CONTEXT_RESET_ARB if (!strcmp(name, "GL_UNKNOWN_CONTEXT_RESET_ARB")) { return GL_UNKNOWN_CONTEXT_RESET_ARB; } +#endif +#ifdef GL_UNPACK_CONSTANT_DATA_SUNX if (!strcmp(name, "GL_UNPACK_CONSTANT_DATA_SUNX")) { return GL_UNPACK_CONSTANT_DATA_SUNX; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_1D_EXT if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_1D_EXT")) { return GL_UNSIGNED_INT_IMAGE_1D_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_2D_EXT if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_2D_EXT")) { return GL_UNSIGNED_INT_IMAGE_2D_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_3D_EXT if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_3D_EXT")) { return GL_UNSIGNED_INT_IMAGE_3D_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_BUFFER if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_BUFFER")) { return GL_UNSIGNED_INT_IMAGE_BUFFER; } +#endif +#ifdef GL_UNSIGNED_INT_S8_S8_8_8_NV +if (!strcmp(name, "GL_UNSIGNED_INT_S8_S8_8_8_NV")) +{ + return GL_UNSIGNED_INT_S8_S8_8_8_NV; +} +#endif +#ifdef GL_UNSIGNED_INT_S8_S8_8_8_NV if (!strcmp(name, "GL_UNSIGNED_INT_S8_S8_8_8_NV")) { return GL_UNSIGNED_INT_S8_S8_8_8_NV; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_CUBE if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_CUBE")) { return GL_UNSIGNED_INT_SAMPLER_CUBE; } +#endif +#ifdef GL_VARIANT_ARRAY_POINTER_EXT if (!strcmp(name, "GL_VARIANT_ARRAY_POINTER_EXT")) { return GL_VARIANT_ARRAY_POINTER_EXT; } +#endif +#ifdef GL_VERTEX_PROGRAM_BINDING_NV if (!strcmp(name, "GL_VERTEX_PROGRAM_BINDING_NV")) { return GL_VERTEX_PROGRAM_BINDING_NV; } +#endif +#ifdef GL_VERTEX_PROGRAM_POINT_SIZE if (!strcmp(name, "GL_VERTEX_PROGRAM_POINT_SIZE")) { return GL_VERTEX_PROGRAM_POINT_SIZE; } +#endif +#ifdef GL_VERTEX_SHADER_BINDING_EXT if (!strcmp(name, "GL_VERTEX_SHADER_BINDING_EXT")) { return GL_VERTEX_SHADER_BINDING_EXT; } +#endif +#ifdef GL_VERTEX_SUBROUTINE_UNIFORM if (!strcmp(name, "GL_VERTEX_SUBROUTINE_UNIFORM")) { return GL_VERTEX_SUBROUTINE_UNIFORM; } +#endif +#ifdef GL_VIEW_CLASS_S3TC_DXT1_RGBA if (!strcmp(name, "GL_VIEW_CLASS_S3TC_DXT1_RGBA")) { return GL_VIEW_CLASS_S3TC_DXT1_RGBA; } +#endif +#ifdef GL_VIEW_CLASS_S3TC_DXT3_RGBA if (!strcmp(name, "GL_VIEW_CLASS_S3TC_DXT3_RGBA")) { return GL_VIEW_CLASS_S3TC_DXT3_RGBA; } +#endif +#ifdef GL_VIEW_CLASS_S3TC_DXT5_RGBA if (!strcmp(name, "GL_VIEW_CLASS_S3TC_DXT5_RGBA")) { return GL_VIEW_CLASS_S3TC_DXT5_RGBA; } +#endif +#ifdef GL_WRITE_PIXEL_DATA_RANGE_NV if (!strcmp(name, "GL_WRITE_PIXEL_DATA_RANGE_NV")) { return GL_WRITE_PIXEL_DATA_RANGE_NV; } +#endif return _GL_UNDEFINED; case 29: +#ifdef GL_ACTIVE_SUBROUTINE_UNIFORMS if (!strcmp(name, "GL_ACTIVE_SUBROUTINE_UNIFORMS")) { return GL_ACTIVE_SUBROUTINE_UNIFORMS; } +#endif +#ifdef GL_ARB_shader_atomic_counters if (!strcmp(name, "GL_ARB_shader_atomic_counters")) { return GL_ARB_shader_atomic_counters; } +#endif +#ifdef GL_ARB_shader_draw_parameters if (!strcmp(name, "GL_ARB_shader_draw_parameters")) { return GL_ARB_shader_draw_parameters; } +#endif +#ifdef GL_ARB_texture_cube_map_array if (!strcmp(name, "GL_ARB_texture_cube_map_array")) { return GL_ARB_texture_cube_map_array; } +#endif +#ifdef GL_ATOMIC_COUNTER_BARRIER_BIT if (!strcmp(name, "GL_ATOMIC_COUNTER_BARRIER_BIT")) { return GL_ATOMIC_COUNTER_BARRIER_BIT; } +#endif +#ifdef GL_ATOMIC_COUNTER_BUFFER_SIZE if (!strcmp(name, "GL_ATOMIC_COUNTER_BUFFER_SIZE")) { return GL_ATOMIC_COUNTER_BUFFER_SIZE; } +#endif +#ifdef GL_BINORMAL_ARRAY_POINTER_EXT if (!strcmp(name, "GL_BINORMAL_ARRAY_POINTER_EXT")) { return GL_BINORMAL_ARRAY_POINTER_EXT; } +#endif +#ifdef GL_BLEND_ADVANCED_COHERENT_NV if (!strcmp(name, "GL_BLEND_ADVANCED_COHERENT_NV")) { return GL_BLEND_ADVANCED_COHERENT_NV; } +#endif +#ifdef GL_BLEND_PREMULTIPLIED_SRC_NV if (!strcmp(name, "GL_BLEND_PREMULTIPLIED_SRC_NV")) { return GL_BLEND_PREMULTIPLIED_SRC_NV; } +#endif +#ifdef GL_CIRCULAR_TANGENT_ARC_TO_NV if (!strcmp(name, "GL_CIRCULAR_TANGENT_ARC_TO_NV")) { return GL_CIRCULAR_TANGENT_ARC_TO_NV; } +#endif +#ifdef GL_COLOR_ARRAY_BUFFER_BINDING if (!strcmp(name, "GL_COLOR_ARRAY_BUFFER_BINDING")) { return GL_COLOR_ARRAY_BUFFER_BINDING; } +#endif +#ifdef GL_COLOR_TABLE_ALPHA_SIZE_EXT if (!strcmp(name, "GL_COLOR_TABLE_ALPHA_SIZE_EXT")) { return GL_COLOR_TABLE_ALPHA_SIZE_EXT; } +#endif +#ifdef GL_COLOR_TABLE_ALPHA_SIZE_SGI if (!strcmp(name, "GL_COLOR_TABLE_ALPHA_SIZE_SGI")) { return GL_COLOR_TABLE_ALPHA_SIZE_SGI; } +#endif +#ifdef GL_COLOR_TABLE_GREEN_SIZE_EXT if (!strcmp(name, "GL_COLOR_TABLE_GREEN_SIZE_EXT")) { return GL_COLOR_TABLE_GREEN_SIZE_EXT; } +#endif +#ifdef GL_COLOR_TABLE_GREEN_SIZE_SGI if (!strcmp(name, "GL_COLOR_TABLE_GREEN_SIZE_SGI")) { return GL_COLOR_TABLE_GREEN_SIZE_SGI; } +#endif +#ifdef GL_COLOR_TABLE_INTENSITY_SIZE if (!strcmp(name, "GL_COLOR_TABLE_INTENSITY_SIZE")) { return GL_COLOR_TABLE_INTENSITY_SIZE; } +#endif +#ifdef GL_COLOR_TABLE_LUMINANCE_SIZE if (!strcmp(name, "GL_COLOR_TABLE_LUMINANCE_SIZE")) { return GL_COLOR_TABLE_LUMINANCE_SIZE; } +#endif +#ifdef GL_COMBINER_AB_DOT_PRODUCT_NV if (!strcmp(name, "GL_COMBINER_AB_DOT_PRODUCT_NV")) { return GL_COMBINER_AB_DOT_PRODUCT_NV; } +#endif +#ifdef GL_COMBINER_CD_DOT_PRODUCT_NV if (!strcmp(name, "GL_COMBINER_CD_DOT_PRODUCT_NV")) { return GL_COMBINER_CD_DOT_PRODUCT_NV; } +#endif +#ifdef GL_COMPRESSED_LUMINANCE_ALPHA if (!strcmp(name, "GL_COMPRESSED_LUMINANCE_ALPHA")) { return GL_COMPRESSED_LUMINANCE_ALPHA; } +#endif +#ifdef GL_COMPRESSED_RGBA_BPTC_UNORM if (!strcmp(name, "GL_COMPRESSED_RGBA_BPTC_UNORM")) { return GL_COMPRESSED_RGBA_BPTC_UNORM; } +#endif +#ifdef GL_COMPRESSED_SIGNED_RG11_EAC if (!strcmp(name, "GL_COMPRESSED_SIGNED_RG11_EAC")) { return GL_COMPRESSED_SIGNED_RG11_EAC; } +#endif +#ifdef GL_COMPRESSED_SIGNED_RG_RGTC2 if (!strcmp(name, "GL_COMPRESSED_SIGNED_RG_RGTC2")) { return GL_COMPRESSED_SIGNED_RG_RGTC2; } +#endif +#ifdef GL_COMPRESSED_TEXTURE_FORMATS if (!strcmp(name, "GL_COMPRESSED_TEXTURE_FORMATS")) { return GL_COMPRESSED_TEXTURE_FORMATS; } +#endif +#ifdef GL_COMPUTE_SUBROUTINE_UNIFORM if (!strcmp(name, "GL_COMPUTE_SUBROUTINE_UNIFORM")) { return GL_COMPUTE_SUBROUTINE_UNIFORM; } +#endif +#ifdef GL_CURRENT_FOG_COORDINATE_EXT if (!strcmp(name, "GL_CURRENT_FOG_COORDINATE_EXT")) { return GL_CURRENT_FOG_COORDINATE_EXT; } +#endif +#ifdef GL_CURRENT_PALETTE_MATRIX_ARB if (!strcmp(name, "GL_CURRENT_PALETTE_MATRIX_ARB")) { return GL_CURRENT_PALETTE_MATRIX_ARB; } +#endif +#ifdef GL_DEBUG_SOURCE_WINDOW_SYSTEM if (!strcmp(name, "GL_DEBUG_SOURCE_WINDOW_SYSTEM")) { return GL_DEBUG_SOURCE_WINDOW_SYSTEM; } +#endif +#ifdef GL_DEBUG_TYPE_PERFORMANCE_ARB if (!strcmp(name, "GL_DEBUG_TYPE_PERFORMANCE_ARB")) { return GL_DEBUG_TYPE_PERFORMANCE_ARB; } +#endif +#ifdef GL_DEBUG_TYPE_PORTABILITY_ARB if (!strcmp(name, "GL_DEBUG_TYPE_PORTABILITY_ARB")) { return GL_DEBUG_TYPE_PORTABILITY_ARB; } +#endif +#ifdef GL_DEPENDENT_AR_TEXTURE_2D_NV if (!strcmp(name, "GL_DEPENDENT_AR_TEXTURE_2D_NV")) { return GL_DEPENDENT_AR_TEXTURE_2D_NV; } +#endif +#ifdef GL_DEPENDENT_GB_TEXTURE_2D_NV if (!strcmp(name, "GL_DEPENDENT_GB_TEXTURE_2D_NV")) { return GL_DEPENDENT_GB_TEXTURE_2D_NV; } +#endif +#ifdef GL_DEPTH_BUFFER_FLOAT_MODE_NV if (!strcmp(name, "GL_DEPTH_BUFFER_FLOAT_MODE_NV")) { return GL_DEPTH_BUFFER_FLOAT_MODE_NV; } +#endif +#ifdef GL_DEPTH_STENCIL_TEXTURE_MODE if (!strcmp(name, "GL_DEPTH_STENCIL_TEXTURE_MODE")) { return GL_DEPTH_STENCIL_TEXTURE_MODE; } +#endif +#ifdef GL_DUP_LAST_CUBIC_CURVE_TO_NV if (!strcmp(name, "GL_DUP_LAST_CUBIC_CURVE_TO_NV")) { return GL_DUP_LAST_CUBIC_CURVE_TO_NV; } +#endif +#ifdef GL_EDGE_FLAG_ARRAY_ADDRESS_NV if (!strcmp(name, "GL_EDGE_FLAG_ARRAY_ADDRESS_NV")) { return GL_EDGE_FLAG_ARRAY_ADDRESS_NV; } +#endif +#ifdef GL_EDGE_FLAG_ARRAY_STRIDE_EXT if (!strcmp(name, "GL_EDGE_FLAG_ARRAY_STRIDE_EXT")) { return GL_EDGE_FLAG_ARRAY_STRIDE_EXT; } +#endif +#ifdef GL_EXT_gpu_program_parameters if (!strcmp(name, "GL_EXT_gpu_program_parameters")) { return GL_EXT_gpu_program_parameters; } +#endif +#ifdef GL_EXT_shared_texture_palette if (!strcmp(name, "GL_EXT_shared_texture_palette")) { return GL_EXT_shared_texture_palette; } +#endif +#ifdef GL_EXT_texture_perturb_normal if (!strcmp(name, "GL_EXT_texture_perturb_normal")) { return GL_EXT_texture_perturb_normal; } +#endif +#ifdef GL_EYE_DISTANCE_TO_POINT_SGIS if (!strcmp(name, "GL_EYE_DISTANCE_TO_POINT_SGIS")) { return GL_EYE_DISTANCE_TO_POINT_SGIS; } +#endif +#ifdef GL_FLOAT_CLEAR_COLOR_VALUE_NV if (!strcmp(name, "GL_FLOAT_CLEAR_COLOR_VALUE_NV")) { return GL_FLOAT_CLEAR_COLOR_VALUE_NV; } +#endif +#ifdef GL_FOG_COORD_ARRAY_ADDRESS_NV if (!strcmp(name, "GL_FOG_COORD_ARRAY_ADDRESS_NV")) { return GL_FOG_COORD_ARRAY_ADDRESS_NV; } +#endif +#ifdef GL_FONT_TARGET_UNAVAILABLE_NV +if (!strcmp(name, "GL_FONT_TARGET_UNAVAILABLE_NV")) +{ + return GL_FONT_TARGET_UNAVAILABLE_NV; +} +#endif +#ifdef GL_FORMAT_SUBSAMPLE_24_24_OML if (!strcmp(name, "GL_FORMAT_SUBSAMPLE_24_24_OML")) { return GL_FORMAT_SUBSAMPLE_24_24_OML; } +#endif +#ifdef GL_FRAGMENT_COVERAGE_COLOR_NV +if (!strcmp(name, "GL_FRAGMENT_COVERAGE_COLOR_NV")) +{ + return GL_FRAGMENT_COVERAGE_COLOR_NV; +} +#endif +#ifdef GL_FRAMEBUFFER_DEFAULT_HEIGHT if (!strcmp(name, "GL_FRAMEBUFFER_DEFAULT_HEIGHT")) { return GL_FRAMEBUFFER_DEFAULT_HEIGHT; } +#endif +#ifdef GL_FRAMEBUFFER_DEFAULT_LAYERS if (!strcmp(name, "GL_FRAMEBUFFER_DEFAULT_LAYERS")) { return GL_FRAMEBUFFER_DEFAULT_LAYERS; } +#endif +#ifdef GL_IMAGE_2D_MULTISAMPLE_ARRAY if (!strcmp(name, "GL_IMAGE_2D_MULTISAMPLE_ARRAY")) { return GL_IMAGE_2D_MULTISAMPLE_ARRAY; } +#endif +#ifdef GL_INDEX_ARRAY_BUFFER_BINDING if (!strcmp(name, "GL_INDEX_ARRAY_BUFFER_BINDING")) { return GL_INDEX_ARRAY_BUFFER_BINDING; } +#endif +#ifdef GL_INNOCENT_CONTEXT_RESET_ARB if (!strcmp(name, "GL_INNOCENT_CONTEXT_RESET_ARB")) { return GL_INNOCENT_CONTEXT_RESET_ARB; } +#endif +#ifdef GL_INTERNALFORMAT_SHARED_SIZE if (!strcmp(name, "GL_INTERNALFORMAT_SHARED_SIZE")) { return GL_INTERNALFORMAT_SHARED_SIZE; } +#endif +#ifdef GL_INT_SAMPLER_2D_MULTISAMPLE if (!strcmp(name, "GL_INT_SAMPLER_2D_MULTISAMPLE")) { return GL_INT_SAMPLER_2D_MULTISAMPLE; } +#endif +#ifdef GL_INT_SAMPLER_CUBE_MAP_ARRAY if (!strcmp(name, "GL_INT_SAMPLER_CUBE_MAP_ARRAY")) { return GL_INT_SAMPLER_CUBE_MAP_ARRAY; } +#endif +#ifdef GL_LAST_VERTEX_CONVENTION_EXT if (!strcmp(name, "GL_LAST_VERTEX_CONVENTION_EXT")) { return GL_LAST_VERTEX_CONVENTION_EXT; } +#endif +#ifdef GL_MAX_ASYNC_DRAW_PIXELS_SGIX if (!strcmp(name, "GL_MAX_ASYNC_DRAW_PIXELS_SGIX")) { return GL_MAX_ASYNC_DRAW_PIXELS_SGIX; } +#endif +#ifdef GL_MAX_ASYNC_READ_PIXELS_SGIX if (!strcmp(name, "GL_MAX_ASYNC_READ_PIXELS_SGIX")) { return GL_MAX_ASYNC_READ_PIXELS_SGIX; } +#endif +#ifdef GL_MAX_COMPUTE_IMAGE_UNIFORMS if (!strcmp(name, "GL_MAX_COMPUTE_IMAGE_UNIFORMS")) { return GL_MAX_COMPUTE_IMAGE_UNIFORMS; } +#endif +#ifdef GL_MAX_COMPUTE_UNIFORM_BLOCKS if (!strcmp(name, "GL_MAX_COMPUTE_UNIFORM_BLOCKS")) { return GL_MAX_COMPUTE_UNIFORM_BLOCKS; } +#endif +#ifdef GL_MAX_CONVOLUTION_HEIGHT_EXT if (!strcmp(name, "GL_MAX_CONVOLUTION_HEIGHT_EXT")) { return GL_MAX_CONVOLUTION_HEIGHT_EXT; } +#endif +#ifdef GL_MAX_PROGRAM_PARAMETERS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_PARAMETERS_ARB")) { return GL_MAX_PROGRAM_PARAMETERS_ARB; } +#endif +#ifdef GL_MAX_PROJECTION_STACK_DEPTH if (!strcmp(name, "GL_MAX_PROJECTION_STACK_DEPTH")) { return GL_MAX_PROJECTION_STACK_DEPTH; } +#endif +#ifdef GL_MAX_RATIONAL_EVAL_ORDER_NV if (!strcmp(name, "GL_MAX_RATIONAL_EVAL_ORDER_NV")) { return GL_MAX_RATIONAL_EVAL_ORDER_NV; } +#endif +#ifdef GL_MAX_RECTANGLE_TEXTURE_SIZE if (!strcmp(name, "GL_MAX_RECTANGLE_TEXTURE_SIZE")) { return GL_MAX_RECTANGLE_TEXTURE_SIZE; } +#endif +#ifdef GL_MAX_TEXTURE_IMAGE_UNITS_NV if (!strcmp(name, "GL_MAX_TEXTURE_IMAGE_UNITS_NV")) { return GL_MAX_TEXTURE_IMAGE_UNITS_NV; } +#endif +#ifdef GL_MAX_VARYING_COMPONENTS_EXT if (!strcmp(name, "GL_MAX_VARYING_COMPONENTS_EXT")) { return GL_MAX_VARYING_COMPONENTS_EXT; } +#endif +#ifdef GL_MAX_VERTEX_ATOMIC_COUNTERS if (!strcmp(name, "GL_MAX_VERTEX_ATOMIC_COUNTERS")) { return GL_MAX_VERTEX_ATOMIC_COUNTERS; } +#endif +#ifdef GL_MAX_VERTEX_ATTRIB_BINDINGS if (!strcmp(name, "GL_MAX_VERTEX_ATTRIB_BINDINGS")) { return GL_MAX_VERTEX_ATTRIB_BINDINGS; } +#endif +#ifdef GL_MAX_VERTEX_UNIFORM_VECTORS if (!strcmp(name, "GL_MAX_VERTEX_UNIFORM_VECTORS")) { return GL_MAX_VERTEX_UNIFORM_VECTORS; } +#endif +#ifdef GL_MIRROR_CLAMP_TO_BORDER_EXT if (!strcmp(name, "GL_MIRROR_CLAMP_TO_BORDER_EXT")) { return GL_MIRROR_CLAMP_TO_BORDER_EXT; } +#endif +#ifdef GL_MODELVIEW0_STACK_DEPTH_EXT if (!strcmp(name, "GL_MODELVIEW0_STACK_DEPTH_EXT")) { return GL_MODELVIEW0_STACK_DEPTH_EXT; } +#endif +#ifdef GL_MODELVIEW1_STACK_DEPTH_EXT if (!strcmp(name, "GL_MODELVIEW1_STACK_DEPTH_EXT")) { return GL_MODELVIEW1_STACK_DEPTH_EXT; } +#endif +#ifdef GL_MULTISAMPLE_FILTER_HINT_NV if (!strcmp(name, "GL_MULTISAMPLE_FILTER_HINT_NV")) { return GL_MULTISAMPLE_FILTER_HINT_NV; } +#endif +#ifdef GL_NATIVE_GRAPHICS_HANDLE_PGI if (!strcmp(name, "GL_NATIVE_GRAPHICS_HANDLE_PGI")) { return GL_NATIVE_GRAPHICS_HANDLE_PGI; } +#endif +#ifdef GL_NUM_COMPATIBLE_SUBROUTINES if (!strcmp(name, "GL_NUM_COMPATIBLE_SUBROUTINES")) { return GL_NUM_COMPATIBLE_SUBROUTINES; } +#endif +#ifdef GL_NUM_FRAGMENT_CONSTANTS_ATI if (!strcmp(name, "GL_NUM_FRAGMENT_CONSTANTS_ATI")) { return GL_NUM_FRAGMENT_CONSTANTS_ATI; } +#endif +#ifdef GL_NUM_FRAGMENT_REGISTERS_ATI if (!strcmp(name, "GL_NUM_FRAGMENT_REGISTERS_ATI")) { return GL_NUM_FRAGMENT_REGISTERS_ATI; } +#endif +#ifdef GL_NUM_INSTRUCTIONS_TOTAL_ATI if (!strcmp(name, "GL_NUM_INSTRUCTIONS_TOTAL_ATI")) { return GL_NUM_INSTRUCTIONS_TOTAL_ATI; } +#endif +#ifdef GL_NUM_PROGRAM_BINARY_FORMATS if (!strcmp(name, "GL_NUM_PROGRAM_BINARY_FORMATS")) { return GL_NUM_PROGRAM_BINARY_FORMATS; } +#endif +#ifdef GL_NUM_VIRTUAL_PAGE_SIZES_ARB if (!strcmp(name, "GL_NUM_VIRTUAL_PAGE_SIZES_ARB")) { return GL_NUM_VIRTUAL_PAGE_SIZES_ARB; } +#endif +#ifdef GL_NV_blend_equation_advanced if (!strcmp(name, "GL_NV_blend_equation_advanced")) { return GL_NV_blend_equation_advanced; } +#endif +#ifdef GL_NV_fragment_program_option if (!strcmp(name, "GL_NV_fragment_program_option")) { return GL_NV_fragment_program_option; } +#endif +#ifdef GL_NV_multisample_filter_hint if (!strcmp(name, "GL_NV_multisample_filter_hint")) { return GL_NV_multisample_filter_hint; } +#endif +#ifdef GL_NV_parameter_buffer_object if (!strcmp(name, "GL_NV_parameter_buffer_object")) { return GL_NV_parameter_buffer_object; } +#endif +#ifdef GL_NV_texture_compression_vtc if (!strcmp(name, "GL_NV_texture_compression_vtc")) { return GL_NV_texture_compression_vtc; } +#endif +#ifdef GL_OBJECT_ACTIVE_UNIFORMS_ARB if (!strcmp(name, "GL_OBJECT_ACTIVE_UNIFORMS_ARB")) { return GL_OBJECT_ACTIVE_UNIFORMS_ARB; } +#endif +#ifdef GL_OBJECT_INFO_LOG_LENGTH_ARB if (!strcmp(name, "GL_OBJECT_INFO_LOG_LENGTH_ARB")) { return GL_OBJECT_INFO_LOG_LENGTH_ARB; } +#endif +#ifdef GL_OBJECT_VALIDATE_STATUS_ARB if (!strcmp(name, "GL_OBJECT_VALIDATE_STATUS_ARB")) { return GL_OBJECT_VALIDATE_STATUS_ARB; } +#endif +#ifdef GL_OFFSET_TEXTURE_2D_SCALE_NV if (!strcmp(name, "GL_OFFSET_TEXTURE_2D_SCALE_NV")) { return GL_OFFSET_TEXTURE_2D_SCALE_NV; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD10_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD10_EXT")) { return GL_OUTPUT_TEXTURE_COORD10_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD11_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD11_EXT")) { return GL_OUTPUT_TEXTURE_COORD11_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD12_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD12_EXT")) { return GL_OUTPUT_TEXTURE_COORD12_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD13_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD13_EXT")) { return GL_OUTPUT_TEXTURE_COORD13_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD14_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD14_EXT")) { return GL_OUTPUT_TEXTURE_COORD14_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD15_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD15_EXT")) { return GL_OUTPUT_TEXTURE_COORD15_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD16_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD16_EXT")) { return GL_OUTPUT_TEXTURE_COORD16_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD17_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD17_EXT")) { return GL_OUTPUT_TEXTURE_COORD17_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD18_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD18_EXT")) { return GL_OUTPUT_TEXTURE_COORD18_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD19_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD19_EXT")) { return GL_OUTPUT_TEXTURE_COORD19_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD20_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD20_EXT")) { return GL_OUTPUT_TEXTURE_COORD20_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD21_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD21_EXT")) { return GL_OUTPUT_TEXTURE_COORD21_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD22_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD22_EXT")) { return GL_OUTPUT_TEXTURE_COORD22_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD23_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD23_EXT")) { return GL_OUTPUT_TEXTURE_COORD23_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD24_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD24_EXT")) { return GL_OUTPUT_TEXTURE_COORD24_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD25_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD25_EXT")) { return GL_OUTPUT_TEXTURE_COORD25_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD26_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD26_EXT")) { return GL_OUTPUT_TEXTURE_COORD26_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD27_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD27_EXT")) { return GL_OUTPUT_TEXTURE_COORD27_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD28_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD28_EXT")) { return GL_OUTPUT_TEXTURE_COORD28_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD29_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD29_EXT")) { return GL_OUTPUT_TEXTURE_COORD29_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD30_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD30_EXT")) { return GL_OUTPUT_TEXTURE_COORD30_EXT; } +#endif +#ifdef GL_OUTPUT_TEXTURE_COORD31_EXT if (!strcmp(name, "GL_OUTPUT_TEXTURE_COORD31_EXT")) { return GL_OUTPUT_TEXTURE_COORD31_EXT; } +#endif +#ifdef GL_PACK_COMPRESSED_BLOCK_SIZE if (!strcmp(name, "GL_PACK_COMPRESSED_BLOCK_SIZE")) { return GL_PACK_COMPRESSED_BLOCK_SIZE; } +#endif +#ifdef GL_PATH_STENCIL_VALUE_MASK_NV if (!strcmp(name, "GL_PATH_STENCIL_VALUE_MASK_NV")) { return GL_PATH_STENCIL_VALUE_MASK_NV; } +#endif +#ifdef GL_POINT_DISTANCE_ATTENUATION if (!strcmp(name, "GL_POINT_DISTANCE_ATTENUATION")) { return GL_POINT_DISTANCE_ATTENUATION; } +#endif +#ifdef GL_POST_COLOR_MATRIX_RED_BIAS if (!strcmp(name, "GL_POST_COLOR_MATRIX_RED_BIAS")) { return GL_POST_COLOR_MATRIX_RED_BIAS; } +#endif +#ifdef GL_POST_CONVOLUTION_BLUE_BIAS if (!strcmp(name, "GL_POST_CONVOLUTION_BLUE_BIAS")) { return GL_POST_CONVOLUTION_BLUE_BIAS; } +#endif +#ifdef GL_POST_CONVOLUTION_RED_SCALE if (!strcmp(name, "GL_POST_CONVOLUTION_RED_SCALE")) { return GL_POST_CONVOLUTION_RED_SCALE; } +#endif +#ifdef GL_PRIMITIVE_BOUNDING_BOX_ARB +if (!strcmp(name, "GL_PRIMITIVE_BOUNDING_BOX_ARB")) +{ + return GL_PRIMITIVE_BOUNDING_BOX_ARB; +} +#endif +#ifdef GL_PRIMITIVE_RESTART_INDEX_NV if (!strcmp(name, "GL_PRIMITIVE_RESTART_INDEX_NV")) { return GL_PRIMITIVE_RESTART_INDEX_NV; } +#endif +#ifdef GL_PROGRAM_ERROR_POSITION_ARB if (!strcmp(name, "GL_PROGRAM_ERROR_POSITION_ARB")) { return GL_PROGRAM_ERROR_POSITION_ARB; } +#endif +#ifdef GL_PROGRAM_NATIVE_ATTRIBS_ARB if (!strcmp(name, "GL_PROGRAM_NATIVE_ATTRIBS_ARB")) { return GL_PROGRAM_NATIVE_ATTRIBS_ARB; } +#endif +#ifdef GL_PROXY_TEXTURE_1D_ARRAY_EXT if (!strcmp(name, "GL_PROXY_TEXTURE_1D_ARRAY_EXT")) { return GL_PROXY_TEXTURE_1D_ARRAY_EXT; } +#endif +#ifdef GL_PROXY_TEXTURE_2D_ARRAY_EXT if (!strcmp(name, "GL_PROXY_TEXTURE_2D_ARRAY_EXT")) { return GL_PROXY_TEXTURE_2D_ARRAY_EXT; } +#endif +#ifdef GL_PROXY_TEXTURE_CUBE_MAP_ARB +if (!strcmp(name, "GL_PROXY_TEXTURE_CUBE_MAP_ARB")) +{ + return GL_PROXY_TEXTURE_CUBE_MAP_ARB; +} +#endif +#ifdef GL_PROXY_TEXTURE_CUBE_MAP_ARB if (!strcmp(name, "GL_PROXY_TEXTURE_CUBE_MAP_ARB")) { return GL_PROXY_TEXTURE_CUBE_MAP_ARB; } +#endif +#ifdef GL_PROXY_TEXTURE_CUBE_MAP_EXT if (!strcmp(name, "GL_PROXY_TEXTURE_CUBE_MAP_EXT")) { return GL_PROXY_TEXTURE_CUBE_MAP_EXT; } +#endif +#ifdef GL_PROXY_TEXTURE_RECTANGLE_NV if (!strcmp(name, "GL_PROXY_TEXTURE_RECTANGLE_NV")) { return GL_PROXY_TEXTURE_RECTANGLE_NV; } +#endif +#ifdef GL_QUERY_BY_REGION_NO_WAIT_NV if (!strcmp(name, "GL_QUERY_BY_REGION_NO_WAIT_NV")) { return GL_QUERY_BY_REGION_NO_WAIT_NV; } +#endif +#ifdef GL_QUERY_RESULT_AVAILABLE_ARB if (!strcmp(name, "GL_QUERY_RESULT_AVAILABLE_ARB")) { return GL_QUERY_RESULT_AVAILABLE_ARB; } +#endif +#ifdef GL_RELATIVE_CONIC_CURVE_TO_NV +if (!strcmp(name, "GL_RELATIVE_CONIC_CURVE_TO_NV")) +{ + return GL_RELATIVE_CONIC_CURVE_TO_NV; +} +#endif +#ifdef GL_RELATIVE_CUBIC_CURVE_TO_NV if (!strcmp(name, "GL_RELATIVE_CUBIC_CURVE_TO_NV")) { return GL_RELATIVE_CUBIC_CURVE_TO_NV; } +#endif +#ifdef GL_RENDERBUFFER_BLUE_SIZE_EXT if (!strcmp(name, "GL_RENDERBUFFER_BLUE_SIZE_EXT")) { return GL_RENDERBUFFER_BLUE_SIZE_EXT; } +#endif +#ifdef GL_RENDERBUFFER_SAMPLES_ANGLE if (!strcmp(name, "GL_RENDERBUFFER_SAMPLES_ANGLE")) { return GL_RENDERBUFFER_SAMPLES_ANGLE; } +#endif +#ifdef GL_REPLACEMENT_CODE_ARRAY_SUN if (!strcmp(name, "GL_REPLACEMENT_CODE_ARRAY_SUN")) { return GL_REPLACEMENT_CODE_ARRAY_SUN; } +#endif +#ifdef GL_RGBA16_EXTENDED_RANGE_SGIX if (!strcmp(name, "GL_RGBA16_EXTENDED_RANGE_SGIX")) { return GL_RGBA16_EXTENDED_RANGE_SGIX; } +#endif +#ifdef GL_RGBA_SIGNED_COMPONENTS_EXT if (!strcmp(name, "GL_RGBA_SIGNED_COMPONENTS_EXT")) { return GL_RGBA_SIGNED_COMPONENTS_EXT; } -if (!strcmp(name, "GL_SAMPLE_COVERAGE_INVERT_ARB")) +#endif +#ifdef GL_SAMPLER_2D_RECT_SHADOW_ARB +if (!strcmp(name, "GL_SAMPLER_2D_RECT_SHADOW_ARB")) { - return GL_SAMPLE_COVERAGE_INVERT_ARB; + return GL_SAMPLER_2D_RECT_SHADOW_ARB; } +#endif +#ifdef GL_SAMPLER_2D_RECT_SHADOW_ARB if (!strcmp(name, "GL_SAMPLER_2D_RECT_SHADOW_ARB")) { return GL_SAMPLER_2D_RECT_SHADOW_ARB; } +#endif +#ifdef GL_SAMPLER_CUBE_MAP_ARRAY_ARB if (!strcmp(name, "GL_SAMPLER_CUBE_MAP_ARRAY_ARB")) { return GL_SAMPLER_CUBE_MAP_ARRAY_ARB; } +#endif +#ifdef GL_SAMPLE_COVERAGE_INVERT_ARB +if (!strcmp(name, "GL_SAMPLE_COVERAGE_INVERT_ARB")) +{ + return GL_SAMPLE_COVERAGE_INVERT_ARB; +} +#endif +#ifdef GL_SCALED_RESOLVE_FASTEST_EXT if (!strcmp(name, "GL_SCALED_RESOLVE_FASTEST_EXT")) { return GL_SCALED_RESOLVE_FASTEST_EXT; } +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_SIZE if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_SIZE")) { return GL_SECONDARY_COLOR_ARRAY_SIZE; } +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_TYPE if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_TYPE")) { return GL_SECONDARY_COLOR_ARRAY_TYPE; } +#endif +#ifdef GL_SECONDARY_INTERPOLATOR_ATI if (!strcmp(name, "GL_SECONDARY_INTERPOLATOR_ATI")) { return GL_SECONDARY_INTERPOLATOR_ATI; } +#endif +#ifdef GL_SHADER_STORAGE_BARRIER_BIT if (!strcmp(name, "GL_SHADER_STORAGE_BARRIER_BIT")) { return GL_SHADER_STORAGE_BARRIER_BIT; } +#endif +#ifdef GL_SHADER_STORAGE_BUFFER_SIZE if (!strcmp(name, "GL_SHADER_STORAGE_BUFFER_SIZE")) { return GL_SHADER_STORAGE_BUFFER_SIZE; } +#endif +#ifdef GL_SHARED_TEXTURE_PALETTE_EXT if (!strcmp(name, "GL_SHARED_TEXTURE_PALETTE_EXT")) { return GL_SHARED_TEXTURE_PALETTE_EXT; } +#endif +#ifdef GL_SYNC_CL_EVENT_COMPLETE_ARB if (!strcmp(name, "GL_SYNC_CL_EVENT_COMPLETE_ARB")) { return GL_SYNC_CL_EVENT_COMPLETE_ARB; } +#endif +#ifdef GL_SYNC_GPU_COMMANDS_COMPLETE if (!strcmp(name, "GL_SYNC_GPU_COMMANDS_COMPLETE")) { return GL_SYNC_GPU_COMMANDS_COMPLETE; } +#endif +#ifdef GL_TESS_EVALUATION_PROGRAM_NV if (!strcmp(name, "GL_TESS_EVALUATION_PROGRAM_NV")) { return GL_TESS_EVALUATION_PROGRAM_NV; } +#endif +#ifdef GL_TESS_EVALUATION_SHADER_BIT if (!strcmp(name, "GL_TESS_EVALUATION_SHADER_BIT")) { return GL_TESS_EVALUATION_SHADER_BIT; } +#endif +#ifdef GL_TESS_EVALUATION_SUBROUTINE if (!strcmp(name, "GL_TESS_EVALUATION_SUBROUTINE")) { return GL_TESS_EVALUATION_SUBROUTINE; } +#endif +#ifdef GL_TEXTURE_BINDING_BUFFER_ARB if (!strcmp(name, "GL_TEXTURE_BINDING_BUFFER_ARB")) { return GL_TEXTURE_BINDING_BUFFER_ARB; } +#endif +#ifdef GL_TEXTURE_BINDING_BUFFER_EXT if (!strcmp(name, "GL_TEXTURE_BINDING_BUFFER_EXT")) { return GL_TEXTURE_BINDING_BUFFER_EXT; } +#endif +#ifdef GL_TEXTURE_CONSTANT_DATA_SUNX if (!strcmp(name, "GL_TEXTURE_CONSTANT_DATA_SUNX")) { return GL_TEXTURE_CONSTANT_DATA_SUNX; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_STRIDE if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_STRIDE")) { return GL_TEXTURE_COORD_ARRAY_STRIDE; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_ARRAY_ARB if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_ARRAY_ARB")) { return GL_TEXTURE_CUBE_MAP_ARRAY_ARB; } +#endif +#ifdef GL_TEXTURE_FILTER_CONTROL_EXT if (!strcmp(name, "GL_TEXTURE_FILTER_CONTROL_EXT")) { return GL_TEXTURE_FILTER_CONTROL_EXT; } +#endif +#ifdef GL_TEXTURE_INTENSITY_SIZE_EXT if (!strcmp(name, "GL_TEXTURE_INTENSITY_SIZE_EXT")) { return GL_TEXTURE_INTENSITY_SIZE_EXT; } +#endif +#ifdef GL_TEXTURE_INTENSITY_TYPE_ARB if (!strcmp(name, "GL_TEXTURE_INTENSITY_TYPE_ARB")) { return GL_TEXTURE_INTENSITY_TYPE_ARB; } +#endif +#ifdef GL_TEXTURE_LUMINANCE_SIZE_EXT if (!strcmp(name, "GL_TEXTURE_LUMINANCE_SIZE_EXT")) { return GL_TEXTURE_LUMINANCE_SIZE_EXT; } +#endif +#ifdef GL_TEXTURE_LUMINANCE_TYPE_ARB if (!strcmp(name, "GL_TEXTURE_LUMINANCE_TYPE_ARB")) { return GL_TEXTURE_LUMINANCE_TYPE_ARB; } +#endif +#ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT if (!strcmp(name, "GL_TEXTURE_MAX_ANISOTROPY_EXT")) { return GL_TEXTURE_MAX_ANISOTROPY_EXT; } +#endif +#ifdef GL_TEXTURE_RANGE_LENGTH_APPLE if (!strcmp(name, "GL_TEXTURE_RANGE_LENGTH_APPLE")) { return GL_TEXTURE_RANGE_LENGTH_APPLE; } +#endif +#ifdef GL_TEXTURE_REDUCTION_MODE_ARB +if (!strcmp(name, "GL_TEXTURE_REDUCTION_MODE_ARB")) +{ + return GL_TEXTURE_REDUCTION_MODE_ARB; +} +#endif +#ifdef GL_TEXTURE_REDUCTION_MODE_EXT +if (!strcmp(name, "GL_TEXTURE_REDUCTION_MODE_EXT")) +{ + return GL_TEXTURE_REDUCTION_MODE_EXT; +} +#endif +#ifdef GL_TEXTURE_STORAGE_HINT_APPLE if (!strcmp(name, "GL_TEXTURE_STORAGE_HINT_APPLE")) { return GL_TEXTURE_STORAGE_HINT_APPLE; } +#endif +#ifdef GL_TEXTURE_UPDATE_BARRIER_BIT if (!strcmp(name, "GL_TEXTURE_UPDATE_BARRIER_BIT")) { return GL_TEXTURE_UPDATE_BARRIER_BIT; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BINDING if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BINDING")) { return GL_TRANSFORM_FEEDBACK_BINDING; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_VARYING if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_VARYING")) { return GL_TRANSFORM_FEEDBACK_VARYING; } +#endif +#ifdef GL_TRANSPOSE_COLOR_MATRIX_ARB if (!strcmp(name, "GL_TRANSPOSE_COLOR_MATRIX_ARB")) { return GL_TRANSPOSE_COLOR_MATRIX_ARB; } +#endif +#ifdef GL_TRANSPOSE_MODELVIEW_MATRIX if (!strcmp(name, "GL_TRANSPOSE_MODELVIEW_MATRIX")) { return GL_TRANSPOSE_MODELVIEW_MATRIX; } +#endif +#ifdef GL_UNIFORM_BUFFER_BINDING_EXT if (!strcmp(name, "GL_UNIFORM_BUFFER_BINDING_EXT")) { return GL_UNIFORM_BUFFER_BINDING_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_2D_RECT if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_2D_RECT")) { return GL_UNSIGNED_INT_IMAGE_2D_RECT; } +#endif +#ifdef GL_UNSIGNED_SHORT_1_5_5_5_REV if (!strcmp(name, "GL_UNSIGNED_SHORT_1_5_5_5_REV")) { return GL_UNSIGNED_SHORT_1_5_5_5_REV; } +#endif +#ifdef GL_UNSIGNED_SHORT_4_4_4_4_EXT if (!strcmp(name, "GL_UNSIGNED_SHORT_4_4_4_4_EXT")) { return GL_UNSIGNED_SHORT_4_4_4_4_EXT; } +#endif +#ifdef GL_UNSIGNED_SHORT_4_4_4_4_REV if (!strcmp(name, "GL_UNSIGNED_SHORT_4_4_4_4_REV")) { return GL_UNSIGNED_SHORT_4_4_4_4_REV; } +#endif +#ifdef GL_UNSIGNED_SHORT_5_5_5_1_EXT if (!strcmp(name, "GL_UNSIGNED_SHORT_5_5_5_1_EXT")) { return GL_UNSIGNED_SHORT_5_5_5_1_EXT; } +#endif +#ifdef GL_VERTEX_ARRAY_BINDING_APPLE if (!strcmp(name, "GL_VERTEX_ARRAY_BINDING_APPLE")) { return GL_VERTEX_ARRAY_BINDING_APPLE; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_STRIDE if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_STRIDE")) { return GL_VERTEX_ATTRIB_ARRAY_STRIDE; } +#endif +#ifdef GL_VERTEX_CONSISTENT_HINT_PGI if (!strcmp(name, "GL_VERTEX_CONSISTENT_HINT_PGI")) { return GL_VERTEX_CONSISTENT_HINT_PGI; } +#endif +#ifdef GL_VERTEX_ELEMENT_SWIZZLE_AMD if (!strcmp(name, "GL_VERTEX_ELEMENT_SWIZZLE_AMD")) { return GL_VERTEX_ELEMENT_SWIZZLE_AMD; } +#endif +#ifdef GL_VERTEX_PROGRAM_TWO_SIDE_NV if (!strcmp(name, "GL_VERTEX_PROGRAM_TWO_SIDE_NV")) { return GL_VERTEX_PROGRAM_TWO_SIDE_NV; } +#endif +#ifdef GL_VERTEX_SHADER_VARIANTS_EXT if (!strcmp(name, "GL_VERTEX_SHADER_VARIANTS_EXT")) { return GL_VERTEX_SHADER_VARIANTS_EXT; } +#endif return _GL_UNDEFINED; case 30: +#ifdef GL_ACTIVE_ATTRIBUTE_MAX_LENGTH if (!strcmp(name, "GL_ACTIVE_ATTRIBUTE_MAX_LENGTH")) { return GL_ACTIVE_ATTRIBUTE_MAX_LENGTH; } +#endif +#ifdef GL_ALPHA16_EXTENDED_RANGE_SGIX if (!strcmp(name, "GL_ALPHA16_EXTENDED_RANGE_SGIX")) { return GL_ALPHA16_EXTENDED_RANGE_SGIX; } +#endif +#ifdef GL_ARB_fragment_layer_viewport if (!strcmp(name, "GL_ARB_fragment_layer_viewport")) { return GL_ARB_fragment_layer_viewport; } +#endif +#ifdef GL_ARB_fragment_program_shadow if (!strcmp(name, "GL_ARB_fragment_program_shadow")) { return GL_ARB_fragment_program_shadow; } +#endif +#ifdef GL_ARB_parallel_shader_compile +if (!strcmp(name, "GL_ARB_parallel_shader_compile")) +{ + return GL_ARB_parallel_shader_compile; +} +#endif +#ifdef GL_ARB_program_interface_query if (!strcmp(name, "GL_ARB_program_interface_query")) { return GL_ARB_program_interface_query; } +#endif +#ifdef GL_ARB_separate_shader_objects if (!strcmp(name, "GL_ARB_separate_shader_objects")) { return GL_ARB_separate_shader_objects; } +#endif +#ifdef GL_ARB_shader_image_load_store if (!strcmp(name, "GL_ARB_shader_image_load_store")) { return GL_ARB_shader_image_load_store; } +#endif +#ifdef GL_ARB_texture_mirrored_repeat if (!strcmp(name, "GL_ARB_texture_mirrored_repeat")) { return GL_ARB_texture_mirrored_repeat; } +#endif +#ifdef GL_ATI_texture_compression_3dc if (!strcmp(name, "GL_ATI_texture_compression_3dc")) { return GL_ATI_texture_compression_3dc; } +#endif +#ifdef GL_ATOMIC_COUNTER_BUFFER_INDEX if (!strcmp(name, "GL_ATOMIC_COUNTER_BUFFER_INDEX")) { return GL_ATOMIC_COUNTER_BUFFER_INDEX; } +#endif +#ifdef GL_ATOMIC_COUNTER_BUFFER_START if (!strcmp(name, "GL_ATOMIC_COUNTER_BUFFER_START")) { return GL_ATOMIC_COUNTER_BUFFER_START; } +#endif +#ifdef GL_BLEND_ADVANCED_COHERENT_KHR +if (!strcmp(name, "GL_BLEND_ADVANCED_COHERENT_KHR")) +{ + return GL_BLEND_ADVANCED_COHERENT_KHR; +} +#endif +#ifdef GL_BUFFER_FLUSHING_UNMAP_APPLE if (!strcmp(name, "GL_BUFFER_FLUSHING_UNMAP_APPLE")) { return GL_BUFFER_FLUSHING_UNMAP_APPLE; } +#endif +#ifdef GL_COLOR_ARRAY_LIST_STRIDE_IBM if (!strcmp(name, "GL_COLOR_ARRAY_LIST_STRIDE_IBM")) { return GL_COLOR_ARRAY_LIST_STRIDE_IBM; } +#endif +#ifdef GL_COMBINER_COMPONENT_USAGE_NV if (!strcmp(name, "GL_COMBINER_COMPONENT_USAGE_NV")) { return GL_COMBINER_COMPONENT_USAGE_NV; } +#endif +#ifdef GL_COMPRESSED_SIGNED_RED_RGTC1 if (!strcmp(name, "GL_COMPRESSED_SIGNED_RED_RGTC1")) { return GL_COMPRESSED_SIGNED_RED_RGTC1; } +#endif +#ifdef GL_COMPRESSED_SLUMINANCE_ALPHA if (!strcmp(name, "GL_COMPRESSED_SLUMINANCE_ALPHA")) { return GL_COMPRESSED_SLUMINANCE_ALPHA; } +#endif +#ifdef GL_CONVOLUTION_BORDER_MODE_EXT if (!strcmp(name, "GL_CONVOLUTION_BORDER_MODE_EXT")) { return GL_CONVOLUTION_BORDER_MODE_EXT; } +#endif +#ifdef GL_CONVOLUTION_FILTER_BIAS_EXT if (!strcmp(name, "GL_CONVOLUTION_FILTER_BIAS_EXT")) { return GL_CONVOLUTION_FILTER_BIAS_EXT; } +#endif +#ifdef GL_CURRENT_SECONDARY_COLOR_EXT if (!strcmp(name, "GL_CURRENT_SECONDARY_COLOR_EXT")) { return GL_CURRENT_SECONDARY_COLOR_EXT; } +#endif +#ifdef GL_DEBUG_CALLBACK_FUNCTION_ARB if (!strcmp(name, "GL_DEBUG_CALLBACK_FUNCTION_ARB")) { return GL_DEBUG_CALLBACK_FUNCTION_ARB; } +#endif +#ifdef GL_DEBUG_SEVERITY_NOTIFICATION if (!strcmp(name, "GL_DEBUG_SEVERITY_NOTIFICATION")) { return GL_DEBUG_SEVERITY_NOTIFICATION; } +#endif +#ifdef GL_DEPENDENT_RGB_TEXTURE_3D_NV if (!strcmp(name, "GL_DEPENDENT_RGB_TEXTURE_3D_NV")) { return GL_DEPENDENT_RGB_TEXTURE_3D_NV; } +#endif +#ifdef GL_DOT_PRODUCT_PASS_THROUGH_NV if (!strcmp(name, "GL_DOT_PRODUCT_PASS_THROUGH_NV")) { return GL_DOT_PRODUCT_PASS_THROUGH_NV; } +#endif +#ifdef GL_DUP_FIRST_CUBIC_CURVE_TO_NV if (!strcmp(name, "GL_DUP_FIRST_CUBIC_CURVE_TO_NV")) { return GL_DUP_FIRST_CUBIC_CURVE_TO_NV; } +#endif +#ifdef GL_EDGE_FLAG_ARRAY_POINTER_EXT if (!strcmp(name, "GL_EDGE_FLAG_ARRAY_POINTER_EXT")) { return GL_EDGE_FLAG_ARRAY_POINTER_EXT; } +#endif +#ifdef GL_ELEMENT_ARRAY_POINTER_APPLE if (!strcmp(name, "GL_ELEMENT_ARRAY_POINTER_APPLE")) { return GL_ELEMENT_ARRAY_POINTER_APPLE; } +#endif +#ifdef GL_EXT_blend_equation_separate if (!strcmp(name, "GL_EXT_blend_equation_separate")) { return GL_EXT_blend_equation_separate; } +#endif +#ifdef GL_EXT_framebuffer_multisample if (!strcmp(name, "GL_EXT_framebuffer_multisample")) { return GL_EXT_framebuffer_multisample; } +#endif +#ifdef GL_EXT_separate_shader_objects if (!strcmp(name, "GL_EXT_separate_shader_objects")) { return GL_EXT_separate_shader_objects; } +#endif +#ifdef GL_EXT_separate_specular_color if (!strcmp(name, "GL_EXT_separate_specular_color")) { return GL_EXT_separate_specular_color; } +#endif +#ifdef GL_EXT_shader_image_load_store if (!strcmp(name, "GL_EXT_shader_image_load_store")) { return GL_EXT_shader_image_load_store; } +#endif +#ifdef GL_EXT_texture_shared_exponent if (!strcmp(name, "GL_EXT_texture_shared_exponent")) { return GL_EXT_texture_shared_exponent; } +#endif +#ifdef GL_FIRST_VERTEX_CONVENTION_EXT if (!strcmp(name, "GL_FIRST_VERTEX_CONVENTION_EXT")) { return GL_FIRST_VERTEX_CONVENTION_EXT; } +#endif +#ifdef GL_FOG_COORDINATE_ARRAY_STRIDE if (!strcmp(name, "GL_FOG_COORDINATE_ARRAY_STRIDE")) { return GL_FOG_COORDINATE_ARRAY_STRIDE; } +#endif +#ifdef GL_FRAGMENT_COLOR_MATERIAL_EXT if (!strcmp(name, "GL_FRAGMENT_COLOR_MATERIAL_EXT")) { return GL_FRAGMENT_COLOR_MATERIAL_EXT; } +#endif +#ifdef GL_FRAGMENT_PROGRAM_BINDING_NV if (!strcmp(name, "GL_FRAGMENT_PROGRAM_BINDING_NV")) { return GL_FRAGMENT_PROGRAM_BINDING_NV; } +#endif +#ifdef GL_FRAGMENT_SUBROUTINE_UNIFORM if (!strcmp(name, "GL_FRAGMENT_SUBROUTINE_UNIFORM")) { return GL_FRAGMENT_SUBROUTINE_UNIFORM; } +#endif +#ifdef GL_FRAMEBUFFER_BARRIER_BIT_EXT if (!strcmp(name, "GL_FRAMEBUFFER_BARRIER_BIT_EXT")) { return GL_FRAMEBUFFER_BARRIER_BIT_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_DEFAULT_SAMPLES if (!strcmp(name, "GL_FRAMEBUFFER_DEFAULT_SAMPLES")) { return GL_FRAMEBUFFER_DEFAULT_SAMPLES; } +#endif +#ifdef GL_FRAMEBUFFER_UNSUPPORTED_EXT if (!strcmp(name, "GL_FRAMEBUFFER_UNSUPPORTED_EXT")) { return GL_FRAMEBUFFER_UNSUPPORTED_EXT; } +#endif +#ifdef GL_GEOMETRY_SHADER_INVOCATIONS +if (!strcmp(name, "GL_GEOMETRY_SHADER_INVOCATIONS")) +{ + return GL_GEOMETRY_SHADER_INVOCATIONS; +} +#endif +#ifdef GL_GEOMETRY_SHADER_INVOCATIONS if (!strcmp(name, "GL_GEOMETRY_SHADER_INVOCATIONS")) { return GL_GEOMETRY_SHADER_INVOCATIONS; } +#endif +#ifdef GL_GEOMETRY_SUBROUTINE_UNIFORM if (!strcmp(name, "GL_GEOMETRY_SUBROUTINE_UNIFORM")) { return GL_GEOMETRY_SUBROUTINE_UNIFORM; } +#endif +#ifdef GL_HP_convolution_border_modes if (!strcmp(name, "GL_HP_convolution_border_modes")) { return GL_HP_convolution_border_modes; } +#endif +#ifdef GL_IBM_texture_mirrored_repeat if (!strcmp(name, "GL_IBM_texture_mirrored_repeat")) { return GL_IBM_texture_mirrored_repeat; } +#endif +#ifdef GL_INDEX_ARRAY_LIST_STRIDE_IBM if (!strcmp(name, "GL_INDEX_ARRAY_LIST_STRIDE_IBM")) { return GL_INDEX_ARRAY_LIST_STRIDE_IBM; } +#endif +#ifdef GL_INTERNALFORMAT_STENCIL_SIZE if (!strcmp(name, "GL_INTERNALFORMAT_STENCIL_SIZE")) { return GL_INTERNALFORMAT_STENCIL_SIZE; } +#endif +#ifdef GL_INTERNALFORMAT_STENCIL_TYPE if (!strcmp(name, "GL_INTERNALFORMAT_STENCIL_TYPE")) { return GL_INTERNALFORMAT_STENCIL_TYPE; } +#endif +#ifdef GL_INT_SAMPLER_RENDERBUFFER_NV if (!strcmp(name, "GL_INT_SAMPLER_RENDERBUFFER_NV")) { return GL_INT_SAMPLER_RENDERBUFFER_NV; } +#endif +#ifdef GL_KHR_blend_equation_advanced +if (!strcmp(name, "GL_KHR_blend_equation_advanced")) +{ + return GL_KHR_blend_equation_advanced; +} +#endif +#ifdef GL_LOCAL_CONSTANT_DATATYPE_EXT if (!strcmp(name, "GL_LOCAL_CONSTANT_DATATYPE_EXT")) { return GL_LOCAL_CONSTANT_DATATYPE_EXT; } +#endif +#ifdef GL_LUMINANCE_ALPHA_FLOAT16_ATI if (!strcmp(name, "GL_LUMINANCE_ALPHA_FLOAT16_ATI")) { return GL_LUMINANCE_ALPHA_FLOAT16_ATI; } +#endif +#ifdef GL_LUMINANCE_ALPHA_FLOAT32_ATI if (!strcmp(name, "GL_LUMINANCE_ALPHA_FLOAT32_ATI")) { return GL_LUMINANCE_ALPHA_FLOAT32_ATI; } +#endif +#ifdef GL_LUMINANCE_ALPHA_INTEGER_EXT if (!strcmp(name, "GL_LUMINANCE_ALPHA_INTEGER_EXT")) { return GL_LUMINANCE_ALPHA_INTEGER_EXT; } +#endif +#ifdef GL_LUMINANCE_ALPHA_SIGNED_SGIX if (!strcmp(name, "GL_LUMINANCE_ALPHA_SIGNED_SGIX")) { return GL_LUMINANCE_ALPHA_SIGNED_SGIX; } +#endif +#ifdef GL_MATRIX_INDEX_ARRAY_SIZE_ARB if (!strcmp(name, "GL_MATRIX_INDEX_ARRAY_SIZE_ARB")) { return GL_MATRIX_INDEX_ARRAY_SIZE_ARB; } +#endif +#ifdef GL_MATRIX_INDEX_ARRAY_TYPE_ARB if (!strcmp(name, "GL_MATRIX_INDEX_ARRAY_TYPE_ARB")) { return GL_MATRIX_INDEX_ARRAY_TYPE_ARB; } +#endif +#ifdef GL_MAX_COMBINED_IMAGE_UNIFORMS if (!strcmp(name, "GL_MAX_COMBINED_IMAGE_UNIFORMS")) { return GL_MAX_COMBINED_IMAGE_UNIFORMS; } +#endif +#ifdef GL_MAX_COMBINED_UNIFORM_BLOCKS if (!strcmp(name, "GL_MAX_COMBINED_UNIFORM_BLOCKS")) { return GL_MAX_COMBINED_UNIFORM_BLOCKS; } +#endif +#ifdef GL_MAX_COMPUTE_ATOMIC_COUNTERS if (!strcmp(name, "GL_MAX_COMPUTE_ATOMIC_COUNTERS")) { return GL_MAX_COMPUTE_ATOMIC_COUNTERS; } +#endif +#ifdef GL_MAX_COMPUTE_WORK_GROUP_SIZE if (!strcmp(name, "GL_MAX_COMPUTE_WORK_GROUP_SIZE")) { return GL_MAX_COMPUTE_WORK_GROUP_SIZE; } +#endif +#ifdef GL_MAX_DEBUG_GROUP_STACK_DEPTH if (!strcmp(name, "GL_MAX_DEBUG_GROUP_STACK_DEPTH")) { return GL_MAX_DEBUG_GROUP_STACK_DEPTH; } +#endif +#ifdef GL_MAX_FRAGMENT_IMAGE_UNIFORMS if (!strcmp(name, "GL_MAX_FRAGMENT_IMAGE_UNIFORMS")) { return GL_MAX_FRAGMENT_IMAGE_UNIFORMS; } +#endif +#ifdef GL_MAX_FRAGMENT_UNIFORM_BLOCKS if (!strcmp(name, "GL_MAX_FRAGMENT_UNIFORM_BLOCKS")) { return GL_MAX_FRAGMENT_UNIFORM_BLOCKS; } +#endif +#ifdef GL_MAX_GEOMETRY_IMAGE_UNIFORMS if (!strcmp(name, "GL_MAX_GEOMETRY_IMAGE_UNIFORMS")) { return GL_MAX_GEOMETRY_IMAGE_UNIFORMS; } +#endif +#ifdef GL_MAX_GEOMETRY_UNIFORM_BLOCKS if (!strcmp(name, "GL_MAX_GEOMETRY_UNIFORM_BLOCKS")) { return GL_MAX_GEOMETRY_UNIFORM_BLOCKS; } +#endif +#ifdef GL_MAX_PROGRAM_TEMPORARIES_ARB if (!strcmp(name, "GL_MAX_PROGRAM_TEMPORARIES_ARB")) { return GL_MAX_PROGRAM_TEMPORARIES_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_TEXEL_OFFSET_NV if (!strcmp(name, "GL_MAX_PROGRAM_TEXEL_OFFSET_NV")) { return GL_MAX_PROGRAM_TEXEL_OFFSET_NV; } +#endif +#ifdef GL_MAX_SPARSE_TEXTURE_SIZE_AMD if (!strcmp(name, "GL_MAX_SPARSE_TEXTURE_SIZE_AMD")) { return GL_MAX_SPARSE_TEXTURE_SIZE_AMD; } +#endif +#ifdef GL_MAX_SPARSE_TEXTURE_SIZE_ARB if (!strcmp(name, "GL_MAX_SPARSE_TEXTURE_SIZE_ARB")) { return GL_MAX_SPARSE_TEXTURE_SIZE_ARB; } +#endif +#ifdef GL_MAX_TEXTURE_BUFFER_SIZE_ARB if (!strcmp(name, "GL_MAX_TEXTURE_BUFFER_SIZE_ARB")) { return GL_MAX_TEXTURE_BUFFER_SIZE_ARB; } +#endif +#ifdef GL_MAX_TEXTURE_BUFFER_SIZE_EXT if (!strcmp(name, "GL_MAX_TEXTURE_BUFFER_SIZE_EXT")) { return GL_MAX_TEXTURE_BUFFER_SIZE_EXT; } +#endif +#ifdef GL_MAX_TEXTURE_IMAGE_UNITS_ARB if (!strcmp(name, "GL_MAX_TEXTURE_IMAGE_UNITS_ARB")) { return GL_MAX_TEXTURE_IMAGE_UNITS_ARB; } +#endif +#ifdef GL_MAX_UNIFORM_BUFFER_BINDINGS if (!strcmp(name, "GL_MAX_UNIFORM_BUFFER_BINDINGS")) { return GL_MAX_UNIFORM_BUFFER_BINDINGS; } +#endif +#ifdef GL_MIN_PROGRAM_TEXEL_OFFSET_NV if (!strcmp(name, "GL_MIN_PROGRAM_TEXEL_OFFSET_NV")) { return GL_MIN_PROGRAM_TEXEL_OFFSET_NV; } +#endif +#ifdef GL_NORMAL_ARRAY_BUFFER_BINDING if (!strcmp(name, "GL_NORMAL_ARRAY_BUFFER_BINDING")) { return GL_NORMAL_ARRAY_BUFFER_BINDING; } +#endif +#ifdef GL_NUM_LOOPBACK_COMPONENTS_ATI if (!strcmp(name, "GL_NUM_LOOPBACK_COMPONENTS_ATI")) { return GL_NUM_LOOPBACK_COMPONENTS_ATI; } +#endif +#ifdef GL_NV_parameter_buffer_object2 if (!strcmp(name, "GL_NV_parameter_buffer_object2")) { return GL_NV_parameter_buffer_object2; } +#endif +#ifdef GL_OBJECT_ATTACHED_OBJECTS_ARB if (!strcmp(name, "GL_OBJECT_ATTACHED_OBJECTS_ARB")) { return GL_OBJECT_ATTACHED_OBJECTS_ARB; } +#endif +#ifdef GL_OFFSET_TEXTURE_2D_MATRIX_NV if (!strcmp(name, "GL_OFFSET_TEXTURE_2D_MATRIX_NV")) { return GL_OFFSET_TEXTURE_2D_MATRIX_NV; } +#endif +#ifdef GL_OFFSET_TEXTURE_RECTANGLE_NV if (!strcmp(name, "GL_OFFSET_TEXTURE_RECTANGLE_NV")) { return GL_OFFSET_TEXTURE_RECTANGLE_NV; } +#endif +#ifdef GL_PACK_COMPRESSED_BLOCK_DEPTH if (!strcmp(name, "GL_PACK_COMPRESSED_BLOCK_DEPTH")) { return GL_PACK_COMPRESSED_BLOCK_DEPTH; } +#endif +#ifdef GL_PACK_COMPRESSED_BLOCK_WIDTH if (!strcmp(name, "GL_PACK_COMPRESSED_BLOCK_WIDTH")) { return GL_PACK_COMPRESSED_BLOCK_WIDTH; } +#endif +#ifdef GL_PATH_OBJECT_BOUNDING_BOX_NV if (!strcmp(name, "GL_PATH_OBJECT_BOUNDING_BOX_NV")) { return GL_PATH_OBJECT_BOUNDING_BOX_NV; } +#endif +#ifdef GL_PATH_STROKE_BOUNDING_BOX_NV if (!strcmp(name, "GL_PATH_STROKE_BOUNDING_BOX_NV")) { return GL_PATH_STROKE_BOUNDING_BOX_NV; } +#endif +#ifdef GL_PERFQUERY_COUNTER_RAW_INTEL +if (!strcmp(name, "GL_PERFQUERY_COUNTER_RAW_INTEL")) +{ + return GL_PERFQUERY_COUNTER_RAW_INTEL; +} +#endif +#ifdef GL_PERFQUERY_DONOT_FLUSH_INTEL +if (!strcmp(name, "GL_PERFQUERY_DONOT_FLUSH_INTEL")) +{ + return GL_PERFQUERY_DONOT_FLUSH_INTEL; +} +#endif +#ifdef GL_PERSPECTIVE_CORRECTION_HINT if (!strcmp(name, "GL_PERSPECTIVE_CORRECTION_HINT")) { return GL_PERSPECTIVE_CORRECTION_HINT; } +#endif +#ifdef GL_PIXEL_UNPACK_BUFFER_BINDING if (!strcmp(name, "GL_PIXEL_UNPACK_BUFFER_BINDING")) { return GL_PIXEL_UNPACK_BUFFER_BINDING; } +#endif +#ifdef GL_PN_TRIANGLES_POINT_MODE_ATI if (!strcmp(name, "GL_PN_TRIANGLES_POINT_MODE_ATI")) { return GL_PN_TRIANGLES_POINT_MODE_ATI; } +#endif +#ifdef GL_POINT_SPRITE_CULL_CLIP_ATIX if (!strcmp(name, "GL_POINT_SPRITE_CULL_CLIP_ATIX")) { return GL_POINT_SPRITE_CULL_CLIP_ATIX; } +#endif +#ifdef GL_POINT_SPRITE_CULL_MODE_ATIX if (!strcmp(name, "GL_POINT_SPRITE_CULL_MODE_ATIX")) { return GL_POINT_SPRITE_CULL_MODE_ATIX; } +#endif +#ifdef GL_POST_COLOR_MATRIX_BLUE_BIAS if (!strcmp(name, "GL_POST_COLOR_MATRIX_BLUE_BIAS")) { return GL_POST_COLOR_MATRIX_BLUE_BIAS; } +#endif +#ifdef GL_POST_COLOR_MATRIX_RED_SCALE if (!strcmp(name, "GL_POST_COLOR_MATRIX_RED_SCALE")) { return GL_POST_COLOR_MATRIX_RED_SCALE; } +#endif +#ifdef GL_POST_CONVOLUTION_ALPHA_BIAS if (!strcmp(name, "GL_POST_CONVOLUTION_ALPHA_BIAS")) { return GL_POST_CONVOLUTION_ALPHA_BIAS; } +#endif +#ifdef GL_POST_CONVOLUTION_BLUE_SCALE if (!strcmp(name, "GL_POST_CONVOLUTION_BLUE_SCALE")) { return GL_POST_CONVOLUTION_BLUE_SCALE; } +#endif +#ifdef GL_POST_CONVOLUTION_GREEN_BIAS if (!strcmp(name, "GL_POST_CONVOLUTION_GREEN_BIAS")) { return GL_POST_CONVOLUTION_GREEN_BIAS; } +#endif +#ifdef GL_PROGRAM_PIPELINE_OBJECT_EXT +if (!strcmp(name, "GL_PROGRAM_PIPELINE_OBJECT_EXT")) +{ + return GL_PROGRAM_PIPELINE_OBJECT_EXT; +} +#endif +#ifdef GL_PROXY_TEXTURE_RECTANGLE_ARB if (!strcmp(name, "GL_PROXY_TEXTURE_RECTANGLE_ARB")) { return GL_PROXY_TEXTURE_RECTANGLE_ARB; } +#endif +#ifdef GL_PROXY_TEXTURE_RECTANGLE_EXT if (!strcmp(name, "GL_PROXY_TEXTURE_RECTANGLE_EXT")) { return GL_PROXY_TEXTURE_RECTANGLE_EXT; } +#endif +#ifdef GL_REFERENCED_BY_VERTEX_SHADER if (!strcmp(name, "GL_REFERENCED_BY_VERTEX_SHADER")) { return GL_REFERENCED_BY_VERTEX_SHADER; } +#endif +#ifdef GL_RELATIVE_LARGE_CW_ARC_TO_NV if (!strcmp(name, "GL_RELATIVE_LARGE_CW_ARC_TO_NV")) { return GL_RELATIVE_LARGE_CW_ARC_TO_NV; } +#endif +#ifdef GL_RELATIVE_SMALL_CW_ARC_TO_NV if (!strcmp(name, "GL_RELATIVE_SMALL_CW_ARC_TO_NV")) { return GL_RELATIVE_SMALL_CW_ARC_TO_NV; } +#endif +#ifdef GL_RENDERBUFFER_ALPHA_SIZE_EXT if (!strcmp(name, "GL_RENDERBUFFER_ALPHA_SIZE_EXT")) { return GL_RENDERBUFFER_ALPHA_SIZE_EXT; } +#endif +#ifdef GL_RENDERBUFFER_DEPTH_SIZE_EXT if (!strcmp(name, "GL_RENDERBUFFER_DEPTH_SIZE_EXT")) { return GL_RENDERBUFFER_DEPTH_SIZE_EXT; } +#endif +#ifdef GL_RENDERBUFFER_GREEN_SIZE_EXT if (!strcmp(name, "GL_RENDERBUFFER_GREEN_SIZE_EXT")) { return GL_RENDERBUFFER_GREEN_SIZE_EXT; } +#endif +#ifdef GL_RESET_NOTIFICATION_STRATEGY +if (!strcmp(name, "GL_RESET_NOTIFICATION_STRATEGY")) +{ + return GL_RESET_NOTIFICATION_STRATEGY; +} +#endif +#ifdef GL_SAMPLER_1D_ARRAY_SHADOW_EXT if (!strcmp(name, "GL_SAMPLER_1D_ARRAY_SHADOW_EXT")) { return GL_SAMPLER_1D_ARRAY_SHADOW_EXT; } +#endif +#ifdef GL_SAMPLER_2D_ARRAY_SHADOW_EXT if (!strcmp(name, "GL_SAMPLER_2D_ARRAY_SHADOW_EXT")) { return GL_SAMPLER_2D_ARRAY_SHADOW_EXT; } +#endif +#ifdef GL_SEPARATE_SPECULAR_COLOR_EXT if (!strcmp(name, "GL_SEPARATE_SPECULAR_COLOR_EXT")) { return GL_SEPARATE_SPECULAR_COLOR_EXT; } +#endif +#ifdef GL_SHADER_STORAGE_BUFFER_START if (!strcmp(name, "GL_SHADER_STORAGE_BUFFER_START")) { return GL_SHADER_STORAGE_BUFFER_START; } +#endif +#ifdef GL_SIGNED_LUMINANCE8_ALPHA8_NV +if (!strcmp(name, "GL_SIGNED_LUMINANCE8_ALPHA8_NV")) +{ + return GL_SIGNED_LUMINANCE8_ALPHA8_NV; +} +#endif +#ifdef GL_SIGNED_LUMINANCE8_ALPHA8_NV if (!strcmp(name, "GL_SIGNED_LUMINANCE8_ALPHA8_NV")) { return GL_SIGNED_LUMINANCE8_ALPHA8_NV; } +#endif +#ifdef GL_SPARSE_BUFFER_PAGE_SIZE_ARB +if (!strcmp(name, "GL_SPARSE_BUFFER_PAGE_SIZE_ARB")) +{ + return GL_SPARSE_BUFFER_PAGE_SIZE_ARB; +} +#endif +#ifdef GL_STENCIL_CLEAR_TAG_VALUE_EXT if (!strcmp(name, "GL_STENCIL_CLEAR_TAG_VALUE_EXT")) { return GL_STENCIL_CLEAR_TAG_VALUE_EXT; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_POINTER if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_POINTER")) { return GL_TEXTURE_COORD_ARRAY_POINTER; } +#endif +#ifdef GL_TEXTURE_COVERAGE_SAMPLES_NV if (!strcmp(name, "GL_TEXTURE_COVERAGE_SAMPLES_NV")) { return GL_TEXTURE_COVERAGE_SAMPLES_NV; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_NEGATIVE_X if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_NEGATIVE_X")) { return GL_TEXTURE_CUBE_MAP_NEGATIVE_X; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_NEGATIVE_Y if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y")) { return GL_TEXTURE_CUBE_MAP_NEGATIVE_Y; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_NEGATIVE_Z if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z")) { return GL_TEXTURE_CUBE_MAP_NEGATIVE_Z; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_POSITIVE_X if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_POSITIVE_X")) { return GL_TEXTURE_CUBE_MAP_POSITIVE_X; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_POSITIVE_Y if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_POSITIVE_Y")) { return GL_TEXTURE_CUBE_MAP_POSITIVE_Y; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_POSITIVE_Z if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_POSITIVE_Z")) { return GL_TEXTURE_CUBE_MAP_POSITIVE_Z; } +#endif +#ifdef GL_TEXTURE_FLOAT_COMPONENTS_NV if (!strcmp(name, "GL_TEXTURE_FLOAT_COMPONENTS_NV")) { return GL_TEXTURE_FLOAT_COMPONENTS_NV; } +#endif +#ifdef GL_TEXTURE_MEMORY_LAYOUT_INTEL if (!strcmp(name, "GL_TEXTURE_MEMORY_LAYOUT_INTEL")) { return GL_TEXTURE_MEMORY_LAYOUT_INTEL; } +#endif +#ifdef GL_TEXTURE_RANGE_POINTER_APPLE if (!strcmp(name, "GL_TEXTURE_RANGE_POINTER_APPLE")) { return GL_TEXTURE_RANGE_POINTER_APPLE; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_VARYINGS if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_VARYINGS")) { return GL_TRANSFORM_FEEDBACK_VARYINGS; } +#endif +#ifdef GL_TRANSPOSE_PROJECTION_MATRIX if (!strcmp(name, "GL_TRANSPOSE_PROJECTION_MATRIX")) { return GL_TRANSPOSE_PROJECTION_MATRIX; } +#endif +#ifdef GL_UNPACK_CLIENT_STORAGE_APPLE if (!strcmp(name, "GL_UNPACK_CLIENT_STORAGE_APPLE")) { return GL_UNPACK_CLIENT_STORAGE_APPLE; } +#endif +#ifdef GL_UNSIGNED_INT_10_10_10_2_EXT if (!strcmp(name, "GL_UNSIGNED_INT_10_10_10_2_EXT")) { return GL_UNSIGNED_INT_10_10_10_2_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_2_10_10_10_REV if (!strcmp(name, "GL_UNSIGNED_INT_2_10_10_10_REV")) { return GL_UNSIGNED_INT_2_10_10_10_REV; } +#endif +#ifdef GL_UNSIGNED_INT_ATOMIC_COUNTER if (!strcmp(name, "GL_UNSIGNED_INT_ATOMIC_COUNTER")) { return GL_UNSIGNED_INT_ATOMIC_COUNTER; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_1D_ARRAY if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_1D_ARRAY")) { return GL_UNSIGNED_INT_IMAGE_1D_ARRAY; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_2D_ARRAY if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_2D_ARRAY")) { return GL_UNSIGNED_INT_IMAGE_2D_ARRAY; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_CUBE_EXT if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_CUBE_EXT")) { return GL_UNSIGNED_INT_IMAGE_CUBE_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_1D_EXT if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_1D_EXT")) { return GL_UNSIGNED_INT_SAMPLER_1D_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_2D_EXT if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_2D_EXT")) { return GL_UNSIGNED_INT_SAMPLER_2D_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_3D_EXT if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_3D_EXT")) { return GL_UNSIGNED_INT_SAMPLER_3D_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_BUFFER if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_BUFFER")) { return GL_UNSIGNED_INT_SAMPLER_BUFFER; } -if (!strcmp(name, "GL_UNSIGNED_SHORT_8_8_REV_MESA")) -{ - return GL_UNSIGNED_SHORT_8_8_REV_MESA; -} +#endif +#ifdef GL_VERTEX_ARRAY_BUFFER_BINDING if (!strcmp(name, "GL_VERTEX_ARRAY_BUFFER_BINDING")) { return GL_VERTEX_ARRAY_BUFFER_BINDING; } +#endif +#ifdef GL_VERTEX_ARRAY_RANGE_VALID_NV if (!strcmp(name, "GL_VERTEX_ARRAY_RANGE_VALID_NV")) { return GL_VERTEX_ARRAY_RANGE_VALID_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_DIVISOR if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_DIVISOR")) { return GL_VERTEX_ATTRIB_ARRAY_DIVISOR; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_ENABLED if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_ENABLED")) { return GL_VERTEX_ATTRIB_ARRAY_ENABLED; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_INTEGER if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_INTEGER")) { return GL_VERTEX_ATTRIB_ARRAY_INTEGER; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_POINTER if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_POINTER")) { return GL_VERTEX_ATTRIB_ARRAY_POINTER; } +#endif +#ifdef GL_VERTEX_PROGRAM_TWO_SIDE_ARB if (!strcmp(name, "GL_VERTEX_PROGRAM_TWO_SIDE_ARB")) { return GL_VERTEX_PROGRAM_TWO_SIDE_ARB; } +#endif +#ifdef GL_VERTEX_SHADER_OPTIMIZED_EXT if (!strcmp(name, "GL_VERTEX_SHADER_OPTIMIZED_EXT")) { return GL_VERTEX_SHADER_OPTIMIZED_EXT; } +#endif +#ifdef GL_VIRTUAL_PAGE_SIZE_INDEX_ARB if (!strcmp(name, "GL_VIRTUAL_PAGE_SIZE_INDEX_ARB")) { return GL_VIRTUAL_PAGE_SIZE_INDEX_ARB; } +#endif +#ifdef GL_WEIGHT_ARRAY_BUFFER_BINDING if (!strcmp(name, "GL_WEIGHT_ARRAY_BUFFER_BINDING")) { return GL_WEIGHT_ARRAY_BUFFER_BINDING; } +#endif return _GL_UNDEFINED; case 31: +#ifdef GL_ACTIVE_SUBROUTINE_MAX_LENGTH if (!strcmp(name, "GL_ACTIVE_SUBROUTINE_MAX_LENGTH")) { return GL_ACTIVE_SUBROUTINE_MAX_LENGTH; } +#endif +#ifdef GL_ACTIVE_VARYING_MAX_LENGTH_NV if (!strcmp(name, "GL_ACTIVE_VARYING_MAX_LENGTH_NV")) { return GL_ACTIVE_VARYING_MAX_LENGTH_NV; } +#endif +#ifdef GL_ANGLE_pack_reverse_row_order if (!strcmp(name, "GL_ANGLE_pack_reverse_row_order")) { return GL_ANGLE_pack_reverse_row_order; } +#endif +#ifdef GL_ARB_explicit_attrib_location if (!strcmp(name, "GL_ARB_explicit_attrib_location")) { return GL_ARB_explicit_attrib_location; } +#endif +#ifdef GL_ARB_shading_language_420pack if (!strcmp(name, "GL_ARB_shading_language_420pack")) { return GL_ARB_shading_language_420pack; } +#endif +#ifdef GL_ARB_shading_language_include if (!strcmp(name, "GL_ARB_shading_language_include")) { return GL_ARB_shading_language_include; } +#endif +#ifdef GL_ARB_shading_language_packing if (!strcmp(name, "GL_ARB_shading_language_packing")) { return GL_ARB_shading_language_packing; } +#endif +#ifdef GL_ARB_texture_compression_bptc if (!strcmp(name, "GL_ARB_texture_compression_bptc")) { return GL_ARB_texture_compression_bptc; } +#endif +#ifdef GL_ARB_texture_compression_rgtc if (!strcmp(name, "GL_ARB_texture_compression_rgtc")) { return GL_ARB_texture_compression_rgtc; } +#endif +#ifdef GL_ARB_texture_non_power_of_two if (!strcmp(name, "GL_ARB_texture_non_power_of_two")) { return GL_ARB_texture_non_power_of_two; } +#endif +#ifdef GL_ARRAY_ELEMENT_LOCK_COUNT_EXT if (!strcmp(name, "GL_ARRAY_ELEMENT_LOCK_COUNT_EXT")) { return GL_ARRAY_ELEMENT_LOCK_COUNT_EXT; } +#endif +#ifdef GL_ARRAY_ELEMENT_LOCK_FIRST_EXT if (!strcmp(name, "GL_ARRAY_ELEMENT_LOCK_FIRST_EXT")) { return GL_ARRAY_ELEMENT_LOCK_FIRST_EXT; } +#endif +#ifdef GL_BIAS_BY_NEGATIVE_ONE_HALF_NV if (!strcmp(name, "GL_BIAS_BY_NEGATIVE_ONE_HALF_NV")) { return GL_BIAS_BY_NEGATIVE_ONE_HALF_NV; } +#endif +#ifdef GL_COLOR_MATRIX_STACK_DEPTH_SGI if (!strcmp(name, "GL_COLOR_MATRIX_STACK_DEPTH_SGI")) { return GL_COLOR_MATRIX_STACK_DEPTH_SGI; } +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_4x4_KHR +if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_4x4_KHR")) +{ + return GL_COMPRESSED_RGBA_ASTC_4x4_KHR; +} +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_4x4_KHR if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_4x4_KHR")) { return GL_COMPRESSED_RGBA_ASTC_4x4_KHR; } +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_5x4_KHR +if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_5x4_KHR")) +{ + return GL_COMPRESSED_RGBA_ASTC_5x4_KHR; +} +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_5x4_KHR if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_5x4_KHR")) { return GL_COMPRESSED_RGBA_ASTC_5x4_KHR; } +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_5x5_KHR +if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_5x5_KHR")) +{ + return GL_COMPRESSED_RGBA_ASTC_5x5_KHR; +} +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_5x5_KHR if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_5x5_KHR")) { return GL_COMPRESSED_RGBA_ASTC_5x5_KHR; } +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_6x5_KHR +if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_6x5_KHR")) +{ + return GL_COMPRESSED_RGBA_ASTC_6x5_KHR; +} +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_6x5_KHR if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_6x5_KHR")) { return GL_COMPRESSED_RGBA_ASTC_6x5_KHR; } +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_6x6_KHR +if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_6x6_KHR")) +{ + return GL_COMPRESSED_RGBA_ASTC_6x6_KHR; +} +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_6x6_KHR if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_6x6_KHR")) { return GL_COMPRESSED_RGBA_ASTC_6x6_KHR; } +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_8x5_KHR +if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_8x5_KHR")) +{ + return GL_COMPRESSED_RGBA_ASTC_8x5_KHR; +} +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_8x5_KHR if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_8x5_KHR")) { return GL_COMPRESSED_RGBA_ASTC_8x5_KHR; } +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_8x6_KHR +if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_8x6_KHR")) +{ + return GL_COMPRESSED_RGBA_ASTC_8x6_KHR; +} +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_8x6_KHR if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_8x6_KHR")) { return GL_COMPRESSED_RGBA_ASTC_8x6_KHR; } +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_8x8_KHR +if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_8x8_KHR")) +{ + return GL_COMPRESSED_RGBA_ASTC_8x8_KHR; +} +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_8x8_KHR if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_8x8_KHR")) { return GL_COMPRESSED_RGBA_ASTC_8x8_KHR; } +#endif +#ifdef GL_COMPRESSED_RGB_S3TC_DXT1_EXT if (!strcmp(name, "GL_COMPRESSED_RGB_S3TC_DXT1_EXT")) { return GL_COMPRESSED_RGB_S3TC_DXT1_EXT; } +#endif +#ifdef GL_CONVOLUTION_FILTER_SCALE_EXT if (!strcmp(name, "GL_CONVOLUTION_FILTER_SCALE_EXT")) { return GL_CONVOLUTION_FILTER_SCALE_EXT; } +#endif +#ifdef GL_COVERAGE_MODULATION_TABLE_NV +if (!strcmp(name, "GL_COVERAGE_MODULATION_TABLE_NV")) +{ + return GL_COVERAGE_MODULATION_TABLE_NV; +} +#endif +#ifdef GL_COVERAGE_MODULATION_TABLE_NV +if (!strcmp(name, "GL_COVERAGE_MODULATION_TABLE_NV")) +{ + return GL_COVERAGE_MODULATION_TABLE_NV; +} +#endif +#ifdef GL_CULL_VERTEX_EYE_POSITION_EXT if (!strcmp(name, "GL_CULL_VERTEX_EYE_POSITION_EXT")) { return GL_CULL_VERTEX_EYE_POSITION_EXT; } +#endif +#ifdef GL_DEBUG_CATEGORY_API_ERROR_AMD if (!strcmp(name, "GL_DEBUG_CATEGORY_API_ERROR_AMD")) { return GL_DEBUG_CATEGORY_API_ERROR_AMD; } +#endif +#ifdef GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB if (!strcmp(name, "GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB")) { return GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB; } +#endif +#ifdef GL_DEBUG_SOURCE_APPLICATION_ARB if (!strcmp(name, "GL_DEBUG_SOURCE_APPLICATION_ARB")) { return GL_DEBUG_SOURCE_APPLICATION_ARB; } +#endif +#ifdef GL_DEBUG_SOURCE_SHADER_COMPILER if (!strcmp(name, "GL_DEBUG_SOURCE_SHADER_COMPILER")) { return GL_DEBUG_SOURCE_SHADER_COMPILER; } +#endif +#ifdef GL_DEBUG_SOURCE_THIRD_PARTY_ARB if (!strcmp(name, "GL_DEBUG_SOURCE_THIRD_PARTY_ARB")) { return GL_DEBUG_SOURCE_THIRD_PARTY_ARB; } +#endif +#ifdef GL_DEPENDENT_HILO_TEXTURE_2D_NV if (!strcmp(name, "GL_DEPENDENT_HILO_TEXTURE_2D_NV")) { return GL_DEPENDENT_HILO_TEXTURE_2D_NV; } +#endif +#ifdef GL_DOT_PRODUCT_DEPTH_REPLACE_NV if (!strcmp(name, "GL_DOT_PRODUCT_DEPTH_REPLACE_NV")) { return GL_DOT_PRODUCT_DEPTH_REPLACE_NV; } +#endif +#ifdef GL_DRAW_FRAMEBUFFER_BINDING_EXT if (!strcmp(name, "GL_DRAW_FRAMEBUFFER_BINDING_EXT")) { return GL_DRAW_FRAMEBUFFER_BINDING_EXT; } +#endif +#ifdef GL_DRAW_INDIRECT_BUFFER_BINDING if (!strcmp(name, "GL_DRAW_INDIRECT_BUFFER_BINDING")) { return GL_DRAW_INDIRECT_BUFFER_BINDING; } +#endif +#ifdef GL_EFFECTIVE_RASTER_SAMPLES_EXT +if (!strcmp(name, "GL_EFFECTIVE_RASTER_SAMPLES_EXT")) +{ + return GL_EFFECTIVE_RASTER_SAMPLES_EXT; +} +#endif +#ifdef GL_EFFECTIVE_RASTER_SAMPLES_EXT +if (!strcmp(name, "GL_EFFECTIVE_RASTER_SAMPLES_EXT")) +{ + return GL_EFFECTIVE_RASTER_SAMPLES_EXT; +} +#endif +#ifdef GL_ELEMENT_ARRAY_BUFFER_BINDING if (!strcmp(name, "GL_ELEMENT_ARRAY_BUFFER_BINDING")) { return GL_ELEMENT_ARRAY_BUFFER_BINDING; } +#endif +#ifdef GL_EXT_texture_compression_dxt1 if (!strcmp(name, "GL_EXT_texture_compression_dxt1")) { return GL_EXT_texture_compression_dxt1; } +#endif +#ifdef GL_EXT_texture_compression_latc if (!strcmp(name, "GL_EXT_texture_compression_latc")) { return GL_EXT_texture_compression_latc; } +#endif +#ifdef GL_EXT_texture_compression_rgtc if (!strcmp(name, "GL_EXT_texture_compression_rgtc")) { return GL_EXT_texture_compression_rgtc; } +#endif +#ifdef GL_EXT_texture_compression_s3tc if (!strcmp(name, "GL_EXT_texture_compression_s3tc")) { return GL_EXT_texture_compression_s3tc; } +#endif +#ifdef GL_FOG_COORDINATE_ARRAY_POINTER if (!strcmp(name, "GL_FOG_COORDINATE_ARRAY_POINTER")) { return GL_FOG_COORDINATE_ARRAY_POINTER; } +#endif +#ifdef GL_FORMAT_SUBSAMPLE_244_244_OML if (!strcmp(name, "GL_FORMAT_SUBSAMPLE_244_244_OML")) { return GL_FORMAT_SUBSAMPLE_244_244_OML; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_ANGLE if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_ANGLE")) { return GL_FRAMEBUFFER_ATTACHMENT_ANGLE; } +#endif +#ifdef GL_FRAMEBUFFER_SRGB_CAPABLE_EXT if (!strcmp(name, "GL_FRAMEBUFFER_SRGB_CAPABLE_EXT")) { return GL_FRAMEBUFFER_SRGB_CAPABLE_EXT; } +#endif +#ifdef GL_HISTOGRAM_LUMINANCE_SIZE_EXT if (!strcmp(name, "GL_HISTOGRAM_LUMINANCE_SIZE_EXT")) { return GL_HISTOGRAM_LUMINANCE_SIZE_EXT; } +#endif +#ifdef GL_INT_IMAGE_2D_MULTISAMPLE_EXT if (!strcmp(name, "GL_INT_IMAGE_2D_MULTISAMPLE_EXT")) { return GL_INT_IMAGE_2D_MULTISAMPLE_EXT; } +#endif +#ifdef GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT if (!strcmp(name, "GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT")) { return GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT; } +#endif +#ifdef GL_LAST_VIDEO_CAPTURE_STATUS_NV if (!strcmp(name, "GL_LAST_VIDEO_CAPTURE_STATUS_NV")) { return GL_LAST_VIDEO_CAPTURE_STATUS_NV; } +#endif +#ifdef GL_MAX_ARRAY_TEXTURE_LAYERS_EXT if (!strcmp(name, "GL_MAX_ARRAY_TEXTURE_LAYERS_EXT")) { return GL_MAX_ARRAY_TEXTURE_LAYERS_EXT; } +#endif +#ifdef GL_MAX_COLOR_MATRIX_STACK_DEPTH if (!strcmp(name, "GL_MAX_COLOR_MATRIX_STACK_DEPTH")) { return GL_MAX_COLOR_MATRIX_STACK_DEPTH; } +#endif +#ifdef GL_MAX_COMBINED_ATOMIC_COUNTERS if (!strcmp(name, "GL_MAX_COMBINED_ATOMIC_COUNTERS")) { return GL_MAX_COMBINED_ATOMIC_COUNTERS; } +#endif +#ifdef GL_MAX_COMPUTE_WORK_GROUP_COUNT if (!strcmp(name, "GL_MAX_COMPUTE_WORK_GROUP_COUNT")) { return GL_MAX_COMPUTE_WORK_GROUP_COUNT; } +#endif +#ifdef GL_MAX_DEBUG_MESSAGE_LENGTH_AMD if (!strcmp(name, "GL_MAX_DEBUG_MESSAGE_LENGTH_AMD")) { return GL_MAX_DEBUG_MESSAGE_LENGTH_AMD; } +#endif +#ifdef GL_MAX_DEBUG_MESSAGE_LENGTH_ARB if (!strcmp(name, "GL_MAX_DEBUG_MESSAGE_LENGTH_ARB")) { return GL_MAX_DEBUG_MESSAGE_LENGTH_ARB; } +#endif +#ifdef GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV if (!strcmp(name, "GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV")) { return GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV; } +#endif +#ifdef GL_MAX_DUAL_SOURCE_DRAW_BUFFERS if (!strcmp(name, "GL_MAX_DUAL_SOURCE_DRAW_BUFFERS")) { return GL_MAX_DUAL_SOURCE_DRAW_BUFFERS; } +#endif +#ifdef GL_MAX_FRAGMENT_ATOMIC_COUNTERS if (!strcmp(name, "GL_MAX_FRAGMENT_ATOMIC_COUNTERS")) { return GL_MAX_FRAGMENT_ATOMIC_COUNTERS; } +#endif +#ifdef GL_MAX_FRAGMENT_UNIFORM_VECTORS if (!strcmp(name, "GL_MAX_FRAGMENT_UNIFORM_VECTORS")) { return GL_MAX_FRAGMENT_UNIFORM_VECTORS; } +#endif +#ifdef GL_MAX_GEOMETRY_ATOMIC_COUNTERS if (!strcmp(name, "GL_MAX_GEOMETRY_ATOMIC_COUNTERS")) { return GL_MAX_GEOMETRY_ATOMIC_COUNTERS; } +#endif +#ifdef GL_MAX_GEOMETRY_OUTPUT_VERTICES if (!strcmp(name, "GL_MAX_GEOMETRY_OUTPUT_VERTICES")) { return GL_MAX_GEOMETRY_OUTPUT_VERTICES; } +#endif +#ifdef GL_MAX_PROGRAM_INSTRUCTIONS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_INSTRUCTIONS_ARB")) { return GL_MAX_PROGRAM_INSTRUCTIONS_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_PATCH_ATTRIBS_NV if (!strcmp(name, "GL_MAX_PROGRAM_PATCH_ATTRIBS_NV")) { return GL_MAX_PROGRAM_PATCH_ATTRIBS_NV; } +#endif +#ifdef GL_MAX_SHADER_BUFFER_ADDRESS_NV if (!strcmp(name, "GL_MAX_SHADER_BUFFER_ADDRESS_NV")) { return GL_MAX_SHADER_BUFFER_ADDRESS_NV; } +#endif +#ifdef GL_MAX_VERTEX_OUTPUT_COMPONENTS if (!strcmp(name, "GL_MAX_VERTEX_OUTPUT_COMPONENTS")) { return GL_MAX_VERTEX_OUTPUT_COMPONENTS; } +#endif +#ifdef GL_MAX_VERTEX_SHADER_LOCALS_EXT if (!strcmp(name, "GL_MAX_VERTEX_SHADER_LOCALS_EXT")) { return GL_MAX_VERTEX_SHADER_LOCALS_EXT; } +#endif +#ifdef GL_MIN_SAMPLE_SHADING_VALUE_ARB if (!strcmp(name, "GL_MIN_SAMPLE_SHADING_VALUE_ARB")) { return GL_MIN_SAMPLE_SHADING_VALUE_ARB; } +#endif +#ifdef GL_NATIVE_GRAPHICS_END_HINT_PGI if (!strcmp(name, "GL_NATIVE_GRAPHICS_END_HINT_PGI")) { return GL_NATIVE_GRAPHICS_END_HINT_PGI; } +#endif +#ifdef GL_NORMAL_ARRAY_LIST_STRIDE_IBM if (!strcmp(name, "GL_NORMAL_ARRAY_LIST_STRIDE_IBM")) { return GL_NORMAL_ARRAY_LIST_STRIDE_IBM; } +#endif +#ifdef GL_NUM_VIDEO_CAPTURE_STREAMS_NV if (!strcmp(name, "GL_NUM_VIDEO_CAPTURE_STREAMS_NV")) { return GL_NUM_VIDEO_CAPTURE_STREAMS_NV; } +#endif +#ifdef GL_NV_fragment_shader_interlock +if (!strcmp(name, "GL_NV_fragment_shader_interlock")) +{ + return GL_NV_fragment_shader_interlock; +} +#endif +#ifdef GL_NV_framebuffer_mixed_samples +if (!strcmp(name, "GL_NV_framebuffer_mixed_samples")) +{ + return GL_NV_framebuffer_mixed_samples; +} +#endif +#ifdef GL_NV_gpu_program5_mem_extended if (!strcmp(name, "GL_NV_gpu_program5_mem_extended")) { return GL_NV_gpu_program5_mem_extended; } +#endif +#ifdef GL_NV_shader_atomic_fp16_vector +if (!strcmp(name, "GL_NV_shader_atomic_fp16_vector")) +{ + return GL_NV_shader_atomic_fp16_vector; +} +#endif +#ifdef GL_OBJECT_ACTIVE_ATTRIBUTES_ARB if (!strcmp(name, "GL_OBJECT_ACTIVE_ATTRIBUTES_ARB")) { return GL_OBJECT_ACTIVE_ATTRIBUTES_ARB; } +#endif +#ifdef GL_OBJECT_DISTANCE_TO_LINE_SGIS if (!strcmp(name, "GL_OBJECT_DISTANCE_TO_LINE_SGIS")) { return GL_OBJECT_DISTANCE_TO_LINE_SGIS; } +#endif +#ifdef GL_ONE_MINUS_CONSTANT_ALPHA_EXT if (!strcmp(name, "GL_ONE_MINUS_CONSTANT_ALPHA_EXT")) { return GL_ONE_MINUS_CONSTANT_ALPHA_EXT; } +#endif +#ifdef GL_ONE_MINUS_CONSTANT_COLOR_EXT if (!strcmp(name, "GL_ONE_MINUS_CONSTANT_COLOR_EXT")) { return GL_ONE_MINUS_CONSTANT_COLOR_EXT; } +#endif +#ifdef GL_PACK_COMPRESSED_BLOCK_HEIGHT if (!strcmp(name, "GL_PACK_COMPRESSED_BLOCK_HEIGHT")) { return GL_PACK_COMPRESSED_BLOCK_HEIGHT; } +#endif +#ifdef GL_PACK_REVERSE_ROW_ORDER_ANGLE if (!strcmp(name, "GL_PACK_REVERSE_ROW_ORDER_ANGLE")) { return GL_PACK_REVERSE_ROW_ORDER_ANGLE; } +#endif +#ifdef GL_PARAMETER_BUFFER_BINDING_ARB if (!strcmp(name, "GL_PARAMETER_BUFFER_BINDING_ARB")) { return GL_PARAMETER_BUFFER_BINDING_ARB; } +#endif +#ifdef GL_PERFMON_RESULT_AVAILABLE_AMD if (!strcmp(name, "GL_PERFMON_RESULT_AVAILABLE_AMD")) { return GL_PERFMON_RESULT_AVAILABLE_AMD; } +#endif +#ifdef GL_PIXEL_BUFFER_BARRIER_BIT_EXT if (!strcmp(name, "GL_PIXEL_BUFFER_BARRIER_BIT_EXT")) { return GL_PIXEL_BUFFER_BARRIER_BIT_EXT; } +#endif +#ifdef GL_PN_TRIANGLES_NORMAL_MODE_ATI if (!strcmp(name, "GL_PN_TRIANGLES_NORMAL_MODE_ATI")) { return GL_PN_TRIANGLES_NORMAL_MODE_ATI; } +#endif +#ifdef GL_POST_COLOR_MATRIX_ALPHA_BIAS if (!strcmp(name, "GL_POST_COLOR_MATRIX_ALPHA_BIAS")) { return GL_POST_COLOR_MATRIX_ALPHA_BIAS; } +#endif +#ifdef GL_POST_COLOR_MATRIX_BLUE_SCALE if (!strcmp(name, "GL_POST_COLOR_MATRIX_BLUE_SCALE")) { return GL_POST_COLOR_MATRIX_BLUE_SCALE; } +#endif +#ifdef GL_POST_COLOR_MATRIX_GREEN_BIAS if (!strcmp(name, "GL_POST_COLOR_MATRIX_GREEN_BIAS")) { return GL_POST_COLOR_MATRIX_GREEN_BIAS; } +#endif +#ifdef GL_POST_CONVOLUTION_ALPHA_SCALE if (!strcmp(name, "GL_POST_CONVOLUTION_ALPHA_SCALE")) { return GL_POST_CONVOLUTION_ALPHA_SCALE; } +#endif +#ifdef GL_POST_CONVOLUTION_COLOR_TABLE if (!strcmp(name, "GL_POST_CONVOLUTION_COLOR_TABLE")) { return GL_POST_CONVOLUTION_COLOR_TABLE; } +#endif +#ifdef GL_POST_CONVOLUTION_GREEN_SCALE if (!strcmp(name, "GL_POST_CONVOLUTION_GREEN_SCALE")) { return GL_POST_CONVOLUTION_GREEN_SCALE; } +#endif +#ifdef GL_PREFER_DOUBLEBUFFER_HINT_PGI if (!strcmp(name, "GL_PREFER_DOUBLEBUFFER_HINT_PGI")) { return GL_PREFER_DOUBLEBUFFER_HINT_PGI; } +#endif +#ifdef GL_PROGRAM_ALU_INSTRUCTIONS_ARB if (!strcmp(name, "GL_PROGRAM_ALU_INSTRUCTIONS_ARB")) { return GL_PROGRAM_ALU_INSTRUCTIONS_ARB; } +#endif +#ifdef GL_PROGRAM_ATTRIB_COMPONENTS_NV if (!strcmp(name, "GL_PROGRAM_ATTRIB_COMPONENTS_NV")) { return GL_PROGRAM_ATTRIB_COMPONENTS_NV; } +#endif +#ifdef GL_PROGRAM_RESULT_COMPONENTS_NV if (!strcmp(name, "GL_PROGRAM_RESULT_COMPONENTS_NV")) { return GL_PROGRAM_RESULT_COMPONENTS_NV; } +#endif +#ifdef GL_PROGRAM_TEX_INDIRECTIONS_ARB if (!strcmp(name, "GL_PROGRAM_TEX_INDIRECTIONS_ARB")) { return GL_PROGRAM_TEX_INDIRECTIONS_ARB; } +#endif +#ifdef GL_PROGRAM_TEX_INSTRUCTIONS_ARB if (!strcmp(name, "GL_PROGRAM_TEX_INSTRUCTIONS_ARB")) { return GL_PROGRAM_TEX_INSTRUCTIONS_ARB; } -if (!strcmp(name, "GL_PROXY_TEXTURE_1D_STACK_MESAX")) -{ - return GL_PROXY_TEXTURE_1D_STACK_MESAX; -} +#endif +#ifdef GL_PROXY_TEXTURE_2D_MULTISAMPLE if (!strcmp(name, "GL_PROXY_TEXTURE_2D_MULTISAMPLE")) { return GL_PROXY_TEXTURE_2D_MULTISAMPLE; } -if (!strcmp(name, "GL_PROXY_TEXTURE_2D_STACK_MESAX")) -{ - return GL_PROXY_TEXTURE_2D_STACK_MESAX; -} +#endif +#ifdef GL_PROXY_TEXTURE_CUBE_MAP_ARRAY if (!strcmp(name, "GL_PROXY_TEXTURE_CUBE_MAP_ARRAY")) { return GL_PROXY_TEXTURE_CUBE_MAP_ARRAY; } +#endif +#ifdef GL_QUERY_RESULT_AVAILABLE_ANGLE if (!strcmp(name, "GL_QUERY_RESULT_AVAILABLE_ANGLE")) { return GL_QUERY_RESULT_AVAILABLE_ANGLE; } +#endif +#ifdef GL_READ_FRAMEBUFFER_BINDING_EXT if (!strcmp(name, "GL_READ_FRAMEBUFFER_BINDING_EXT")) { return GL_READ_FRAMEBUFFER_BINDING_EXT; } +#endif +#ifdef GL_REFERENCED_BY_COMPUTE_SHADER if (!strcmp(name, "GL_REFERENCED_BY_COMPUTE_SHADER")) { return GL_REFERENCED_BY_COMPUTE_SHADER; } +#endif +#ifdef GL_RELATIVE_LARGE_CCW_ARC_TO_NV if (!strcmp(name, "GL_RELATIVE_LARGE_CCW_ARC_TO_NV")) { return GL_RELATIVE_LARGE_CCW_ARC_TO_NV; } +#endif +#ifdef GL_RELATIVE_SMALL_CCW_ARC_TO_NV if (!strcmp(name, "GL_RELATIVE_SMALL_CCW_ARC_TO_NV")) { return GL_RELATIVE_SMALL_CCW_ARC_TO_NV; } +#endif +#ifdef GL_RELATIVE_VERTICAL_LINE_TO_NV if (!strcmp(name, "GL_RELATIVE_VERTICAL_LINE_TO_NV")) { return GL_RELATIVE_VERTICAL_LINE_TO_NV; } +#endif +#ifdef GL_RENDERBUFFER_FREE_MEMORY_ATI if (!strcmp(name, "GL_RENDERBUFFER_FREE_MEMORY_ATI")) { return GL_RENDERBUFFER_FREE_MEMORY_ATI; } +#endif +#ifdef GL_RENDERBUFFER_INTERNAL_FORMAT if (!strcmp(name, "GL_RENDERBUFFER_INTERNAL_FORMAT")) { return GL_RENDERBUFFER_INTERNAL_FORMAT; } -if (!strcmp(name, "GL_SAMPLE_ALPHA_TO_COVERAGE_ARB")) -{ - return GL_SAMPLE_ALPHA_TO_COVERAGE_ARB; -} +#endif +#ifdef GL_SAMPLER_2D_MULTISAMPLE_ARRAY if (!strcmp(name, "GL_SAMPLER_2D_MULTISAMPLE_ARRAY")) { return GL_SAMPLER_2D_MULTISAMPLE_ARRAY; } +#endif +#ifdef GL_SAMPLE_ALPHA_TO_COVERAGE_ARB +if (!strcmp(name, "GL_SAMPLE_ALPHA_TO_COVERAGE_ARB")) +{ + return GL_SAMPLE_ALPHA_TO_COVERAGE_ARB; +} +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_STRIDE if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_STRIDE")) { return GL_SECONDARY_COLOR_ARRAY_STRIDE; } +#endif +#ifdef GL_SHADING_LANGUAGE_VERSION_ARB if (!strcmp(name, "GL_SHADING_LANGUAGE_VERSION_ARB")) { return GL_SHADING_LANGUAGE_VERSION_ARB; } +#endif +#ifdef GL_SIGNED_RGB_UNSIGNED_ALPHA_NV +if (!strcmp(name, "GL_SIGNED_RGB_UNSIGNED_ALPHA_NV")) +{ + return GL_SIGNED_RGB_UNSIGNED_ALPHA_NV; +} +#endif +#ifdef GL_SIGNED_RGB_UNSIGNED_ALPHA_NV if (!strcmp(name, "GL_SIGNED_RGB_UNSIGNED_ALPHA_NV")) { return GL_SIGNED_RGB_UNSIGNED_ALPHA_NV; } +#endif +#ifdef GL_SMOOTH_QUADRATIC_CURVE_TO_NV if (!strcmp(name, "GL_SMOOTH_QUADRATIC_CURVE_TO_NV")) { return GL_SMOOTH_QUADRATIC_CURVE_TO_NV; } +#endif +#ifdef GL_STENCIL_BACK_PASS_DEPTH_FAIL if (!strcmp(name, "GL_STENCIL_BACK_PASS_DEPTH_FAIL")) { return GL_STENCIL_BACK_PASS_DEPTH_FAIL; } +#endif +#ifdef GL_STENCIL_BACK_PASS_DEPTH_PASS if (!strcmp(name, "GL_STENCIL_BACK_PASS_DEPTH_PASS")) { return GL_STENCIL_BACK_PASS_DEPTH_PASS; } +#endif +#ifdef GL_SUN_convolution_border_modes if (!strcmp(name, "GL_SUN_convolution_border_modes")) { return GL_SUN_convolution_border_modes; } +#endif +#ifdef GL_TESS_CONTROL_OUTPUT_VERTICES if (!strcmp(name, "GL_TESS_CONTROL_OUTPUT_VERTICES")) { return GL_TESS_CONTROL_OUTPUT_VERTICES; } +#endif +#ifdef GL_TEXTURE_2D_MULTISAMPLE_ARRAY if (!strcmp(name, "GL_TEXTURE_2D_MULTISAMPLE_ARRAY")) { return GL_TEXTURE_2D_MULTISAMPLE_ARRAY; } +#endif +#ifdef GL_TEXTURE_APPLICATION_MODE_EXT if (!strcmp(name, "GL_TEXTURE_APPLICATION_MODE_EXT")) { return GL_TEXTURE_APPLICATION_MODE_EXT; } +#endif +#ifdef GL_TEXTURE_BINDING_1D_ARRAY_EXT if (!strcmp(name, "GL_TEXTURE_BINDING_1D_ARRAY_EXT")) { return GL_TEXTURE_BINDING_1D_ARRAY_EXT; } +#endif +#ifdef GL_TEXTURE_BINDING_2D_ARRAY_EXT if (!strcmp(name, "GL_TEXTURE_BINDING_2D_ARRAY_EXT")) { return GL_TEXTURE_BINDING_2D_ARRAY_EXT; } +#endif +#ifdef GL_TEXTURE_BINDING_CUBE_MAP_ARB if (!strcmp(name, "GL_TEXTURE_BINDING_CUBE_MAP_ARB")) { return GL_TEXTURE_BINDING_CUBE_MAP_ARB; } +#endif +#ifdef GL_TEXTURE_BINDING_CUBE_MAP_EXT if (!strcmp(name, "GL_TEXTURE_BINDING_CUBE_MAP_EXT")) { return GL_TEXTURE_BINDING_CUBE_MAP_EXT; } +#endif +#ifdef GL_TEXTURE_BINDING_RECTANGLE_NV if (!strcmp(name, "GL_TEXTURE_BINDING_RECTANGLE_NV")) { return GL_TEXTURE_BINDING_RECTANGLE_NV; } +#endif +#ifdef GL_TEXTURE_COMPRESSION_HINT_ARB if (!strcmp(name, "GL_TEXTURE_COMPRESSION_HINT_ARB")) { return GL_TEXTURE_COMPRESSION_HINT_ARB; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_LIST_IBM if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_LIST_IBM")) { return GL_TEXTURE_COORD_ARRAY_LIST_IBM; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_SIZE_EXT if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_SIZE_EXT")) { return GL_TEXTURE_COORD_ARRAY_SIZE_EXT; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_TYPE_EXT if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_TYPE_EXT")) { return GL_TEXTURE_COORD_ARRAY_TYPE_EXT; } +#endif +#ifdef GL_TEXTURE_POINT_ONE_COORD_ATIX if (!strcmp(name, "GL_TEXTURE_POINT_ONE_COORD_ATIX")) { return GL_TEXTURE_POINT_ONE_COORD_ATIX; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_NV if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_NV")) { return GL_TRANSFORM_FEEDBACK_BUFFER_NV; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_RECORD_NV if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_RECORD_NV")) { return GL_TRANSFORM_FEEDBACK_RECORD_NV; } +#endif +#ifdef GL_TRANSPOSE_CURRENT_MATRIX_ARB if (!strcmp(name, "GL_TRANSPOSE_CURRENT_MATRIX_ARB")) { return GL_TRANSPOSE_CURRENT_MATRIX_ARB; } +#endif +#ifdef GL_TRANSPOSE_PROGRAM_MATRIX_EXT if (!strcmp(name, "GL_TRANSPOSE_PROGRAM_MATRIX_EXT")) { return GL_TRANSPOSE_PROGRAM_MATRIX_EXT; } +#endif +#ifdef GL_TRANSPOSE_TEXTURE_MATRIX_ARB if (!strcmp(name, "GL_TRANSPOSE_TEXTURE_MATRIX_ARB")) { return GL_TRANSPOSE_TEXTURE_MATRIX_ARB; } +#endif +#ifdef GL_TRIANGLE_STRIP_ADJACENCY_ARB if (!strcmp(name, "GL_TRIANGLE_STRIP_ADJACENCY_ARB")) { return GL_TRIANGLE_STRIP_ADJACENCY_ARB; } +#endif +#ifdef GL_TRIANGLE_STRIP_ADJACENCY_EXT if (!strcmp(name, "GL_TRIANGLE_STRIP_ADJACENCY_EXT")) { return GL_TRIANGLE_STRIP_ADJACENCY_EXT; } +#endif +#ifdef GL_UNPACK_COMPRESSED_BLOCK_SIZE if (!strcmp(name, "GL_UNPACK_COMPRESSED_BLOCK_SIZE")) { return GL_UNPACK_COMPRESSED_BLOCK_SIZE; } +#endif +#ifdef GL_UNSIGNED_INT_10F_11F_11F_REV if (!strcmp(name, "GL_UNSIGNED_INT_10F_11F_11F_REV")) { return GL_UNSIGNED_INT_10F_11F_11F_REV; } +#endif +#ifdef GL_UNSIGNED_INT_10F_11F_11F_REV +if (!strcmp(name, "GL_UNSIGNED_INT_10F_11F_11F_REV")) +{ + return GL_UNSIGNED_INT_10F_11F_11F_REV; +} +#endif +#ifdef GL_UNSIGNED_INT_5_9_9_9_REV_EXT if (!strcmp(name, "GL_UNSIGNED_INT_5_9_9_9_REV_EXT")) { return GL_UNSIGNED_INT_5_9_9_9_REV_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_2D_RECT if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_2D_RECT")) { return GL_UNSIGNED_INT_SAMPLER_2D_RECT; } +#endif +#ifdef GL_UNSIGNED_SHORT_8_8_REV_APPLE if (!strcmp(name, "GL_UNSIGNED_SHORT_8_8_REV_APPLE")) { return GL_UNSIGNED_SHORT_8_8_REV_APPLE; } +#endif +#ifdef GL_VERTEX_ARRAY_LIST_STRIDE_IBM if (!strcmp(name, "GL_VERTEX_ARRAY_LIST_STRIDE_IBM")) { return GL_VERTEX_ARRAY_LIST_STRIDE_IBM; } +#endif +#ifdef GL_VERTEX_ARRAY_RANGE_LENGTH_NV if (!strcmp(name, "GL_VERTEX_ARRAY_RANGE_LENGTH_NV")) { return GL_VERTEX_ARRAY_RANGE_LENGTH_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB")) { return GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB")) { return GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB; } +#endif +#ifdef GL_VERTEX_PROGRAM_POINT_SIZE_NV if (!strcmp(name, "GL_VERTEX_PROGRAM_POINT_SIZE_NV")) { return GL_VERTEX_PROGRAM_POINT_SIZE_NV; } +#endif +#ifdef GL_VERTEX_SHADER_INVARIANTS_EXT if (!strcmp(name, "GL_VERTEX_SHADER_INVARIANTS_EXT")) { return GL_VERTEX_SHADER_INVARIANTS_EXT; } +#endif +#ifdef GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT if (!strcmp(name, "GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT")) { return GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT; } +#endif +#ifdef GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT if (!strcmp(name, "GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT")) { return GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT; } +#endif +#ifdef GL_VIDEO_CAPTURE_FRAME_WIDTH_NV if (!strcmp(name, "GL_VIDEO_CAPTURE_FRAME_WIDTH_NV")) { return GL_VIDEO_CAPTURE_FRAME_WIDTH_NV; } +#endif return _GL_UNDEFINED; case 32: +#ifdef GL_3DFX_texture_compression_FXT1 if (!strcmp(name, "GL_3DFX_texture_compression_FXT1")) { return GL_3DFX_texture_compression_FXT1; } +#endif +#ifdef GL_ACTIVE_ATOMIC_COUNTER_BUFFERS if (!strcmp(name, "GL_ACTIVE_ATOMIC_COUNTER_BUFFERS")) { return GL_ACTIVE_ATOMIC_COUNTER_BUFFERS; } +#endif +#ifdef GL_AMD_shader_atomic_counter_ops +if (!strcmp(name, "GL_AMD_shader_atomic_counter_ops")) +{ + return GL_AMD_shader_atomic_counter_ops; +} +#endif +#ifdef GL_AMD_vertex_shader_tessellator if (!strcmp(name, "GL_AMD_vertex_shader_tessellator")) { return GL_AMD_vertex_shader_tessellator; } +#endif +#ifdef GL_ANGLE_framebuffer_multisample if (!strcmp(name, "GL_ANGLE_framebuffer_multisample")) { return GL_ANGLE_framebuffer_multisample; } +#endif +#ifdef GL_ARB_draw_elements_base_vertex if (!strcmp(name, "GL_ARB_draw_elements_base_vertex")) { return GL_ARB_draw_elements_base_vertex; } +#endif +#ifdef GL_ARB_explicit_uniform_location if (!strcmp(name, "GL_ARB_explicit_uniform_location")) { return GL_ARB_explicit_uniform_location; } +#endif +#ifdef GL_ARB_fragment_shader_interlock +if (!strcmp(name, "GL_ARB_fragment_shader_interlock")) +{ + return GL_ARB_fragment_shader_interlock; +} +#endif +#ifdef GL_ARB_pipeline_statistics_query +if (!strcmp(name, "GL_ARB_pipeline_statistics_query")) +{ + return GL_ARB_pipeline_statistics_query; +} +#endif +#ifdef GL_ARB_shader_atomic_counter_ops +if (!strcmp(name, "GL_ARB_shader_atomic_counter_ops")) +{ + return GL_ARB_shader_atomic_counter_ops; +} +#endif +#ifdef GL_ATOMIC_COUNTER_BUFFER_BINDING if (!strcmp(name, "GL_ATOMIC_COUNTER_BUFFER_BINDING")) { return GL_ATOMIC_COUNTER_BUFFER_BINDING; } +#endif +#ifdef GL_BUFFER_UPDATE_BARRIER_BIT_EXT if (!strcmp(name, "GL_BUFFER_UPDATE_BARRIER_BIT_EXT")) { return GL_BUFFER_UPDATE_BARRIER_BIT_EXT; } +#endif +#ifdef GL_CLIPPING_INPUT_PRIMITIVES_ARB +if (!strcmp(name, "GL_CLIPPING_INPUT_PRIMITIVES_ARB")) +{ + return GL_CLIPPING_INPUT_PRIMITIVES_ARB; +} +#endif +#ifdef GL_CLIP_VOLUME_CLIPPING_HINT_EXT if (!strcmp(name, "GL_CLIP_VOLUME_CLIPPING_HINT_EXT")) { return GL_CLIP_VOLUME_CLIPPING_HINT_EXT; } +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_10x5_KHR +if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_10x5_KHR")) +{ + return GL_COMPRESSED_RGBA_ASTC_10x5_KHR; +} +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_10x5_KHR if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_10x5_KHR")) { return GL_COMPRESSED_RGBA_ASTC_10x5_KHR; } +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_10x6_KHR +if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_10x6_KHR")) +{ + return GL_COMPRESSED_RGBA_ASTC_10x6_KHR; +} +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_10x6_KHR if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_10x6_KHR")) { return GL_COMPRESSED_RGBA_ASTC_10x6_KHR; } +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_10x8_KHR +if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_10x8_KHR")) +{ + return GL_COMPRESSED_RGBA_ASTC_10x8_KHR; +} +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_10x8_KHR if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_10x8_KHR")) { return GL_COMPRESSED_RGBA_ASTC_10x8_KHR; } +#endif +#ifdef GL_COMPRESSED_RGBA_S3TC_DXT1_EXT if (!strcmp(name, "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT")) { return GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; } +#endif +#ifdef GL_COMPRESSED_RGBA_S3TC_DXT3_EXT if (!strcmp(name, "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT")) { return GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; } +#endif +#ifdef GL_COMPRESSED_RGBA_S3TC_DXT5_EXT if (!strcmp(name, "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT")) { return GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; } +#endif +#ifdef GL_COMPRESSED_SRGB_S3TC_DXT1_EXT if (!strcmp(name, "GL_COMPRESSED_SRGB_S3TC_DXT1_EXT")) { return GL_COMPRESSED_SRGB_S3TC_DXT1_EXT; } +#endif +#ifdef GL_CONSERVATIVE_RASTERIZATION_NV +if (!strcmp(name, "GL_CONSERVATIVE_RASTERIZATION_NV")) +{ + return GL_CONSERVATIVE_RASTERIZATION_NV; +} +#endif +#ifdef GL_CONSERVATIVE_RASTER_DILATE_NV +if (!strcmp(name, "GL_CONSERVATIVE_RASTER_DILATE_NV")) +{ + return GL_CONSERVATIVE_RASTER_DILATE_NV; +} +#endif +#ifdef GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR +if (!strcmp(name, "GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR")) +{ + return GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR; +} +#endif +#ifdef GL_CURRENT_MATRIX_STACK_DEPTH_NV if (!strcmp(name, "GL_CURRENT_MATRIX_STACK_DEPTH_NV")) { return GL_CURRENT_MATRIX_STACK_DEPTH_NV; } +#endif +#ifdef GL_CURRENT_OCCLUSION_QUERY_ID_NV if (!strcmp(name, "GL_CURRENT_OCCLUSION_QUERY_ID_NV")) { return GL_CURRENT_OCCLUSION_QUERY_ID_NV; } +#endif +#ifdef GL_CURRENT_RASTER_POSITION_VALID if (!strcmp(name, "GL_CURRENT_RASTER_POSITION_VALID")) { return GL_CURRENT_RASTER_POSITION_VALID; } +#endif +#ifdef GL_CURRENT_RASTER_TEXTURE_COORDS if (!strcmp(name, "GL_CURRENT_RASTER_TEXTURE_COORDS")) { return GL_CURRENT_RASTER_TEXTURE_COORDS; } +#endif +#ifdef GL_CURRENT_SAMPLE_COUNT_QUERY_NV if (!strcmp(name, "GL_CURRENT_SAMPLE_COUNT_QUERY_NV")) { return GL_CURRENT_SAMPLE_COUNT_QUERY_NV; } +#endif +#ifdef GL_DEBUG_CALLBACK_USER_PARAM_ARB if (!strcmp(name, "GL_DEBUG_CALLBACK_USER_PARAM_ARB")) { return GL_DEBUG_CALLBACK_USER_PARAM_ARB; } +#endif +#ifdef GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR if (!strcmp(name, "GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR")) { return GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR; } +#endif +#ifdef GL_ELEMENT_ARRAY_BARRIER_BIT_EXT if (!strcmp(name, "GL_ELEMENT_ARRAY_BARRIER_BIT_EXT")) { return GL_ELEMENT_ARRAY_BARRIER_BIT_EXT; } +#endif +#ifdef GL_FOG_COORDINATE_ARRAY_LIST_IBM if (!strcmp(name, "GL_FOG_COORDINATE_ARRAY_LIST_IBM")) { return GL_FOG_COORDINATE_ARRAY_LIST_IBM; } +#endif +#ifdef GL_FOG_COORDINATE_ARRAY_TYPE_EXT if (!strcmp(name, "GL_FOG_COORDINATE_ARRAY_TYPE_EXT")) { return GL_FOG_COORDINATE_ARRAY_TYPE_EXT; } +#endif +#ifdef GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV if (!strcmp(name, "GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV")) { return GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV; } +#endif +#ifdef GL_FONT_NUM_GLYPH_INDICES_BIT_NV +if (!strcmp(name, "GL_FONT_NUM_GLYPH_INDICES_BIT_NV")) +{ + return GL_FONT_NUM_GLYPH_INDICES_BIT_NV; +} +#endif +#ifdef GL_FRAGMENT_COVERAGE_TO_COLOR_NV +if (!strcmp(name, "GL_FRAGMENT_COVERAGE_TO_COLOR_NV")) +{ + return GL_FRAGMENT_COVERAGE_TO_COLOR_NV; +} +#endif +#ifdef GL_INTENSITY_EXTENDED_RANGE_SGIX if (!strcmp(name, "GL_INTENSITY_EXTENDED_RANGE_SGIX")) { return GL_INTENSITY_EXTENDED_RANGE_SGIX; } +#endif +#ifdef GL_INVALID_FRAMEBUFFER_OPERATION if (!strcmp(name, "GL_INVALID_FRAMEBUFFER_OPERATION")) { return GL_INVALID_FRAMEBUFFER_OPERATION; } +#endif +#ifdef GL_LIGHT_MODEL_COLOR_CONTROL_EXT if (!strcmp(name, "GL_LIGHT_MODEL_COLOR_CONTROL_EXT")) { return GL_LIGHT_MODEL_COLOR_CONTROL_EXT; } +#endif +#ifdef GL_LUMINANCE_ALPHA_FLOAT16_APPLE if (!strcmp(name, "GL_LUMINANCE_ALPHA_FLOAT16_APPLE")) { return GL_LUMINANCE_ALPHA_FLOAT16_APPLE; } +#endif +#ifdef GL_LUMINANCE_ALPHA_FLOAT32_APPLE if (!strcmp(name, "GL_LUMINANCE_ALPHA_FLOAT32_APPLE")) { return GL_LUMINANCE_ALPHA_FLOAT32_APPLE; } +#endif +#ifdef GL_LUMINANCE_EXTENDED_RANGE_SGIX if (!strcmp(name, "GL_LUMINANCE_EXTENDED_RANGE_SGIX")) { return GL_LUMINANCE_EXTENDED_RANGE_SGIX; } +#endif +#ifdef GL_MATRIX_INDEX_ARRAY_STRIDE_ARB if (!strcmp(name, "GL_MATRIX_INDEX_ARRAY_STRIDE_ARB")) { return GL_MATRIX_INDEX_ARRAY_STRIDE_ARB; } +#endif +#ifdef GL_MAX_BINDABLE_UNIFORM_SIZE_EXT if (!strcmp(name, "GL_MAX_BINDABLE_UNIFORM_SIZE_EXT")) { return GL_MAX_BINDABLE_UNIFORM_SIZE_EXT; } +#endif +#ifdef GL_MAX_CLIENT_ATTRIB_STACK_DEPTH if (!strcmp(name, "GL_MAX_CLIENT_ATTRIB_STACK_DEPTH")) { return GL_MAX_CLIENT_ATTRIB_STACK_DEPTH; } +#endif +#ifdef GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB if (!strcmp(name, "GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB")) { return GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB; } +#endif +#ifdef GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT if (!strcmp(name, "GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT")) { return GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT; } +#endif +#ifdef GL_MAX_DEBUG_LOGGED_MESSAGES_AMD if (!strcmp(name, "GL_MAX_DEBUG_LOGGED_MESSAGES_AMD")) { return GL_MAX_DEBUG_LOGGED_MESSAGES_AMD; } +#endif +#ifdef GL_MAX_DEBUG_LOGGED_MESSAGES_ARB if (!strcmp(name, "GL_MAX_DEBUG_LOGGED_MESSAGES_ARB")) { return GL_MAX_DEBUG_LOGGED_MESSAGES_ARB; } +#endif +#ifdef GL_MAX_FRAGMENT_INPUT_COMPONENTS if (!strcmp(name, "GL_MAX_FRAGMENT_INPUT_COMPONENTS")) { return GL_MAX_FRAGMENT_INPUT_COMPONENTS; } +#endif +#ifdef GL_MAX_GEOMETRY_INPUT_COMPONENTS if (!strcmp(name, "GL_MAX_GEOMETRY_INPUT_COMPONENTS")) { return GL_MAX_GEOMETRY_INPUT_COMPONENTS; } +#endif +#ifdef GL_MAX_RECTANGLE_TEXTURE_SIZE_NV if (!strcmp(name, "GL_MAX_RECTANGLE_TEXTURE_SIZE_NV")) { return GL_MAX_RECTANGLE_TEXTURE_SIZE_NV; } +#endif +#ifdef GL_MAX_SHADER_STORAGE_BLOCK_SIZE if (!strcmp(name, "GL_MAX_SHADER_STORAGE_BLOCK_SIZE")) { return GL_MAX_SHADER_STORAGE_BLOCK_SIZE; } +#endif +#ifdef GL_MAX_VERTEX_UNIFORM_COMPONENTS if (!strcmp(name, "GL_MAX_VERTEX_UNIFORM_COMPONENTS")) { return GL_MAX_VERTEX_UNIFORM_COMPONENTS; } +#endif +#ifdef GL_MULTISAMPLE_COVERAGE_MODES_NV if (!strcmp(name, "GL_MULTISAMPLE_COVERAGE_MODES_NV")) { return GL_MULTISAMPLE_COVERAGE_MODES_NV; } +#endif +#ifdef GL_NUM_INSTRUCTIONS_PER_PASS_ATI if (!strcmp(name, "GL_NUM_INSTRUCTIONS_PER_PASS_ATI")) { return GL_NUM_INSTRUCTIONS_PER_PASS_ATI; } +#endif +#ifdef GL_NUM_SHADING_LANGUAGE_VERSIONS if (!strcmp(name, "GL_NUM_SHADING_LANGUAGE_VERSIONS")) { return GL_NUM_SHADING_LANGUAGE_VERSIONS; } +#endif +#ifdef GL_NV_conservative_raster_dilate +if (!strcmp(name, "GL_NV_conservative_raster_dilate")) +{ + return GL_NV_conservative_raster_dilate; +} +#endif +#ifdef GL_NV_fragment_coverage_to_color +if (!strcmp(name, "GL_NV_fragment_coverage_to_color")) +{ + return GL_NV_fragment_coverage_to_color; +} +#endif +#ifdef GL_NV_path_rendering_shared_edge +if (!strcmp(name, "GL_NV_path_rendering_shared_edge")) +{ + return GL_NV_path_rendering_shared_edge; +} +#endif +#ifdef GL_OBJECT_DISTANCE_TO_POINT_SGIS if (!strcmp(name, "GL_OBJECT_DISTANCE_TO_POINT_SGIS")) { return GL_OBJECT_DISTANCE_TO_POINT_SGIS; } +#endif +#ifdef GL_PERFQUERY_COUNTER_EVENT_INTEL +if (!strcmp(name, "GL_PERFQUERY_COUNTER_EVENT_INTEL")) +{ + return GL_PERFQUERY_COUNTER_EVENT_INTEL; +} +#endif +#ifdef GL_PIXEL_PACK_BUFFER_BINDING_ARB if (!strcmp(name, "GL_PIXEL_PACK_BUFFER_BINDING_ARB")) { return GL_PIXEL_PACK_BUFFER_BINDING_ARB; } +#endif +#ifdef GL_PIXEL_PACK_BUFFER_BINDING_EXT if (!strcmp(name, "GL_PIXEL_PACK_BUFFER_BINDING_EXT")) { return GL_PIXEL_PACK_BUFFER_BINDING_EXT; } +#endif +#ifdef GL_PIXEL_TRANSFORM_2D_MATRIX_EXT if (!strcmp(name, "GL_PIXEL_TRANSFORM_2D_MATRIX_EXT")) { return GL_PIXEL_TRANSFORM_2D_MATRIX_EXT; } +#endif +#ifdef GL_POINT_FADE_THRESHOLD_SIZE_ARB if (!strcmp(name, "GL_POINT_FADE_THRESHOLD_SIZE_ARB")) { return GL_POINT_FADE_THRESHOLD_SIZE_ARB; } +#endif +#ifdef GL_POINT_FADE_THRESHOLD_SIZE_EXT if (!strcmp(name, "GL_POINT_FADE_THRESHOLD_SIZE_EXT")) { return GL_POINT_FADE_THRESHOLD_SIZE_EXT; } +#endif +#ifdef GL_POINT_SPRITE_CULL_CENTER_ATIX if (!strcmp(name, "GL_POINT_SPRITE_CULL_CENTER_ATIX")) { return GL_POINT_SPRITE_CULL_CENTER_ATIX; } +#endif +#ifdef GL_POST_COLOR_MATRIX_ALPHA_SCALE if (!strcmp(name, "GL_POST_COLOR_MATRIX_ALPHA_SCALE")) { return GL_POST_COLOR_MATRIX_ALPHA_SCALE; } +#endif +#ifdef GL_POST_COLOR_MATRIX_COLOR_TABLE if (!strcmp(name, "GL_POST_COLOR_MATRIX_COLOR_TABLE")) { return GL_POST_COLOR_MATRIX_COLOR_TABLE; } +#endif +#ifdef GL_POST_COLOR_MATRIX_GREEN_SCALE if (!strcmp(name, "GL_POST_COLOR_MATRIX_GREEN_SCALE")) { return GL_POST_COLOR_MATRIX_GREEN_SCALE; } +#endif +#ifdef GL_POST_CONVOLUTION_RED_BIAS_EXT if (!strcmp(name, "GL_POST_CONVOLUTION_RED_BIAS_EXT")) { return GL_POST_CONVOLUTION_RED_BIAS_EXT; } +#endif +#ifdef GL_POST_TEXTURE_FILTER_BIAS_SGIX if (!strcmp(name, "GL_POST_TEXTURE_FILTER_BIAS_SGIX")) { return GL_POST_TEXTURE_FILTER_BIAS_SGIX; } +#endif +#ifdef GL_PRIMITIVE_RESTART_FIXED_INDEX if (!strcmp(name, "GL_PRIMITIVE_RESTART_FIXED_INDEX")) { return GL_PRIMITIVE_RESTART_FIXED_INDEX; } +#endif +#ifdef GL_PROGRAM_ADDRESS_REGISTERS_ARB if (!strcmp(name, "GL_PROGRAM_ADDRESS_REGISTERS_ARB")) { return GL_PROGRAM_ADDRESS_REGISTERS_ARB; } +#endif +#ifdef GL_PROGRAM_NATIVE_PARAMETERS_ARB if (!strcmp(name, "GL_PROGRAM_NATIVE_PARAMETERS_ARB")) { return GL_PROGRAM_NATIVE_PARAMETERS_ARB; } +#endif +#ifdef GL_PROXY_TEXTURE_COLOR_TABLE_SGI if (!strcmp(name, "GL_PROXY_TEXTURE_COLOR_TABLE_SGI")) { return GL_PROXY_TEXTURE_COLOR_TABLE_SGI; } +#endif +#ifdef GL_QUERY_BY_REGION_WAIT_INVERTED +if (!strcmp(name, "GL_QUERY_BY_REGION_WAIT_INVERTED")) +{ + return GL_QUERY_BY_REGION_WAIT_INVERTED; +} +#endif +#ifdef GL_RASTER_POSITION_UNCLIPPED_IBM if (!strcmp(name, "GL_RASTER_POSITION_UNCLIPPED_IBM")) { return GL_RASTER_POSITION_UNCLIPPED_IBM; } +#endif +#ifdef GL_REFERENCED_BY_FRAGMENT_SHADER if (!strcmp(name, "GL_REFERENCED_BY_FRAGMENT_SHADER")) { return GL_REFERENCED_BY_FRAGMENT_SHADER; } +#endif +#ifdef GL_REFERENCED_BY_GEOMETRY_SHADER if (!strcmp(name, "GL_REFERENCED_BY_GEOMETRY_SHADER")) { return GL_REFERENCED_BY_GEOMETRY_SHADER; } +#endif +#ifdef GL_RENDERBUFFER_COLOR_SAMPLES_NV if (!strcmp(name, "GL_RENDERBUFFER_COLOR_SAMPLES_NV")) { return GL_RENDERBUFFER_COLOR_SAMPLES_NV; } +#endif +#ifdef GL_RENDERBUFFER_STENCIL_SIZE_EXT if (!strcmp(name, "GL_RENDERBUFFER_STENCIL_SIZE_EXT")) { return GL_RENDERBUFFER_STENCIL_SIZE_EXT; } +#endif +#ifdef GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW if (!strcmp(name, "GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW")) { return GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW; } +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_POINTER if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_POINTER")) { return GL_SECONDARY_COLOR_ARRAY_POINTER; } +#endif +#ifdef GL_SGIX_texture_coordinate_clamp if (!strcmp(name, "GL_SGIX_texture_coordinate_clamp")) { return GL_SGIX_texture_coordinate_clamp; } +#endif +#ifdef GL_SHADER_STORAGE_BUFFER_BINDING if (!strcmp(name, "GL_SHADER_STORAGE_BUFFER_BINDING")) { return GL_SHADER_STORAGE_BUFFER_BINDING; } +#endif +#ifdef GL_SMOOTH_LINE_WIDTH_GRANULARITY if (!strcmp(name, "GL_SMOOTH_LINE_WIDTH_GRANULARITY")) { return GL_SMOOTH_LINE_WIDTH_GRANULARITY; } +#endif +#ifdef GL_SMOOTH_POINT_SIZE_GRANULARITY if (!strcmp(name, "GL_SMOOTH_POINT_SIZE_GRANULARITY")) { return GL_SMOOTH_POINT_SIZE_GRANULARITY; } +#endif +#ifdef GL_TEXTURE_BINDING_RECTANGLE_ARB if (!strcmp(name, "GL_TEXTURE_BINDING_RECTANGLE_ARB")) { return GL_TEXTURE_BINDING_RECTANGLE_ARB; } +#endif +#ifdef GL_TEXTURE_BINDING_RECTANGLE_EXT if (!strcmp(name, "GL_TEXTURE_BINDING_RECTANGLE_EXT")) { return GL_TEXTURE_BINDING_RECTANGLE_EXT; } +#endif +#ifdef GL_TEXTURE_COMPARE_OPERATOR_SGIX if (!strcmp(name, "GL_TEXTURE_COMPARE_OPERATOR_SGIX")) { return GL_TEXTURE_COMPARE_OPERATOR_SGIX; } +#endif +#ifdef GL_TEXTURE_COMPRESSED_BLOCK_SIZE if (!strcmp(name, "GL_TEXTURE_COMPRESSED_BLOCK_SIZE")) { return GL_TEXTURE_COMPRESSED_BLOCK_SIZE; } +#endif +#ifdef GL_TEXTURE_COMPRESSED_IMAGE_SIZE if (!strcmp(name, "GL_TEXTURE_COMPRESSED_IMAGE_SIZE")) { return GL_TEXTURE_COMPRESSED_IMAGE_SIZE; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_COUNT_EXT if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_COUNT_EXT")) { return GL_TEXTURE_COORD_ARRAY_COUNT_EXT; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_LENGTH_NV if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_LENGTH_NV")) { return GL_TEXTURE_COORD_ARRAY_LENGTH_NV; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_SEAMLESS_ARB if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_SEAMLESS_ARB")) { return GL_TEXTURE_CUBE_MAP_SEAMLESS_ARB; } +#endif +#ifdef GL_TEXTURE_FETCH_BARRIER_BIT_EXT if (!strcmp(name, "GL_TEXTURE_FETCH_BARRIER_BIT_EXT")) { return GL_TEXTURE_FETCH_BARRIER_BIT_EXT; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_ATTRIBS_NV if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_ATTRIBS_NV")) { return GL_TRANSFORM_FEEDBACK_ATTRIBS_NV; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BINDING_NV if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BINDING_NV")) { return GL_TRANSFORM_FEEDBACK_BINDING_NV; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_EXT if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_EXT")) { return GL_TRANSFORM_FEEDBACK_BUFFER_EXT; } +#endif +#ifdef GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS if (!strcmp(name, "GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS")) { return GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS; } +#endif +#ifdef GL_UNPACK_COMPRESSED_BLOCK_DEPTH if (!strcmp(name, "GL_UNPACK_COMPRESSED_BLOCK_DEPTH")) { return GL_UNPACK_COMPRESSED_BLOCK_DEPTH; } +#endif +#ifdef GL_UNPACK_COMPRESSED_BLOCK_WIDTH if (!strcmp(name, "GL_UNPACK_COMPRESSED_BLOCK_WIDTH")) { return GL_UNPACK_COMPRESSED_BLOCK_WIDTH; } +#endif +#ifdef GL_UNSIGNED_INT_8_8_S8_S8_REV_NV if (!strcmp(name, "GL_UNSIGNED_INT_8_8_S8_S8_REV_NV")) { return GL_UNSIGNED_INT_8_8_S8_S8_REV_NV; } +#endif +#ifdef GL_UNSIGNED_INT_8_8_S8_S8_REV_NV +if (!strcmp(name, "GL_UNSIGNED_INT_8_8_S8_S8_REV_NV")) +{ + return GL_UNSIGNED_INT_8_8_S8_S8_REV_NV; +} +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_BUFFER_EXT if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_BUFFER_EXT")) { return GL_UNSIGNED_INT_IMAGE_BUFFER_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_1D_ARRAY if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_1D_ARRAY")) { return GL_UNSIGNED_INT_SAMPLER_1D_ARRAY; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_2D_ARRAY if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY")) { return GL_UNSIGNED_INT_SAMPLER_2D_ARRAY; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_CUBE_EXT if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_CUBE_EXT")) { return GL_UNSIGNED_INT_SAMPLER_CUBE_EXT; } +#endif +#ifdef GL_VERTEX_ARRAY_RANGE_POINTER_NV if (!strcmp(name, "GL_VERTEX_ARRAY_RANGE_POINTER_NV")) { return GL_VERTEX_ARRAY_RANGE_POINTER_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV")) { return GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE if (!strcmp(name, "GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE")) { return GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE; } +#endif +#ifdef GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE if (!strcmp(name, "GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE")) { return GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE; } +#endif +#ifdef GL_VERTEX_ATTRIB_RELATIVE_OFFSET if (!strcmp(name, "GL_VERTEX_ATTRIB_RELATIVE_OFFSET")) { return GL_VERTEX_ATTRIB_RELATIVE_OFFSET; } +#endif +#ifdef GL_VERTEX_PROGRAM_POINT_SIZE_ARB if (!strcmp(name, "GL_VERTEX_PROGRAM_POINT_SIZE_ARB")) { return GL_VERTEX_PROGRAM_POINT_SIZE_ARB; } +#endif +#ifdef GL_VERTEX_SHADER_INVOCATIONS_ARB +if (!strcmp(name, "GL_VERTEX_SHADER_INVOCATIONS_ARB")) +{ + return GL_VERTEX_SHADER_INVOCATIONS_ARB; +} +#endif +#ifdef GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV if (!strcmp(name, "GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV")) { return GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV; } +#endif +#ifdef GL_VIDEO_COLOR_CONVERSION_MAX_NV if (!strcmp(name, "GL_VIDEO_COLOR_CONVERSION_MAX_NV")) { return GL_VIDEO_COLOR_CONVERSION_MAX_NV; } +#endif +#ifdef GL_VIDEO_COLOR_CONVERSION_MIN_NV if (!strcmp(name, "GL_VIDEO_COLOR_CONVERSION_MIN_NV")) { return GL_VIDEO_COLOR_CONVERSION_MIN_NV; } +#endif +#ifdef GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV if (!strcmp(name, "GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV")) { return GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV; } +#endif +#ifdef GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV if (!strcmp(name, "GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV")) { return GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV; } +#endif return _GL_UNDEFINED; case 33: +#ifdef GL_AMD_stencil_operation_extended if (!strcmp(name, "GL_AMD_stencil_operation_extended")) { return GL_AMD_stencil_operation_extended; } +#endif +#ifdef GL_ANGLE_texture_compression_dxt1 if (!strcmp(name, "GL_ANGLE_texture_compression_dxt1")) { return GL_ANGLE_texture_compression_dxt1; } +#endif +#ifdef GL_ANGLE_texture_compression_dxt3 if (!strcmp(name, "GL_ANGLE_texture_compression_dxt3")) { return GL_ANGLE_texture_compression_dxt3; } +#endif +#ifdef GL_ANGLE_texture_compression_dxt5 if (!strcmp(name, "GL_ANGLE_texture_compression_dxt5")) { return GL_ANGLE_texture_compression_dxt5; } +#endif +#ifdef GL_ANGLE_translated_shader_source if (!strcmp(name, "GL_ANGLE_translated_shader_source")) { return GL_ANGLE_translated_shader_source; } +#endif +#ifdef GL_ARB_fragment_coord_conventions if (!strcmp(name, "GL_ARB_fragment_coord_conventions")) { return GL_ARB_fragment_coord_conventions; } +#endif +#ifdef GL_ARB_framebuffer_no_attachments if (!strcmp(name, "GL_ARB_framebuffer_no_attachments")) { return GL_ARB_framebuffer_no_attachments; } +#endif +#ifdef GL_ARB_vertex_type_2_10_10_10_rev if (!strcmp(name, "GL_ARB_vertex_type_2_10_10_10_rev")) { return GL_ARB_vertex_type_2_10_10_10_rev; } +#endif +#ifdef GL_ATI_vertex_attrib_array_object if (!strcmp(name, "GL_ATI_vertex_attrib_array_object")) { return GL_ATI_vertex_attrib_array_object; } +#endif +#ifdef GL_ATOMIC_COUNTER_BARRIER_BIT_EXT if (!strcmp(name, "GL_ATOMIC_COUNTER_BARRIER_BIT_EXT")) { return GL_ATOMIC_COUNTER_BARRIER_BIT_EXT; } +#endif +#ifdef GL_BUFFER_SERIALIZED_MODIFY_APPLE if (!strcmp(name, "GL_BUFFER_SERIALIZED_MODIFY_APPLE")) { return GL_BUFFER_SERIALIZED_MODIFY_APPLE; } +#endif +#ifdef GL_CLIPPING_OUTPUT_PRIMITIVES_ARB +if (!strcmp(name, "GL_CLIPPING_OUTPUT_PRIMITIVES_ARB")) +{ + return GL_CLIPPING_OUTPUT_PRIMITIVES_ARB; +} +#endif +#ifdef GL_COLOR_ARRAY_BUFFER_BINDING_ARB if (!strcmp(name, "GL_COLOR_ARRAY_BUFFER_BINDING_ARB")) { return GL_COLOR_ARRAY_BUFFER_BINDING_ARB; } +#endif +#ifdef GL_COLOR_TABLE_INTENSITY_SIZE_EXT if (!strcmp(name, "GL_COLOR_TABLE_INTENSITY_SIZE_EXT")) { return GL_COLOR_TABLE_INTENSITY_SIZE_EXT; } +#endif +#ifdef GL_COLOR_TABLE_INTENSITY_SIZE_SGI if (!strcmp(name, "GL_COLOR_TABLE_INTENSITY_SIZE_SGI")) { return GL_COLOR_TABLE_INTENSITY_SIZE_SGI; } +#endif +#ifdef GL_COLOR_TABLE_LUMINANCE_SIZE_EXT if (!strcmp(name, "GL_COLOR_TABLE_LUMINANCE_SIZE_EXT")) { return GL_COLOR_TABLE_LUMINANCE_SIZE_EXT; } +#endif +#ifdef GL_COLOR_TABLE_LUMINANCE_SIZE_SGI if (!strcmp(name, "GL_COLOR_TABLE_LUMINANCE_SIZE_SGI")) { return GL_COLOR_TABLE_LUMINANCE_SIZE_SGI; } +#endif +#ifdef GL_COMPRESSED_LUMINANCE_ALPHA_ARB if (!strcmp(name, "GL_COMPRESSED_LUMINANCE_ALPHA_ARB")) { return GL_COMPRESSED_LUMINANCE_ALPHA_ARB; } +#endif +#ifdef GL_COMPRESSED_LUMINANCE_LATC1_EXT if (!strcmp(name, "GL_COMPRESSED_LUMINANCE_LATC1_EXT")) { return GL_COMPRESSED_LUMINANCE_LATC1_EXT; } +#endif +#ifdef GL_COMPRESSED_RED_GREEN_RGTC2_EXT if (!strcmp(name, "GL_COMPRESSED_RED_GREEN_RGTC2_EXT")) { return GL_COMPRESSED_RED_GREEN_RGTC2_EXT; } +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_10x10_KHR +if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_10x10_KHR")) +{ + return GL_COMPRESSED_RGBA_ASTC_10x10_KHR; +} +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_10x10_KHR if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_10x10_KHR")) { return GL_COMPRESSED_RGBA_ASTC_10x10_KHR; } +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_12x10_KHR if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_12x10_KHR")) { return GL_COMPRESSED_RGBA_ASTC_12x10_KHR; } +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_12x10_KHR +if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_12x10_KHR")) +{ + return GL_COMPRESSED_RGBA_ASTC_12x10_KHR; +} +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_12x12_KHR +if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_12x12_KHR")) +{ + return GL_COMPRESSED_RGBA_ASTC_12x12_KHR; +} +#endif +#ifdef GL_COMPRESSED_RGBA_ASTC_12x12_KHR if (!strcmp(name, "GL_COMPRESSED_RGBA_ASTC_12x12_KHR")) { return GL_COMPRESSED_RGBA_ASTC_12x12_KHR; } +#endif +#ifdef GL_COMPRESSED_RGBA_BPTC_UNORM_ARB if (!strcmp(name, "GL_COMPRESSED_RGBA_BPTC_UNORM_ARB")) { return GL_COMPRESSED_RGBA_BPTC_UNORM_ARB; } +#endif +#ifdef GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE +if (!strcmp(name, "GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE")) +{ + return GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE; +} +#endif +#ifdef GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE +if (!strcmp(name, "GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE")) +{ + return GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE; +} +#endif +#ifdef GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE if (!strcmp(name, "GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE")) { return GL_COMPRESSED_RGB_S3TC_DXT1_ANGLE; } +#endif +#ifdef GL_COMPRESSED_TEXTURE_FORMATS_ARB if (!strcmp(name, "GL_COMPRESSED_TEXTURE_FORMATS_ARB")) { return GL_COMPRESSED_TEXTURE_FORMATS_ARB; } +#endif +#ifdef GL_COMPUTE_SHADER_INVOCATIONS_ARB +if (!strcmp(name, "GL_COMPUTE_SHADER_INVOCATIONS_ARB")) +{ + return GL_COMPUTE_SHADER_INVOCATIONS_ARB; +} +#endif +#ifdef GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT +if (!strcmp(name, "GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT")) +{ + return GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT; +} +#endif +#ifdef GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH +if (!strcmp(name, "GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH")) +{ + return GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH; +} +#endif +#ifdef GL_CURRENT_MATRIX_STACK_DEPTH_ARB if (!strcmp(name, "GL_CURRENT_MATRIX_STACK_DEPTH_ARB")) { return GL_CURRENT_MATRIX_STACK_DEPTH_ARB; } +#endif +#ifdef GL_CURRENT_RASTER_SECONDARY_COLOR if (!strcmp(name, "GL_CURRENT_RASTER_SECONDARY_COLOR")) { return GL_CURRENT_RASTER_SECONDARY_COLOR; } +#endif +#ifdef GL_DEBUG_CATEGORY_APPLICATION_AMD if (!strcmp(name, "GL_DEBUG_CATEGORY_APPLICATION_AMD")) { return GL_DEBUG_CATEGORY_APPLICATION_AMD; } +#endif +#ifdef GL_DEBUG_CATEGORY_DEPRECATION_AMD if (!strcmp(name, "GL_DEBUG_CATEGORY_DEPRECATION_AMD")) { return GL_DEBUG_CATEGORY_DEPRECATION_AMD; } +#endif +#ifdef GL_DEBUG_CATEGORY_PERFORMANCE_AMD if (!strcmp(name, "GL_DEBUG_CATEGORY_PERFORMANCE_AMD")) { return GL_DEBUG_CATEGORY_PERFORMANCE_AMD; } +#endif +#ifdef GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB if (!strcmp(name, "GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB")) { return GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB; } +#endif +#ifdef GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR if (!strcmp(name, "GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR")) { return GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR; } +#endif +#ifdef GL_DRAW_FRAMEBUFFER_BINDING_ANGLE if (!strcmp(name, "GL_DRAW_FRAMEBUFFER_BINDING_ANGLE")) { return GL_DRAW_FRAMEBUFFER_BINDING_ANGLE; } +#endif +#ifdef GL_EDGE_FLAG_ARRAY_BUFFER_BINDING if (!strcmp(name, "GL_EDGE_FLAG_ARRAY_BUFFER_BINDING")) { return GL_EDGE_FLAG_ARRAY_BUFFER_BINDING; } +#endif +#ifdef GL_EXT_texture_filter_anisotropic if (!strcmp(name, "GL_EXT_texture_filter_anisotropic")) { return GL_EXT_texture_filter_anisotropic; } +#endif +#ifdef GL_FLOAT_32_UNSIGNED_INT_24_8_REV if (!strcmp(name, "GL_FLOAT_32_UNSIGNED_INT_24_8_REV")) { return GL_FLOAT_32_UNSIGNED_INT_24_8_REV; } +#endif +#ifdef GL_FOG_COORD_ARRAY_BUFFER_BINDING if (!strcmp(name, "GL_FOG_COORD_ARRAY_BUFFER_BINDING")) { return GL_FOG_COORD_ARRAY_BUFFER_BINDING; } +#endif +#ifdef GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV if (!strcmp(name, "GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV")) { return GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV; } +#endif +#ifdef GL_FONT_UNDERLINE_POSITION_BIT_NV if (!strcmp(name, "GL_FONT_UNDERLINE_POSITION_BIT_NV")) { return GL_FONT_UNDERLINE_POSITION_BIT_NV; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_LAYERED if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_LAYERED")) { return GL_FRAMEBUFFER_ATTACHMENT_LAYERED; } +#endif +#ifdef GL_FRAMEBUFFER_RENDERABLE_LAYERED if (!strcmp(name, "GL_FRAMEBUFFER_RENDERABLE_LAYERED")) { return GL_FRAMEBUFFER_RENDERABLE_LAYERED; } +#endif +#ifdef GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT if (!strcmp(name, "GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT")) { return GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT; } +#endif +#ifdef GL_IMPLEMENTATION_COLOR_READ_TYPE if (!strcmp(name, "GL_IMPLEMENTATION_COLOR_READ_TYPE")) { return GL_IMPLEMENTATION_COLOR_READ_TYPE; } +#endif +#ifdef GL_INDEX_ARRAY_BUFFER_BINDING_ARB if (!strcmp(name, "GL_INDEX_ARRAY_BUFFER_BINDING_ARB")) { return GL_INDEX_ARRAY_BUFFER_BINDING_ARB; } +#endif +#ifdef GL_INTEL_fragment_shader_ordering +if (!strcmp(name, "GL_INTEL_fragment_shader_ordering")) +{ + return GL_INTEL_fragment_shader_ordering; +} +#endif +#ifdef GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY if (!strcmp(name, "GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY")) { return GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY; } +#endif +#ifdef GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB if (!strcmp(name, "GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB")) { return GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB; } +#endif +#ifdef GL_LAYOUT_LINEAR_CPU_CACHED_INTEL if (!strcmp(name, "GL_LAYOUT_LINEAR_CPU_CACHED_INTEL")) { return GL_LAYOUT_LINEAR_CPU_CACHED_INTEL; } +#endif +#ifdef GL_MATRIX_INDEX_ARRAY_POINTER_ARB if (!strcmp(name, "GL_MATRIX_INDEX_ARRAY_POINTER_ARB")) { return GL_MATRIX_INDEX_ARRAY_POINTER_ARB; } +#endif +#ifdef GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE if (!strcmp(name, "GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE")) { return GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE; } +#endif +#ifdef GL_MAX_COMPUTE_SHARED_MEMORY_SIZE if (!strcmp(name, "GL_MAX_COMPUTE_SHARED_MEMORY_SIZE")) { return GL_MAX_COMPUTE_SHARED_MEMORY_SIZE; } +#endif +#ifdef GL_MAX_COMPUTE_UNIFORM_COMPONENTS if (!strcmp(name, "GL_MAX_COMPUTE_UNIFORM_COMPONENTS")) { return GL_MAX_COMPUTE_UNIFORM_COMPONENTS; } +#endif +#ifdef GL_MAX_GEOMETRY_OUTPUT_COMPONENTS if (!strcmp(name, "GL_MAX_GEOMETRY_OUTPUT_COMPONENTS")) { return GL_MAX_GEOMETRY_OUTPUT_COMPONENTS; } +#endif +#ifdef GL_MAX_NUM_COMPATIBLE_SUBROUTINES if (!strcmp(name, "GL_MAX_NUM_COMPATIBLE_SUBROUTINES")) { return GL_MAX_NUM_COMPATIBLE_SUBROUTINES; } +#endif +#ifdef GL_MAX_PROGRAM_ENV_PARAMETERS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_ENV_PARAMETERS_ARB")) { return GL_MAX_PROGRAM_ENV_PARAMETERS_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV if (!strcmp(name, "GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV")) { return GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV; } +#endif +#ifdef GL_MAX_PROGRAM_GENERIC_RESULTS_NV if (!strcmp(name, "GL_MAX_PROGRAM_GENERIC_RESULTS_NV")) { return GL_MAX_PROGRAM_GENERIC_RESULTS_NV; } +#endif +#ifdef GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB")) { return GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_OUTPUT_VERTICES_NV if (!strcmp(name, "GL_MAX_PROGRAM_OUTPUT_VERTICES_NV")) { return GL_MAX_PROGRAM_OUTPUT_VERTICES_NV; } +#endif +#ifdef GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB if (!strcmp(name, "GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB")) { return GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB; } +#endif +#ifdef GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT if (!strcmp(name, "GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT")) { return GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT; } +#endif +#ifdef GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD if (!strcmp(name, "GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD")) { return GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD; } +#endif +#ifdef GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB if (!strcmp(name, "GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB")) { return GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB; } +#endif +#ifdef GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT if (!strcmp(name, "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT")) { return GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT; } +#endif +#ifdef GL_MAX_TRANSFORM_FEEDBACK_BUFFERS if (!strcmp(name, "GL_MAX_TRANSFORM_FEEDBACK_BUFFERS")) { return GL_MAX_TRANSFORM_FEEDBACK_BUFFERS; } +#endif +#ifdef GL_MAX_VERTEX_SHADER_VARIANTS_EXT if (!strcmp(name, "GL_MAX_VERTEX_SHADER_VARIANTS_EXT")) { return GL_MAX_VERTEX_SHADER_VARIANTS_EXT; } +#endif +#ifdef GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS if (!strcmp(name, "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS")) { return GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS; } +#endif +#ifdef GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI if (!strcmp(name, "GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI")) { return GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI; } +#endif +#ifdef GL_NUM_COMPRESSED_TEXTURE_FORMATS if (!strcmp(name, "GL_NUM_COMPRESSED_TEXTURE_FORMATS")) { return GL_NUM_COMPRESSED_TEXTURE_FORMATS; } +#endif +#ifdef GL_NV_geometry_shader_passthrough +if (!strcmp(name, "GL_NV_geometry_shader_passthrough")) +{ + return GL_NV_geometry_shader_passthrough; +} +#endif +#ifdef GL_NV_internalformat_sample_query +if (!strcmp(name, "GL_NV_internalformat_sample_query")) +{ + return GL_NV_internalformat_sample_query; +} +#endif +#ifdef GL_NV_vertex_attrib_integer_64bit if (!strcmp(name, "GL_NV_vertex_attrib_integer_64bit")) { return GL_NV_vertex_attrib_integer_64bit; } +#endif +#ifdef GL_OCCLUSION_QUERY_EVENT_MASK_AMD +if (!strcmp(name, "GL_OCCLUSION_QUERY_EVENT_MASK_AMD")) +{ + return GL_OCCLUSION_QUERY_EVENT_MASK_AMD; +} +#endif +#ifdef GL_PERFQUERY_GLOBAL_CONTEXT_INTEL +if (!strcmp(name, "GL_PERFQUERY_GLOBAL_CONTEXT_INTEL")) +{ + return GL_PERFQUERY_GLOBAL_CONTEXT_INTEL; +} +#endif +#ifdef GL_PERFQUERY_SINGLE_CONTEXT_INTEL +if (!strcmp(name, "GL_PERFQUERY_SINGLE_CONTEXT_INTEL")) +{ + return GL_PERFQUERY_SINGLE_CONTEXT_INTEL; +} +#endif +#ifdef GL_POINT_DISTANCE_ATTENUATION_ARB if (!strcmp(name, "GL_POINT_DISTANCE_ATTENUATION_ARB")) { return GL_POINT_DISTANCE_ATTENUATION_ARB; } +#endif +#ifdef GL_POST_COLOR_MATRIX_RED_BIAS_SGI if (!strcmp(name, "GL_POST_COLOR_MATRIX_RED_BIAS_SGI")) { return GL_POST_COLOR_MATRIX_RED_BIAS_SGI; } +#endif +#ifdef GL_POST_CONVOLUTION_BLUE_BIAS_EXT if (!strcmp(name, "GL_POST_CONVOLUTION_BLUE_BIAS_EXT")) { return GL_POST_CONVOLUTION_BLUE_BIAS_EXT; } +#endif +#ifdef GL_POST_CONVOLUTION_RED_SCALE_EXT if (!strcmp(name, "GL_POST_CONVOLUTION_RED_SCALE_EXT")) { return GL_POST_CONVOLUTION_RED_SCALE_EXT; } +#endif +#ifdef GL_POST_TEXTURE_FILTER_SCALE_SGIX if (!strcmp(name, "GL_POST_TEXTURE_FILTER_SCALE_SGIX")) { return GL_POST_TEXTURE_FILTER_SCALE_SGIX; } +#endif +#ifdef GL_PROGRAM_MATRIX_STACK_DEPTH_EXT if (!strcmp(name, "GL_PROGRAM_MATRIX_STACK_DEPTH_EXT")) { return GL_PROGRAM_MATRIX_STACK_DEPTH_EXT; } +#endif +#ifdef GL_PROGRAM_NATIVE_TEMPORARIES_ARB if (!strcmp(name, "GL_PROGRAM_NATIVE_TEMPORARIES_ARB")) { return GL_PROGRAM_NATIVE_TEMPORARIES_ARB; } +#endif +#ifdef GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD +if (!strcmp(name, "GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD")) +{ + return GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD; +} +#endif +#ifdef GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD +if (!strcmp(name, "GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD")) +{ + return GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD; +} +#endif +#ifdef GL_READ_FRAMEBUFFER_BINDING_ANGLE if (!strcmp(name, "GL_READ_FRAMEBUFFER_BINDING_ANGLE")) { return GL_READ_FRAMEBUFFER_BINDING_ANGLE; } +#endif +#ifdef GL_RELATIVE_HORIZONTAL_LINE_TO_NV if (!strcmp(name, "GL_RELATIVE_HORIZONTAL_LINE_TO_NV")) { return GL_RELATIVE_HORIZONTAL_LINE_TO_NV; } +#endif +#ifdef GL_RELATIVE_QUADRATIC_CURVE_TO_NV if (!strcmp(name, "GL_RELATIVE_QUADRATIC_CURVE_TO_NV")) { return GL_RELATIVE_QUADRATIC_CURVE_TO_NV; } +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_LIST_IBM if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_LIST_IBM")) { return GL_SECONDARY_COLOR_ARRAY_LIST_IBM; } +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_SIZE_EXT if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_SIZE_EXT")) { return GL_SECONDARY_COLOR_ARRAY_SIZE_EXT; } +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_TYPE_EXT if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_TYPE_EXT")) { return GL_SECONDARY_COLOR_ARRAY_TYPE_EXT; } +#endif +#ifdef GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV if (!strcmp(name, "GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV")) { return GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV; } -if (!strcmp(name, "GL_SPARE0_PLUS_SECONDARY_COLOR_NV")) -{ - return GL_SPARE0_PLUS_SECONDARY_COLOR_NV; -} -if (!strcmp(name, "GL_TEXTURE_1D_STACK_BINDING_MESAX")) +#endif +#ifdef GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV +if (!strcmp(name, "GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV")) { - return GL_TEXTURE_1D_STACK_BINDING_MESAX; + return GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV; } -if (!strcmp(name, "GL_TEXTURE_2D_STACK_BINDING_MESAX")) +#endif +#ifdef GL_SPARE0_PLUS_SECONDARY_COLOR_NV +if (!strcmp(name, "GL_SPARE0_PLUS_SECONDARY_COLOR_NV")) { - return GL_TEXTURE_2D_STACK_BINDING_MESAX; + return GL_SPARE0_PLUS_SECONDARY_COLOR_NV; } +#endif +#ifdef GL_TEXTURE_BINDING_2D_MULTISAMPLE if (!strcmp(name, "GL_TEXTURE_BINDING_2D_MULTISAMPLE")) { return GL_TEXTURE_BINDING_2D_MULTISAMPLE; } +#endif +#ifdef GL_TEXTURE_BINDING_CUBE_MAP_ARRAY if (!strcmp(name, "GL_TEXTURE_BINDING_CUBE_MAP_ARRAY")) { return GL_TEXTURE_BINDING_CUBE_MAP_ARRAY; } +#endif +#ifdef GL_TEXTURE_COMPARE_FAIL_VALUE_ARB if (!strcmp(name, "GL_TEXTURE_COMPARE_FAIL_VALUE_ARB")) { return GL_TEXTURE_COMPARE_FAIL_VALUE_ARB; } +#endif +#ifdef GL_TEXTURE_COMPRESSED_BLOCK_WIDTH if (!strcmp(name, "GL_TEXTURE_COMPRESSED_BLOCK_WIDTH")) { return GL_TEXTURE_COMPRESSED_BLOCK_WIDTH; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_ADDRESS_NV if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_ADDRESS_NV")) { return GL_TEXTURE_COORD_ARRAY_ADDRESS_NV; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_STRIDE_EXT if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_STRIDE_EXT")) { return GL_TEXTURE_COORD_ARRAY_STRIDE_EXT; } +#endif +#ifdef GL_TEXTURE_FIXED_SAMPLE_LOCATIONS if (!strcmp(name, "GL_TEXTURE_FIXED_SAMPLE_LOCATIONS")) { return GL_TEXTURE_FIXED_SAMPLE_LOCATIONS; } +#endif +#ifdef GL_TEXTURE_MATERIAL_PARAMETER_EXT if (!strcmp(name, "GL_TEXTURE_MATERIAL_PARAMETER_EXT")) { return GL_TEXTURE_MATERIAL_PARAMETER_EXT; } +#endif +#ifdef GL_TEXTURE_MULTI_BUFFER_HINT_SGIX if (!strcmp(name, "GL_TEXTURE_MULTI_BUFFER_HINT_SGIX")) { return GL_TEXTURE_MULTI_BUFFER_HINT_SGIX; } +#endif +#ifdef GL_TEXTURE_STORAGE_SPARSE_BIT_AMD if (!strcmp(name, "GL_TEXTURE_STORAGE_SPARSE_BIT_AMD")) { return GL_TEXTURE_STORAGE_SPARSE_BIT_AMD; } +#endif +#ifdef GL_TEXTURE_UNSIGNED_REMAP_MODE_NV if (!strcmp(name, "GL_TEXTURE_UNSIGNED_REMAP_MODE_NV")) { return GL_TEXTURE_UNSIGNED_REMAP_MODE_NV; } +#endif +#ifdef GL_TEXTURE_UPDATE_BARRIER_BIT_EXT if (!strcmp(name, "GL_TEXTURE_UPDATE_BARRIER_BIT_EXT")) { return GL_TEXTURE_UPDATE_BARRIER_BIT_EXT; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BARRIER_BIT if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BARRIER_BIT")) { return GL_TRANSFORM_FEEDBACK_BARRIER_BIT; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_MODE if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_MODE")) { return GL_TRANSFORM_FEEDBACK_BUFFER_MODE; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_SIZE if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE")) { return GL_TRANSFORM_FEEDBACK_BUFFER_SIZE; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_VARYINGS_NV if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_VARYINGS_NV")) { return GL_TRANSFORM_FEEDBACK_VARYINGS_NV; } +#endif +#ifdef GL_TRANSPOSE_MODELVIEW_MATRIX_ARB if (!strcmp(name, "GL_TRANSPOSE_MODELVIEW_MATRIX_ARB")) { return GL_TRANSPOSE_MODELVIEW_MATRIX_ARB; } +#endif +#ifdef GL_UNPACK_COMPRESSED_BLOCK_HEIGHT if (!strcmp(name, "GL_UNPACK_COMPRESSED_BLOCK_HEIGHT")) { return GL_UNPACK_COMPRESSED_BLOCK_HEIGHT; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT")) { return GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV")) { return GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV")) { return GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_NORMALIZED if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED")) { return GL_VERTEX_ATTRIB_ARRAY_NORMALIZED; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB")) { return GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV")) { return GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE if (!strcmp(name, "GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE")) { return GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE; } +#endif +#ifdef GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE if (!strcmp(name, "GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE")) { return GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE; } +#endif +#ifdef GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE if (!strcmp(name, "GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE")) { return GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE; } +#endif +#ifdef GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE if (!strcmp(name, "GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE")) { return GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE; } +#endif +#ifdef GL_VERTEX_SHADER_INSTRUCTIONS_EXT if (!strcmp(name, "GL_VERTEX_SHADER_INSTRUCTIONS_EXT")) { return GL_VERTEX_SHADER_INSTRUCTIONS_EXT; } +#endif +#ifdef GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT if (!strcmp(name, "GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT")) { return GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT; } +#endif return _GL_UNDEFINED; case 34: +#ifdef GL_AMD_shader_stencil_value_export +if (!strcmp(name, "GL_AMD_shader_stencil_value_export")) +{ + return GL_AMD_shader_stencil_value_export; +} +#endif +#ifdef GL_ANY_SAMPLES_PASSED_CONSERVATIVE if (!strcmp(name, "GL_ANY_SAMPLES_PASSED_CONSERVATIVE")) { return GL_ANY_SAMPLES_PASSED_CONSERVATIVE; } +#endif +#ifdef GL_APPLE_vertex_program_evaluators if (!strcmp(name, "GL_APPLE_vertex_program_evaluators")) { return GL_APPLE_vertex_program_evaluators; } +#endif +#ifdef GL_ARB_compute_variable_group_size if (!strcmp(name, "GL_ARB_compute_variable_group_size")) { return GL_ARB_compute_variable_group_size; } +#endif +#ifdef GL_ARB_conditional_render_inverted +if (!strcmp(name, "GL_ARB_conditional_render_inverted")) +{ + return GL_ARB_conditional_render_inverted; +} +#endif +#ifdef GL_ARB_shader_viewport_layer_array +if (!strcmp(name, "GL_ARB_shader_viewport_layer_array")) +{ + return GL_ARB_shader_viewport_layer_array; +} +#endif +#ifdef GL_ARB_texture_buffer_object_rgb32 if (!strcmp(name, "GL_ARB_texture_buffer_object_rgb32")) { return GL_ARB_texture_buffer_object_rgb32; } +#endif +#ifdef GL_ARB_texture_storage_multisample if (!strcmp(name, "GL_ARB_texture_storage_multisample")) { return GL_ARB_texture_storage_multisample; } +#endif +#ifdef GL_ARB_vertex_type_10f_11f_11f_rev if (!strcmp(name, "GL_ARB_vertex_type_10f_11f_11f_rev")) { return GL_ARB_vertex_type_10f_11f_11f_rev; } +#endif +#ifdef GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE if (!strcmp(name, "GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE")) { return GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE; } +#endif +#ifdef GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE if (!strcmp(name, "GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE")) { return GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE; } +#endif +#ifdef GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE +if (!strcmp(name, "GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE")) +{ + return GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE; +} +#endif +#ifdef GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE +if (!strcmp(name, "GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE")) +{ + return GL_COMPRESSED_RGBA_S3TC_DXT1_ANGLE; +} +#endif +#ifdef GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE +if (!strcmp(name, "GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE")) +{ + return GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE; +} +#endif +#ifdef GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE +if (!strcmp(name, "GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE")) +{ + return GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE; +} +#endif +#ifdef GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE if (!strcmp(name, "GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE")) { return GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE; } +#endif +#ifdef GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE if (!strcmp(name, "GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE")) { return GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE; } +#endif +#ifdef GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE +if (!strcmp(name, "GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE")) +{ + return GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE; +} +#endif +#ifdef GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE +if (!strcmp(name, "GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE")) +{ + return GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE; +} +#endif +#ifdef GL_COMPRESSED_SIGNED_RED_RGTC1_EXT if (!strcmp(name, "GL_COMPRESSED_SIGNED_RED_RGTC1_EXT")) { return GL_COMPRESSED_SIGNED_RED_RGTC1_EXT; } +#endif +#ifdef GL_COMPRESSED_SLUMINANCE_ALPHA_EXT if (!strcmp(name, "GL_COMPRESSED_SLUMINANCE_ALPHA_EXT")) { return GL_COMPRESSED_SLUMINANCE_ALPHA_EXT; } +#endif +#ifdef GL_CULL_VERTEX_OBJECT_POSITION_EXT if (!strcmp(name, "GL_CULL_VERTEX_OBJECT_POSITION_EXT")) { return GL_CULL_VERTEX_OBJECT_POSITION_EXT; } +#endif +#ifdef GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV if (!strcmp(name, "GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV")) { return GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV; } +#endif +#ifdef GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV if (!strcmp(name, "GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV")) { return GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV; } +#endif +#ifdef GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV if (!strcmp(name, "GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV")) { return GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV; } +#endif +#ifdef GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM if (!strcmp(name, "GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM")) { return GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM; } +#endif +#ifdef GL_EVAL_FRACTIONAL_TESSELLATION_NV if (!strcmp(name, "GL_EVAL_FRACTIONAL_TESSELLATION_NV")) { return GL_EVAL_FRACTIONAL_TESSELLATION_NV; } +#endif +#ifdef GL_EXT_pixel_transform_color_table if (!strcmp(name, "GL_EXT_pixel_transform_color_table")) { return GL_EXT_pixel_transform_color_table; } +#endif +#ifdef GL_EXT_shader_image_load_formatted +if (!strcmp(name, "GL_EXT_shader_image_load_formatted")) +{ + return GL_EXT_shader_image_load_formatted; +} +#endif +#ifdef GL_FOG_COORDINATE_ARRAY_STRIDE_EXT if (!strcmp(name, "GL_FOG_COORDINATE_ARRAY_STRIDE_EXT")) { return GL_FOG_COORDINATE_ARRAY_STRIDE_EXT; } +#endif +#ifdef GL_FONT_UNDERLINE_THICKNESS_BIT_NV if (!strcmp(name, "GL_FONT_UNDERLINE_THICKNESS_BIT_NV")) { return GL_FONT_UNDERLINE_THICKNESS_BIT_NV; } +#endif +#ifdef GL_FRAGMENT_SHADER_DERIVATIVE_HINT if (!strcmp(name, "GL_FRAGMENT_SHADER_DERIVATIVE_HINT")) { return GL_FRAGMENT_SHADER_DERIVATIVE_HINT; } +#endif +#ifdef GL_FRAGMENT_SHADER_INVOCATIONS_ARB +if (!strcmp(name, "GL_FRAGMENT_SHADER_INVOCATIONS_ARB")) +{ + return GL_FRAGMENT_SHADER_INVOCATIONS_ARB; +} +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE")) { return GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE; } +#endif +#ifdef GL_GLYPH_VERTICAL_BEARING_X_BIT_NV if (!strcmp(name, "GL_GLYPH_VERTICAL_BEARING_X_BIT_NV")) { return GL_GLYPH_VERTICAL_BEARING_X_BIT_NV; } +#endif +#ifdef GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV if (!strcmp(name, "GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV")) { return GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV; } +#endif +#ifdef GL_IMAGE_FORMAT_COMPATIBILITY_TYPE if (!strcmp(name, "GL_IMAGE_FORMAT_COMPATIBILITY_TYPE")) { return GL_IMAGE_FORMAT_COMPATIBILITY_TYPE; } +#endif +#ifdef GL_INTENSITY16_EXTENDED_RANGE_SGIX if (!strcmp(name, "GL_INTENSITY16_EXTENDED_RANGE_SGIX")) { return GL_INTENSITY16_EXTENDED_RANGE_SGIX; } +#endif +#ifdef GL_LUMINANCE16_ALPHA16_SIGNED_SGIX if (!strcmp(name, "GL_LUMINANCE16_ALPHA16_SIGNED_SGIX")) { return GL_LUMINANCE16_ALPHA16_SIGNED_SGIX; } +#endif +#ifdef GL_LUMINANCE16_EXTENDED_RANGE_SGIX if (!strcmp(name, "GL_LUMINANCE16_EXTENDED_RANGE_SGIX")) { return GL_LUMINANCE16_EXTENDED_RANGE_SGIX; } +#endif +#ifdef GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI if (!strcmp(name, "GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI")) { return GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI; } +#endif +#ifdef GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS if (!strcmp(name, "GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS")) { return GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS; } +#endif +#ifdef GL_MAX_FRAGMENT_UNIFORM_COMPONENTS if (!strcmp(name, "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS")) { return GL_MAX_FRAGMENT_UNIFORM_COMPONENTS; } +#endif +#ifdef GL_MAX_GEOMETRY_SHADER_INVOCATIONS if (!strcmp(name, "GL_MAX_GEOMETRY_SHADER_INVOCATIONS")) { return GL_MAX_GEOMETRY_SHADER_INVOCATIONS; } +#endif +#ifdef GL_MAX_GEOMETRY_UNIFORM_COMPONENTS if (!strcmp(name, "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS")) { return GL_MAX_GEOMETRY_UNIFORM_COMPONENTS; } +#endif +#ifdef GL_MAX_SHADER_COMPILER_THREADS_ARB +if (!strcmp(name, "GL_MAX_SHADER_COMPILER_THREADS_ARB")) +{ + return GL_MAX_SHADER_COMPILER_THREADS_ARB; +} +#endif +#ifdef GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS if (!strcmp(name, "GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS")) { return GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS; } +#endif +#ifdef GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS if (!strcmp(name, "GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS")) { return GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS; } +#endif +#ifdef GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS if (!strcmp(name, "GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS")) { return GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS; } +#endif +#ifdef GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV if (!strcmp(name, "GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV")) { return GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV; } +#endif +#ifdef GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE if (!strcmp(name, "GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE")) { return GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE; } +#endif +#ifdef GL_NORMAL_ARRAY_BUFFER_BINDING_ARB if (!strcmp(name, "GL_NORMAL_ARRAY_BUFFER_BINDING_ARB")) { return GL_NORMAL_ARRAY_BUFFER_BINDING_ARB; } +#endif +#ifdef GL_NV_bindless_multi_draw_indirect if (!strcmp(name, "GL_NV_bindless_multi_draw_indirect")) { return GL_NV_bindless_multi_draw_indirect; } +#endif +#ifdef GL_NV_shader_storage_buffer_object if (!strcmp(name, "GL_NV_shader_storage_buffer_object")) { return GL_NV_shader_storage_buffer_object; } +#endif +#ifdef GL_NV_vertex_buffer_unified_memory if (!strcmp(name, "GL_NV_vertex_buffer_unified_memory")) { return GL_NV_vertex_buffer_unified_memory; } +#endif +#ifdef GL_OBJECT_SHADER_SOURCE_LENGTH_ARB if (!strcmp(name, "GL_OBJECT_SHADER_SOURCE_LENGTH_ARB")) { return GL_OBJECT_SHADER_SOURCE_LENGTH_ARB; } +#endif +#ifdef GL_OES_compressed_paletted_texture if (!strcmp(name, "GL_OES_compressed_paletted_texture")) { return GL_OES_compressed_paletted_texture; } +#endif +#ifdef GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV if (!strcmp(name, "GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV")) { return GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV; } +#endif +#ifdef GL_PIXEL_UNPACK_BUFFER_BINDING_ARB if (!strcmp(name, "GL_PIXEL_UNPACK_BUFFER_BINDING_ARB")) { return GL_PIXEL_UNPACK_BUFFER_BINDING_ARB; } +#endif +#ifdef GL_PIXEL_UNPACK_BUFFER_BINDING_EXT if (!strcmp(name, "GL_PIXEL_UNPACK_BUFFER_BINDING_EXT")) { return GL_PIXEL_UNPACK_BUFFER_BINDING_EXT; } +#endif +#ifdef GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI if (!strcmp(name, "GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI")) { return GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI; } +#endif +#ifdef GL_POST_COLOR_MATRIX_RED_SCALE_SGI if (!strcmp(name, "GL_POST_COLOR_MATRIX_RED_SCALE_SGI")) { return GL_POST_COLOR_MATRIX_RED_SCALE_SGI; } +#endif +#ifdef GL_POST_CONVOLUTION_ALPHA_BIAS_EXT if (!strcmp(name, "GL_POST_CONVOLUTION_ALPHA_BIAS_EXT")) { return GL_POST_CONVOLUTION_ALPHA_BIAS_EXT; } +#endif +#ifdef GL_POST_CONVOLUTION_BLUE_SCALE_EXT if (!strcmp(name, "GL_POST_CONVOLUTION_BLUE_SCALE_EXT")) { return GL_POST_CONVOLUTION_BLUE_SCALE_EXT; } +#endif +#ifdef GL_POST_CONVOLUTION_GREEN_BIAS_EXT if (!strcmp(name, "GL_POST_CONVOLUTION_GREEN_BIAS_EXT")) { return GL_POST_CONVOLUTION_GREEN_BIAS_EXT; } +#endif +#ifdef GL_PROGRAMMABLE_SAMPLE_LOCATION_NV +if (!strcmp(name, "GL_PROGRAMMABLE_SAMPLE_LOCATION_NV")) +{ + return GL_PROGRAMMABLE_SAMPLE_LOCATION_NV; +} +#endif +#ifdef GL_PROGRAM_BINARY_RETRIEVABLE_HINT if (!strcmp(name, "GL_PROGRAM_BINARY_RETRIEVABLE_HINT")) { return GL_PROGRAM_BINARY_RETRIEVABLE_HINT; } +#endif +#ifdef GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB if (!strcmp(name, "GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB")) { return GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB; } +#endif +#ifdef GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB if (!strcmp(name, "GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB")) { return GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB; } +#endif +#ifdef GL_READ_PIXEL_DATA_RANGE_LENGTH_NV if (!strcmp(name, "GL_READ_PIXEL_DATA_RANGE_LENGTH_NV")) { return GL_READ_PIXEL_DATA_RANGE_LENGTH_NV; } +#endif +#ifdef GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN if (!strcmp(name, "GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN")) { return GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN; } +#endif +#ifdef GL_RESET_NOTIFICATION_STRATEGY_ARB if (!strcmp(name, "GL_RESET_NOTIFICATION_STRATEGY_ARB")) { return GL_RESET_NOTIFICATION_STRATEGY_ARB; } +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_LENGTH_NV if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_LENGTH_NV")) { return GL_SECONDARY_COLOR_ARRAY_LENGTH_NV; } +#endif +#ifdef GL_SGIX_fragment_specular_lighting if (!strcmp(name, "GL_SGIX_fragment_specular_lighting")) { return GL_SGIX_fragment_specular_lighting; } +#endif +#ifdef GL_SHADER_IMAGE_ACCESS_BARRIER_BIT if (!strcmp(name, "GL_SHADER_IMAGE_ACCESS_BARRIER_BIT")) { return GL_SHADER_IMAGE_ACCESS_BARRIER_BIT; } +#endif +#ifdef GL_TESS_CONTROL_SHADER_PATCHES_ARB +if (!strcmp(name, "GL_TESS_CONTROL_SHADER_PATCHES_ARB")) +{ + return GL_TESS_CONTROL_SHADER_PATCHES_ARB; +} +#endif +#ifdef GL_TESS_CONTROL_SUBROUTINE_UNIFORM if (!strcmp(name, "GL_TESS_CONTROL_SUBROUTINE_UNIFORM")) { return GL_TESS_CONTROL_SUBROUTINE_UNIFORM; } +#endif +#ifdef GL_TEXTURE_BINDING_RENDERBUFFER_NV if (!strcmp(name, "GL_TEXTURE_BINDING_RENDERBUFFER_NV")) { return GL_TEXTURE_BINDING_RENDERBUFFER_NV; } +#endif +#ifdef GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT if (!strcmp(name, "GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT")) { return GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT; } +#endif +#ifdef GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT if (!strcmp(name, "GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT")) { return GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_POINTER_EXT if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_POINTER_EXT")) { return GL_TEXTURE_COORD_ARRAY_POINTER_EXT; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB")) { return GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT")) { return GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB")) { return GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT")) { return GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB")) { return GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT")) { return GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB")) { return GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT")) { return GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB")) { return GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT")) { return GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB")) { return GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB; } +#endif +#ifdef GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT if (!strcmp(name, "GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT")) { return GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_INDEX if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_INDEX")) { return GL_TRANSFORM_FEEDBACK_BUFFER_INDEX; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_START if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_START")) { return GL_TRANSFORM_FEEDBACK_BUFFER_START; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB +if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB")) +{ + return GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB; +} +#endif +#ifdef GL_TRANSFORM_FEEDBACK_VARYINGS_EXT if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_VARYINGS_EXT")) { return GL_TRANSFORM_FEEDBACK_VARYINGS_EXT; } +#endif +#ifdef GL_TRANSPOSE_PROJECTION_MATRIX_ARB if (!strcmp(name, "GL_TRANSPOSE_PROJECTION_MATRIX_ARB")) { return GL_TRANSPOSE_PROJECTION_MATRIX_ARB; } +#endif +#ifdef GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT if (!strcmp(name, "GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT")) { return GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT")) { return GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT")) { return GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD")) { return GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT")) { return GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT; } +#endif +#ifdef GL_VERTEX_ARRAY_BUFFER_BINDING_ARB if (!strcmp(name, "GL_VERTEX_ARRAY_BUFFER_BINDING_ARB")) { return GL_VERTEX_ARRAY_BUFFER_BINDING_ARB; } +#endif +#ifdef GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE if (!strcmp(name, "GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE")) { return GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE; } +#endif +#ifdef GL_VERTEX_ARRAY_STORAGE_HINT_APPLE if (!strcmp(name, "GL_VERTEX_ARRAY_STORAGE_HINT_APPLE")) { return GL_VERTEX_ARRAY_STORAGE_HINT_APPLE; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT")) { return GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB")) { return GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB")) { return GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT")) { return GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB")) { return GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB; } +#endif +#ifdef GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE if (!strcmp(name, "GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE")) { return GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE; } +#endif +#ifdef GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE if (!strcmp(name, "GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE")) { return GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE; } +#endif +#ifdef GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT if (!strcmp(name, "GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT")) { return GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT; } +#endif +#ifdef GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV if (!strcmp(name, "GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV")) { return GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV; } +#endif +#ifdef GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV if (!strcmp(name, "GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV")) { return GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV; } +#endif +#ifdef GL_VIEWPORT_INDEX_PROVOKING_VERTEX if (!strcmp(name, "GL_VIEWPORT_INDEX_PROVOKING_VERTEX")) { return GL_VIEWPORT_INDEX_PROVOKING_VERTEX; } +#endif +#ifdef GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB if (!strcmp(name, "GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB")) { return GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB; } +#endif return _GL_UNDEFINED; case 35: +#ifdef GL_AMD_seamless_cubemap_per_texture if (!strcmp(name, "GL_AMD_seamless_cubemap_per_texture")) { return GL_AMD_seamless_cubemap_per_texture; } +#endif +#ifdef GL_AMD_vertex_shader_viewport_index if (!strcmp(name, "GL_AMD_vertex_shader_viewport_index")) { return GL_AMD_vertex_shader_viewport_index; } +#endif +#ifdef GL_ARB_seamless_cubemap_per_texture if (!strcmp(name, "GL_ARB_seamless_cubemap_per_texture")) { return GL_ARB_seamless_cubemap_per_texture; } +#endif +#ifdef GL_ARB_shader_storage_buffer_object if (!strcmp(name, "GL_ARB_shader_storage_buffer_object")) { return GL_ARB_shader_storage_buffer_object; } +#endif +#ifdef GL_ARB_shader_texture_image_samples +if (!strcmp(name, "GL_ARB_shader_texture_image_samples")) +{ + return GL_ARB_shader_texture_image_samples; +} +#endif +#ifdef GL_ARB_texture_mirror_clamp_to_edge if (!strcmp(name, "GL_ARB_texture_mirror_clamp_to_edge")) { return GL_ARB_texture_mirror_clamp_to_edge; } +#endif +#ifdef GL_ARB_transform_feedback_instanced if (!strcmp(name, "GL_ARB_transform_feedback_instanced")) { return GL_ARB_transform_feedback_instanced; } +#endif +#ifdef GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT if (!strcmp(name, "GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT")) { return GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT; } +#endif +#ifdef GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT if (!strcmp(name, "GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT")) { return GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT; } +#endif +#ifdef GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT if (!strcmp(name, "GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT")) { return GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC")) { return GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC; } +#endif +#ifdef GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM if (!strcmp(name, "GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM")) { return GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM; } +#endif +#ifdef GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD if (!strcmp(name, "GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD")) { return GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD; } +#endif +#ifdef GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH if (!strcmp(name, "GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH")) { return GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH; } +#endif +#ifdef GL_DEBUG_SOURCE_SHADER_COMPILER_ARB if (!strcmp(name, "GL_DEBUG_SOURCE_SHADER_COMPILER_ARB")) { return GL_DEBUG_SOURCE_SHADER_COMPILER_ARB; } +#endif +#ifdef GL_DISPATCH_INDIRECT_BUFFER_BINDING if (!strcmp(name, "GL_DISPATCH_INDIRECT_BUFFER_BINDING")) { return GL_DISPATCH_INDIRECT_BUFFER_BINDING; } +#endif +#ifdef GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV if (!strcmp(name, "GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV")) { return GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV; } +#endif +#ifdef GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB if (!strcmp(name, "GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB")) { return GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB; } +#endif +#ifdef GL_FOG_COORDINATE_ARRAY_POINTER_EXT if (!strcmp(name, "GL_FOG_COORDINATE_ARRAY_POINTER_EXT")) { return GL_FOG_COORDINATE_ARRAY_POINTER_EXT; } +#endif +#ifdef GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT if (!strcmp(name, "GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT")) { return GL_FRAGMENT_COLOR_MATERIAL_FACE_EXT; } +#endif +#ifdef GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT if (!strcmp(name, "GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT")) { return GL_FRAGMENT_LIGHT_MODEL_AMBIENT_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE")) { return GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE; } +#endif +#ifdef GL_IMPLEMENTATION_COLOR_READ_FORMAT if (!strcmp(name, "GL_IMPLEMENTATION_COLOR_READ_FORMAT")) { return GL_IMPLEMENTATION_COLOR_READ_FORMAT; } +#endif +#ifdef GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY if (!strcmp(name, "GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY")) { return GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY; } +#endif +#ifdef GL_KHR_texture_compression_astc_hdr +if (!strcmp(name, "GL_KHR_texture_compression_astc_hdr")) +{ + return GL_KHR_texture_compression_astc_hdr; +} +#endif +#ifdef GL_KHR_texture_compression_astc_ldr if (!strcmp(name, "GL_KHR_texture_compression_astc_ldr")) { return GL_KHR_texture_compression_astc_ldr; } +#endif +#ifdef GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI if (!strcmp(name, "GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI")) { return GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI; } +#endif +#ifdef GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS if (!strcmp(name, "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS")) { return GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS; } +#endif +#ifdef GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB if (!strcmp(name, "GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB")) { return GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB; } +#endif +#ifdef GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB if (!strcmp(name, "GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB")) { return GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB; } +#endif +#ifdef GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT if (!strcmp(name, "GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT")) { return GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT; } +#endif +#ifdef GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS if (!strcmp(name, "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS")) { return GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS; } +#endif +#ifdef GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB")) { return GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV if (!strcmp(name, "GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV")) { return GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV; } +#endif +#ifdef GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV +if (!strcmp(name, "GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV")) +{ + return GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV; +} +#endif +#ifdef GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV if (!strcmp(name, "GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV")) { return GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV; } +#endif +#ifdef GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB")) { return GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_RESULT_COMPONENTS_NV if (!strcmp(name, "GL_MAX_PROGRAM_RESULT_COMPONENTS_NV")) { return GL_MAX_PROGRAM_RESULT_COMPONENTS_NV; } +#endif +#ifdef GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB")) { return GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB")) { return GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB; } +#endif +#ifdef GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS if (!strcmp(name, "GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS")) { return GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS; } +#endif +#ifdef GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS if (!strcmp(name, "GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS")) { return GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS; } +#endif +#ifdef GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT if (!strcmp(name, "GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT")) { return GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT; } +#endif +#ifdef GL_MAX_VERTEX_SHADER_INVARIANTS_EXT if (!strcmp(name, "GL_MAX_VERTEX_SHADER_INVARIANTS_EXT")) { return GL_MAX_VERTEX_SHADER_INVARIANTS_EXT; } +#endif +#ifdef GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS if (!strcmp(name, "GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS")) { return GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS; } +#endif +#ifdef GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV +if (!strcmp(name, "GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV")) +{ + return GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV; +} +#endif +#ifdef GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV +if (!strcmp(name, "GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV")) +{ + return GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV; +} +#endif +#ifdef GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB +if (!strcmp(name, "GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB")) +{ + return GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB; +} +#endif +#ifdef GL_NV_sample_mask_override_coverage +if (!strcmp(name, "GL_NV_sample_mask_override_coverage")) +{ + return GL_NV_sample_mask_override_coverage; +} +#endif +#ifdef GL_NV_uniform_buffer_unified_memory +if (!strcmp(name, "GL_NV_uniform_buffer_unified_memory")) +{ + return GL_NV_uniform_buffer_unified_memory; +} +#endif +#ifdef GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV if (!strcmp(name, "GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV")) { return GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV; } +#endif +#ifdef GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI if (!strcmp(name, "GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI")) { return GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI; } +#endif +#ifdef GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI if (!strcmp(name, "GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI")) { return GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI; } +#endif +#ifdef GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI if (!strcmp(name, "GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI")) { return GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI; } +#endif +#ifdef GL_POST_CONVOLUTION_ALPHA_SCALE_EXT if (!strcmp(name, "GL_POST_CONVOLUTION_ALPHA_SCALE_EXT")) { return GL_POST_CONVOLUTION_ALPHA_SCALE_EXT; } +#endif +#ifdef GL_POST_CONVOLUTION_COLOR_TABLE_SGI if (!strcmp(name, "GL_POST_CONVOLUTION_COLOR_TABLE_SGI")) { return GL_POST_CONVOLUTION_COLOR_TABLE_SGI; } +#endif +#ifdef GL_POST_CONVOLUTION_GREEN_SCALE_EXT if (!strcmp(name, "GL_POST_CONVOLUTION_GREEN_SCALE_EXT")) { return GL_POST_CONVOLUTION_GREEN_SCALE_EXT; } +#endif +#ifdef GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB +if (!strcmp(name, "GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB")) +{ + return GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB; +} +#endif +#ifdef GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB if (!strcmp(name, "GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB")) { return GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB; } +#endif +#ifdef GL_QUERY_BY_REGION_NO_WAIT_INVERTED +if (!strcmp(name, "GL_QUERY_BY_REGION_NO_WAIT_INVERTED")) +{ + return GL_QUERY_BY_REGION_NO_WAIT_INVERTED; +} +#endif +#ifdef GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD +if (!strcmp(name, "GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD")) +{ + return GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD; +} +#endif +#ifdef GL_READ_PIXEL_DATA_RANGE_POINTER_NV if (!strcmp(name, "GL_READ_PIXEL_DATA_RANGE_POINTER_NV")) { return GL_READ_PIXEL_DATA_RANGE_POINTER_NV; } +#endif +#ifdef GL_RENDERBUFFER_COVERAGE_SAMPLES_NV if (!strcmp(name, "GL_RENDERBUFFER_COVERAGE_SAMPLES_NV")) { return GL_RENDERBUFFER_COVERAGE_SAMPLES_NV; } +#endif +#ifdef GL_RENDERBUFFER_INTERNAL_FORMAT_EXT if (!strcmp(name, "GL_RENDERBUFFER_INTERNAL_FORMAT_EXT")) { return GL_RENDERBUFFER_INTERNAL_FORMAT_EXT; } +#endif +#ifdef GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV +if (!strcmp(name, "GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV")) +{ + return GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV; +} +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV")) { return GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV; } +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT")) { return GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT; } +#endif +#ifdef GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI if (!strcmp(name, "GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI")) { return GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI; } +#endif +#ifdef GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI if (!strcmp(name, "GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI")) { return GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE")) { return GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED")) { return GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE")) { return GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE; } +#endif +#ifdef GL_UNSIGNED_INT_10F_11F_11F_REV_EXT if (!strcmp(name, "GL_UNSIGNED_INT_10F_11F_11F_REV_EXT")) { return GL_UNSIGNED_INT_10F_11F_11F_REV_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT")) { return GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT; } +#endif +#ifdef GL_VERTEX_ARRAY_RANGE_POINTER_APPLE if (!strcmp(name, "GL_VERTEX_ARRAY_RANGE_POINTER_APPLE")) { return GL_VERTEX_ARRAY_RANGE_POINTER_APPLE; } +#endif +#ifdef GL_VIDEO_COLOR_CONVERSION_MATRIX_NV if (!strcmp(name, "GL_VIDEO_COLOR_CONVERSION_MATRIX_NV")) { return GL_VIDEO_COLOR_CONVERSION_MATRIX_NV; } +#endif +#ifdef GL_VIDEO_COLOR_CONVERSION_OFFSET_NV if (!strcmp(name, "GL_VIDEO_COLOR_CONVERSION_OFFSET_NV")) { return GL_VIDEO_COLOR_CONVERSION_OFFSET_NV; } +#endif +#ifdef GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV if (!strcmp(name, "GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV")) { return GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV; } +#endif return _GL_UNDEFINED; case 36: +#ifdef GL_ARB_robust_buffer_access_behavior if (!strcmp(name, "GL_ARB_robust_buffer_access_behavior")) { return GL_ARB_robust_buffer_access_behavior; } +#endif +#ifdef GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV if (!strcmp(name, "GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV")) { return GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV; } +#endif +#ifdef GL_CONTEXT_COMPATIBILITY_PROFILE_BIT if (!strcmp(name, "GL_CONTEXT_COMPATIBILITY_PROFILE_BIT")) { return GL_CONTEXT_COMPATIBILITY_PROFILE_BIT; } +#endif +#ifdef GL_COVERAGE_MODULATION_TABLE_SIZE_NV +if (!strcmp(name, "GL_COVERAGE_MODULATION_TABLE_SIZE_NV")) +{ + return GL_COVERAGE_MODULATION_TABLE_SIZE_NV; +} +#endif +#ifdef GL_COVERAGE_MODULATION_TABLE_SIZE_NV +if (!strcmp(name, "GL_COVERAGE_MODULATION_TABLE_SIZE_NV")) +{ + return GL_COVERAGE_MODULATION_TABLE_SIZE_NV; +} +#endif +#ifdef GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB if (!strcmp(name, "GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB")) { return GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB; } +#endif +#ifdef GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV if (!strcmp(name, "GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV")) { return GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV; } +#endif +#ifdef GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV if (!strcmp(name, "GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV")) { return GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV; } +#endif +#ifdef GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT if (!strcmp(name, "GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT")) { return GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE")) { return GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE")) { return GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE")) { return GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT")) { return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; } +#endif +#ifdef GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV if (!strcmp(name, "GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV")) { return GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV; } +#endif +#ifdef GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV if (!strcmp(name, "GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV")) { return GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV; } +#endif +#ifdef GL_INVALID_FRAMEBUFFER_OPERATION_EXT if (!strcmp(name, "GL_INVALID_FRAMEBUFFER_OPERATION_EXT")) { return GL_INVALID_FRAMEBUFFER_OPERATION_EXT; } +#endif +#ifdef GL_KHR_robust_buffer_access_behavior +if (!strcmp(name, "GL_KHR_robust_buffer_access_behavior")) +{ + return GL_KHR_robust_buffer_access_behavior; +} +#endif +#ifdef GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE if (!strcmp(name, "GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE")) { return GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE; } +#endif +#ifdef GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS if (!strcmp(name, "GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS")) { return GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS; } +#endif +#ifdef GL_MAX_FRAGMENT_INTERPOLATION_OFFSET if (!strcmp(name, "GL_MAX_FRAGMENT_INTERPOLATION_OFFSET")) { return GL_MAX_FRAGMENT_INTERPOLATION_OFFSET; } +#endif +#ifdef GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV if (!strcmp(name, "GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV")) { return GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV; } +#endif +#ifdef GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB")) { return GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB")) { return GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET if (!strcmp(name, "GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET")) { return GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET; } +#endif +#ifdef GL_MAX_TESS_CONTROL_INPUT_COMPONENTS if (!strcmp(name, "GL_MAX_TESS_CONTROL_INPUT_COMPONENTS")) { return GL_MAX_TESS_CONTROL_INPUT_COMPONENTS; } +#endif +#ifdef GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV if (!strcmp(name, "GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV")) { return GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV; } +#endif +#ifdef GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS if (!strcmp(name, "GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS")) { return GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS; } +#endif +#ifdef GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET if (!strcmp(name, "GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET")) { return GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET; } +#endif +#ifdef GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB if (!strcmp(name, "GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB")) { return GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB; } +#endif +#ifdef GL_MAX_VERTEX_VARYING_COMPONENTS_ARB if (!strcmp(name, "GL_MAX_VERTEX_VARYING_COMPONENTS_ARB")) { return GL_MAX_VERTEX_VARYING_COMPONENTS_ARB; } +#endif +#ifdef GL_MAX_VERTEX_VARYING_COMPONENTS_EXT if (!strcmp(name, "GL_MAX_VERTEX_VARYING_COMPONENTS_EXT")) { return GL_MAX_VERTEX_VARYING_COMPONENTS_EXT; } +#endif +#ifdef GL_MIN_FRAGMENT_INTERPOLATION_OFFSET if (!strcmp(name, "GL_MIN_FRAGMENT_INTERPOLATION_OFFSET")) { return GL_MIN_FRAGMENT_INTERPOLATION_OFFSET; } +#endif +#ifdef GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET if (!strcmp(name, "GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET")) { return GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET; } +#endif +#ifdef GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV if (!strcmp(name, "GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV")) { return GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV; } +#endif +#ifdef GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL +if (!strcmp(name, "GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL")) +{ + return GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL; +} +#endif +#ifdef GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI if (!strcmp(name, "GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI")) { return GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI; } +#endif +#ifdef GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI if (!strcmp(name, "GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI")) { return GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI; } +#endif +#ifdef GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI if (!strcmp(name, "GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI")) { return GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI; } +#endif +#ifdef GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI if (!strcmp(name, "GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI")) { return GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI; } +#endif +#ifdef GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT +if (!strcmp(name, "GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT")) +{ + return GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT; +} +#endif +#ifdef GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT +if (!strcmp(name, "GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT")) +{ + return GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT; +} +#endif +#ifdef GL_REFERENCED_BY_TESS_CONTROL_SHADER if (!strcmp(name, "GL_REFERENCED_BY_TESS_CONTROL_SHADER")) { return GL_REFERENCED_BY_TESS_CONTROL_SHADER; } +#endif +#ifdef GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV if (!strcmp(name, "GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV")) { return GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV; } +#endif +#ifdef GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN if (!strcmp(name, "GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN")) { return GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN; } +#endif +#ifdef GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB if (!strcmp(name, "GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB")) { return GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB; } +#endif +#ifdef GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB +if (!strcmp(name, "GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB")) +{ + return GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB; +} +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_POINTER_EXT if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_POINTER_EXT")) { return GL_SECONDARY_COLOR_ARRAY_POINTER_EXT; } +#endif +#ifdef GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV +if (!strcmp(name, "GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV")) +{ + return GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV; +} +#endif +#ifdef GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV +if (!strcmp(name, "GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV")) +{ + return GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV; +} +#endif +#ifdef GL_TEXTURE_BUFFER_DATA_STORE_BINDING if (!strcmp(name, "GL_TEXTURE_BUFFER_DATA_STORE_BINDING")) { return GL_TEXTURE_BUFFER_DATA_STORE_BINDING; } +#endif +#ifdef GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB if (!strcmp(name, "GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB")) { return GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_BINDING if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING")) { return GL_TRANSFORM_FEEDBACK_BUFFER_BINDING; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV")) { return GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV")) { return GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE")) { return GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY")) { return GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT")) { return GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT")) { return GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE")) { return GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE; } +#endif +#ifdef GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT if (!strcmp(name, "GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT")) { return GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT; } +#endif +#ifdef GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV if (!strcmp(name, "GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV")) { return GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV; } +#endif +#ifdef GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV if (!strcmp(name, "GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV")) { return GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV; } +#endif return _GL_UNDEFINED; case 37: +#ifdef GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI if (!strcmp(name, "GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI")) { return GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI; } +#endif +#ifdef GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT if (!strcmp(name, "GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT")) { return GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT; } +#endif +#ifdef GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB if (!strcmp(name, "GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB")) { return GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB; } +#endif +#ifdef GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD if (!strcmp(name, "GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD")) { return GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD; } +#endif +#ifdef GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB if (!strcmp(name, "GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB")) { return GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB; } +#endif +#ifdef GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB if (!strcmp(name, "GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB")) { return GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB; } +#endif +#ifdef GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD if (!strcmp(name, "GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD")) { return GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD; } +#endif +#ifdef GL_FRAGMENT_INTERPOLATION_OFFSET_BITS if (!strcmp(name, "GL_FRAGMENT_INTERPOLATION_OFFSET_BITS")) { return GL_FRAGMENT_INTERPOLATION_OFFSET_BITS; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB")) { return GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT")) { return GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME")) { return GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE")) { return GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER")) { return GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT")) { return GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE")) { return GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER")) { return GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER; } +#endif +#ifdef GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX if (!strcmp(name, "GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX")) { return GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX; } +#endif +#ifdef GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX if (!strcmp(name, "GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX")) { return GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX; } +#endif +#ifdef GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE if (!strcmp(name, "GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE")) { return GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE; } +#endif +#ifdef GL_IMPLEMENTATION_COLOR_READ_TYPE_OES if (!strcmp(name, "GL_IMPLEMENTATION_COLOR_READ_TYPE_OES")) { return GL_IMPLEMENTATION_COLOR_READ_TYPE_OES; } +#endif +#ifdef GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT if (!strcmp(name, "GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT")) { return GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT; } +#endif +#ifdef GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS if (!strcmp(name, "GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS")) { return GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS; } +#endif +#ifdef GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS if (!strcmp(name, "GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS")) { return GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS; } +#endif +#ifdef GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS if (!strcmp(name, "GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS")) { return GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS; } +#endif +#ifdef GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS if (!strcmp(name, "GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS")) { return GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS; } +#endif +#ifdef GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT if (!strcmp(name, "GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT")) { return GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT; } +#endif +#ifdef GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS if (!strcmp(name, "GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS")) { return GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS; } +#endif +#ifdef GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT if (!strcmp(name, "GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT")) { return GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT; } +#endif +#ifdef GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS if (!strcmp(name, "GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS")) { return GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS; } +#endif +#ifdef GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB if (!strcmp(name, "GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB")) { return GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB if (!strcmp(name, "GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB")) { return GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB if (!strcmp(name, "GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB")) { return GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB; } +#endif +#ifdef GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS if (!strcmp(name, "GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS")) { return GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS; } +#endif +#ifdef GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS if (!strcmp(name, "GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS")) { return GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS; } +#endif +#ifdef GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS if (!strcmp(name, "GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS")) { return GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS; } +#endif +#ifdef GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS if (!strcmp(name, "GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS")) { return GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS; } +#endif +#ifdef GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT if (!strcmp(name, "GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT")) { return GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT; } +#endif +#ifdef GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB if (!strcmp(name, "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB")) { return GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB; } +#endif +#ifdef GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV +if (!strcmp(name, "GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV")) +{ + return GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV; +} +#endif +#ifdef GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV +if (!strcmp(name, "GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV")) +{ + return GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV; +} +#endif +#ifdef GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB if (!strcmp(name, "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB")) { return GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB; } +#endif +#ifdef GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV if (!strcmp(name, "GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV")) { return GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV; } +#endif +#ifdef GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL +if (!strcmp(name, "GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL")) +{ + return GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL; +} +#endif +#ifdef GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL +if (!strcmp(name, "GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL")) +{ + return GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL; +} +#endif +#ifdef GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT if (!strcmp(name, "GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT")) { return GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT; } +#endif +#ifdef GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI if (!strcmp(name, "GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI")) { return GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI; } +#endif +#ifdef GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI if (!strcmp(name, "GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI")) { return GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI; } +#endif +#ifdef GL_PROXY_POST_CONVOLUTION_COLOR_TABLE if (!strcmp(name, "GL_PROXY_POST_CONVOLUTION_COLOR_TABLE")) { return GL_PROXY_POST_CONVOLUTION_COLOR_TABLE; } +#endif +#ifdef GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY if (!strcmp(name, "GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY")) { return GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY; } +#endif +#ifdef GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN if (!strcmp(name, "GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN")) { return GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN; } +#endif +#ifdef GL_TESS_EVALUATION_SUBROUTINE_UNIFORM if (!strcmp(name, "GL_TESS_EVALUATION_SUBROUTINE_UNIFORM")) { return GL_TESS_EVALUATION_SUBROUTINE_UNIFORM; } +#endif +#ifdef GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB if (!strcmp(name, "GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB")) { return GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING")) { return GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT")) { return GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT")) { return GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT")) { return GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_START_NV if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_START_NV")) { return GL_TRANSFORM_FEEDBACK_BUFFER_START_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING")) { return GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB")) { return GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB; } +#endif +#ifdef GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV if (!strcmp(name, "GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV")) { return GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV; } +#endif return _GL_UNDEFINED; case 38: +#ifdef GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS if (!strcmp(name, "GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS")) { return GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS; } +#endif +#ifdef GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL if (!strcmp(name, "GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL")) { return GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL; } +#endif +#ifdef GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT if (!strcmp(name, "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT")) { return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; } +#endif +#ifdef GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT if (!strcmp(name, "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT")) { return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; } +#endif +#ifdef GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT if (!strcmp(name, "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT")) { return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; } +#endif +#ifdef GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV if (!strcmp(name, "GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV")) { return GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV; } +#endif +#ifdef GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV +if (!strcmp(name, "GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV")) +{ + return GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV; +} +#endif +#ifdef GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT if (!strcmp(name, "GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT")) { return GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT; } +#endif +#ifdef GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV if (!strcmp(name, "GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV")) { return GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV; } +#endif +#ifdef GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING if (!strcmp(name, "GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING")) { return GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING; } +#endif +#ifdef GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB if (!strcmp(name, "GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB")) { return GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE")) { return GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE; } +#endif +#ifdef GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS if (!strcmp(name, "GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS")) { return GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS; } +#endif +#ifdef GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX if (!strcmp(name, "GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX")) { return GL_LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX; } +#endif +#ifdef GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS if (!strcmp(name, "GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS")) { return GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS; } +#endif +#ifdef GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB if (!strcmp(name, "GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB")) { return GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB; } +#endif +#ifdef GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV if (!strcmp(name, "GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV")) { return GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV; } +#endif +#ifdef GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS if (!strcmp(name, "GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS")) { return GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS; } +#endif +#ifdef GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB if (!strcmp(name, "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB")) { return GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB; } +#endif +#ifdef GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS if (!strcmp(name, "GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS")) { return GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS; } +#endif +#ifdef GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV if (!strcmp(name, "GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV")) { return GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV; } +#endif +#ifdef GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB if (!strcmp(name, "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB")) { return GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB; } +#endif +#ifdef GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT if (!strcmp(name, "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT")) { return GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT; } +#endif +#ifdef GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB if (!strcmp(name, "GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB")) { return GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB; } +#endif +#ifdef GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT if (!strcmp(name, "GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT")) { return GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT; } +#endif +#ifdef GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB")) { return GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB; } +#endif +#ifdef GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB if (!strcmp(name, "GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB")) { return GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB; } +#endif +#ifdef GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV +if (!strcmp(name, "GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV")) +{ + return GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV; +} +#endif +#ifdef GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS if (!strcmp(name, "GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS")) { return GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS; } +#endif +#ifdef GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS if (!strcmp(name, "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS")) { return GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS; } +#endif +#ifdef GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV if (!strcmp(name, "GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV")) { return GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV; } +#endif +#ifdef GL_NV_blend_equation_advanced_coherent if (!strcmp(name, "GL_NV_blend_equation_advanced_coherent")) { return GL_NV_blend_equation_advanced_coherent; } +#endif +#ifdef GL_NV_framebuffer_multisample_coverage if (!strcmp(name, "GL_NV_framebuffer_multisample_coverage")) { return GL_NV_framebuffer_multisample_coverage; } +#endif +#ifdef GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV if (!strcmp(name, "GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV")) { return GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV; } +#endif +#ifdef GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL +if (!strcmp(name, "GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL")) +{ + return GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL; +} +#endif +#ifdef GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL +if (!strcmp(name, "GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL")) +{ + return GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL; +} +#endif +#ifdef GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL +if (!strcmp(name, "GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL")) +{ + return GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL; +} +#endif +#ifdef GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL +if (!strcmp(name, "GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL")) +{ + return GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL; +} +#endif +#ifdef GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI if (!strcmp(name, "GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI")) { return GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI; } +#endif +#ifdef GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX if (!strcmp(name, "GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX")) { return GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX; } +#endif +#ifdef GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB if (!strcmp(name, "GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB")) { return GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB; } +#endif +#ifdef GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB if (!strcmp(name, "GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB")) { return GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB; } +#endif +#ifdef GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB if (!strcmp(name, "GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB")) { return GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB; } +#endif +#ifdef GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE if (!strcmp(name, "GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE")) { return GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE; } +#endif +#ifdef GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV +if (!strcmp(name, "GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV")) +{ + return GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV; +} +#endif +#ifdef GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT if (!strcmp(name, "GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT")) { return GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT; } +#endif +#ifdef GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST if (!strcmp(name, "GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST")) { return GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM")) { return GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV")) { return GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV")) { return GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT")) { return GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT; } +#endif +#ifdef GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX if (!strcmp(name, "GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX")) { return GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE")) { return GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY")) { return GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY; } +#endif +#ifdef GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV if (!strcmp(name, "GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV")) { return GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV; } +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT")) { return GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT; } +#endif +#ifdef GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV if (!strcmp(name, "GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV")) { return GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV; } +#endif +#ifdef GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV if (!strcmp(name, "GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV")) { return GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV; } +#endif return _GL_UNDEFINED; case 39: +#ifdef GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH if (!strcmp(name, "GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH")) { return GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH; } +#endif +#ifdef GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH if (!strcmp(name, "GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH")) { return GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH; } +#endif +#ifdef GL_ARB_compressed_texture_pixel_storage if (!strcmp(name, "GL_ARB_compressed_texture_pixel_storage")) { return GL_ARB_compressed_texture_pixel_storage; } +#endif +#ifdef GL_ARB_robustness_application_isolation if (!strcmp(name, "GL_ARB_robustness_application_isolation")) { return GL_ARB_robustness_application_isolation; } +#endif +#ifdef GL_ARB_robustness_share_group_isolation if (!strcmp(name, "GL_ARB_robustness_share_group_isolation")) { return GL_ARB_robustness_share_group_isolation; } +#endif +#ifdef GL_ATIX_vertex_shader_output_point_size if (!strcmp(name, "GL_ATIX_vertex_shader_output_point_size")) { return GL_ATIX_vertex_shader_output_point_size; } +#endif +#ifdef GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT if (!strcmp(name, "GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT")) { return GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT; } +#endif +#ifdef GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB if (!strcmp(name, "GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB")) { return GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR")) { return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR +if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR")) +{ + return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR; +} +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR +if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR")) +{ + return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR; +} +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR")) { return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR")) { return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR +if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR")) +{ + return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR; +} +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR +if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR")) +{ + return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR; +} +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR")) { return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR +if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR")) +{ + return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR; +} +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR")) { return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR +if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR")) +{ + return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR; +} +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR")) { return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR")) { return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR +if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR")) +{ + return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR; +} +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR")) { return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR +if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR")) +{ + return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR; +} +#endif +#ifdef GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB if (!strcmp(name, "GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB")) { return GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB; } +#endif +#ifdef GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB if (!strcmp(name, "GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB")) { return GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB; } +#endif +#ifdef GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM if (!strcmp(name, "GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM")) { return GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM; } +#endif +#ifdef GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV if (!strcmp(name, "GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV")) { return GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER +if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER")) +{ + return GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER; +} +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER")) { return GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL")) { return GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS")) { return GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS; } +#endif +#ifdef GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV if (!strcmp(name, "GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV")) { return GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV; } +#endif +#ifdef GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX if (!strcmp(name, "GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX")) { return GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX; } +#endif +#ifdef GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES if (!strcmp(name, "GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES")) { return GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES; } +#endif +#ifdef GL_KHR_blend_equation_advanced_coherent +if (!strcmp(name, "GL_KHR_blend_equation_advanced_coherent")) +{ + return GL_KHR_blend_equation_advanced_coherent; +} +#endif +#ifdef GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES +if (!strcmp(name, "GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES")) +{ + return GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES; +} +#endif +#ifdef GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES if (!strcmp(name, "GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES")) { return GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES; } +#endif +#ifdef GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB if (!strcmp(name, "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB")) { return GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB; } +#endif +#ifdef GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV if (!strcmp(name, "GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV")) { return GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV; } +#endif +#ifdef GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB if (!strcmp(name, "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB")) { return GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB; } +#endif +#ifdef GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT if (!strcmp(name, "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT")) { return GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT; } +#endif +#ifdef GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS if (!strcmp(name, "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS")) { return GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS; } +#endif +#ifdef GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV if (!strcmp(name, "GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV")) { return GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV; } +#endif +#ifdef GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV if (!strcmp(name, "GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV")) { return GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV; } +#endif +#ifdef GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS if (!strcmp(name, "GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS")) { return GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS; } +#endif +#ifdef GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS if (!strcmp(name, "GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS")) { return GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS; } +#endif +#ifdef GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE if (!strcmp(name, "GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE")) { return GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE; } +#endif +#ifdef GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV if (!strcmp(name, "GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV")) { return GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV; } +#endif +#ifdef GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV if (!strcmp(name, "GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV")) { return GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV; } +#endif +#ifdef GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL if (!strcmp(name, "GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL")) { return GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL; } +#endif +#ifdef GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB if (!strcmp(name, "GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB")) { return GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB; } +#endif +#ifdef GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV if (!strcmp(name, "GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV")) { return GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV; } +#endif +#ifdef GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL +if (!strcmp(name, "GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL")) +{ + return GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL; +} +#endif +#ifdef GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX if (!strcmp(name, "GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX")) { return GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX; } +#endif +#ifdef GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB if (!strcmp(name, "GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB")) { return GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB; } +#endif +#ifdef GL_REFERENCED_BY_TESS_EVALUATION_SHADER if (!strcmp(name, "GL_REFERENCED_BY_TESS_EVALUATION_SHADER")) { return GL_REFERENCED_BY_TESS_EVALUATION_SHADER; } +#endif +#ifdef GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV if (!strcmp(name, "GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV")) { return GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV; } +#endif +#ifdef GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV +if (!strcmp(name, "GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV")) +{ + return GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV; +} +#endif +#ifdef GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB +if (!strcmp(name, "GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB")) +{ + return GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB; +} +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING")) { return GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING; } +#endif +#ifdef GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE if (!strcmp(name, "GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE")) { return GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE; } +#endif +#ifdef GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY if (!strcmp(name, "GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY")) { return GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV")) { return GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV; } +#endif +#ifdef GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES if (!strcmp(name, "GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES")) { return GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV")) { return GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV; } +#endif +#ifdef GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL if (!strcmp(name, "GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL")) { return GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL; } +#endif return _GL_UNDEFINED; case 40: +#ifdef GL_ARB_transform_feedback_overflow_query +if (!strcmp(name, "GL_ARB_transform_feedback_overflow_query")) +{ + return GL_ARB_transform_feedback_overflow_query; +} +#endif +#ifdef GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT if (!strcmp(name, "GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT")) { return GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT; } +#endif +#ifdef GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT if (!strcmp(name, "GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT")) { return GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR")) { return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR +if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR")) +{ + return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR; +} +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR +if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR")) +{ + return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR; +} +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR")) { return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR +if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR")) +{ + return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR; +} +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR")) { return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR; } +#endif +#ifdef GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD if (!strcmp(name, "GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD")) { return GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD; } +#endif +#ifdef GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT if (!strcmp(name, "GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT")) { return GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_EXT; } +#endif +#ifdef GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT if (!strcmp(name, "GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT")) { return GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING")) { return GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE")) { return GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT")) { return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT")) { return GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT; } +#endif +#ifdef GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV if (!strcmp(name, "GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV")) { return GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV; } +#endif +#ifdef GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS if (!strcmp(name, "GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS")) { return GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS; } +#endif +#ifdef GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB if (!strcmp(name, "GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB")) { return GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB; } +#endif +#ifdef GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS if (!strcmp(name, "GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS")) { return GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS; } +#endif +#ifdef GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT if (!strcmp(name, "GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT")) { return GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT; } +#endif +#ifdef GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB if (!strcmp(name, "GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB")) { return GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB; } +#endif +#ifdef GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT +if (!strcmp(name, "GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT")) +{ + return GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT; +} +#endif +#ifdef GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT +if (!strcmp(name, "GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT")) +{ + return GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT; +} +#endif +#ifdef GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI if (!strcmp(name, "GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI")) { return GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI; } +#endif +#ifdef GL_NV_bindless_multi_draw_indirect_count +if (!strcmp(name, "GL_NV_bindless_multi_draw_indirect_count")) +{ + return GL_NV_bindless_multi_draw_indirect_count; +} +#endif +#ifdef GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV if (!strcmp(name, "GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV")) { return GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV; } +#endif +#ifdef GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL +if (!strcmp(name, "GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL")) +{ + return GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL; +} +#endif +#ifdef GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL +if (!strcmp(name, "GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL")) +{ + return GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL; +} +#endif +#ifdef GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL +if (!strcmp(name, "GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL")) +{ + return GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL; +} +#endif +#ifdef GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD +if (!strcmp(name, "GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD")) +{ + return GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD; +} +#endif +#ifdef GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV if (!strcmp(name, "GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV")) { return GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV; } +#endif +#ifdef GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB +if (!strcmp(name, "GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB")) +{ + return GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB; +} +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM")) { return GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM; } +#endif +#ifdef GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST if (!strcmp(name, "GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST")) { return GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST; } +#endif +#ifdef GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB if (!strcmp(name, "GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB")) { return GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB; } +#endif +#ifdef GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT if (!strcmp(name, "GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT")) { return GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT")) { return GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN")) { return GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH")) { return GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH; } +#endif +#ifdef GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE if (!strcmp(name, "GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE")) { return GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT")) { return GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT")) { return GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT; } +#endif return _GL_UNDEFINED; case 41: +#ifdef GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB if (!strcmp(name, "GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB")) { return GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR")) { return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR +if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR")) +{ + return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR; +} +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR")) { return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR +if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR")) +{ + return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR; +} +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR")) { return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR; } +#endif +#ifdef GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR +if (!strcmp(name, "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR")) +{ + return GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR; +} +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT")) { return GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT")) { return GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT")) { return GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB")) { return GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT")) { return GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT")) { return GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT")) { return GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT; } +#endif +#ifdef GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB +if (!strcmp(name, "GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB")) +{ + return GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB; +} +#endif +#ifdef GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS if (!strcmp(name, "GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS")) { return GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS; } +#endif +#ifdef GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT if (!strcmp(name, "GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT")) { return GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT; } +#endif +#ifdef GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT if (!strcmp(name, "GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT")) { return GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT; } +#endif +#ifdef GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI if (!strcmp(name, "GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI")) { return GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI; } +#endif +#ifdef GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV if (!strcmp(name, "GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV")) { return GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV; } +#endif +#ifdef GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS if (!strcmp(name, "GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS")) { return GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS; } +#endif +#ifdef GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS if (!strcmp(name, "GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS")) { return GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS; } +#endif +#ifdef GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB +if (!strcmp(name, "GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB")) +{ + return GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB; +} +#endif +#ifdef GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB if (!strcmp(name, "GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB")) { return GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB; } +#endif +#ifdef GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV if (!strcmp(name, "GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV")) { return GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV; } +#endif +#ifdef GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI if (!strcmp(name, "GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI")) { return GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI; } +#endif +#ifdef GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI if (!strcmp(name, "GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI")) { return GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI; } +#endif +#ifdef GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT if (!strcmp(name, "GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT")) { return GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT; } +#endif +#ifdef GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE if (!strcmp(name, "GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE")) { return GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE; } +#endif +#ifdef GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB +if (!strcmp(name, "GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB")) +{ + return GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB; +} +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB")) { return GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB +if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB")) +{ + return GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB; +} +#endif +#ifdef GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB if (!strcmp(name, "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB")) { return GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB; } +#endif return _GL_UNDEFINED; case 42: +#ifdef GL_AMD_transform_feedback3_lines_triangles if (!strcmp(name, "GL_AMD_transform_feedback3_lines_triangles")) { return GL_AMD_transform_feedback3_lines_triangles; } +#endif +#ifdef GL_EXT_framebuffer_multisample_blit_scaled if (!strcmp(name, "GL_EXT_framebuffer_multisample_blit_scaled")) { return GL_EXT_framebuffer_multisample_blit_scaled; } +#endif +#ifdef GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB if (!strcmp(name, "GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB")) { return GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR +if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR")) +{ + return GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR; +} +#endif +#ifdef GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV if (!strcmp(name, "GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV")) { return GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV; } +#endif +#ifdef GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX if (!strcmp(name, "GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX")) { return GL_LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX; } +#endif +#ifdef GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS if (!strcmp(name, "GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS")) { return GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS; } +#endif +#ifdef GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB if (!strcmp(name, "GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB")) { return GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB")) { return GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB")) { return GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB")) { return GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB; } +#endif +#ifdef GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS if (!strcmp(name, "GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS")) { return GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS; } +#endif +#ifdef GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS if (!strcmp(name, "GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS")) { return GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS; } +#endif +#ifdef GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS if (!strcmp(name, "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS")) { return GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS; } +#endif +#ifdef GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL +if (!strcmp(name, "GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL")) +{ + return GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL; +} +#endif +#ifdef GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL +if (!strcmp(name, "GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL")) +{ + return GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL; +} +#endif +#ifdef GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED +if (!strcmp(name, "GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED")) +{ + return GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED; +} +#endif +#ifdef GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI if (!strcmp(name, "GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI")) { return GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY")) { return GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB")) { return GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB; } +#endif return _GL_UNDEFINED; case 43: +#ifdef GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 if (!strcmp(name, "GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2")) { return GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT")) { return GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT")) { return GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB")) { return GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT")) { return GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE")) { return GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE; } +#endif +#ifdef GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS if (!strcmp(name, "GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS")) { return GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS; } +#endif +#ifdef GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS if (!strcmp(name, "GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS")) { return GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS; } +#endif +#ifdef GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV if (!strcmp(name, "GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV")) { return GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV; } +#endif +#ifdef GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB if (!strcmp(name, "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB")) { return GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB; } +#endif +#ifdef GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT if (!strcmp(name, "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT")) { return GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT; } +#endif +#ifdef GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT if (!strcmp(name, "GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT")) { return GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT; } +#endif +#ifdef GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB")) { return GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB; } +#endif +#ifdef GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV if (!strcmp(name, "GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV")) { return GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV; } +#endif +#ifdef GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS if (!strcmp(name, "GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS")) { return GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS; } +#endif +#ifdef GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION if (!strcmp(name, "GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION")) { return GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION; } +#endif +#ifdef GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB if (!strcmp(name, "GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB")) { return GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB; } +#endif +#ifdef GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV if (!strcmp(name, "GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV")) { return GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV")) { return GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV; } +#endif +#ifdef GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV if (!strcmp(name, "GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV")) { return GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV; } +#endif +#ifdef GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV if (!strcmp(name, "GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV")) { return GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV; } +#endif return _GL_UNDEFINED; case 44: +#ifdef GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 if (!strcmp(name, "GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2")) { return GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2; } +#endif +#ifdef GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV +if (!strcmp(name, "GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV")) +{ + return GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV; +} +#endif +#ifdef GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV if (!strcmp(name, "GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV")) { return GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT")) { return GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT; } +#endif +#ifdef GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV +if (!strcmp(name, "GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV")) +{ + return GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV; +} +#endif +#ifdef GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB if (!strcmp(name, "GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB")) { return GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB; } +#endif +#ifdef GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS if (!strcmp(name, "GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS")) { return GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT")) { return GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT; } +#endif +#ifdef GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT if (!strcmp(name, "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT")) { return GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT; } +#endif +#ifdef GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER if (!strcmp(name, "GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER")) { return GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER; } +#endif +#ifdef GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY if (!strcmp(name, "GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY")) { return GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY; } +#endif return _GL_UNDEFINED; case 45: +#ifdef GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS if (!strcmp(name, "GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS")) { return GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS; } +#endif +#ifdef GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB +if (!strcmp(name, "GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB")) +{ + return GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB; +} +#endif +#ifdef GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX if (!strcmp(name, "GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX")) { return GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX; } +#endif +#ifdef GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB if (!strcmp(name, "GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB")) { return GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB; } +#endif +#ifdef GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT if (!strcmp(name, "GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT")) { return GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT; } +#endif +#ifdef GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS if (!strcmp(name, "GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS")) { return GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS; } +#endif +#ifdef GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV if (!strcmp(name, "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV")) { return GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV; } +#endif +#ifdef GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS if (!strcmp(name, "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS")) { return GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS; } +#endif +#ifdef GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV +if (!strcmp(name, "GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV")) +{ + return GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV; +} +#endif +#ifdef GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB if (!strcmp(name, "GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB")) { return GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB; } +#endif +#ifdef GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV if (!strcmp(name, "GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV")) { return GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV; } +#endif +#ifdef GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER if (!strcmp(name, "GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER")) { return GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER; } +#endif return _GL_UNDEFINED; case 46: +#ifdef GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT if (!strcmp(name, "GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT")) { return GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT; } +#endif +#ifdef GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT if (!strcmp(name, "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT")) { return GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT; } +#endif +#ifdef GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV if (!strcmp(name, "GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV")) { return GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV; } +#endif +#ifdef GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB +if (!strcmp(name, "GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB")) +{ + return GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB; +} +#endif +#ifdef GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV if (!strcmp(name, "GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV")) { return GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV; } +#endif +#ifdef GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL if (!strcmp(name, "GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL")) { return GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL; } +#endif +#ifdef GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER if (!strcmp(name, "GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER")) { return GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER; } +#endif +#ifdef GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER if (!strcmp(name, "GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER")) { return GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER; } +#endif +#ifdef GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT if (!strcmp(name, "GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT")) { return GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT; } +#endif return _GL_UNDEFINED; case 47: +#ifdef GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS if (!strcmp(name, "GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS")) { return GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE")) { return GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR +if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR")) +{ + return GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR; +} +#endif +#ifdef GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV +if (!strcmp(name, "GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV")) +{ + return GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV; +} +#endif +#ifdef GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX if (!strcmp(name, "GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX")) { return GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX; } +#endif +#ifdef GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS if (!strcmp(name, "GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS")) { return GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS; } +#endif +#ifdef GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT if (!strcmp(name, "GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT")) { return GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT; } +#endif +#ifdef GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV if (!strcmp(name, "GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV")) { return GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV; } +#endif +#ifdef GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT if (!strcmp(name, "GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT")) { return GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT; } +#endif return _GL_UNDEFINED; case 48: +#ifdef GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT if (!strcmp(name, "GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT")) { return GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_EXT; } +#endif +#ifdef GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV if (!strcmp(name, "GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV")) { return GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT")) { return GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT if (!strcmp(name, "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT")) { return GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT; } +#endif +#ifdef GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB +if (!strcmp(name, "GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB")) +{ + return GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB; +} +#endif +#ifdef GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS if (!strcmp(name, "GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS")) { return GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS; } +#endif +#ifdef GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS if (!strcmp(name, "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS")) { return GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS; } +#endif +#ifdef GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV if (!strcmp(name, "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV")) { return GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV; } +#endif return _GL_UNDEFINED; case 49: +#ifdef GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT if (!strcmp(name, "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT")) { return GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT; } +#endif return _GL_UNDEFINED; case 50: +#ifdef GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS if (!strcmp(name, "GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS")) { return GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS; } +#endif +#ifdef GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT if (!strcmp(name, "GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT")) { return GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT; } +#endif +#ifdef GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER if (!strcmp(name, "GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER")) { return GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER; } +#endif return _GL_UNDEFINED; case 51: +#ifdef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT")) { return GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT; } +#endif +#ifdef GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV if (!strcmp(name, "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV")) { return GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV; } +#endif return _GL_UNDEFINED; case 52: +#ifdef GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER if (!strcmp(name, "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER")) { return GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER; } +#endif +#ifdef GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT if (!strcmp(name, "GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT")) { return GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT; } +#endif +#ifdef GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT if (!strcmp(name, "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT")) { return GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT; } +#endif return _GL_UNDEFINED; case 53: +#ifdef GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER if (!strcmp(name, "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER")) { return GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER; } +#endif +#ifdef GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR +if (!strcmp(name, "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR")) +{ + return GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR; +} +#endif +#ifdef GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER if (!strcmp(name, "GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER")) { return GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER; } +#endif return _GL_UNDEFINED; case 54: -if (!strcmp(name, - "GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES")) +#ifdef GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES +if (!strcmp(name, "GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES")) { return GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES; } -if (!strcmp(name, - "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER")) +#endif +#ifdef GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER +if (!strcmp(name, "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER")) { return GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER; } -if (!strcmp(name, - "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER")) +#endif +#ifdef GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER +if (!strcmp(name, "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER")) { return GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER; } +#endif return _GL_UNDEFINED; case 58: -if (!strcmp(name, - "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER")) +#ifdef GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER +if (!strcmp(name, "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER")) { return GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER; } +#endif return _GL_UNDEFINED; case 61: -if (!strcmp(name, - "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER")) +#ifdef GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER +if (!strcmp(name, "GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER")) { return GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER; } +#endif diff -Nru gem-0.94~pre1/src/Utils/GLUtil_define_generator.sh gem-0.94/src/Utils/GLUtil_define_generator.sh --- gem-0.94~pre1/src/Utils/GLUtil_define_generator.sh 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/Utils/GLUtil_define_generator.sh 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,13 @@ +#!/bin/bash +grep define ../Gem/glew.h | +grep -v _MESA | +grep -v GLEXT_PROTOTYPES | +grep "GL_" | +awk '{print $2}' | +egrep "^GL_" | +awk '{print length($1),$1}' | +sort -n | +sed -e 's|\([0-9]*\) \(.*\)$|\1 \2\n\1|' | +sed -e :a -e '/^\([0-9]*\)$/N; s/\n/ /; ta' | +awk '{if (3==NF){if ($1!=$2) print $2,$3; else print $3}else if (2==NF)print $1,$2}' | +awk '{if (2==NF){print "return _GL_UNDEFINED;\ncase "$1":"; $1=$2}; print "#ifdef "$1"\nif (!strcmp(name, \""$1"\"))\n{\n return "$1";\n}\n#endif"}' diff -Nru gem-0.94~pre1/src/Utils/GLUtil.h gem-0.94/src/Utils/GLUtil.h --- gem-0.94~pre1/src/Utils/GLUtil.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Utils/GLUtil.h 2019-02-12 13:10:01.000000000 +0000 @@ -26,7 +26,11 @@ #include <string> /* for GLenum */ +#ifdef __EMSCRIPTEN__ +#include "Gem/glew.h" +#else #include "Gem/GemGL.h" +#endif #include "Gem/Exception.h" @@ -42,6 +46,8 @@ GEM_EXTERN extern int getGLdefine(const struct _atom *name); GEM_EXTERN extern int getGLbitfield(int argc, struct _atom *argv); +GEM_EXTERN extern void gluLookAt(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble); +GEM_EXTERN extern void gluPerspective(GLdouble, GLdouble, GLdouble, GLdouble); diff -Nru gem-0.94~pre1/src/Utils/is_pointer.h gem-0.94/src/Utils/is_pointer.h --- gem-0.94~pre1/src/Utils/is_pointer.h 1970-01-01 00:00:00.000000000 +0000 +++ gem-0.94/src/Utils/is_pointer.h 2019-02-12 13:10:01.000000000 +0000 @@ -0,0 +1,34 @@ +/* + * Copyright © 2010 fredoverflow https://stackoverflow.com/a/3177723/1169096 + * Copyright © 2019 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at + */ + +#ifndef GEM_IS_POINTER_H_ +#define GEM_IS_POINTER_H_ + +namespace gem +{ + template <typename T> + struct is_pointer_type + { + enum { value = false }; + }; + + template <typename T> + struct is_pointer_type<T*> + { + enum { value = true }; + }; + + template <typename T> + bool is_pointer(void) + { + return is_pointer_type<T>::value; + } + template <typename T> + bool is_pointer(const T&) + { + return is_pointer_type<T>::value; + } +}; +#endif // GEM_IS_POITNER_H_ diff -Nru gem-0.94~pre1/src/Utils/Makefile.am gem-0.94/src/Utils/Makefile.am --- gem-0.94~pre1/src/Utils/Makefile.am 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Utils/Makefile.am 2019-02-12 13:10:01.000000000 +0000 @@ -22,6 +22,9 @@ libUtils_la_CXXFLAGS += $(GEM_LIB_FRIBIDI_CFLAGS) libUtils_la_LIBADD += $(GEM_LIB_FRIBIDI_LIBS) +if WINDOWS +libUtils_la_LIBADD += -lws2_32 +endif libUtils_la_includedir = $(includedir)/Gem/Utils @@ -30,6 +33,7 @@ Functions.h \ GLUtil.h \ GemMath.h \ + is_pointer.h \ Matrix.h \ nop.h \ PixPete.h \ @@ -53,6 +57,7 @@ GLUtil_define.cpp \ GLUtil_define_generated.h \ GemMath.h \ + is_pointer.h \ Matrix.cpp \ Matrix.h \ PixPete.h \ diff -Nru gem-0.94~pre1/src/Utils/Matrix.cpp gem-0.94/src/Utils/Matrix.cpp --- gem-0.94~pre1/src/Utils/Matrix.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Utils/Matrix.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Utils/SynchedWorkerThread.cpp gem-0.94/src/Utils/SynchedWorkerThread.cpp --- gem-0.94~pre1/src/Utils/SynchedWorkerThread.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Utils/SynchedWorkerThread.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Utils/Thread.cpp gem-0.94/src/Utils/Thread.cpp --- gem-0.94~pre1/src/Utils/Thread.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Utils/Thread.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Utils/ThreadMutex.cpp gem-0.94/src/Utils/ThreadMutex.cpp --- gem-0.94~pre1/src/Utils/ThreadMutex.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Utils/ThreadMutex.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Utils/ThreadSemaphore.cpp gem-0.94/src/Utils/ThreadSemaphore.cpp --- gem-0.94~pre1/src/Utils/ThreadSemaphore.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Utils/ThreadSemaphore.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Utils/WorkerThread.cpp gem-0.94/src/Utils/WorkerThread.cpp --- gem-0.94~pre1/src/Utils/WorkerThread.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Utils/WorkerThread.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Vertex/Makefile.am gem-0.94/src/Vertex/Makefile.am --- gem-0.94~pre1/src/Vertex/Makefile.am 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/Makefile.am 2019-02-12 13:10:01.000000000 +0000 @@ -32,8 +32,6 @@ vertex_grid.h \ vertex_info.cpp \ vertex_info.h \ - vertex_model.cpp \ - vertex_model.h \ vertex_mul.cpp \ vertex_mul.h \ vertex_offset.cpp \ @@ -47,3 +45,9 @@ vertex_tabread.cpp \ vertex_tabread.h +if DISABLED +libVertex_la_SOURCES+= \ + vertex_model.cpp \ + vertex_model.h \ + $(empty) +endif diff -Nru gem-0.94~pre1/src/Vertex/vertex_add.cpp gem-0.94/src/Vertex/vertex_add.cpp --- gem-0.94~pre1/src/Vertex/vertex_add.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_add.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Vertex/vertex_combine.cpp gem-0.94/src/Vertex/vertex_combine.cpp --- gem-0.94~pre1/src/Vertex/vertex_combine.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_combine.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -17,8 +17,8 @@ #include "vertex_combine.h" #include "Gem/State.h" -#include "string.h" -#include "math.h" +#include <string.h> +#include <math.h> CPPEXTERN_NEW(vertex_combine); ///////////////////////////////////////////////////////// diff -Nru gem-0.94~pre1/src/Vertex/vertex_draw.cpp gem-0.94/src/Vertex/vertex_draw.cpp --- gem-0.94~pre1/src/Vertex/vertex_draw.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_draw.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Vertex/vertex_draw.h gem-0.94/src/Vertex/vertex_draw.h --- gem-0.94~pre1/src/Vertex/vertex_draw.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_draw.h 2019-02-12 13:10:01.000000000 +0000 @@ -16,6 +16,7 @@ #define _INCLUDE__GEM_VERTEX_VERTEX_DRAW_H_ #include "Base/GemVertex.h" +#include "Gem/GemGL.h" /*----------------------------------------------------------------- ------------------------------------------------------------------- diff -Nru gem-0.94~pre1/src/Vertex/vertex_grid.cpp gem-0.94/src/Vertex/vertex_grid.cpp --- gem-0.94~pre1/src/Vertex/vertex_grid.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_grid.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -17,7 +17,7 @@ #include "vertex_grid.h" #include "Gem/State.h" -#include "string.h" +#include <string.h> CPPEXTERN_NEW_WITH_TWO_ARGS(vertex_grid, t_floatarg, A_DEFFLOAT, t_floatarg, A_DEFFLOAT); @@ -30,8 +30,8 @@ // ///////////////////////////////////////////////////////// vertex_grid :: vertex_grid(t_floatarg f1, t_floatarg f2) - : m_x(f1>=1.0?static_cast<int>(f1):4), m_y(f2>=1.0?static_cast<int>(f2):4), - , m_oldx(0), m_oldy(0), + : m_x(f1>=1.0?static_cast<int>(f1):4), m_y(f2>=1.0?static_cast<int>(f2):4) + , m_oldx(0), m_oldy(0) , m_spacex(1), m_spacey(1) , maxX(0), maxY(0) , ratioX(1.f), ratioY(1.f) diff -Nru gem-0.94~pre1/src/Vertex/vertex_info.cpp gem-0.94/src/Vertex/vertex_info.cpp --- gem-0.94~pre1/src/Vertex/vertex_info.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_info.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -17,7 +17,7 @@ #include "vertex_info.h" #include "Gem/State.h" -#include "string.h" +#include <string.h> CPPEXTERN_NEW(vertex_info); ///////////////////////////////////////////////////////// diff -Nru gem-0.94~pre1/src/Vertex/vertex_model.cpp gem-0.94/src/Vertex/vertex_model.cpp --- gem-0.94~pre1/src/Vertex/vertex_model.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_model.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -17,7 +17,7 @@ #include "vertex_model.h" #include "Gem/State.h" -#include "string.h" +#include <string.h> #define T(x) (m_model->triangles[(x)]) diff -Nru gem-0.94~pre1/src/Vertex/vertex_mul.cpp gem-0.94/src/Vertex/vertex_mul.cpp --- gem-0.94~pre1/src/Vertex/vertex_mul.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_mul.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Vertex/vertex_offset.cpp gem-0.94/src/Vertex/vertex_offset.cpp --- gem-0.94~pre1/src/Vertex/vertex_offset.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_offset.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Vertex/vertex_quad.cpp gem-0.94/src/Vertex/vertex_quad.cpp --- gem-0.94~pre1/src/Vertex/vertex_quad.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_quad.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -17,7 +17,7 @@ #include "vertex_quad.h" #include "Gem/State.h" -#include "string.h" +#include <string.h> CPPEXTERN_NEW(vertex_quad); ///////////////////////////////////////////////////////// diff -Nru gem-0.94~pre1/src/Vertex/vertex_scale.cpp gem-0.94/src/Vertex/vertex_scale.cpp --- gem-0.94~pre1/src/Vertex/vertex_scale.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_scale.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Vertex/vertex_scale.h gem-0.94/src/Vertex/vertex_scale.h --- gem-0.94~pre1/src/Vertex/vertex_scale.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_scale.h 2019-02-12 13:10:01.000000000 +0000 @@ -16,6 +16,7 @@ #define _INCLUDE__GEM_VERTEX_VERTEX_SCALE_H_ #include "Base/GemVertex.h" +#include "Gem/GemGL.h" /*----------------------------------------------------------------- ------------------------------------------------------------------- diff -Nru gem-0.94~pre1/src/Vertex/vertex_set.cpp gem-0.94/src/Vertex/vertex_set.cpp --- gem-0.94~pre1/src/Vertex/vertex_set.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_set.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // diff -Nru gem-0.94~pre1/src/Vertex/vertex_tabread.cpp gem-0.94/src/Vertex/vertex_tabread.cpp --- gem-0.94~pre1/src/Vertex/vertex_tabread.cpp 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_tabread.cpp 2019-02-12 13:10:01.000000000 +0000 @@ -2,7 +2,7 @@ // // GEM - Graphics Environment for Multimedia // -// zmoelnig@iem.kug.ac.at +// zmoelnig@iem.at // // Implementation file // @@ -78,7 +78,7 @@ } if(!fp) return 0; - return fp->w_float; + return &fp->w_float; } void vertex_tabread :: render(GemState *state) diff -Nru gem-0.94~pre1/src/Vertex/vertex_tabread.h gem-0.94/src/Vertex/vertex_tabread.h --- gem-0.94~pre1/src/Vertex/vertex_tabread.h 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/src/Vertex/vertex_tabread.h 2019-02-12 13:10:01.000000000 +0000 @@ -16,6 +16,7 @@ #define _INCLUDE__GEM_VERTEX_VERTEX_TABREAD_H_ #include "Base/GemVertex.h" +#include "Gem/GemGL.h" /*----------------------------------------------------------------- ------------------------------------------------------------------- diff -Nru gem-0.94~pre1/TODO gem-0.94/TODO --- gem-0.94~pre1/TODO 2018-12-21 16:42:50.000000000 +0000 +++ gem-0.94/TODO 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -General: - osx: carbon/QuickTime not supported anymore since 10.6 - -Optimization: - use a more performant float2int conversion as described in - http://www.mega-nerd.com/FPcast/ - -Output: - multiple output - "external" windows - alpha in gemwindow? - - linux: sometimes window freezes on "destroy"; (JMZ: i experience this sometimes on improper shutdown, but after some (up to 30) seconds, the window finally gets destroyed and pd exits fine; if this is the same as the reported bug, than it is rather an inconvenience than a real bug; does this also happens with Output/ objects or only with the old code?) - linux: resizing the window yields weird results - osx: [gemcocoawindow] compatible with [gemmacwindow]? - - -Controls: - selectables - -Geos: - vertex stuff - -Manips: - -Nongeos: - add other light-types - check for the maximum number of lights during runtime - -Pixes: - windows movie loader (have a look at guliverkli?; use gmerlin?) - - upsidedown: pix_rectangle does not respect the upside-down flag and thus sometimes the rectangle appears in the upper-left corner and sometimes in the lower-left corner - generally all images on all platforms should have the same (upsidedown!) orientation - see http://stackoverflow.com/questions/443086/opengl-topdown-bottomup-textures - - - pix_rtx: flickering on OSX/ppc in mode#0; - how to prevent execessive memory usage? - - pix_threshold: intial arguments - - pix_crop: arguments/inlets differ! - - pix_freeframe not supported on x86_64 architectures (newer versions of FF support x86_64; check whether this is compatible) - - videopipes: - W32:AVIsynth/frameserver (http://www.debugmode.com/frameserver/) - W32:VirtualCamera - OSX:Syphon (http://syphon.v002.info/) - - osx: pix_movie flickers (check whether this is still true) - w32: [pix_share_*] does not exist since the shared-memory concept has not made it to redmond yet - w32: crashes when texturing movies (related to GLEW?) - - - -dreaming: - Pd-callbacks: - remove the entire callback-stuff for Pd-messages from the obj_realSetup() - instead this should be handled centrally in CPPExtern - - each member function called <name>Mess() provides a method for "<name>" - - dispatching can be done by Pd or Gem (the latter being easier) - info/ideas - - http://www.codeproject.com/KB/winsdk/callback_adapter.aspx - - Qt slot concept (http://sigslot.sourceforge.net/) - - reflection/inspection - - function-name demangling: http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc/proguide/ref/rkcxxflt.htm - - wrap the entire Pd thing into C++: - GemOutlet()->send(int val); - -BUGS: - look into flext conflict (i guess it's related to "new/delete") - - single-object externals will run the setup-function twice; this gives nasty warnings in Pd-0.42 -