From 721b9a7d01e1fafda05e53cbd10ed0c8a6c67ff0 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sat, 26 Nov 2005 07:46:21 +0000 Subject: [PATCH] Mac OS X work...lots of little changes that touch a lot of random places. Still work to be done, but this at least matches the PowerPC Linux status now. MacOS-specific directory (and XCode project) is gone...this now uses SDL, OpenAL, and the Unix Makefiles. --ryan. --- code/botlib/l_script.c | 16 +- code/botlib/l_script.h | 4 +- code/client/qal.c | 13 +- code/client/qal.h | 4 +- code/client/snd_codec_wav.c | 2 +- code/client/snd_mix.c | 88 +- code/libs/macosx/libSDL-1.2.0.dylib | Bin 0 -> 1506244 bytes code/libs/macosx/libSDLmain.a | Bin 0 -> 97816 bytes code/macosx/BuildRelease | 17 - code/macosx/CGMouseDeltaFix.h | 27 - code/macosx/CGMouseDeltaFix.m | 131 - code/macosx/CGPrivateAPI.h | 185 - code/macosx/GenerateQGL.pl | 146 - code/macosx/Performance.rtf | 114 - code/macosx/Q3Controller.h | 40 - code/macosx/Q3Controller.m | 435 - code/macosx/Quake3.icns | Bin 35224 -> 0 bytes code/macosx/Quake3.nib/classes.nib | 18 - code/macosx/Quake3.nib/info.nib | 19 - code/macosx/Quake3.nib/objects.nib | Bin 765 -> 0 bytes code/macosx/Quake3.pbproj/apple.pbxuser | 563 - code/macosx/Quake3.pbproj/project.pbxproj | 11172 -------------------- code/macosx/RecordDemo.zsh | 9 - code/macosx/banner.jpg | Bin 55841 -> 0 bytes code/macosx/botlib.log | 196 - code/macosx/macosx_common.c | 33 - code/macosx/macosx_display.h | 38 - code/macosx/macosx_display.m | 369 - code/macosx/macosx_glimp.h | 37 - code/macosx/macosx_glimp.m | 1114 -- code/macosx/macosx_glsmp_mutex.m | 176 - code/macosx/macosx_glsmp_null.m | 46 - code/macosx/macosx_glsmp_ports.m | 425 - code/macosx/macosx_input.m | 916 -- code/macosx/macosx_local.h | 129 - code/macosx/macosx_qgl.h | 5095 --------- code/macosx/macosx_sndcore.m | 325 - code/macosx/macosx_snddma.m | 205 - code/macosx/macosx_sys.m | 537 - code/macosx/macosx_timers.h | 56 - code/macosx/macosx_timers.m | 75 - code/macosx/timedemo.zsh | 26 - code/qcommon/common.c | 9 +- code/qcommon/q_platform.h | 6 + code/qcommon/vm_ppc_new.c | 2 +- code/renderer/qgl.h | 19 +- code/renderer/tr_curve.c | 2 +- code/renderer/tr_init.c | 3 + code/renderer/tr_shade.c | 201 +- code/renderer/tr_shade_calc.c | 68 +- code/renderer/tr_surface.c | 158 +- code/renderer/tr_types.h | 5 + code/tools/asm/Makefile | 13 + code/tools/lcc/Makefile | 13 + code/unix/Makefile | 192 +- code/unix/linux_glimp.c | 4 +- code/unix/linux_qgl.c | 79 +- code/unix/sdl_glimp.c | 70 +- code/unix/sdl_snd.c | 4 + code/unix/unix_glw.h | 2 +- code/unix/unix_main.c | 94 +- 61 files changed, 877 insertions(+), 22868 deletions(-) create mode 100755 code/libs/macosx/libSDL-1.2.0.dylib create mode 100644 code/libs/macosx/libSDLmain.a delete mode 100644 code/macosx/BuildRelease delete mode 100644 code/macosx/CGMouseDeltaFix.h delete mode 100644 code/macosx/CGMouseDeltaFix.m delete mode 100644 code/macosx/CGPrivateAPI.h delete mode 100644 code/macosx/GenerateQGL.pl delete mode 100644 code/macosx/Performance.rtf delete mode 100644 code/macosx/Q3Controller.h delete mode 100644 code/macosx/Q3Controller.m delete mode 100644 code/macosx/Quake3.icns delete mode 100644 code/macosx/Quake3.nib/classes.nib delete mode 100644 code/macosx/Quake3.nib/info.nib delete mode 100644 code/macosx/Quake3.nib/objects.nib delete mode 100644 code/macosx/Quake3.pbproj/apple.pbxuser delete mode 100644 code/macosx/Quake3.pbproj/project.pbxproj delete mode 100644 code/macosx/RecordDemo.zsh delete mode 100644 code/macosx/banner.jpg delete mode 100644 code/macosx/botlib.log delete mode 100644 code/macosx/macosx_common.c delete mode 100644 code/macosx/macosx_display.h delete mode 100644 code/macosx/macosx_display.m delete mode 100644 code/macosx/macosx_glimp.h delete mode 100644 code/macosx/macosx_glimp.m delete mode 100644 code/macosx/macosx_glsmp_mutex.m delete mode 100644 code/macosx/macosx_glsmp_null.m delete mode 100644 code/macosx/macosx_glsmp_ports.m delete mode 100644 code/macosx/macosx_input.m delete mode 100644 code/macosx/macosx_local.h delete mode 100644 code/macosx/macosx_qgl.h delete mode 100644 code/macosx/macosx_sndcore.m delete mode 100644 code/macosx/macosx_snddma.m delete mode 100644 code/macosx/macosx_sys.m delete mode 100644 code/macosx/macosx_timers.h delete mode 100644 code/macosx/macosx_timers.m delete mode 100644 code/macosx/timedemo.zsh diff --git a/code/botlib/l_script.c b/code/botlib/l_script.c index 78803309..e721891c 100644 --- a/code/botlib/l_script.c +++ b/code/botlib/l_script.c @@ -554,7 +554,7 @@ int PS_ReadName(script_t *script, token_t *token) // Changes Globals: - //============================================================================ void NumberValue(char *string, int subtype, unsigned long int *intvalue, - long double *floatvalue) + double *floatvalue) { unsigned long int dotfound = 0; @@ -573,13 +573,13 @@ void NumberValue(char *string, int subtype, unsigned long int *intvalue, } //end if if (dotfound) { - *floatvalue = *floatvalue + (long double) (*string - '0') / - (long double) dotfound; + *floatvalue = *floatvalue + (double) (*string - '0') / + (double) dotfound; dotfound *= 10; } //end if else { - *floatvalue = *floatvalue * 10.0 + (long double) (*string - '0'); + *floatvalue = *floatvalue * 10.0 + (double) (*string - '0'); } //end else string++; } //end while @@ -631,7 +631,7 @@ int PS_ReadNumber(script_t *script, token_t *token) int octal, dot; char c; // unsigned long int intvalue = 0; -// long double floatvalue = 0; +// double floatvalue = 0; token->type = TT_NUMBER; //check for a hexadecimal number @@ -1148,15 +1148,15 @@ void StripSingleQuotes(char *string) // Returns: - // Changes Globals: - //============================================================================ -long double ReadSignedFloat(script_t *script) +double ReadSignedFloat(script_t *script) { token_t token; - long double sign = 1; + double sign = 1.0; PS_ExpectAnyToken(script, &token); if (!strcmp(token.string, "-")) { - sign = -1; + sign = -1.0; PS_ExpectTokenType(script, TT_NUMBER, 0, &token); } //end if else if (token.type != TT_NUMBER) diff --git a/code/botlib/l_script.h b/code/botlib/l_script.h index 01cc35cf..7fe4ac96 100644 --- a/code/botlib/l_script.h +++ b/code/botlib/l_script.h @@ -161,7 +161,7 @@ typedef struct token_s int subtype; //last read token sub type #ifdef NUMBERVALUE unsigned long int intvalue; //integer value - long double floatvalue; //floating point value + double floatvalue; //floating point value #endif //NUMBERVALUE char *whitespace_p; //start of white space before token char *endwhitespace_p; //start of white space before token @@ -218,7 +218,7 @@ void StripSingleQuotes(char *string); //read a possible signed integer signed long int ReadSignedInt(script_t *script); //read a possible signed floating point number -long double ReadSignedFloat(script_t *script); +double ReadSignedFloat(script_t *script); //set an array with punctuations, NULL restores default C/C++ set void SetScriptPunctuations(script_t *script, punctuation_t *p); //set script flags diff --git a/code/client/qal.c b/code/client/qal.c index 75941858..e7513dcd 100644 --- a/code/client/qal.c +++ b/code/client/qal.c @@ -28,14 +28,23 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "qal.h" #if USE_OPENAL_DLOPEN -#if defined _WIN32 + +#if USE_SDL_VIDEO +#include "SDL.h" +#include "SDL_loadso.h" +#define OBJTYPE void * +#define OBJLOAD(x) SDL_LoadObject(x) +#define SYMLOAD(x,y) SDL_LoadFunction(x,y) +#define OBJFREE(x) SDL_UnloadObject(x) + +#elif defined _WIN32 #include #define OBJTYPE HMODULE #define OBJLOAD(x) LoadLibrary(x) #define SYMLOAD(x,y) GetProcAddress(x,y) #define OBJFREE(x) FreeLibrary(x) -#elif defined __linux__ || defined __FreeBSD__ +#elif defined __linux__ || defined __FreeBSD__ || defined MACOS_X #include #include #include diff --git a/code/client/qal.h b/code/client/qal.h index 1d711799..a84639ac 100644 --- a/code/client/qal.h +++ b/code/client/qal.h @@ -32,8 +32,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define AL_NO_PROTOTYPES #define ALC_NO_PROTOTYPES #endif -#include -#include +#include "../AL/al.h" +#include "../AL/alc.h" #if USE_OPENAL_DLOPEN extern LPALENABLE qalEnable; diff --git a/code/client/snd_codec_wav.c b/code/client/snd_codec_wav.c index 5a808d82..e790cea9 100644 --- a/code/client/snd_codec_wav.c +++ b/code/client/snd_codec_wav.c @@ -42,7 +42,7 @@ static int FGetLittleLong( fileHandle_t f ) { FGetLittleShort ================= */ -static int FGetLittleShort( fileHandle_t f ) { +static short FGetLittleShort( fileHandle_t f ) { short v; FS_Read( &v, sizeof(v), f ); diff --git a/code/client/snd_mix.c b/code/client/snd_mix.c index 21adf90f..05389736 100644 --- a/code/client/snd_mix.c +++ b/code/client/snd_mix.c @@ -224,7 +224,8 @@ CHANNEL MIXING =============================================================================== */ -static void S_PaintChannelFrom16( channel_t *ch, const sfx_t *sc, int count, int sampleOffset, int bufferOffset ) { +#if idppc_altivec +static void S_PaintChannelFrom16_altivec( channel_t *ch, const sfx_t *sc, int count, int sampleOffset, int bufferOffset ) { int data, aoff, boff; int leftvol, rightvol; int i, j; @@ -249,15 +250,12 @@ static void S_PaintChannelFrom16( channel_t *ch, const sfx_t *sc, int count, int } if (!ch->doppler || ch->dopplerScale==1.0f) { -#if idppc_altivec vector signed short volume_vec; vector unsigned int volume_shift; int vectorCount, samplesLeft, chunkSamplesLeft; -#endif leftvol = ch->leftvol*snd_vol; rightvol = ch->rightvol*snd_vol; samples = chunk->sndChunk; -#if idppc_altivec ((short *)&volume_vec)[0] = leftvol; ((short *)&volume_vec)[1] = leftvol; ((short *)&volume_vec)[4] = leftvol; @@ -297,14 +295,12 @@ static void S_PaintChannelFrom16( channel_t *ch, const sfx_t *sc, int count, int { vector unsigned char tmp; vector short s0, s1, sampleData0, sampleData1; - vector short samples0, samples1; - vector signed int left0, right0; vector signed int merge0, merge1; vector signed int d0, d1, d2, d3; - vector unsigned char samplePermute0 = - (vector unsigned char){0, 1, 4, 5, 0, 1, 4, 5, 2, 3, 6, 7, 2, 3, 6, 7}; + vector unsigned char samplePermute0 = + VECCONST_UINT8(0, 1, 4, 5, 0, 1, 4, 5, 2, 3, 6, 7, 2, 3, 6, 7); vector unsigned char samplePermute1 = - (vector unsigned char){8, 9, 12, 13, 8, 9, 12, 13, 10, 11, 14, 15, 10, 11, 14, 15}; + VECCONST_UINT8(8, 9, 12, 13, 8, 9, 12, 13, 10, 11, 14, 15, 10, 11, 14, 15); vector unsigned char loadPermute0, loadPermute1; // Rather than permute the vectors after we load them to do the sample @@ -365,7 +361,66 @@ static void S_PaintChannelFrom16( channel_t *ch, const sfx_t *sc, int count, int } } } -#else + } else { + fleftvol = ch->leftvol*snd_vol; + frightvol = ch->rightvol*snd_vol; + + ooff = sampleOffset; + samples = chunk->sndChunk; + + for ( i=0 ; idopplerScale; + boff = ooff; + fdata = 0; + for (j=aoff; jnext; + if (!chunk) { + chunk = sc->soundData; + } + samples = chunk->sndChunk; + ooff -= SND_CHUNK_SIZE; + } + fdata += samples[j&(SND_CHUNK_SIZE-1)]; + } + fdiv = 256 * (boff-aoff); + samp[i].left += (fdata * fleftvol)/fdiv; + samp[i].right += (fdata * frightvol)/fdiv; + } + } +} +#endif + +static void S_PaintChannelFrom16_scalar( channel_t *ch, const sfx_t *sc, int count, int sampleOffset, int bufferOffset ) { + int data, aoff, boff; + int leftvol, rightvol; + int i, j; + portable_samplepair_t *samp; + sndBuffer *chunk; + short *samples; + float ooff, fdata, fdiv, fleftvol, frightvol; + + samp = &paintbuffer[ bufferOffset ]; + + if (ch->doppler) { + sampleOffset = sampleOffset*ch->oldDopplerScale; + } + + chunk = sc->soundData; + while (sampleOffset>=SND_CHUNK_SIZE) { + chunk = chunk->next; + sampleOffset -= SND_CHUNK_SIZE; + if (!chunk) { + chunk = sc->soundData; + } + } + + if (!ch->doppler || ch->dopplerScale==1.0f) { + leftvol = ch->leftvol*snd_vol; + rightvol = ch->rightvol*snd_vol; + samples = chunk->sndChunk; for ( i=0 ; i>8; @@ -377,7 +432,6 @@ static void S_PaintChannelFrom16( channel_t *ch, const sfx_t *sc, int count, int sampleOffset = 0; } } -#endif } else { fleftvol = ch->leftvol*snd_vol; frightvol = ch->rightvol*snd_vol; @@ -412,6 +466,18 @@ static void S_PaintChannelFrom16( channel_t *ch, const sfx_t *sc, int count, int } } +static void S_PaintChannelFrom16( channel_t *ch, const sfx_t *sc, int count, int sampleOffset, int bufferOffset ) { + #if idppc_altivec + extern cvar_t *com_altivec; + if (com_altivec->integer) { + // must be in a seperate function or G3 systems will crash. + S_PaintChannelFrom16_altivec( ch, sc, count, sampleOffset, bufferOffset ); + return; + } + #endif + S_PaintChannelFrom16_scalar( ch, sc, count, sampleOffset, bufferOffset ); +} + void S_PaintChannelFromWavelet( channel_t *ch, sfx_t *sc, int count, int sampleOffset, int bufferOffset ) { int data; int leftvol, rightvol; diff --git a/code/libs/macosx/libSDL-1.2.0.dylib b/code/libs/macosx/libSDL-1.2.0.dylib new file mode 100755 index 0000000000000000000000000000000000000000..dce6184852fde94c97ecc46d52abbaa21d84cde3 GIT binary patch literal 1506244 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

*54J$KCF%g<0$8Xq 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 z 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 z zn}c^>+R{QuV|yJ`g|n2EL5-B{OtYXN1tFvz4Zb-*_oWSX)>a{2%5&MsTeMB#7pS%( zBA2c{YX-Wu^QJ>gDREu;*6Fnn;Ocg<7P%QbiLf^&ce_~J*9JIB-SfxmXvT8B_4U_B zhjKr^b(_9-ee?xuNsd5b66PBNiS^|BN_mF-7xH|QbeD4!_vNT!lH+RT{?E(YpFyVn z3~l({a{SL$Kj)=T1LZdB;ax1);(B+n;JaAxT`U-<#4zLXWwGGK>e`457da(g%b|xN z8kz#dL7=Dfza&ijup>;&e8evZ+IspbXV#m<&zkdhQC&v?LZ?{@qdB)bHw3at><_Bh5GzoG!r7gM59V$ zSKC>c^jRybPvLz(9rr~_YxPi}aE(nyDAo!KdX(jZK_$g^PdZfqI# zH07yR83;+5{#7_sYTMGUji`Rpwf+9V{VKWYk$w!zjkaYO=C{axfKmZ%lu3ycW4Cg) zfoAXm$dM8%Zopw`-wG72J3qUe-qq*8>;G~7HJ63Ek+~b0yE%Oum*8%u{8?to-5TX~ z+1;9)wlB$TtZdh?Ou|{bo4emKPv5_;5eHH$4SAM>FQb+mbZlRUzwC}2 zer=Px=0q1t-v=DydgB;(4{5u~F0Z&vlhl5_v#@;;|^JclJ3~NIDaIjI_O=)`3DVz_ALCIfslpYR0GAG27AfdTbGnGu&}-w&;R4^D)#Mt z)BdJu?4!HgGwLP%PciECh-97&247K9jc4!k|Mf7YQ0%fGo!6rhr7QThI$lKv&6gpS~@yn@^A1nSYKo{%$$>XI)P2M)q!G!GXI)s9uCTyh>mqP5Kjh=ikH= z51+fjHv}=;F69P*6bk6T$aFdTQQO@s6!z#}_5bvY`a+ZKPv4(gt%-NNxSQu819uA1 zInlS9aD7y9h;r)4hwMUHo$at5c<= zxfAP@*%kbVhsYj&8DQWb7yrl=KRduvsmjj?;Lvj3jE8N{fAPfu5%^sJ{~BibtpFWI zkMjZWEI))@7U?qr*ypwSrk@eu;qUmy-Pau*g>#zYYi8AF1OOWPHlGpThw#Q*V1<7t zp?L_se=GRr&j>j36sP)&pZPNa06@iO1awq9n4mLG@xcKwggg->36LKiP=ZVQi~ugX zKOZ50` z+Em>7uua9SPPMmBf-rgU`nQ2MiGOrgMSSS5sfpeqBT~+zck_#r*++v()}+q{1MZHd z5+pM#@P=^T9Zhw2G}YeS2M4qW*|$q+e*M8ulr|C6v@UsGdE;Cst!JR8{W5XFKNdgU zI@S$X_U%SrGP!HS2v{0f*`Lg0| zg7jY+q93Mfg(tOvhMA%h%#)J=i%ww?V&=va_`12M z_QF^jM&{%5-&FE8`Ius?9d+1flZizw3TSI_3|@s7X+&hJBg!iQ=-9%PqtjpU%f8b< zd-b-X(dv1tlg^P=cQX#N>O1bsCAi2a8bhUml>}UOp8VI%n+7*?0IG^lu_K1${M0qE&g9OhyK+h^8}n zYIpX_ZAbc!Q@7<*r&gsS)w%S1=~8ufzt*NZeo{w6sP5$9TgyXfIb$79rg9i`T-+1! zJFoK9%HFU}@UYw(URZ~o$SpY!tCNlw>6M;e(|e;b)kj!i{V^Y zVS#hmL?rTvX;TF{6;X!uwG#XQ?I6(P@@oEmx}M=Umg(`ae?e&ziG(5z9w>rFrZCdr z3P}^y!jSYPEV?El2EYcEBrt?0I5J$q6B&4|B{EP+FGR)?2S8ZpHNJIQpARAG;@d)G zwhiv^br2bV2Rb1#2-SZRh|Jc;w}8laCIKi5@iRkYFlY{u0raByx*D%ahzxjCLS%5+ z4Ux&170C-)FL~L5ychveQKB@uATq>$q!bV?`XMrCrBEY~C`uz|$V+@bTAv4laAk-L zX2@4VWYE|9JH&^S5E+*lP~U!-#6;VIFti~un0{XbkqJ~09LyRbV{>8)bHZ2|g9>e6 z1Teos#9(ksUfay4V_HSI^Tm34w3tzIZDSIDcsoB99xA3Qh#Jdn2$9~0A4*4UL%&G< z*z@E*NI$K%w(u(3UI&yA_0S#&QjPF=C{ISQuOEQ2BP3YqNjc|1O7%E038Yk$^Bkm9 zm1C0BtkcerUbw?AQhVVE{Ul~)QMjo>%(=z#;_NT2^b*?rQ*Qsp=5G48_odjh^UF3cjY{Ul za(eRU<-z3D8yOf7JIqu|P5&@By_(J95(0O0et9roLpQiMemT@i2tZdNZWKTS*p67} z*BAs08wbr-tT)Tcm1!N39qSqQQ|C170wF#za}AcLxzD9kO2<#4bA{tt&UMYD`iA<3 z4uh=hf?-BME>BNaGkq|OG{Zo?{Sa$Gp=gdv>?}Nq&lm=1xGR{&60s-EbJDiebkFV% zvDEY;XQ8$}1DqwVUx}sU9OM{FpMsQJ0Hq?-UH~vW00k2ZnP`oN^D9Te| zL-DfHhN6V9C9%$9sO`l80~vw?!i6LrfN!$O!}cbQNrYIc18qcCKx+;^C~`d= zr4|y%Fs9Jf-udiY*IKbLO4k?fE|woGYz(8v7e305e4nQTwHkz%Cjg_}wAnRL3HBjR zf`I`2ROU#R={G`O(@^1}-}D1>RXY@cy$wt;gFCE1r-L`8Q53lRuxel#*5zPK+|RjT zPSW&xy-boWR#CGU#F8^nQ`7AMx;3le=xA#5f?#uT?d|MJ(}DzhV6|Ra6`+{y6IFm! zt1U8Us2Le=+>??l8LuW%0Jk=fjhL-%dIB?U?|d|0uMTEc=BA=I@+LaJ#mSN_WHt6) zVM5DP5@ig^vy!sC!!LQ36tsN2_pqew@(r(6Z|A2{kF03Ss-M*)*8Qj=!Olii6=}G^ z>R&}>CF_)DC22<-epHf7AwMig;ioMZ%d2-t8-O3E&h5Tr;IXwd`o>UDk}T{i&}2&3 zbPS*oV!9F2uQd%ql~(WLx6>;~6r2PTfXS6+b4c8zUil`ci|LsL8*`28 zAJ)3b>D-(El7>U=i>qbwG|$@LMt#rAL!WP4^G*H=>#;d+1FwyGo(R% zlKO~gXgHn67lPZ0+cBRrWxLcO8f8ps$rPjl!^}3SDz4SzNhp^*&PD5zHc~wtJS@z|*het9N4cpf@K%ERJ+}%zlM;4tb{iO7WHGW_w$OGK*O_fuDT! zVSX_I*Cw`PY?~6_fs~(KE>}Ud1rUW^p-;daNW8rPeF`1TKB6ntH4SE#V^Hh?^rXH4 z9s0QP+4G+d`s{A>Qg*lXqq4gvh_$VEw!FpY0B7rt8>t1|>0!T!Wr>&E%XEY#Nw2|;8SRWl z44!OGntx*F5PoB7FF{=hC8bcm7K97*JG$$TW1A{LtgZ z_rVc{@>e0;sQUj2A^wfwKy@p|78 z<&PS%r5VF#I%LNiHq!H>j}Db`t^y>2E5{r+C zX5s<(#YW)zqiHPY^-t-SW{t&7q5d@BR2CX+{um&!W;O+)71kZ@tsM=wcDKfxJ6q$u z^b>1>S{F_-ar~6~-#IZK&)(0EXI75sf))|l)hy=Rpa;F$8E;)op<;O*MxE+;eu0gx zq{65)d+f!0wSKugu`o1zVNMsAq=&P$9$=9kz_hVh^4s$4Y%zO!y;vL`BLZjP6WZjk z!13VgOU$d8agr~hXJl^BKIZFs_V?Gn|N4G*wU~-W3}w5KjyK9^uvIwEEUS<+%SvEw zyKkfh{>QcVh&H?h#g)s%yAf4z&ES1MT|NL2(;1V0zPdykED9$l>oOKHILZ;HdbmKW z>*qHS&SRb6kel)QZ)eBvettv0o*Y7e0f7^~b?@nXvH1ColmQFC92)h;)t}#}m&Av$ z46UXuA7uh*ssN1H-c^3*1;TBuHn^$(`hvl@sub&mOn$Zl5x%O7t>1wg%rcB!RmSIb z;nkw-YdfxJS%^=USG|RuH9q-=kJ^F zq4eeS-3*J%)eJL|k5ccOe~7}v57Wy>*QcjgC0Qu3-541+7LR6UbICcK!r=yD4P?^d z5%Su!=W8TaJG0nUqvcREg4}kQA?g&)O7PR&lXQE6e)%4!|Ca-e+mmgwxr0LCYfi8 zXR{0Mj5t8gaky!s$-?y^7<(bh9Uc&hOgPULjL|*duQJ=5 zn4=-h8%$DB@$%A|lb+o%X+;rOQaq;h-o(|)S{3UKlUlo@S+fc4*#bP>UoNjsMjCIp zfcJ*GCa@}da`D~@C?UHht16HXj3fj*6p~#NRh1n~ub|!6vnw%ZhcYq_S;hMfuaC;7 z$)s_}?C-Oy_3Y!w9^?>X$C2%11=!dvc?IwhlInG1KFf?zQSHY7~te3 zBk{xgCZ$y4)5|qI43xm}!R}QPQ`Am6-vegTb+x4=|JfypZM+MAbdM6wLr8G*Cxq^&?zDVQ@FnXn$d zU4E#_z#fE(!~|LgRT&sG8kxktT)wa02ri8_O<=V~Xfcc_K+Q7RG@0dU{Oci>g4i3U zG85N>>+{Pe?;*`eAE7B~%PK9qyS#tPijdR$>#g{YVOH%Bb!)WzWua$N=#^uR(Y8q>tX@oSi@%LI3fm@)pwE3sMcy$fwD^-5;FOKgj)|Ysr6!CX z3pPf0a)z;Hi^g2GXS8iN`r_L?uv&eG<8iW>ttQipPm>5Osixh~p@{WeoX(}E#vI&T zh$Wl5_ckSa#u(V`q`wkOVvI4}cE!cqBHO~z!uqUthkXXal~Jd0Skz1?h!8d-GYTR^ zD2qt}67IuBG#k!CNB6^5#CzWcyah7^sub3FG6Xdv4nM#1`AsdGAmY8h$oy%$v(rBb`xNll+qg#E1QU3_FY~8;}@wLc%yg2%q`5N6db> z5d$AV`{726d_?Vs8}TMsW?oN>J>r%|iE4;AvR6fHF;1!(ZbZD2k$Af&Bp23|Q=$*B zr<@X7@OGH|%!u9&;m=t;5x#}}6BM6X!<1xX&{l1x zm#3*iT!c}g&5YI>CE5&o!YJ^i{HbU&y(+6G+Du1E6s*nuR4|_LS=F49g;y+R#qptQ;w3*>nqePn-V>Jre-0lA|s7U`8f8o8>{_nFF*Wp((ylQuOFQQ)w@yHmV z-bFm7dWwbADbaTZo9v$GJJwC7#CYvSzY=tEH~N*5tGm%JNV>l(#sZS=lo$(!U9COQ zX2!Zi!Qx|YPvLv4FHT{bsp7_Hp)C`y9zL4<$LlAr{{G;vz&UZ@Am!JmPakX)m%k7M z6@^bd7qgn%J#?4|+IuyV&BoR^Qsf*lLwGjlmy4OT zR`v&PaJWcugWZ;IFdOm&Fk&!h0awJ52YT2{NH4pbS^#|r#b`M;*q?hRi^arj3ULT3 zGTA)7+{0LKxr-SOJHaV2<6#Q;0T?l##*lHQde9CRXo$E7(5FU$F(3-;GABU7t7q;* z21Q7BK;o^EM1fe=&!D;SOv?F&uDFkOQl;Q;OQkR}=Sc;ujFf%crFl{2^*J@L;IViJ zXU-cQeG38?yt-Lj@S2q9U4AOMmnqS`=r5e_Ry}BK#e(4my4j#Khhw-AZDuN4DrZQ@ zPW>1ncuh()IyH!K%wV|J(`q!KGmU$q(Yc;zbf!e3GbI|0<<%R_XklG7F*OZJtI@>7 zH126NnpSM%o>rrYi)q}`YBVj``kuhLFsN!Q3$#l?@is#b$34;JBpnH;pX-S>C;rd| z)7$e?tv1sJixzSrh;Sc;eMobRe__AaY$zZPLt17kL@W8EB0JV4nrJG*f|~MxL)vK; z)E3@LnLxiE-75m|#A5LAgzkWQ>uM+UmgbvfJ`QXfg$&lmNVYt1p3$7E?s)d1Dh4aG z>ch;6C%_9MLEW)S6S zdr0em_K0lmuvST}J9u-2?LoXNh5>6#DU%uk+S27-6V|B#$e>dCGG>Ixz2bUk#)l$* zy!1%G&9G7~h#tN-=RFLGHn5aIyy$O5p^qcok(3sF938O*C&g!Ka&i(LW(aQCKVZI-Nz|raak1DKN?K zk3w`1us}F1(nB#>N}rw*X!PBCn?s;O;0y_)AlA`|BkRI68`6g>cbh2dE9Nk96Welz zbnNoJ9LCBd69^cjz%~WN7?d`o;5MICAMDIny&7U{ldIU7GgL^`!feIXoFTlsm|(bD zjZ+y(S^c-5Z5f)>}qD;z!52pY@2D| ztomje{?bzl3oA+Zl#IsE3DLk)?Wi3F!snmNPwiZANMD&twtHnt@Lv3z*z6mt?#EZt z57w$*mdqcf)_CxkFQMa+F%QJi#QY!F&AzRaCERYocjCz^lP?gD(E$-+BGsll zUy*8aUPFosJ4b*6BsUUoAyGO-65Rf%ck#XF^9#$Z^Y`>)`W^EHui?*7zPM+lJp-Wg z=aE$e#uHs+?ZmI5W4MZw=lH%>Ck%?jqBfUWjnJszWxcIXGn|jDH}~@If07;TUf(1e znaeFkCTaMe>`g;Lzr)}{#u&NcBq>0CG1d|giP@iWu)jZh!~j@XC0Y|}y6e{n{*lsV zSr)D+1G8Grlj7-ATzG_Qh@V@GpPw5ORo;@7ua-CFkUeJ|#y}U`OybQ9djXut5SZeg>M=C$gyM1EPT831Z3UZ9ni?7;62sr_&BFTq2_FLcwOp>bs|#IxjHUK+fW zlr2dXyJig#0xd?(ny2v))=qT1Lm}+-TkbAFgqrW7cGKOjW~ zn9lhHaPEzuQP+CduYw$i?|V#7ZXwuj48jQ0&%qcKmWlZ{7@r=DFW8)L#^u51gZES9 zwfkDp#G&x!JDFe1n`GdLwM@Fg==*V^+57L~oSp19+Rvc$4uZFUf|Libcy zLrz6B6j?9LKX6+)uDD=ED}HCC1JTNF&^&Q381h7U{+-IUK<7fZ@EYdIo281uz&S3# zxkxbBf~{%-oQo{FFWD71mmwsJHedzN1A!?*O5IoPE^scg4-uegfO9dqBlyq-&gEuq zU(UJar0^JA)mYIR;9RZs7Ti<=r5ec(yr==rW#Yo7q4)iE;9O+uBj(oz=MwAO4bCOr zxf7gA#B(1wmm8%!!MWUm*ayyK8~VYy#1nBp9>8cVaIT*00q63$CO8)_>cHj_QQd*f zMb4!Un~UU2A2wG-CUd~Z66slBa{-9C5t|F7%njIF+Ht+uT;h~_vAL4kHa3^|>t1Xw z;0P!TsAGlAB?P+@n~TiPjo4fQraQ5@YDot+*XS0RPS{)zpGqXo773dxavwGqNufS$ zF0m5u(@_aCpK3_J=k0#z7g&WtT1r9O>C~+ zVN%<~=331boo!-swT-w7n@d1yA2wHr=6-ChFyZ~!T;akyvANtX+>OoU9${!@2~2^_ zMHCR^Ha1t}E@&=M+#S$drE&V8xty0k%j(?~G?#grPG~On!1h9O35M>6<|1&9Ri+!7 zOGI=ZG?$r&K4>nY;x|BZwMz9sbFHiknyZo)G*>B&7BttWCYl8_*T|lb%g|h=3_78? z#9?{cL8%5?f(*BE-UK7?eRkeJd5V*)k305m=1D7jW z8<#6`3zsWu3zsWu2QF9iHZGTBQ}2PxrOjt^#v(r1U}VULh9v(4|G5E9{EuNL*hPdG z_5|3DVNZbV81?{ckHc#u(1mqm1b4Ur>9s!W0BxBZB)~Qt4G9K8E~+C0l!#&xqNP04 zMTBT6j3gsOOB2R8T8dTM?ueGc(h;Em9eYy?(6P5QgN`%AI9iL9((8%l{u5%1yOFm{ zztic)-xf@+K;ANgZ+F@FW*l;iR!Y$)TvN)>rw9cPiQt%HcbLmb#vzAnWgKz{SH>a7 zctr+yn6b((JVS`LwJ>FXA>U4k7zza3DIq^_Ih+#m1J}Yr&&=_DH{>l>8Sq1SYx>Mg z7&no(SXs}LdOKyIF+M)<@>PjsJ?FS9dTJ>2}ah~Otf)TLxb)2 z8*I<0VXq*Ah7%$4-E1xFk+HX?JG`0EhzuA`ccg}f%FBS^bdNVR*V1fj0t?3@2`iik z&9>6~bfK}v^Mr$%;5<#Qg_+y9!+DzTXtop!iyna*wPE1GB1(+xFd>A~9nsXZM`K8% zsT@2mD|J&6KG+1f0?pEXlJuexw1ESG#|aC}s}*vy2MY_(EVse&78oA|XqE_KC7JL8 zQ>p;X(#G-xf$+3}noZha7)DoOSUwcspa(QdE9?f)Y}jPnNZ=d}tBla1)@-}`5kJFY(Zm*zb zszAAz+tN*lzjd8AL#TZ^a0VApRE_f#hiIf}w^-A0=7F0t#PE3|Tm{1U2ns|~f(r*j z&C<9_Y6S$hGhT-b+(Faq>{(`?m&I8_;2_w}bC8I%z!e4&S2hT$P`a78bLuPZcChxO zU79?YuVjif0J^fm6sLI;bHoNa=7`Ohj3|bH6w}54#gJY%!3!V~V}(9(0#M3!GDz5- zJ02cHk9iD!fhT6`s6Co^VxxEAiQUN?Vnl->7{&7RAZHVXzeK4jN#8iIN%-uPO667m zIkFs18;NkkhV&F|;sX50lS&;4k_cj-bl z%B`!Baz&;vWxxf8K?4i|OOG!9iZm>N(M2LwmnjvitJO6=4KgEa!ZP8}QgGb*lk7Oc zndu#%H}4Y&2K+1FUUUNZY6(wzb6n}gaY49*Uda|VyBA%HZop;9*<@U#F5q{o1J*da z2W_*Ax8BLCLG%u4pt5WXjFF5wddXF}?H5AtG)W`z-E1aUm79r+)J**DX(pN8)y~`F zCQh!;&p+AGau+x@YNk^y+7ODzuV23W`=mJc;wiZT6w=%IN{RV!3nAN9qN(R%4bi7| zQf#ou$3s8iUN_6iLaHywdYO&anggAo+aehcGtE?3m5YaRHC5J3#Ulc53au*>&xE3x zL(N2d)^44N_^jpXL_8L7w-K6&cvp1Mo0N!W$|Yj^c6bWCkgrI@GXn4SK|2vo=cdQQnwk%?S86Hh$CO{ZiLJtXR=LC5thf{!Bc@wj&cyaqT-L zi>QIVOgvZqu2Zsz6}ah?ET$#9Gx2OmS0-NcMke0U^A^e~GVvn!W#WY^=sqP&xPo-b zO!Jg1)!LVdXY1OTc;OLxGw~dX?o+b#s+%(Lc0*?-UPXPGcsBFqOuX(escmNBt!C4e ztxP;+q%#vw3F$c{OF)JGOuW2?{!F|;1D%<8!2&u@$r3K0orxDDpd%BnWPj%=S#-p@ zQt?#cy{UK%cy}rulchTqk6F@pN|wL?y{BZ+m*`8yEA!uTN|uuUJ*Q+T`QLj=7Q$=2 zr({`KXDXggwNvqs!uBayf){L=Y?i5b-RwR|k&5RCb)AwWv_Z!ySwb4LPstLwBNb2C z=*q<#Jr?Zplq?zIUvNs6YU;|y3rx_FjVEfLBO4FHvz?6x-y7L@xCu1QmBpcF>Bf56 zdI(EhOrZFz18=43u>KRp8LHJOGf5zjLjIuh}= zm%W{cC%q#PPjW{hp5#U%o}_jnUe&_NtrPL0HWKlowG;6ow-WK9wi5B8b|m6OZztkO zHq$o}@wEAD#&jj(X-HzE(`il&UX%Ywp14!vgPzZH@KJ~R?RWUFGb>`oy$?HK@m_KJ588HXrtc3Qy_&aGoOFpOg9C(tI47w=^a58JK2Y?ng@*lNKRbn$rEz(uh1K zzR6-7&zP=!eeYoX?cAw ztq$N7X?dPcfvz%!7a)4*K6?_MIk^!=pMqVGWotV>DPb)QJ~1L>l;9Kb0!9fwWhg-K ziQyc(C-{`004edGp#Z_B6xl)S+1it#03nGP3J`5hVV#`#k2WjuPuCYQjqjMk2Se-~ zh8JL5rkTR$dL*BtK4^+$Q#uSyq;suEHqBFK@kzJEx=!Ph-krx+Np~V&MLn5(mi4Cc zRoI`)S8;DLpQSfs^Hpqd`+Rtoh&Sc)dBcqfecjNL(N|e_N}rx)UrL`|W+SDajtoc% zImWFt51=niq6sFklzz-7B0iXVL_7Qz=y)YcQ*N2a08%g={1!-f{S0JK&%_N7c&j6( zQs4seYoO%)k#<(!l@G81H)Zv)W>WHr4y4J^%Ic$MC>}!dTeAa5klKKyuKPCHKmDv$>62CRTdcqCD2;|nw(5yLtt@h{KHq8X+_ND2$fw7;zvJZq~= z`$MiR?XPTFk@hEoz=PkKjw$V*JA%$i&3HqaseUejL)vg~0hFmik8L@!{Frny)bd_& zd?NK*Sicg~A#J{!kOG)KY6Rg7{)AhrI@hbIA=D@ug$<+td{3>EZKMDK1XwIPkpd`c zA_YilAO%2bA_YJ~FDs+~NG+rQXf31wX-%X6Xjq_YqyT6Qq<~zI22#M>66<-O2SjTi z1xSlbd4UuVxrG$Ks{<*}v)z%vvAp4tS5Wvn+uNJ?IGzt8#MQ<%DHBW~CqV=`t}!oc zOd+o&xPVPlzcRRhu9ew6NgPeql014$BH#s3=dy5Wd;w*&g)g9Nx09rdYX#dXfB{YM zn*j!Fe+ytBVgq1+xIjO^0EHa@12(oFVL;cWLKviZTR;pj#>UDP#DIQKf*9a7tkeN9 zz*PY;z!j3`<>$zBZm6H&)$O0?G(agVI9Dwr!9*uHSph<+AqLP6R7~hpC&WO4XNoc*&!Squq;Ci7Er3|FW)?#@?^V2h>?*inNF()>wt#l}0$6`ML4Wfizj{6PM|?@S(Di9^p18AV$U)sVwQMm&REKgj0JK-ri5akVhXUuE|At5eqJ{4i8IV}0w- zsx>m;%Kx{kn^?~t#)16sj@_lB8Ecb)48Yskm_;TEnmSiqJi#i$cjjZYd~OGO1w7RQy_G3ZXBaWg#^Hq`Az~ zW8u>3S>@?X`M_eU^7NR7rVE;RdL|J}BXlL|xi7ybQ_s|tg%3J2_0%b5pVXOpCS^=f zG&A+g%9xp={-jJjGY%2>_e?$b@HLrwDq{NtOGl<29O};0!x!kz)GO)U^F1qKB)c>9 zU`*eZd8Ynv$kc;%eOu=BWM8Hp&$Tl3V0Krg9>!N!rXGUUm#GI&`!e+`GNJ3p)T666 zW$Kk~cRN_$yQ;oth42T2RcPnyGxcC; zccxy8u}LZS#>WRs;0|FXHZ%2LF{Y;&QD*8%?#xS-3J&XD>^=#(NnR?w}QrpVZt7cP{txP>- zq%%`b3F*t!Q%G*e)Kf-o$kekr-I;n0ac8C;$pETl2~4?Xp5xS!sTa9(&pg=Fm8b_7 z`V;k3t;9Vi$py~s54Q|G3rXxa}+uf^(1#B z>LD6kd3up!wXV|iT(iF*P0xxtv-BL4i{ekuiFh?k-Ldd`nKtyLjfbytg!`<-MgTEuXURA)qM>9|D@P@FAcn3m^PQ zS@>vaZ12ixd2eZvmiML>d+fcfMOxk)d#ew7;X5bBrksS22InMvv^Xc>qsb`=kMEp# zJ<;ZzmX9`L68k;T=JXveMt?Xa#do}17W5sj?m!r`==1~ew-p8}67>x0*j@Jaf5uch zU0Wix$U`bsd9&dA_uD;hlN%X#e;J0fnR>?>W2SSpdmdENB30rYRMRAN-W_CHdh4`1 z$nG{<-X!JkS0E?BvK8j(s**O~X0kBAR-#SLl8eI|G#Gr?P#3DL|Vx9;uC_cX*LZMn~PWS)A{nr)@= zNp_`2B9)#A&9=st`+SGDH4~aGC2FyLiw{17$=0&oOnRy{^5|u19im+h_K@ckRWFJy z_o#(Z9T`L}A=-T}*@9k|$XA(l^g)FX6Bd@4b@WC>VFqaTeMjy*W-Db)TEkm$@Y&2c zG?-QsC0}sii-)sfkzbalBoisJNUAj5Yhy5oNRpTW0TvR_F~5G_d+r_?d4N(?*Yr-?vaGE|ctpnG zae4UhBJAd(HSFf3g#kFTn~VHE({9eDsb87h99JEiak2$s{+YNEv(Xg<$!bm&5%~23 zR&x~9Hu(JmMsqg4Wi%J@w;0XQst%($sU~39g)i_nC~gY)pk^~iZgDX)nL{~ZTzoQ_ zLvxG$^q*uh$8-eWlgS)E|C>zaY3al=vEhzoVvD9Sm}81$E645SRO#AY^M~8Z*}N`$ zxzYc}+RJ&`MlinC8cpZbGh$R-YNgel5sRgk-nbBofp1&+J7W0S2BG$j7^pr9wRgm* zi1!;-{*D;O%=UfTGxK-EAV0?e5Ux#+TKJOyR9W~#1EFWublJ!({H_Ax!(oz3s5>(W zipGC#O__%P1T%eK;TFZcxtD^72nX=E(*W4ta4ImT0k5`k718@;RsQe1Ee7#3e_Jee z(b}UXlyzbwwK@~38AF>mUutiQnF<6Jl#ngs3Wm&Kj!$OpAS4TS5OU*oMw1*^1|hRM z2PqkxgHX2*2bB+qz4_?!Xb?Zl__#xh%-23DqB$$%{tI#*zy--2G%$avzvx0R8{(@#K=p=c_9Tz@&7b1&Uwnzo|Lm-*J}zDTE?0}2(X~Bbz{3zbLMkHVPQ6><7JTy}Omqg2Bx7rZxxm&>>)^*R!M+s-ly{~+D25dY{R?=>Em!5b=EJJ7=T(XrdC zO4ms?O8G*|42z=gzkCnNcP?zE+LEEM2~u+d4P_45_3T4gEXrpSpjl2=<+F#y{69Hj z&#>wB`p@vj)3eV6WicQSlOWnYP~0Kk&hWCx1RHn3=Q)pUGazUc#|d+rf0F0;(^_hs z@n1Mv*lOQx<8)@XaUS9S(bVR#4Q^D2HcrgenGGHr@6(wL2DeUZ?ES6t8nlkn8q!Y3 zVT}`I?ODw?LHx4jXEkPvMh6`Y7cYz<`9gO;1bV;R+#YPk`Tsthl%5j@#7SJnpy6mbb2;BG#^;bV6F|w#|vy zaRWs|(+xDKb(2#fLroGmnm`GtpICCM_Bx2)CELWO1 z6GQN0y}vN6qb%Jwi@b6!76wAp!&eBAqUF+7!-*Z8(JSB#ee*A-^U_|D1t-C){B?Lx zpryjsc^>S^waAr@z!g~hS@i4jZgQi?VBwI^4qMThtw*h3ET6OZi%_a@<@n~FUWXUW z?qLbuQnZHhjkH+Anet8Kmhuf*6<6c?H#lk&5gVo^K&A|4fCPsDb0<&I&|neP^gvj% z8W@**@EJYfYS)(t6Q_*D@($QmtwlyM@Cz)mDuLC|V4Y$tSVIc2psz&&an#DF2Uwt+ z2I06dtY23D`ttd9Pt_a?A-VR%GJ(q~*%#BY{_W1sXcLxj%yj%2`FU0%KmKD6C@Nd= zA#zwjCUs!#`A>_%`gjNZbgC*81!(m#HBQOBrfl!;*NL@FlH2wvMn9{=O>y@@LEOm(LPhhb~_4i@`W3Vnbp>xlKIM zu>Puv;N{>IeV?%n7_ZP+TT#y-owN6o1jvoMtc>M9i1Jm$BtA;2Tqss3`^-Y|-w|^bF z1}6*2E5;1DVM8Lb^RkUu5VU1}uOOnC8`HeomyXyu8a!Q6>Yz8@Z){%u_j9AYKdQs| zbv0Tn|I1W4Kk4ryLv_91xV^sa53lF<50hyz{_Dn1e}_J2vOK$dS9~MWeHtVs8b;vV z!JCWo8SQA}FyT(5!x{MmP_KU2d+A*HPz>4f@ z`z*SQBh(pP#xd%OF5@V4M3<4=5naZ)(G^~1^v?J)=mLLBe3?q>3^2o4-4$S_NU{_h zJCyPmGX)`Iza_v7Ql3OHXeW79pf7}eyXonVf_YV$DZniB=Mi8=<9(7AzZ+nN4nl%y z2bh806=23W{^zaT4>KS|jH&AGb3xI?rWs%cQb&Lpi)DSZz75lhtfV#r%t-49FeAAg zU`A>?z>L(c05j4%0?a@*t?)k>U>2iJa}cLN6;I~2#VVf6jY3sCnalrGJel7Bs(3QL zhF0-pko#Fn6;B3HUxak0a7B6*Pv-M8#goyrqfgSk!&?eZe7}fzOP^p~e>2RhR%;bu z7Az*tD|rqafpxdy-yUHWx;gBB7MnKsj*d zXjo!wN2-iQs6l@d@8+c7FrG;g92!utAltT6i%4T`JFn{@X{6hMU5`m4-K}(upfsg) zN2MugO;{S!+;rEDOH<ItKPlLd)4hohY1R)NE(@CuADz?mb&MZ_6o4hnNnwy-z;SPy**z}Env?{nO zBGQsCX}kbieSjdvu^$E_edJgXxx}F(D7?`HILqiskX{n%i4Ynen zxwVoL&TEWJicL%5h7p}s71C^P#HYo`{Gm{yC88H>8BH1d(hPByWG6=R4On!F ziw-+ES6vPUi_UetgvN~Ck?@~Ev$YaCL)z$6Q&M|0o|K4#utyYOGO?5Cem*vhCiMD# zD3znn#jr-VQ;DSEbmI0w1`PQ%(!Dg)ZS0+XCf!bl#~A|h7)vfrLX%&4{sNvPl<_qiNtlk z*V74Hr}`kknvTll@bhG`T#cr~Ppjq9 zTE(7iJIvR^{0ojhGW+6zKX98NI|=B%Nwp_Bhtg0+eG|=qYJxJF2fC% zU_IO0P<(8&VbHPQWRGz}MV)9iDq}~BfnQ4JA=^CreSPD@A&vO`@5>v|JSNnop@+Z1Thl$pWe{_0A zk^z4)DXlnjpeE=SUHOpW?)sc>@~z&4r;;Z<%onzFiS7By!N6STp=jeinI1^{`s8r5 z9PPx;g#BN_I3{6`{2B`-Wm|B#Vgu-_S9h`Ft3u*P%f*f}5HfU^j~$a5PIe;Iz3fP8 zxY?1U*}j)N??}=#zo@+GNNal9iN*@{>-jMIYrb~O*KoGuGW9JpIopZWaJCbz;cQ1* zhqIl?O=mk+9o}|pyhrt#ck-6xugZVaj!p;`KCU4hRnJdT>5(6nHl{elavx(hO(R-) zg7M`U^CeV#09mWpmOC2v zpq2TKr!m{#@-!B)=4lMHwsfpmPxJi&D4Q)yZhvJbu|D)S96UglJ72^I+^Y=Ks(m)M@=g zZaR2LtpLwz#BIqtxJ})P4+-lR~f7 zqXMQ&uA`!DG9S)AF}h^v0fl^UhxNXKM2|#2!BeXD9l0uRt;#u_L66Bh9Y3&|n@@LR zXsush$1sj<%{RtE20k{fGd9&sdgRZTX7SBZ+;J}9+l_K^J1fS2s#?R?$kZDA*!>H( zJrj8M&(2PatB?iM9)@~31su%T)w2hK(`e(2a1JN6cqoVZKmmzTVjiKx=8+PLGe&Wm z1dcz}#+O{aoh=7_Z;|s%x*zpB5NTlK`nL@kZVwUMw3s|l)_OCVjUnkMBVUOjqpHZy z2&3#jM~_b>55Q$$z8KSS#0qzoFqZNF?kDpZgYPT}eMfP9zK3;)ukIfpnL-?EX7go5 zYlK>NS^T;xX7FXOQhXL={c&!=I){P0gCOvy#4aissxtz=*1ObGq_FN{cD-JVZc?A9 zhET(?Dh_HX47?(TXw$IfVRy9wrp}z(VqmDN@z_hPq%o~K(dRS>E!EqWs3 zaP{_yBgR5g&_fTJ_%!h;6QMEj_B?-PaSuF*unv%{ql!OqKfq7heO072(pPa(^7DMK z`V(qdkI&Y8Er+oKRa>L;0mWOt60BK|>J4?3K3v8vDmb!IvVCmh{pHz1F?)S-;McM% z@|oB?fFYceqn&3xG6c{vw$>q|2a}$20(cAx^5PX8T58xSiY9;FU3_>#ofbNGh6) zxgYt%F#x}Bd1>(?kmTahP(hQesv+q*`qq%Qs*~bo`38nHYW=UH@{sK!e;X*lMJslHW;(pRnB&iv|z@|O2=?=IxFEwj|y*y#p;HHqm(7CWf+aJ(4Z zUVVE2ID~%-am~TC(PVD1*no>M{JRP{*Lg0MV3@En0Gv$jVJwXzFm?PYKGdYXgp%cb zHMtoc<2P|saeLTo0T!1-Zx6p5D`?v*#jNrxHYWScXf<8#O960DOnoZg8cGS;xB{ju zC!^^xBZga(A8mA;?IA)4ZFLjg8GcC74eo!Aw#{Y!(+X-7H1><;j;(fVtmUgeV6mqq z{)tmJ7|AEhxw^IZ%hdzsPkrgf3M^Njn3BHBmY*#l>yk7*vGQ&&rQtBvl5K8YupzU< z**T$9Uw4=k7K*Kn8yH<&T%lH+x=t*%-AxFiab($%-$w+VQ7E_B_Ye=7;#9~Gl(j4qPX1hQ zQu`=QS!xIY6q4-7r6%}%I+~3Zuw6i9LXU~RefW8^|J*-yX@Rk3P6=rt)Vd*paLV_o zV=o6=)r~e?a?^#@&a-r(wS%%krQzcjYId#LZ(rc+rXBF7 zQ`j=9dHukvKjXp{cEZw#{_@X*9)=r`rk}py@LZ~sF3Mr!52j!=ThF*qo&xp3pErqT zTqt3M1H5=fn?eeDaN-HoKBn+mom^FdX(_q+=uVJvo8ab5!Dqd8K6ub z_rzcza)(Z!PkpwF4c!-Z=c7+rc%Vtn8s>LW*M9XOjZp?en(m%E8wU_3O5-Du`y_bs zp(H0^z8NV^xbW=h^SJD2n>o~{+9#59@lyD=u66r%Vo?la#tSXcj z)%Y8PlgagA@vyv;EE0T>Gu4;*;+OIxdUQG;BLXJsA~U8GT;S@(`((lWJ`%}{Sy7D3 zV~TZ&OfKlCeUCK1wWLJy1B!q-*dd|glm>>BO3px{f`r+bOwQP0efTXKb3Av@+l9*g z;mu?`E;QdY?&O6|8{|D7%^(YV%ln)XUq-WKc{SfJ&Ssn&mp~QCzUAbY52R;ehPJN*gt0wG#AUo z91641w7yUV?5JnD$Ys>1oIRvyT)~`VGxoGhYj(hHju;M8?%8^Cixfw3z&VjbI-v|v%_W@=V|E^_5IwCWmxqlxo26t3t9VX z8MT#kiPBe?l?a-Nw!#@1JzXv5bcBOB&|2)`*?T~`oC1#4Wq^4rcc>AJ<-LiE}cz48BL(E@Hrr*F8yXHAZU$Cnk zpS1F^r}vo4Z${-l7FNcD7umeoFKYV@Y!sL>cXO^bB^>L*A9bt0bIWb`9dEb&cCEB1ag&caetrB6-Uk@ zwm5Y-v28u%(Z8L^eTnaH$q6 z+wc(brDvYNs<=ulFIQ+bR7mN_m22?L{CZVBnu{}2)oI>USyQ_?KeZWEX&seup3de! z7Yle5fOS~!m;o8@dSvXZ`10EBm%%WyR0n&VuH!9db+o3>5!D9V_<%EyyA0+%X5MAo ze7&AN=N^;mje?|tyBjfAB|*}w7_}nq zp_;{gy$#Tp8_Fj2eGnAT^F_wU}HeSE+3 z{LlJ%{PyDVDt_$m9lX0d-#a+k*|yZHz5Sh6_UFOL(cZ-lCbvGjIJ)|9@qPz0SwGMB zK3pE{^gQd)<-y+h(N6!RC0dC%)|K_>-w#gq-k$E@DA(_wKAc@09qym(3^tAMX7BRN z4$f(%9-f_?pxVKf{oFe}Kf1Wwdw;ltBewc{XW%uT935Ys?_C_d-@z%W^ozHz-vp`W zg3TJDc8~{>}?;$6yBsmr^%(ph4ANFLrP;>94Jw7hd7Z9UL{HZSUY@(O<82 zUU(e`XD4UxcW`ouetC5I)+wp~mzO&@0F-?6(}%qi{PcQXUmWeB<2%^nmHg9(qsyze zC=UC&2zysMxKZg(@^SwHv*GA!=aql2$)O(OimqJZZORt>1N-rj7xdx%AqMQ=?BZzW zmG_I~XwY|{El@e5ombw!Pdl%?Z`V7oyiemDyyRjT3;gM=xxt^_j9dKamEYk{uX%z$ zy~h8Rl!T09-z&!c0CW;981?JXmc!G zr=ZQTgq?ym$5M6*+8j&TD4WlBpd`)vwb=uu#^=pGC^bHB4nV23d2Zv3EEH zZH_I(DQI)-Bu+t_V?%KY+8q0eQ_$wvUW~GZHpedG6tp=u8>gVnvFA7iZHCm9&AKhL z83I>ML7V$EK5wDT{TiRQ(B}H?wS_iA9gvrUHbcnCC@;}w$Tc|yZH7pbQ_$v+Dy+>f z(dLjVoPsuoVBr+BIiw4xpv@s*I0bFS1wXF~Z4Qyc^PtTkb{J(FZ4R-+DQGk9>{&V6 zXmf}io(F9X*~2MlbI2b~L7PJcaSGZTVu(}F<`6}kf;NXp;uN$wL=&UDLYqTGaSGZT zqKZ?{<`7w&f;NZf;uN$wL>Q-_%^}LXJ7+aME#9582Iua(a~AHC;oUjQ^?C5_97V<{ z_wF2}#R>QB9G#ET?cF*09Vgqnb96aQwRh*}ZJcQD&WA3%_2Wzf>G18(Zx11;#;FF< z>4%f6x92B+12MH~Xi{K5jy4uXk+B~q8wf}5DO>g9WFy7IuYMeDAI_2N3+j*(cs~v_ z$x-;}D~ZAvemT3|zP~)W;BV*Ho3m4j*50@yh{F9izRvevAF-A=y!hK{io@#|tdC>s z7@Us->lloWqv{xZk3;GhY>(sV7+jBo=@?9pBk34CkHhE~ERSR87-xS!PN3r+YL3I_ z7$<%|&Yj~P>W(Al80UOHPMc#K@%=bx-hVhfIXif_Gl&xdSBy)i_zJr`xWH|}GWn5l zarx#gm^p|8<0O9jHg<7vb%C2loE0bj(^-G9cfxO-@hA4n8GmtlbhU>>pRFhMGmeIn z%MX}tJA*hFF5+}rMZV*QTt{mrQxIYczM0j&_a*kgk{zDGOaD7gIF<;BrY z`0ef5hg=W7#3^uk^!@{WdArWfKC&IL{U3d}IKwYz7=&~F@-{)VM=jX$cQackeFNN4 z4?C+}jFVd%jh!&ZV0#;0nd`c1g6ITobhxRH9^iXbgjtCYq_T}LBCKZdG({22H!wrq zC!caGXBkMgX}e7>VYoEI-NV#Q4yuWzzSbgYMdMyy_BZKZChs#@OnHaKj=<)cH8oYC z5Ogy?)jm0piz&Zx`%^ttYHX#_Y$x-SHIuHdU(2(H5!Bt`EavQ@TPt}&%V3bg_LThD zXa{x9B@0_TB#Dj49Kd8vloo@pPO@)=y7C4D=hK6-v=>^D>4^gz7;Gl|H?N1+GWfx| zCQG__$avs#`}sfa1x4P;{o%ZB_YqBPcfLxk>?&b}O50ySu)%-z;BJ#^_U zH#tJgk{scn8@3}h8jk(^_*Sc?KXEnp!l%vTT$g(`$IXS;3fh<@Rr% zAhhCIoS79v4;=Nv9a+M-&U~^ecyDP>?RVE#_e?S?yoEJenT(IZG{hQJgjIOiz`<0W z`5X$^^@2>F7x!6!XB>fc-FpfCTD(>vJKJ`;lA)h^IO_;Ev~?Z9djr(4T1J|`*Jez` zaRGMcvcaLpGcDw%=C2%cd=sE+GOYTxrn6L-CRPhXUYU~%q${6c9lk4Gj~@nz(utxm z^0|+5pFYkITQY}V-?r6X`Zt%G$#nrfxaK{v>uxRejo3aRFSjfFb%iL&kBxSBSxdHyd%pfnwteihU`;rEAg(A}Q=)%heIs41_hhF)rZk)Y7Q1UDJ&!L z35{y91YFJW3H-<-frbkh(vQwB&t|X*&8I7Rnx9Sp;kvv|rg>T~wB8^rT;H7|)}-c_ zK(oa?JO(EZQyQ(J5a!K{7cvU1KH0|MU8hogBnwfo|4nX;o**O8YNnH^7|VJo2ZU(1 z3_&-Dxp~O=CG!P*i8Id%h<7yd!l07nBR8&T5QV8QS=J!w^>=0IfgkA|Tr$tGFXXmD z$a=JcnWt$ob+l`7DRuK!4+gPZCQ*foG#L0wH8B2W~NGJ1!q!Z*8Z#4^(ybv2F4r zgA06$;8oLjcSG%Wm{`UN##~wa<>#E{{+jG{jg#&xZN@iRH(82Grne?arg&{7<8;}? z)duZ=r5er?Dd!gL%UiqfxmY5?D88o~FsLCBV3+OKdn>>mbg`EH+~QB*#Ps29iV49z zQu77pqVH)DwSYdGe3?K05aAEVv~hN+>7t#Lp$ljx?u6X=5dfMc`LV*c>y`AAZDStV zz>1H7#NdKG!yDM&6e^GFXT2Nn@M8wL^Wi9k#?u<$TYCyrVDlqz|9HMyzz&M&5-dN< zZoOvjH&S%4e);29D82cYJVqO=+khE#RTyS2%QCoK3Q1VYs)~QZXKAV(kU!D`Md&#G z8v>5?a1OH}aar|8>v1P!v^Jij<17NJ1*HqK7qJySZj7?fC5yph&>tv|P5}m6Ae6C7 zK3j6Zn@pqli^4zD@cDtt5NRx`@JN@3o{LcT@DD*uz#?<^<<8;Gi^GqX^ixOM?;orZ zG#*2%(|ZV)r927h09(Wq&9JXotiY!TuHctkuN2TM)k>5bv@g$y@Q4m!d4*H84sGuz z{3W?YUv2FU#Yl$ADM@E-ierSlBp!+t#z#zYFo>}gl>dxhVaO!5uEnWi785y#j2 zOO2BG1Hit6FBTI_fNR))@XK6| z?9nh-S6I~bVm_V1R}T(tP&mB5RLH~9BJ81aNQA}wD_!@#K~V|f8IkKN?m^d_)5v00 zm*sMfLE%hcyc#sEbWUsTObm7$&sPlHH##<&aOvKrOE+4B8Ht?{p80Srv`l`XPS|2l zO~oq14q*o>ea2V4{(U$I_JNs#^Az*z7xO`c`pOA-YAiW{4&VlE*${A-_=Kho-~nz4 z_Y-?)45}=ru$fRKJlsvL%RCyYPY?BVcLbZfyhQZ+n(+w2;li@r#E*WA@Gr@&fve4g zPQ~S|pvpmJ7)o>YAZsoT8Q-r86=uUdB$Z4Nyw`{4-E#ErsgLS` zXn#vID^A3}C!$G1sW9vhC=3A{+E!5``Dlfq2@;|z&T>nV2t`s9gh%ywP?b7Su$B5D zq}gldk^byLK-x&N4U^UsaU7O!_d5y`^uKM?cn#}q;a&jHdWTVAs5E)b56CM_be{qk zNKyvRG4%y(2`N^7*x)0s3sC~j9~T67z17g7V#9m~z31@#+500noak@Y$M)=(Yis+S zCS@$Rp`50vkK&P#3)07}*V0(G*|$Qz@ZK%#Flu^^6oi>*a& zou731geNyefX;-PNI)q7GXri}_`KZVPtFt!@Q{NSze^N2Mr_sR$#sE$}8YI)xigKW$>IEt+5n) zoK&WW5eUJ_Jt)Px!+HGbDvs4&PK)9JUU^`;wZ*u-2n>8&G#PnE_D~qu;N1)CvzHeb za0`*8#1&gI0drAl62!g5?Ft@QCYb5-JU5x5+z5vEVqNh9dxFWlj6z^5;UEmKB1l#9 zMXSN-F_#>!e=)TUV~}EUVT3SV4H#g1aD1_voy_MCmk@-nab-3H0%qsg$jr{-DgdPR z#SWxaMPBh!eSy=|1|_gvVYxua(^<}3hH6!H*$n~aj`SsVp|558lbwy3M#xU69=Xzm zF3=@NS3-dW6JE_>ryxr^6EsV(`))Y&5LXU=ZeadDJV2B1S2*fyZuU2Z2v50N##+h} zUktW45WRZSo%S+5tbMWNU(|>%HinP_;C{>yx5X7Po>=+T;1yeczPf*qSkpQB3JBH; zQyz{Fdoh+jEi6bF|JNo?@s#sX^W6!NGrXw``Y{(hltu;Ua;*a31-?WS!Z{*~ZTPV! z-(TWfE$o2qQMhZ0zopk>L*2IRR-BB9a7;Cxkiq;5R=0U*5D(QE0)Tj9GUHiXzPvdI;-p*d{`B&Yn z?4bHq{axcpoe8Yt*$0SWKkztq`(dTmCx2}{s`Qut(*P;?Uk3@VWbgVKV&lL4>6%ZZ zK)>*H`5zm(+}i;{vJA&^gJ_^YSeeGMItYYP9D=2${G=)qmsT=4hk#)I zwFnSOTmt~1v~K(dCOrcGKrFlfUdhoPC>g?7`8fCk^gRxZ0#yo!ow4Tl2eUU`9`k7l z1l(ExIU~!V$*AJT8LZ7Aa2U@OzntuBY91%8n1w6)*b7n$*TU7KXX=XrLSOtO;~u5>391KsS-oq-_PdF}WkqO=Rnsc8hgql=gZ2AI=S(PlV65 zTPoIc?C$cBvfbi}OC1}Hg9j3nNxQLML}JJ1mSG=|o!oHjySlR#H>S$hDwS0kn@KXI zG7Hq6r1ESJ;v4tj&|{6qUQ`1kiw+Eb%kjirPiGI*TubPxd{jKhnC#Kacv7;9Y%JElZG_;4Uf@1aYtx&maM zbo|+InNY`+0feufrRIH*TD%Ex0kIb)t>QA_FgjG+Yg^G4g2**cbqIzmGKrx81c+V*o9B z3~7v?t_K=}qirY77(s`=12e|q`vH_OwC-_?F##DRh%s$U5ECf;v>fkR<{Rv2GDhNG zm?G3S5Pg(*bg%oPR;g(aX*4!Pe&XZu;}33tDvV*2lO* zq*h(S0;Tq2f+gTn{2eH)mWF*wUqVPT0(LwRLV60wWjGvr4wu&xfDndUpYT;=l|g@L zm4Pd54MRsDz&V5t&j4(`IfM>LJY<^?I;8V-Z9wRdOaY`5LWhZzJGvosm`b4|gU}&~ z5(W?_lB*hNJoBIf0<{|n&!(@4-DboI+D#J9VNaPV%gV50@WI-o{ zj#9~pHiV9n$c!!s9VJ#mSU~8AOfK+xSH7=9=qQo==!DQwDml{)p`&DS#y0N+p+mal zt~!K{$mB%}LPsg&hl9VgA#{|3JPC}PI)sjr$(KmZAas;Qwmc4@qikf;BM>^uW3wlR z&=L8EAas}$vINFYUI;Y^9i_309S}N7WB;5%oe(<8#EyEVCVq|5*~9Na=qMw**#)7a zM9v90&Jks@0imM|oE04qI!s#wp`#?uj`a{a%0lja4?;&7wUvAaLPr_NR|@6Lu9FS{l0aLmo!KSf4D4;>YBB-W{qC3I+gWcDN`aDz~czql5Bz3L@3# z;S})|Jc|Qlmcp0aRcf&mU|K7bLeJ&ksz(vBilm^B6^?&dAO*#0dSM_lJJN`wV5CxK zZ*X0zf+!fgv@VxNP$+__GEYVaoh^*4>5QIe`O{mNP3}(5@#VasGf(bLPdaB#)197l z&XsbFJ3Z4mT{3rilDNQH?(|IH@_O8zp1HWv*0|F%nM>_)cY5aHvV&SOxzm%z_0@8x zXToFd^h&q$I=Rz}M#jLYJKX6-(-u^@(~CxK)ZFPseaxL+8Q4uYt_!$XRsvDcExOaw z%#M(T)q^38%OM0(v^g2j(}RA>eAbD7GvP*H#!7+UJz4_vp1B}L-`u+`Q0vUf%io%# zngLD?j7x0m%JnV?96t~a(a??4LCe>mGVP(t2|O2w_WYbhVp^LU8P;9&(o#55<~kcG zfZf$M9ICWf?V~}KWUjigPJHh|v{7!Ghsje45QyxO;nOP-Fu~)-VD8!}eDsB18xrCs z-*KSG&(Ki&-fszr0k!uI(!B(FOUvQ6CAa~#ZcB_y{TZH5^Fuj4DL=!bSOdnR`xOud zNYQv=Ev{d`!qAb8VB)-$4z}>yxb~nU`i)zUTqH(j8(FtAHyg~^p)jef?ahc3NC6t^ z*;@!7oNIiO$tJ`J+%w<{W&sO`N%DDs`K%9^#1HgRljgzI{PuQQ9IvKR_~<&CB%+aG zE|?Rqd`9#gcWIjn2Y9S%Spai5aD-Vb_jcRFQKJqcd3_=hCG{{vNwhQ`kRmO5*`}N zKr46iKDaBce|htf2*3OcekSoA8bH#gZ$8R2zyvVItsm&)n~&<{JBJuWtKIaWw7u!W zo%~H1mg4c9#P4dg!EGKNW@um|mD(HA&>SP?sQsnsXb8MoPs4YvpSc~~-&-rdYzKiy z^WY=nWa?`S^&QT56&bsTNkJ2-dq+28own zMi2YdGi#hpf%$$r-G@`1T!R#6;IFKK3Ueha^d)6Yq!&*S;Xk6 zh5pzY>2klNQ#rP3uRa0UiVP<|EBtja^UjE~z|g`+{?gj*6s&i-39JLC7Sk;J_!a7W;_W=g+F$PR|xVMPzrtYkp%>^LDBYlPLVf#8NpN zFM!#j63^!kHq2rKD|-PrmPk6#V}s2MHd|5h{J|QOzNHq_z6HK-^%)-;#m;4$B)&sp zvt-X=bJwyo%eJX|I|XMC=0G6mYt#WWhO%GUyj9}S?6aqEro6NbQz@DZeN6^FV~RxE zE|qvbB6KJ$a?U2smTd$=s6VI^sED=i$*XOPgt?s(y0Q4$w@+d2Mp8^(s`d$OFXqGW z%{^LN!Ur+kF`r4dxjQL`gFYRZFqV*TK({%Iec)gOgkgVtkyMNl#U9^eN)Y z-x>`kadMO4Rdb;NXG!%Ve&N&G*~7|P1~vjqNfQ_o^y8^87*rrniJmFe1!H|`N-*mX z*a%o8wZaaikF{iQ5%@=%zCgMDQcna6VbD-xKH{y-S|aRXNVG}J@SJ)g*a(Os4UUcu zosqFFbbJkL8uO4oVa2EM}tHbewR!^|q+>0^+Yi35J{u;vbCcHa+k3>Qp%# z&EU^Y`~mQY(-BZPzRS^h<Gzj%^ zL@`7v(RH542*`-8M3yWevLd(={gC0JMrUAEqNB>$^<-)(jIc^6a6($$8(l$GdQj>7 zc<&T1tK6^d&*umL`bNCU>>FV6=4rK>&Tej8b_6I?_Dv>KLNAmhTtbYP7SVa2M77dN zf?sA-@XGpWogyG+mMV@N>x~XzNo5JAj0`VT+YW%GvXo0cyW%OB_<4%5o8$(_sVpT% z9dWooe##Oq;ULcNbDI=90D;O9-vjXY8oLK1AZ#UB0)4@z#e&$iI{=2tQiRZ7B05e3 z0hp*P?PC6E1=nkUMP-2jiLVal^gO6Eu$AYgK z&GvRBBuWGCh&|Z4oZ^@NyCE!ZfdMfYM3DJB`RwZwM^gR08X^L04bwb6`mZa3ZMo? z1>E44l!~P?s%q^Z(V>1qG(Rup!}~(fWo(-rZJ((vA!cd9__xPfx=ZWD@mQBW} zTkSDL;+ec2bdUa3w3)hJ)gBSsd}7=w(dHD6&+t{143>GGXmfhn1oF7&2|FsTF;0m# zN8BnOP4#l3&FNtr#*kWF(PrE(j6$7{+RQ73lcLeQNjNDu&8vWuqS=7!4N~x$vbX1o zhEu9`QnVZ}zCntnQ;7Cl!EapJf)tGhyswjplx3|?9-#>j3vj=Y3$4e?L7`=$Y|Kf= zU^D+XdVpOcNYMjq8$pU5VBZK*^dJG}03tYQO`QtoLSjY4hp7jt5s*)<>zMJLE1t0d zTx}u+{~3;At*4`sMwdVgPKwq;QxT+Sy>KMBn*oN{V8n;7FZT9_K#;!p+s?i3D>M158BO;HYRXxe1WQ!~J zC*HZ6NnSNcc|^Gj8rgbZT>E8-?LN5@%#vGObDt?oZTHZC;=|Zo*RYn*?M% z)m?zib!}Oe!Ln5u%x!9n2eOIYG$J^ynt56+ zrzs%XX)UBxq(O1+SL1=xs+lKazLi6Tf4v-P_!|^&bC19f{+Tzrs*F!GH$H1MnxJBh zJgr7kfNkVyH9D}ws@jPqR{x5KVGT;F%@kl8dA!ZsYrU(KV40~JXNp*j&%DvV22Y>0 zrU&J&`e&58g2J^Big(RH97i?>F;lcq{GoVDL|-&P(M%@lhG#?LU_m{;CZ62WxC6*; z!#`jN!Wj}<33eXCJ~ERI9}j2A+%iteOvbj6 zN|d*wrt%*q(cN-smqbmXm>$NglR;Hpa(Ldkrqo}hvBqdE={w=u5G)~<6-^< zryCSZGh9DiZw1g&7%5W>^YT0Nd^b zNH8U(s7?qYfIC8y;U74}b5g76c=)M66UzyKYE%MLjhUY=cf-6A zwD}b+9)uHt9CAN|$PoB%(Apx^%^pBp98SiP764#Rx=9(N!vqeagDQiBOB0dSA(MzX zVr-;-^Of5_m{JzM+81oSTRupC(1WR##Fo2ekVy#?4r*VdP&bJCDpRV(=1CCgJSjBm zfUxH`Nq1-)8Fo%HS_0FLuQI+q(JtegFJ`fX8a^%Lq__$SV@x{~Akn7g2Oxc3iGU)M<3Nl-wIq$$2v zBWZ45ly{RG+wC;tS^nz=jTP+IX_)@oyL)vS-*Q3Y?irPj3Cp$V+vMvS&9=z>8qK!I zy`1JdB(&amH`462EHdQpFx83&l)4EzgoU_R{;B15fZc`e(3k)gP75#W=et`kUJPEu zsRL2M2R6wRaW~f+!5r8)4t3)2o(^QT+HS28HJdgWK*fmdJkr(Rz;-=}77c&8(tqOk znXtea%g|8F`oh%x^!fK=rNUC>*KWDb-ri-_U>l6jxVu0R$Grp50Y0r|78et-yR4+Q zN;)e)RcONe8xbChLnyMb37kz!#7|S>B-&PP1I`HJ zoUSZlWku@IE^r3R!eCoCei;Nfr#Eb0+um#Og*5C8!mHBy z548#2ieUV$J!c5RFWo?)N47lJBfuOykK%iPo`vRJ2bL*9wj54$0KteJ7%J&?X((K5 z->9C3hJ!r5(W|{xb`!RkDY9d}SrxbgM8nRFkJV=oAlVEe8mX;%C)z%%N&>$G{96;S z_;hg#tVJ&?t6wM(NG^W32JA2uH>wVd;B{r&>I73sM%ckd2`BPm{HG-M>6zmHU2ba~ z^2hF9utk{omoPu{&N0hHx_5(7rCFPWBgwakBN_d+URI>UuegyizvV&$&7CL|Mtpu) z;wb;vT^Dw7`8J`N@FY~%k>A@8+8si&xA0pHtjO7eGladv2k|LJ+nNtXnhl#ah{gCE zu4$ZddhS^Na_|EY-;;dIshd3H`?n*%Y^f%83^N$A)eymgm+$aMyUB&z`I63eUp z1h=T-w0$+Pi+Y~4o#JsA@Jx7HyZnDh@-VQ(-Id3$br&VWWO$SMLq{8%|mO^a; zQ;@?s6p=FA$aD<|Cnhx>`-_#7<~WrI)HL9clT<|TDXk6a5X5$Rv~gR~-gu>&xu2lfPNhPvnc%1w9^C>Ttp#b4GO$J_ zmFCvtpHLlPJxe3S2pc1%4T%bgtdwk@fM*+gwyu9+ID|q7)n7RbSknugy*E#n7m{2||lb@%anNR^(PV!$tY{~UvB0rL}dZ~a? zCM>Xg%kpY`1=DfUC{#vis?*!j-tK_V3#o#(H+Us(;u$wJpE@cPoR$PO2>%pQp6fIg zzosr^LOwxKiCq*DB|apn%LIocb=gfHC;H6XE*p}V5vc%m>9rEY@T3qIze*3ddA5~~ zn{8=~PMa=`!JtT!GK7c_t0>0yGMigPe+g7K3@PjxpMa6?OtCTLk?I7D&tfd&?l$O;P0Jw%6m6I9yYhPkYjm|#07(j-%X ztWHz2`1GWzJ#L1lgPxvLeMf`X<`hxQoY)03+CBanlqCsnma z*xYz}QZ=6&TX^&E=}FahzHdA|shZD?SC|`5Ppb0WRe!Sb=}A>wakP~_J*oOH`J^g+ zQFPx=YG!CnaO0*@qW+{RLrIO^dQz31Dbj?%Z=+_@P;6MC8Sa+e!d^r#{|*^)ZmH2bELpfhy#s3J_srn%~V2vK85AD#SB zMcL$~y{SE_$jHpFm)Vp^4Un_DIK)v`2a__8PCk_a35N90a=F@xkA*eTrNfD2Fu3NM zgqNxF4<3J1k)A)06S4M=9?d>hSM`n_ z%)ed}d|~_@J>@eEn26?X!9XS`z@YIbFJO#&i@*}M9UzGja!AYlDEI{z2gr-&J9;#y zAQn^Z3e`J$s@WB1UGM1e%@Cwi+7m~E4a|z&=trPW zu<0o2CvTl?FRVCwMGvi4ZWtJ&7xhjWDg!ma*&BNF|5qI-Or`62r|{)#J)*~ET7EQF z5vWl2`cpY_=eAdKsH(TWGNSAXVF~1C8v^uz&yP)c@>f_5kw+ZAUOJSyo&+Fd$5k;} z@U1foa}#O@{U_7oC^QSE2lx1cA2mYMkIC}LCqNJUfct{Ic}D`yoX%1jvFs|SS^EQm z-31!LLO!i#WB7Fms2gs9!R0hpFdhfT`^psNc)kWkF7pkr$d9=IyBu`WmUYL={eWlf zl`{?|J=w&wPOlIh93w+jY|OQgLiAb_Er5*|cdRCsy>Ww3csj+!!>N3^#@j@5y=sC% z34O3Q^Qtn;K9)?Ixy>v_U8u5To`(}xbjzdEQ+>uT^y>56@t`@#;;djhz*+ofBby@x zbdGG-bihDXpaY#>jfA#h=r8mm@aWYO(s%q7NKO?!gJaX3Pu<8^zzKJ8bU3_x`*%Kq zML7?Y*9?jKC|teoWI#K+8{pN|8RVKbYaBJAReB5*grY4B*dY5 zEr&__R$~%q?#Y7l0k&*qAHeSTw-=dXfX<$g?S}8k_H^SF6PXT_;QZN=Q!n1$Yf5pF$QCp^4iRx#Y-L z>X$wsppt%_j5F-YW!CB2@UAHhV$_x^Ve&3p;iGT78NY|~zNRj0n!zrC}R4JH%=629z ztx|D4arc7;B$lpMHu1Y4vFH@;GaohD=&(TeqQw=e0f`0QG~J`n#x#Oz0`FIWp<$3% zkX13`5|eZjN8i2&i3MRl+-mFNt%iX^-H=%Dm5Z2-IwTeX<04iAeXK)b(Z9D75{n?; z>mae@!eo#wjY-ND!etHHwT8R}iKQ>i#i=%Lp)mgfHR)YF~fe&aIoMmh?JPHISdw55!{wFVKNjf0FZ#( z2EoGF1-gYPa2u~cu;{_pfq_L2zO@ioT$r5@Sn}}eLcpR=+&Ta(=%bOg4*v=|YMe9O z@K+AYC?+(~ub`~Pceax@!LOjEegyl9J4=5J_LZe|VP7ewg?&X+MH~9cs5UpV5I7^- zw9J677&g<1dqtB16qf3K4toWaIOsMTGt?`QJ3y~EH@ZNtj2;Je4tgc6IDH3y5c5hU zbzxq?NYM#-1uc0O;uU>Rn}Ap3dj@#LYeT?8&`u#imoMQ^)UM1DkeEdX(U;H-BtS#z zpFm_5A+9p0#|V(>tWZeH$`N8W{r5${O!?`PM>`Qfcnldw)CRPUXl-a6kz3F@qPC!QMD2jq z5xotqL$Yo00j)#9&z6nF61c<+VUpucY0?<${P$spGS~?|>?u%*VPG6GLcw?zA9o_b zIK>B^Krl}6ktYs}Q5b|^<;2)C2Eiy8e6=p{(g_0N6jzoK1I8(FCrmGeL%i~GVyY4o zK_%lV>|aHj)4iL{=$0qijC0*7(dKYKC)%NvLr-)2D%u>L=DlQwq<6XHi8kXfbxN=~ zfRTIYW=TJ6eU)N-0xKDyp;3FZIe}W>2=}j|&GcEea-z+&KpQ36ObfJ8g3q))8ztHt zCTECTUORD$El=>7Mr2VKb+ZO+8BKPrZ413QgWn-47$zCD=9&p%+^sOc!nT`XfJMKs zP1siiOtAJu-^13MVSvS0Ff2%Qg*}(xA5KaAiuTZIYb8hDX|)xF@q1QIj0L0fM4_?N z^28jYDb^@#Gxs=}N9~;WZ@}Ae00vMD|{4ehZ!CP+ffF)>a@Uilx8=cCfE)yoP?u=u4K`w=vj1C&}X$)3Hhu+ ziM~}|Meiy~^v(ia1D}V`XJjoyCDkM$pEZg{UmKL>hzRzqo`?EhQD{`KqG^9?WNNh> zgB(ovkE(_{p&Aw^fXOO0)e{X)glKOf1fPRIO`*!5z1E7QaK&ETOmp~PjEIhziKv@ zVW8d^PWgZypx6g&Z=Y>A7_}a9BpwQ4nu?e&Ote6G`wsn461I&LkN-2 zLb*>6c@Rkf#gn!aZceuEctbj|c__fOuz9FM(Log$Jn(IaGpdHoBf1?@HEf<9br61c ztgv}{(k+BGBgf|HNrT{*$3W+iAZ}+&`Z07KOxRHPc7pRz!Qo2Z3Y@1$Rmoa# z9ya?s;5^Fm2slrVN|#5#d7zeJItIT9&f_W2b|h#W2j^j{{ME?Euz7k^v#iDDiPSbW z57ajN4pXLv&C{cXrHRc$Fvu1*j}g~m^FXPFZ@RI0)T*`EJUwbhI-dLGzI2+v9Zx%_Fi)>jBN9swtyC2F=4;c*2sP1cj5P2F;T$<*35PHQmZXB)nWL zZbrbeurbBCl|%EeX&TWgMx2TjyATo+j-NAHBjuqjo!~tK!=3#d6Qe!W;9&S9wODn)64jTy`{RYjWxxg80 z;Q!j%@k`J=Hbv{uJT`X>nx|VEL8-(f7ZXqFk3X6887dVb`6bkx2AmIL$+Z>46{Z(T z7Qyf2A?D!~N1;UDAg52sP`VHuunFfwS;ev^5is;Gg6dfV=R;w}K1;HHC~1i66BUCC zy!#PLFG%Q-k>Vo9v%E`|Bfw7!^`}SlN|s2CTMPAvr?y&!TpbS&_o$@_gdhHJ!7&2} z;?P^*zubI}n0+6j}+1Gj!I^g;hZW@i=v!gwltw89@p*B}Yc)H-Q#S ztb4H%q1k2|{#fg*l0gLVKvo-(-z%hgNaKQ4)N)PFAcA;i+ox&1#GM~TrFzgv0CMm! zw{O6b=v}p~!^wI*L=dF_ zl}w1;90-U2uS{T!LmeWB@_~JlI7G#RbRg7r^X3yMA-emxf3|#)jVaha4K*ieZ3$7T z>XO!$o3@P@)wV3Of(Rm-dN`X=!ogPR5J8e^a)=o^*-(Gjf`{^x(dKJkMYu5i=hmRO%vlAq4Qo5`YF!WHsi&Idvw10-Lb z%yh0J80krIvwQ;t6#txBI=c-j^5&tJO%axI+yO@rT#uK>O z<*9Z*1m5NB2r(f*askAmKGyMVFFG+5Zw%{OL@8;<3E9)*4 zL4V#d!?}%}oM5je@q#W{>~2WIF&rSTzCG~aP7NJ>zuX-OO(yahMyD9V-Kwab;3YC> zcqa*i{$z3w*v}{e#rq}Myf*oOw%qi+3SNSJqA!YD;C9tpz>BOcsNt7my=>~=fgOGm z#$<221nqSTHPvMPA(*n9jHbt(lOJWdXHthdsBr@8I-cy~%7!0f6J(5Vf#s_|Y<=e_ zV_*Uow$^>gr-E!xs+N~|jtub%E>nW{?0>90TRlF}sD5!%!0`4`n83zWe&Ko<8!f}W z%J}KNc$_L<+KImKn)8Uo#*$+Lvt84;%XGVTJE&O99`F=r!Ou4G;h@(59+Lx}xs=q9 z$8>$^h90vdUllFvF{vWBCYsn|e7A!;Ev;rP>@n)Hl^Dw51oW6Rio%Cf9-LFn;Jpxa z2#{MXNxtWGTBz#nA^8af-1%>y^cM` z7V;cxVviZU3wsRm5&213-lYku`P<-Q)bv-ep=-g%sQ<6P$EYLIeKN-$BU6lT342V6 zF=JkiJw|UtV_%LvMyjhfa_liV5E=t>>@hhHnv$dY*6eaYgfY|I#v-dKoY%k}qv^uZ z0((sJ3SyB>K-^S=hY&wCv2gv|@X#n>Wg0Q=EsT1!e7JJPry+Ky+b5ASJy%*=;f>SB z&D1}n!-$H<#WG0f3`uFi)1qN{u(*bCq-eI&w1N0sd%KLf1F94-19vl@E|TapGbv9; zlbM~~k(FLElM*;CgZL|dJT=| z*A&^R3K{XcJN^a{U~;Xv1)ccOC&Wm>-wB}Bu?Nl^TZ;lu9dz*#j zDdNadQ8s%JBvTtOsQorEsqDgVfv4sdv+`$7hznxqmXy`K66{(SKfN%pdN{`egBjNb z?BZfg8vExA0@~(sF$Z+?Xj)$=19sFiUF4ErRL&k!0DU{tbj32tX6$L1#&5uGju??y z?%8_t=Mu>30q2BnR1`$VA4+uLDqa{>2F{8xJD&-o-ULY4Tz)n&co(wv*D`7==@MA4Fe~Bk8{@$+`rXlLIUgH@ccN>~07c)Yy>3-0 zk$jw#5EyxK`dTonsknGjQ5?ErYT6GcvDgTD5YY8Jhn;fZiK>iGNMm``}e z6Ac^vg0Jg$i{tr1A2SF%*of2Fx46I0=X!6DGY-#s+Qhc?kWZg%R&QzT;fX6;-LZ+N zO=*0#$i_Iq!ws?zb!wc0p+$w{k7Li}X*>3C+?JaoTsM|icpH>uM|0WQMX|(grl&Ef zal*r^k;+zQsX^w;kO+XwCXsozqNC($iAPFs58GQ@-%UPeEGHYa`TN2F`}TQrmkyp> z(m7Qx_<7WcAYQiRe$Emyfdu;>&Bh z%K7x}k)_%x>vSD&Ijf^JI^eVcH$LFZ<1T}FkJ*7}2fJi?J$=qSCf6GUt0&+;=Db{v z&lZv8YI7GVjL#E1kh3NahjkNM!q4{1jkKZBOY-<`gcE)~y_)EC9nQ*rnzuaA z7}R*oSrIH%2f1y19F^IYHL$*U%W<)ILhfZ;{k!24aBB%E z$@2-h_g@mZm(i%WsPSnFLN zRJtCymoCk07Jca+L++(-b2oA?ed&HHaxa}PVM|+s+{;v2&obm*`cbbz?oDB}$<>Y) zNi!kAOV8D7;lta9cVCdg&;-vtSyn6LUb^>^D+slX%wa%-8()yZfW~OG_m|XYn7V*& zq2>1T4o9WmE;G0P|LkV)ecysmuew8RpEE*mVE8{iM5;wXkKA&TgM$%34Nm70!_c5Ak)pm-NoSthWAdxZv-A!Ju^YG{iiG0y{Qi~R$x7>>x2Vt zT0ShPwfRzEwBl+2njDc|Bz59g>*1PLIimQoV{kVt+_vDd)CP7o_E{}qI=?pkIJ_QA z1TJ#;x_Z%cEY4kc4bGSG&dHw@3P(7k8CU3~oPlREm_?ohkAP>xg#mLa^VH`!>7yEW zHsLsIpu5XjYRmQ$rE-g)Q*z}1(FV_^XLBPx2hXMlvqJuoy`DbH)d!D*XJZ$naXy}3 zV*rmjHp;-W<$`IVKh&H9Xgj!v zJ#O+arR69JVcyJwAj{0^lWiH^b!xUpGSd|M-vU@SSz=Z*ogBqjCPYIo^bci?xj_)f zL&h)J5P-7?lVo&Uww5s-y`N+>azlvAu-7F!LGJ|&i!!$qVvW^HaSVw)4(H@CMY<4d=S(M{eaUWKI2pfQ_uXn-TBE1&uE zh$tj=I*rqv2aeHABy}aVk<^WBVL2@%bxUj_sjFt+ggcScxpmuK+=Zl$RQCr;Nb0Ib zK24alN4IZGEDma)9dtk83P~L_cMi^x)YZ;TBz2YCLQ;p+)h&| zSPZf|A_~nK3{POltsE>Fo?a@s!rN5IM1!am-6+%|pjic61~-7gJiNz7zAat_qEXC92_97!Av8*szA zisQ3SpeBKu)JX&~sZ-$4d=0-Ibp(T5g9nb8omN_M9c1uIKG{8fKfP=4(+V*N|E2y| zbv9(S`s^ix*Gh%26GnikdRBk~idIMp(@O#+0OcU%p1;!vBvecvl`POA#ld>jgc;%bBg|PJog#!VOHkIzRxbd!FBHb z*~#P++;_e`lN*Cv`<`K+m|;JMK=M~PFp&D}O@SG-D4)H*d|kk~Z@KvP*E{WtHWpgs z!1w+`ipBh_w>I`7%}>opjN&b)^Ke2Zh~Cak zY(7iC!yITxg}TX=-CLf*bo?5{vF427b|hJ^OeJMMc@7{(25+-y|Ff7-O?`8Ouo-T0 zy&i2?Vfz{M{q1a0xS4Sot5EW0z{skvC1SDQH*sC4y*nF>&B}gXDI@P)y;vq#Kqe-o zHA0F>NwGXgF%fB(v8!2u)=<>!1#jfMVBg3K?>K+5<354ufpIureVP{gs~bqdWOS3( z&F|7Q{0>Vi8M zUO`!KYp~AqaETQ$!L7;o(wmG;$4Qmw z^)SbM(E$B1c!;1I$wg3)Ih63z91o4AVPVimx$We|WWJaz<5O##jixalw`FUc%fka= z%I9b2AhBr!XZQ{7EO!^~rp~t`HVoR#TZ}>SMYy|-@MnlScxnE;SX@GTVYgR(15a0k zTw&AGZp2c^83mqc)G)8UmV2LcB`rkGt3EhJq~9mRC+cg7iP-Mp>Wv#9yy?9uewZ_O zv{sU46T??jQ-}-$#&BrLFmyC(h^Tj5QY=4%VQY1X;R@{7p3ccpp2^1LJIP`CUFR^v zDD;dBVkUg3tLO>u8aJ&jZvSqE=A}jVG6u3f6ZEkCG&ePFNjYuJhSb<4YchCjcpS2{ zh2~`%v^+PyHnnpL<$=d@x;pQ&U%YhH>bKVbCd`u6l>PpFb*NY#BBttzBgGXzokx9e zA`X*wGwlqiO3Z(EHuDFHe1Jd(B@fueHs(0~YGgx<1aFl$i4qOg+J%Nk3UxHvTn32r ziOGx|#Fi2k_QmZii|=PHEj-|uMQ-dFVPUB4Xa`Z(nDY#TQ$Xh-%tcf&po{@N3)HBH(F&Feize7a!+Pv#SM+ zd}0d_?vy2|?~H&#@L5?Db{GTE&9*6>^!f;DWZS5|;KZ==Opg?7g1mb@ottwm@UkQF zY>9Ya@&gy!(D@^rX>3x)fNw2O+w^J+$GW#K4mo)11__6pCJP;RJs0MPNC}gabvg;1 zw)2-za;sjyT#hH&cn5q50UDT1!~)pi2sM`@yQ*Z73;?tw0l=9#9C2oR1j@r z6BlA#l8(I?FwqPGQgBM!tzx2+VZR-~QoC{d_TS~jN8L}b53i`e?2qx}}b>uu~z%M%E>M zjw)OgiCfM5mx(ch3=FJ-#N`3QLj#~7&1MFN1};IG^o$J+G=gf9GiWkmp;v>vm5X=fe3P5C0026+;9bCSoMj~mI5`!$FoGl8sYN@2;iSqbuhA-b$pus zl6O6V`73+P0JdG^)cj6^ikZuGA|)P%k5$>|X`chefv;GC+-W-GnkOH^C@iem1DGj& z9fmb~kODBlC0~ar0CPZ-wN@)EiSc2q=@fuDAX0QLRm#Fu1=bFT8=a?{mX#K!B#DC= zaUXR%>wwXmHxMQh9n+TcnUSS7!)bI)>vYL9T2~tsU(4jNe@3flBNMvG_*N~Ff5$}^ zumQ`h&8XP{iv~b9GW49#M(hqt6;WYsxpQ4Js08==6Lh zC6QXcsFGtJaqBZZWBMf(LnPH$#&0BKq;KMvzKI{K9FN=lK;;7lS(%oD73ycIUcbhx z`+Jj~2upv^rE`o4=?5S?)Y+06}f&ekAg!+*7oLBjrSAO6r*uW9E$t5qAtSF9Ssn3{>74F54D zHq8F;xUqc!GveU&kqCAk`k6`7Wlibpjx4O@pT_tIMu|Fg z|5MT(orQ{DKzl#84A1|}U;Cr+p5FUi;qE5kBFKnKh8YdlbW(eXI{8{m5lV~cq=bGX zTriwN|ViL%PLh6e|^{8_aw}NOfs3g4%k{Q@Y+76PORn(+c zK{|p$qFC75*2s%^U+*z?2uD*OIrZ&$HJxVk)HT=3FmLMA-gpe1X2}W>L`m zg^LU6sauk9L`t0kQ)bvjsm)~8mw4zmjh8Jj3@5g|0mf}39s?iH?bReyy0KDzmeU}< zbSA?a$KV*UbjLD4* zRI^3siGjH!U?V)`{g?mKDq!^Ra5x!%m=Q^7ZH|wV>GV5UPzX?c))WCbR2~jH0jJX0 z6i@6-BlhA506KIR?8-pjDZ+C8$wX$fhV%GVh(SO2f#D_*V(14yuo?)o^kXfmfSG9u`YN#CI-cP|5r{6{e35OL;oA;ovS!)X- zmV=#_alZQLn#>KhEO4J`U5l{FSrK(JyLCiuPPtH{a0!~$6oPb~z^#H>)2-)rF~iSL zHM<`fC{V! zm;Mx|Av;dHcm-N06AR`A_DMKdo8^zHazW-+u2h(LW)R2`3o(P*fQ2A-;1$xI)P^gh zJ;^3{=Y&gOg-!mc8yM*NYZtKAnNqy@+6CW1M~6BdyI@NFtqW0VPhF4#Y^m&}3sS%h zyi5TTntO`^t&cTS?_4lbaSdo1Rmy(T#(dwm@m6WTiB&&|yc@mo5#Oz9E1F?qe7!s}MKatdq4k-eaZ7(uxYn z1$(>^e3zitZd&z8fkbm?fac@xHs(IsDsc&OTgA~vN|`5GO2cTrlJICA;QKaWX_a4$ zz)7TsTvMb8ZKK*GYk?-RFmdawzbU~rOn^!LQ&|~|X*7m%&SoCs1e|1699x>r{?3yc z!9!+y=00x7gt1UFDheO0wlZ6GO|_#>e9xVZVajwDdrn(t|Y+VCf=JS+BFku3^)&QZo$AatrG=ahGmDl z)?n%OT!FxYO=~dVVP*Y31Uw9|YZ2gKihT?Ko}aGAe}@IS6aF2h+wY;jbM#)>arhYc zJ16Sn*zd4!5Kb^$Dt$zgSN0cFxcW;XyJfG791|H(N6Ydt& zzA){Q_i{1~X%>?W%b04xR?5mk9En%3Q#?Oi8`O-rW5yfUDPo^-`O1M~!OC=zCh2SF zrobFYTSG4eeG=6&oLf0?GS|SV6~LWiQ)5seq2CO zE;Z5^dD;z2jYMKrW~kJlF!(YDr3Q%sr7(Jy^94tYXt*>VXci!qp`~jesgb%Ck(y~l zPOJe^lgN&D;!!h^-EYHDGleYZLZfC{1>MP)JUGEfW#4HaEZ^6$sF_ACbV5-xk^JaJ zqGl@j;ToX;q6WDGhniG!panzC1ae_53N{|!=G?Un|$H1qVhdo?_JQozQd=3Dnj#&D)BJ?oYXVM_t`$>*3ifqIIqq?|X?*@0(WdzY`}iHOX=Y;=+gQ^~ z$)-sLHO&;wkS?TYCaR-NplK#>PGI4G2WOf&IXiv?W*T{MpgW>KpiGmy3AoD{!Ov5M zKN`W$Q^Zv}A7Ik8j`{1gi814;!HDeOBI zB;i5jptI$63e`N$4!jmP-#(! zYhr@G%1YzFToot}Ep<62Ps%owfN!6YQ}$AsL|G9b%(@7hWAY#vhQovGyi^7x54-O= z!5on%dlQC@Y5?-kV7RXR?%~B{Kr761?0 zHK6oKCa=1Y^qERV)q(U$#clO59DQV22cypfk=%Xx5 zl}8cuk!1~lK2iu`)42W~

!22H8Xsc~C=aBJnZ6CZ@A@@W`w1 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

fHK+PF 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 - -extern void CGFix_Initialize(); - -extern void CGFix_GetLastMouseDelta(CGMouseDelta *dx, CGMouseDelta *dy); - diff --git a/code/macosx/CGMouseDeltaFix.m b/code/macosx/CGMouseDeltaFix.m deleted file mode 100644 index 4c17aa1c..00000000 --- a/code/macosx/CGMouseDeltaFix.m +++ /dev/null @@ -1,131 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -#import "CGMouseDeltaFix.h" -#import "CGPrivateAPI.h" - -#import -#import - - -// We will try to automatically fall back to using the original CGGetLastMouseDelta when we are on a system new enough to have the fix. Any version of CoreGraphics past 1.93.0 will have the fixed version. - - -static BOOL originalVersionShouldWork = YES; -static CGMouseDelta CGFix_Mouse_DeltaX, CGFix_Mouse_DeltaY; - -static void CGFix_NotificationCallback(CGSNotificationType note, CGSNotificationData data, CGSByteCount dataLength, CGSNotificationArg arg); - -static CGSRegisterNotifyProcType registerNotifyProc = NULL; - -void CGFix_Initialize() -{ - NSAutoreleasePool *pool; - NSBundle *cgBundle; - NSString *version; - NSArray *components; - - if (registerNotifyProc) - // We've already been called once and have registered our callbacks. If the original version works, this will be NULL, but we'll end up doing nothing (again, possibly). - return; - - //NSLog(@"CGFix_Initialize\n"); - - pool = [[NSAutoreleasePool alloc] init]; - cgBundle = [NSBundle bundleWithPath: @"/System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreGraphics.framework"]; - if (!cgBundle) { - // If it's moved, it must be newer than what we know about and should work - //NSLog(@"No /System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreGraphics.framework\n"); - goto done; - } - - version = [[cgBundle infoDictionary] objectForKey: @"CFBundleShortVersionString"]; - components = [version componentsSeparatedByString: @"."]; - //NSLog(@"version = %@\n", version); - //NSLog(@"components = %@\n", components); - - - if ([components count] < 2) - // We don't understand this versioning scheme. Must have changed. - goto done; - - if (![[components objectAtIndex: 0] isEqualToString: @"1"] || [[components objectAtIndex: 1] intValue] > 93) - // This version should be new enough to work - goto done; - - // Look up the function pointer we need to register our callback. - if (!NSIsSymbolNameDefined("_CGSRegisterNotifyProc")) { - //NSLog(@"No _CGSRegisterNotifyProc\n"); - goto done; - } - - registerNotifyProc = NSAddressOfSymbol(NSLookupAndBindSymbol("_CGSRegisterNotifyProc")); - //NSLog(@"registerNotifyProc = 0x%08x", registerNotifyProc); - - // Must not work if we got here - originalVersionShouldWork = NO; - - // We want to catch all the events that could possible indicate mouse movement and sum them up - registerNotifyProc( CGFix_NotificationCallback, kCGSEventNotificationMouseMoved, NULL); - registerNotifyProc( CGFix_NotificationCallback, kCGSEventNotificationLeftMouseDragged, NULL); - registerNotifyProc( CGFix_NotificationCallback, kCGSEventNotificationRightMouseDragged, NULL); - registerNotifyProc( CGFix_NotificationCallback, kCGSEventNotificationNotificationOtherMouseDragged, NULL); - -done: - [pool release]; -} - -void CGFix_GetLastMouseDelta(CGMouseDelta *dx, CGMouseDelta *dy) -{ - if (originalVersionShouldWork) { - CGGetLastMouseDelta(dx, dy); - return; - } - - *dx = CGFix_Mouse_DeltaX; - *dy = CGFix_Mouse_DeltaY; - - CGFix_Mouse_DeltaX = CGFix_Mouse_DeltaY = 0; -} - -static void CGFix_NotificationCallback(CGSNotificationType note, CGSNotificationData data, CGSByteCount dataLength, CGSNotificationArg arg) -{ - CGSEventRecordPtr event; - - //fprintf(stderr, "CGFix_NotificationCallback(note=%d, date=0x%08x, dataLength=%d, arg=0x%08x)\n", note, data, dataLength, arg); - -#ifdef DEBUG - if ((note != kCGSEventNotificationMouseMoved && - note != kCGSEventNotificationLeftMouseDragged && - note != kCGSEventNotificationRightMouseDragged && - note != kCGSEventNotificationNotificationOtherMouseDragged) || - dataLength != sizeof (CGSEventRecord)) - fprintf(stderr, "Unexpected arguments to callback function CGFix_NotificationCallback(note=%d, date=0x%08x, dataLength=%d, arg=0x%08x)\n", note, data, dataLength, arg); - abort(); - } -#endif - - event = (CGSEventRecordPtr)data; - - CGFix_Mouse_DeltaX += event->data.move.deltaX; - CGFix_Mouse_DeltaY += event->data.move.deltaY; - //fprintf(stderr, " dx += %d, dy += %d\n", event->data.move.deltaX, event->data.move.deltaY); -} diff --git a/code/macosx/CGPrivateAPI.h b/code/macosx/CGPrivateAPI.h deleted file mode 100644 index 5d52bd1e..00000000 --- a/code/macosx/CGPrivateAPI.h +++ /dev/null @@ -1,185 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ - - -typedef unsigned long CGSNotificationType; -typedef void * CGSNotificationData; -typedef void * CGSNotificationArg; -typedef void * CGSWindowID; -typedef void * CGSConnectionID; - -typedef unsigned long long CGSUInt64; -typedef long long CGSInt64; -typedef unsigned long CGSUInt32; -typedef long CGSInt32; -typedef unsigned short CGSUInt16; -typedef short CGSInt16; -typedef unsigned char CGSUInt8; -typedef char CGSInt8; -typedef float CGSFloat32; - -typedef CGSUInt32 CGSByteCount; -typedef CGSUInt16 CGSEventRecordVersion; -typedef unsigned long CGSEventType; -typedef CGSUInt64 CGSEventRecordTime; /* nanosecond timer */ -typedef unsigned long CGSEventFlag; -typedef CGSUInt32 CGSError; - - -typedef union { - struct { /* For mouse events */ - CGSUInt8 subx; /* sub-pixel position for x */ - CGSUInt8 suby; /* sub-pixel position for y */ - CGSInt16 eventNum; /* unique identifier for this button */ - CGSInt32 click; /* click state of this event */ - CGSUInt8 pressure; /* pressure value: 0=none, 255=full */ - CGSInt8 _reserved1; - CGSInt16 _reserved2; - CGSInt16 deltaX; - CGSInt16 deltaY; - CGSInt32 _padding[8]; - } mouse; - struct { /* For pointer movement events */ - CGSInt16 _obsolete_deltaX; /* Revert to subX, subY, eventNum */ - CGSInt16 _obsolete_deltaY; /* for Gonzo 1H */ - CGSInt32 click; /* click state of this event */ - CGSUInt8 pressure; /* pressure value: 0=none, 255=full */ - CGSInt8 _reserved1; - CGSInt16 _reserved2; - CGSInt16 deltaX; - CGSInt16 deltaY; - CGSInt32 _padding[8]; - } move; - struct { /* For key-down and key-up events */ - CGSInt16 reserved; - CGSInt16 repeat; /* for key-down: nonzero if really a repeat */ - CGSUInt16 charSet; /* character set code */ - CGSUInt16 charCode; /* character code in that set */ - CGSUInt16 keyCode; /* device-dependent virtual key code */ - CGSInt16 keyData; /* device-dependent info */ - CGSInt16 specialKey; /* CPSSpecialKeyID if kCGSFlagsMaskSpecialKey is set */ - CGSInt16 _pad; - CGSInt32 _padding[8]; - } key; - struct { /* For mouse-entered and mouse-exited events */ - CGSInt16 reserved; - CGSInt16 eventNum; /* unique identifier from mouse down event */ - CGSInt32 trackingNum; /* unique identifier from settrackingrect */ - CGSInt32 userData; /* unCGSInt32erpreted CGSInt32eger from settrackingrect */ - CGSInt32 _padding[9]; - } tracking; - struct { /* For process-related events */ - CGSUInt16 notifyCode; /* CPSNotificationCodes in CPSProcesses.h */ - CGSUInt16 flags; /* CPSEventFlags in CPSProcesses.h */ - CGSUInt32 targetHiPSN; /* hiword of PSN */ - CGSUInt32 targetLoPSN; /* loword of PSN */ - CGSInt32 status; /* operation result */ - CGSInt32 _padding[8]; - } process; - struct { /* For scroll wheel events */ - CGSInt16 deltaAxis1; - CGSInt16 deltaAxis2; - CGSInt16 deltaAxis3; - CGSInt16 reserved1; - CGSInt32 reserved2; - CGSInt32 _padding[9]; - } scrollWheel; - struct { - CGSInt32 x; /* absolute x coordinate in tablet space at full tablet resolution */ - CGSInt32 y; /* absolute y coordinate in tablet space at full tablet resolution */ - CGSInt32 z; /* absolute z coordinate in tablet space at full tablet resolution */ - CGSUInt16 buttons; /* one bit per button - bit 0 is first button - 1 = closed */ - CGSUInt16 pressure; /* scaled pressure value; MAXPRESSURE=(2^16)-1, MINPRESSURE=0 */ - struct { - CGSInt16 x; /* scaled tilt x value; range is -((2^15)-1) to (2^15)-1 (-32767 to 32767) */ - CGSInt16 y; /* scaled tilt y value; range is -((2^15)-1) to (2^15)-1 (-32767 to 32767) */ - } tilt; - CGSUInt16 rotation; /* Fixed-point representation of device rotation in a 10.6 format */ - CGSInt16 tangentialPressure; /* tangential pressure on the device; range same as tilt */ - CGSUInt16 deviceID; /* system-assigned unique device ID - matches to deviceID field in proximity event */ - CGSInt16 vendor1; /* vendor-defined signed 16-bit integer */ - CGSInt16 vendor2; /* vendor-defined signed 16-bit integer */ - CGSInt16 vendor3; /* vendor-defined signed 16-bit integer */ - CGSInt32 _padding[4]; - } tablet; - struct { - CGSUInt16 vendorID; /* vendor-defined ID - typically will be USB vendor ID */ - CGSUInt16 tabletID; /* vendor-defined tablet ID - typically will be USB product ID for the tablet */ - CGSUInt16 pointerID; /* vendor-defined ID of the specific pointing device */ - CGSUInt16 deviceID; /* system-assigned unique device ID - matches to deviceID field in tablet event */ - CGSUInt16 systemTabletID; /* system-assigned unique tablet ID */ - CGSUInt16 vendorPointerType; /* vendor-defined pointer type */ - CGSUInt32 pointerSerialNumber; /* vendor-defined serial number of the specific pointing device */ - CGSUInt64 uniqueID; /* vendor-defined unique ID for this pointer */ - CGSUInt32 capabilityMask; /* mask representing the capabilities of the device */ - CGSUInt8 pointerType; /* type of pointing device - enum to be defined */ - CGSUInt8 enterProximity; /* non-zero = entering; zero = leaving */ - CGSInt16 reserved1; - CGSInt32 _padding[4]; - } proximity; - struct { /* For AppKit-defined, sys-defined, and app-defined events */ - CGSInt16 reserved; - CGSInt16 subtype; /* event subtype for compound events */ - union { - CGSFloat32 F[11]; /* for use in compound events */ - CGSInt32 L[11]; /* for use in compound events */ - CGSInt16 S[22]; /* for use in compound events */ - CGSInt8 C[44]; /* for use in compound events */ - } misc; - } compound; -} CGSEventRecordData; - - -struct _CGSEventRecord { - CGSEventRecordVersion major; - CGSEventRecordVersion minor; - CGSByteCount length; /* Length of complete event record */ - CGSEventType type; /* An event type from above */ - CGPoint location; /* Base coordinates (global), from upper-left */ - CGPoint windowLocation; /* Coordinates relative to window */ - CGSEventRecordTime time; /* nanoseconds since startup */ - CGSEventFlag flags; /* key state flags */ - CGSWindowID window; /* window number of assigned window */ - CGSConnectionID connection; /* connection the event came from */ - CGSEventRecordData data; /* type-dependent data: 40 bytes */ -}; -typedef struct _CGSEventRecord CGSEventRecord; -typedef CGSEventRecord *CGSEventRecordPtr; - - -typedef void (*CGSNotifyProcPtr)(CGSNotificationType type, - CGSNotificationData data, - CGSByteCount dataLength, - CGSNotificationArg arg); - -// Define a type for the 'CGSRegisterNotifyProc' call. Don't reference it explicitly since we don't want link errors if Apple removes this private function. -typedef CGSError (*CGSRegisterNotifyProcType)(CGSNotifyProcPtr proc, - CGSNotificationType type, - CGSNotificationArg arg); - - -#define kCGSEventNotificationMouseMoved (710 + 5) -#define kCGSEventNotificationLeftMouseDragged (710 + 6) -#define kCGSEventNotificationRightMouseDragged (710 + 7) -#define kCGSEventNotificationNotificationOtherMouseDragged (710 + 27) - - diff --git a/code/macosx/GenerateQGL.pl b/code/macosx/GenerateQGL.pl deleted file mode 100644 index 5fc8f967..00000000 --- a/code/macosx/GenerateQGL.pl +++ /dev/null @@ -1,146 +0,0 @@ -#!/usr/bin/perl - -open(INPUT_FILE, ">/tmp/input-$$.h") || die "$!"; -print INPUT_FILE "#import \n"; -close INPUT_FILE; -open(CPP, "cpp /tmp/input-$$.h|") || die "$!"; - -print "/**** This file is autogenerated. Run GenerateQGL.pl to update it ****/\n\n"; - -print "#ifdef QGL_LOG_GL_CALLS\n"; -print "extern unsigned int QGLLogGLCalls;\n"; -print "extern FILE *QGLDebugFile(void);\n"; -print "#endif\n\n"; - -print "extern void QGLCheckError(const char *message);\n"; -print "extern unsigned int QGLBeginStarted;\n\n"; -print "// This has to be done to avoid infinite recursion between our glGetError wrapper and QGLCheckError()\n"; -print "static inline GLenum _glGetError(void) {\n"; -print " return glGetError();\n"; -print "}\n\n"; - -@functionNames = (); - -while () { - chop; - /^extern/ || next; - s/extern //; - print "// $_\n"; - - # This approach is necessary to deal with glGetString whos type isn't a single word - ($type, $rest) = m/(.+)\s+(gl.*)/; -# print "type='$type'\n"; -# print "rest='$rest'\n"; - - ($name, $argString) = ($rest =~ m/(\w+).*\s*\((.*)\)/); - $isVoid = ($type =~ m/void/); - push(@functionNames, $name); - -# print "name=$name\n"; -# print "argString=$argString\n"; -# print "argCount=$#args\n"; - - # Parse the argument list into two arrays, one of types and one of argument names - if ($argString =~ m/^void$/) { - @args = (); - } else { - @args = split(",", $argString); - } - @argTypes = (); - @argNames = (); - for $arg (@args) { - ($argType, $argName) = ($arg =~ m/(.*[ \*])([_a-zA-Z0-9]+)/); - $argType =~ s/^ *//; - $argType =~ s/ *$//; - - push(@argTypes, $argType); - push(@argNames, $argName); -# print "argType='$argType'\n"; -# print "argName='$argName'\n"; - } - - - print "static inline $type q$name($argString)\n"; - print "{\n"; - - if (! $isVoid) { - print " $type returnValue;\n"; - } - - print "#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS)\n"; - print " if (QGLLogGLCalls)\n"; - print " fprintf(QGLDebugFile(), \"$name("; - - if ($#argTypes >= 0) { - for ($i = 0; $i <= $#argTypes; $i++) { - $argType = $argTypes[$i]; - $argName = $argNames[$i]; - $_ = $argType; - if (/^GLenum$/ || /^GLuint$/ || /^GLbitfield$/) { - print "$argName=%lu"; - } elsif (/^GLsizei$/ || /^GLint$/) { - print "$argName=%ld"; - } elsif (/^GLfloat$/ || /^GLdouble$/ || /^GLclampf$/ || /^GLclampd$/) { - print "$argName=%f"; - } elsif (/^GLbyte$/) { - print "$argName=%d"; - } elsif (/^GLubyte$/) { - print "$argName=%u"; - } elsif (/^GLshort$/) { - print "$argName=%d"; - } elsif (/^GLushort$/) { - print "$argName=%u"; - } elsif (/^GLboolean$/) { - print "$argName=%u"; - } elsif (/\*$/) { - # TJW -- Later we should look at the count specified in the function name, look at the basic type and print out an array. Or we could just special case them... - print "$argName=%p"; - } else { - print STDERR "Unknown type '$argType'\n"; - exit(1); - } - - print ", " if ($i != $#argTypes); - } - } else { - print "void"; - } - - print ")\\n\""; - print ", " if $#argTypes >= 0; - print join(", ", @argNames); - print ");\n"; - print "#endif\n"; - - if (! $isVoid) { - print " returnValue = "; - } else { - print " "; - } - print "$name(" . join(", ", @argNames) . ");\n"; - - print "#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS)\n"; - if ($name eq "glBegin") { - print " QGLBeginStarted++;\n"; - } - if ($name eq "glEnd") { - print " QGLBeginStarted--;\n"; - } - print " if (!QGLBeginStarted)\n"; - print " QGLCheckError(\"$name\");\n"; - print "#endif\n"; - - if (! $isVoid) { - print " return returnValue;\n"; - } - - print "}\n\n"; -} - - -print "// Prevent calls to the 'normal' GL functions\n"; -for $name (@functionNames) { - print "#define $name CALL_THE_QGL_VERSION_OF_$name\n"; -} - - diff --git a/code/macosx/Performance.rtf b/code/macosx/Performance.rtf deleted file mode 100644 index 4ba0bfed..00000000 --- a/code/macosx/Performance.rtf +++ /dev/null @@ -1,114 +0,0 @@ -{\rtf1\mac\ansicpg10000{\fonttbl\f0\fswiss\fcharset77 Helvetica;} -{\colortbl;\red255\green255\blue255;\red255\green0\blue16;\red255\green0\blue16;} -\paperw14240\paperh14700 -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\f0\fs24 \cf0 \ - -\b +set timedemo 1 +demo die.dm3 +set s_initsound 0 +set r_enablerender 0 +set vm_cgame 0 +set vm_game 0\ -4865 frames, 154.3 seconds: 31.5 fps\ -\ -\ -+set timedemo 1 +demo die.dm3 +set s_initsound 0 +set r_enablerender 0 +set vm_cgame 2 +set vm_game 2\ -4865 frames, 199.8 seconds: 24.4 fps\ -\ -\ -+set timedemo 1 +demo demo001.dm3 +set s_initsound 0 +set r_enablerender 0 +set vm_cgame 0 +set vm_game 0\ -1346 frames, 10.1 seconds: 133.0 fps\ -\ -\ -+set timedemo 1 +demo demo001.dm3 +set s_initsound 0 +set r_enablerender 0 +set vm_cgame 2 +set vm_game 2\ -1346 frames, 12.8 seconds: 105.4 fps\ -\ -\ -\ -Starting point\ - -\b0 4865 frames, 154.5 seconds: 31.5 fps\ -[seconds spent locally, % of parent, % of total, # of samples]\ -[133.623469 -- 60130560955, 100.00%, 100.00%, 4866] Root\ - [126.853849 -- 57084231997, 94.93%, 94.93%, 4866] CL_Frame\ - [125.895845 -- 56653130083, 99.24%, 94.22%, 4918] SCR_UpdateScreen\ - [50.532841 -- 22739778533, 40.14%, 37.82%, 524036] RB_SurfaceMesh\ - [46.583051 -- 20962372767, 92.18%, 34.86%, 524036] LerpMeshVertexes\ - [8.465527 -- 3809487228, 18.17%, 6.34%, 455917] LerpMeshVertexes 1\ - -\b \cf2 [37.967433 -- 17085344910, 81.50%, 28.41%, 68119] LerpMeshVertexes 2\ - -\b0 \cf0 [0.32% spent locally]\ - [7.82% spent locally]\ - [59.86% spent locally]\ - [0.76% spent locally]\ -[5.07% spent locally]\ -\ - -\b Minor cleanup of local variables\ - -\b0 [seconds spent locally, % of parent, % of total, # of samples]\ -[133.121489 -- 59904670191, 100.00%, 100.00%, 4866] Root\ - [126.329343 -- 56848204176, 94.90%, 94.90%, 4866] CL_Frame\ - [125.402239 -- 56431007399, 99.27%, 94.20%, 4918] SCR_UpdateScreen\ - [50.013076 -- 22505884288, 39.88%, 37.57%, 524036] RB_SurfaceMesh\ - [46.085775 -- 20738598809, 92.15%, 34.62%, 524036] LerpMeshVertexes\ - [8.427565 -- 3792404277, 18.29%, 6.33%, 455917] LerpMeshVertexes 1\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\b \cf3 [37.517092 -- 16882691281, 81.41%, 28.18%, 68119] LerpMeshVertexes 2\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\b0 \cf0 [0.31% spent locally]\ - [7.85% spent locally]\ - [60.12% spent locally]\ - [0.73% spent locally]\ -[5.10% spent locally]\ -\ -\ - -\b Split out normalization of LERPed normals (i.e., all the sqrt calls)\ - -\b0 [seconds spent locally, % of parent, % of total, # of samples]\ -[133.110463 -- 59899708244, 100.00%, 100.00%, 4866] Root\ - [126.357393 -- 56860826689, 94.93%, 94.93%, 4866] CL_Frame\ - [125.364641 -- 56414088645, 99.21%, 94.18%, 4918] SCR_UpdateScreen\ - [49.854816 -- 22434667309, 39.77%, 37.45%, 524036] RB_SurfaceMesh\ - [45.981802 -- 20691810706, 92.23%, 34.54%, 524036] LerpMeshVertexes\ - [8.407983 -- 3783592133, 18.29%, 6.32%, 455917] LerpMeshVertexes 1\ - [37.432159 -- 16844471717, 81.41%, 28.12%, 68119] LerpMeshVertexes 2\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\b \cf3 [30.288000 -- 13629599780, 80.91%, 22.75%, 68119] VectorArrayNormalize\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\b0 \cf0 [19.09% spent locally]\ - [0.31% spent locally]\ - [7.77% spent locally]\ - [60.23% spent locally]\ - [0.79% spent locally]\ -[5.07% spent locally]\ -\ - -\b Rewrote VectorArrayNormalize to use PPC frsqrt instruction (with Newton-Rhapson refinement)\ - -\b0 4865 frames, 128.7 seconds: 37.8 fps\ -[seconds spent locally, % of parent, % of total, # of samples]\ -[103.972710 -- 46787719721, 100.00%, 100.00%, 4866] Root\ - [97.153160 -- 43718922078, 93.44%, 93.44%, 4866] CL_Frame\ - [96.219348 -- 43298706398, 99.04%, 92.54%, 4918] SCR_UpdateScreen\ - [20.873944 -- 9393274747, 21.69%, 20.08%, 524036] RB_SurfaceMesh\ - [17.053245 -- 7673960266, 81.70%, 16.40%, 524036] LerpMeshVertexes\ - [8.356579 -- 3760460537, 49.00%, 8.04%, 455917] LerpMeshVertexes 1\ - [8.560159 -- 3852071404, 50.20%, 8.23%, 68119] LerpMeshVertexes 2\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\b \cf3 [1.429376 -- 643219234, 16.70%, 1.37%, 68119] VectorArrayNormalize\ -\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural - -\b0 \cf0 [83.30% spent locally]\ - [0.80% spent locally]\ - [18.30% spent locally]\ - [78.31% spent locally]\ - [0.96% spent locally]\ -[6.56% spent locally]\ -\ -\ -} diff --git a/code/macosx/Q3Controller.h b/code/macosx/Q3Controller.h deleted file mode 100644 index a366464a..00000000 --- a/code/macosx/Q3Controller.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ - -#import - -@interface Q3Controller : NSObject -{ - IBOutlet NSPanel *bannerPanel; -} - -#ifndef DEDICATED -- (IBAction)paste:(id)sender; -- (IBAction)requestTerminate:(id)sender; - -- (void) showBanner; -#endif - -- (void)quakeMain; - -@end - diff --git a/code/macosx/Q3Controller.m b/code/macosx/Q3Controller.m deleted file mode 100644 index 463c559c..00000000 --- a/code/macosx/Q3Controller.m +++ /dev/null @@ -1,435 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ - -#import "Q3Controller.h" - -#import -#import - -#include "client.h" -#include "macosx_local.h" -//#include "GameRanger SDK/gameranger.h" -#ifdef OMNI_TIMER -#import "macosx_timers.h" -#endif - -#define MAX_ARGC 1024 - -static qboolean Sys_IsProcessingTerminationRequest = qfalse; -static void Sys_CreatePathToFile(NSString *path, NSDictionary *attributes); - -@interface Q3Controller (Private) -- (void)quakeMain; -@end - -@implementation Q3Controller - -#ifndef DEDICATED - -- (void)applicationDidFinishLaunching:(NSNotification *)notification; -{ - NS_DURING { - [self quakeMain]; - } NS_HANDLER { - Sys_Error("%@", [localException reason]); - } NS_ENDHANDLER; - Sys_Quit(); -} - -- (void)applicationDidUnhide:(NSNotification *)notification; -{ - // Don't reactivate the game if we are asking whether to quit - if (Sys_IsProcessingTerminationRequest) - return; - - if (!Sys_Unhide()) - // Didn't work -- hide again so we should get another chance to unhide later - [NSApp hide: nil]; -} - -- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender; -{ - int choice; - - if (!Sys_IsHidden) { - // We're terminating via -terminate: - return NSTerminateNow; - } - - // Avoid reactivating GL when we unhide due to this panel - Sys_IsProcessingTerminationRequest = qtrue; - choice = NSRunAlertPanel(nil, @"Quit without saving?", @"Don't Quit", @"Quit", nil); - Sys_IsProcessingTerminationRequest = qfalse; - - if (choice == NSAlertAlternateReturn) - return NSTerminateNow; - - // Make sure we get re-hidden - [NSApp hide:nil]; - - return NSTerminateCancel; -} - -// Actions - -- (IBAction)paste:(id)sender; -{ - int shiftWasDown, insertWasDown; - unsigned int currentTime; - - currentTime = Sys_Milliseconds(); - // Save the original keyboard state - shiftWasDown = keys[K_SHIFT].down; - insertWasDown = keys[K_INS].down; - // Fake a Shift-Insert keyboard event - keys[K_SHIFT].down = qtrue; - Sys_QueEvent(currentTime, SE_KEY, K_INS, qtrue, 0, NULL); - Sys_QueEvent(currentTime, SE_KEY, K_INS, qfalse, 0, NULL); - // Restore the original keyboard state - keys[K_SHIFT].down = shiftWasDown; - keys[K_INS].down = insertWasDown; -} - -extern void CL_Quit_f(void); - - -- (IBAction)requestTerminate:(id)sender; -{ - Com_Quit_f(); - // UI_QuitMenu(); -} - -- (void)showBanner; -{ - static BOOL hasShownBanner = NO; - - if (!hasShownBanner) { - cvar_t *showBanner; - - hasShownBanner = YES; - showBanner = Cvar_Get("cl_showBanner", "1", 0); - if (showBanner->integer != 0) { - NSPanel *splashPanel; - NSImage *bannerImage; - NSRect bannerRect; - NSImageView *bannerImageView; - - bannerImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForImageResource:@"banner.jpg"]]; - bannerRect = NSMakeRect(0.0, 0.0, [bannerImage size].width, [bannerImage size].height); - - splashPanel = [[NSPanel alloc] initWithContentRect:bannerRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]; - - bannerImageView = [[NSImageView alloc] initWithFrame:bannerRect]; - [bannerImageView setImage:bannerImage]; - [splashPanel setContentView:bannerImageView]; - [bannerImageView release]; - - [splashPanel center]; - [splashPanel setHasShadow:YES]; - [splashPanel orderFront: nil]; - [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:2.5]]; - [splashPanel close]; - - [bannerImage release]; - } - } -} - -// Services - -- (void)connectToServer:(NSPasteboard *)pasteboard userData:(NSString *)data error:(NSString **)error; -{ - NSArray *pasteboardTypes; - - pasteboardTypes = [pasteboard types]; - if ([pasteboardTypes containsObject:NSStringPboardType]) { - NSString *requestedServer; - - requestedServer = [pasteboard stringForType:NSStringPboardType]; - if (requestedServer) { - Cbuf_AddText(va("connect %s\n", [requestedServer cString])); - return; - } - } - *error = @"Unable to connect to server: could not find string on pasteboard"; -} - -- (void)performCommand:(NSPasteboard *)pasteboard userData:(NSString *)data error:(NSString **)error; -{ - NSArray *pasteboardTypes; - - pasteboardTypes = [pasteboard types]; - if ([pasteboardTypes containsObject:NSStringPboardType]) { - NSString *requestedCommand; - - requestedCommand = [pasteboard stringForType:NSStringPboardType]; - if (requestedCommand) { - Cbuf_AddText(va("%s\n", [requestedCommand cString])); - return; - } - } - *error = @"Unable to perform command: could not find string on pasteboard"; -} - -#endif - -- (void)quakeMain; -{ - NSAutoreleasePool *pool; - int argc = 0; - const char *argv[MAX_ARGC]; - NSProcessInfo *processInfo; - NSArray *arguments; - unsigned int argumentIndex, argumentCount; - NSFileManager *defaultManager; - unsigned int commandLineLength; - NSString *installationPathKey, *installationPath; - char *cmdline; - BOOL foundDirectory; - NSString *appName, *demoAppName, *selectButton; - int count = 0; - pool = [[NSAutoreleasePool alloc] init]; - - [NSApp setServicesProvider:self]; - - processInfo = [NSProcessInfo processInfo]; - arguments = [processInfo arguments]; - argumentCount = [arguments count]; - for (argumentIndex = 0; argumentIndex < argumentCount; argumentIndex++) { - NSString *arg; - - arg = [arguments objectAtIndex:argumentIndex]; - // Don't pass the Process Serial Number command line arg that the Window Server/Finder invokes us with - if ([arg hasPrefix: @"-psn_"]) - continue; - - argv[argc++] = strdup([arg cString]); - } - - // Figure out where the level data is stored. - installationPathKey = @"RetailInstallationPath"; - - installationPath = [[NSUserDefaults standardUserDefaults] objectForKey:installationPathKey]; - if (!installationPath) { - // Default to the directory containing the executable (which is where most users will want to put it - installationPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]; - } - -#if !defined(DEDICATED) - appName = [[[NSBundle mainBundle] infoDictionary] objectForKey: @"CFBundleName"]; -#else - // We are hard coding the app name here since the dedicated server is a tool, not a app bundle and does not have access to the Info.plist that the client app does. Suck. - appName = @"Quake3"; -#endif - demoAppName = appName; - - while (YES) { - NSString *dataPath; - NSOpenPanel *openPanel; - int result; - - foundDirectory = NO; - defaultManager = [NSFileManager defaultManager]; - //NSLog(@"Candidate installation path = %@", installationPath); - dataPath = [installationPath stringByAppendingPathComponent: @"baseq3"]; - - if ([defaultManager fileExistsAtPath: dataPath]) { - // Check that the data directory contains at least one .pk3 file. We don't know what it will be named, so don't hard code a name (for example it might be named 'french.pk3' for a French release - NSArray *files; - unsigned int fileIndex; - - files = [defaultManager directoryContentsAtPath: dataPath]; - fileIndex = [files count]; - while (fileIndex--) { - if ([[files objectAtIndex: fileIndex] hasSuffix: @"pk3"]) { - //NSLog(@"Found %@.", [files objectAtIndex: fileIndex]); - foundDirectory = YES; - break; - } - } - } - - if (foundDirectory) - break; - -#ifdef DEDICATED - break; -#warning TJW: We are hard coding the app name and default domain here since the dedicated server is a tool, not a app bundle and does not have access to the Info.plist that the client app does. Suck. - NSLog(@"Unable to determine installation directory. Please move the executable into the '%@' installation directory or add a '%@' key in the 'Q3DedicatedServer' defaults domain.", appName, installationPathKey, [[NSBundle mainBundle] bundleIdentifier]); - Sys_Quit(); - exit(1); -#else - selectButton = @"Select Retail Installation..."; - - result = NSRunAlertPanel(demoAppName, @"You need to select the installation directory for %@ (not any directory inside of it -- the installation directory itself).", selectButton, @"Quit", nil, appName); - switch (result) { - case NSAlertDefaultReturn: - break; - default: - Sys_Quit(); - break; - } - - openPanel = [NSOpenPanel openPanel]; - [openPanel setAllowsMultipleSelection:NO]; - [openPanel setCanChooseDirectories:YES]; - [openPanel setCanChooseFiles:NO]; - result = [openPanel runModalForDirectory:nil file:nil]; - if (result == NSOKButton) { - NSArray *filenames; - - filenames = [openPanel filenames]; - if ([filenames count] == 1) { - installationPath = [filenames objectAtIndex:0]; - [[NSUserDefaults standardUserDefaults] setObject:installationPath forKey:installationPathKey]; - [[NSUserDefaults standardUserDefaults] synchronize]; - } - } -#endif - } - - // Create the application support directory if it doesn't exist already - do { - NSArray *results; - NSString *libraryPath, *homePath, *filePath; - NSDictionary *attributes; - - results = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); - if (![results count]) - break; - - libraryPath = [results objectAtIndex: 0]; - homePath = [libraryPath stringByAppendingPathComponent: @"Application Support"]; - homePath = [homePath stringByAppendingPathComponent: appName]; - filePath = [homePath stringByAppendingPathComponent: @"foo"]; - - attributes = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithUnsignedInt: 0750], NSFilePosixPermissions, nil]; - NS_DURING { - Sys_CreatePathToFile(filePath, attributes); - Sys_SetDefaultHomePath([homePath fileSystemRepresentation]); - } NS_HANDLER { - NSLog(@"Exception: %@", localException); -#ifndef DEDICATED - NSRunAlertPanel(nil, @"Unable to create '%@'. Please make sure that you have permission to write to this folder and re-run the game.", @"OK", nil, nil, homePath); -#endif - Sys_Quit(); - } NS_ENDHANDLER; - } while(0); - - // Provoke the CD scanning code into looking up the CD. - Sys_CheckCD(); - - // Let the filesystem know where our local install is - Sys_SetDefaultInstallPath([installationPath cString]); - - cmdline = NULL; -#if 0 - if (GRCheckFileForCmd()) { - GRGetWaitingCmd(); - if (GRHasProperty( 'Exec' )) { - NSString *cfgPath, *grCfg; - cfgPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]; - cfgPath = [cfgPath stringByAppendingPathComponent: [NSString stringWithCString: GRGetPropertyStr( 'Exec' )]]; - grCfg = [NSString stringWithContentsOfFile: cfgPath]; - cmdline = malloc(strlen([grCfg cString])+1); - [grCfg getCString: cmdline]; - } - } -#endif - if (!cmdline) { - // merge the command line, this is kinda silly - for (commandLineLength = 1, argumentIndex = 1; argumentIndex < argc; argumentIndex++) - commandLineLength += strlen(argv[argumentIndex]) + 1; - cmdline = malloc(commandLineLength); - *cmdline = '\0'; - for (argumentIndex = 1; argumentIndex < argc; argumentIndex++) { - if (argumentIndex > 1) - strcat(cmdline, " "); - strcat(cmdline, argv[argumentIndex]); - } - } - Com_Printf("command line: %s\n", cmdline); - - Com_Init(cmdline); - -#ifndef DEDICATED - [NSApp activateIgnoringOtherApps:YES]; -#endif - - while (1) { - Com_Frame(); - - if ((count & 15)==0) { - // We should think about doing this less frequently than every frame - [pool release]; - pool = [[NSAutoreleasePool alloc] init]; - } - } - - [pool release]; -} - -@end - - - -// Creates any directories needed to be able to create a file at the specified path. Raises an exception on failure. -static void Sys_CreatePathToFile(NSString *path, NSDictionary *attributes) -{ - NSArray *pathComponents; - unsigned int dirIndex, dirCount; - unsigned int startingIndex; - NSFileManager *manager; - - manager = [NSFileManager defaultManager]; - pathComponents = [path pathComponents]; - dirCount = [pathComponents count] - 1; - - startingIndex = 0; - for (dirIndex = startingIndex; dirIndex < dirCount; dirIndex++) { - NSString *partialPath; - BOOL fileExists; - - partialPath = [NSString pathWithComponents:[pathComponents subarrayWithRange:NSMakeRange(0, dirIndex + 1)]]; - - // Don't use the 'fileExistsAtPath:isDirectory:' version since it doesn't traverse symlinks - fileExists = [manager fileExistsAtPath:partialPath]; - if (!fileExists) { - if (![manager createDirectoryAtPath:partialPath attributes:attributes]) { - [NSException raise:NSGenericException format:@"Unable to create a directory at path: %@", partialPath]; - } - } else { - NSDictionary *attributes; - - attributes = [manager fileAttributesAtPath:partialPath traverseLink:YES]; - if (![[attributes objectForKey:NSFileType] isEqualToString: NSFileTypeDirectory]) { - [NSException raise:NSGenericException format:@"Unable to write to path \"%@\" because \"%@\" is not a directory", - path, partialPath]; - } - } - } -} - -#ifdef DEDICATED -void S_ClearSoundBuffer( void ) { -} -#endif diff --git a/code/macosx/Quake3.icns b/code/macosx/Quake3.icns deleted file mode 100644 index 30e3b673cdf4f147208df4a93e289ab0b0f1494a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35224 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

  • _#OUv%A z9-Hujp1kGj0Jna)1oVG8vI-yRM$!(*_Q?&w!Rre8OW?5_c?V`_k_pzDR!swzC>Q z|EcS9hdZ9Kx$rO4KCJ4^1@HI%!V!MJ^oi&nT?K5e+8u}wF3f!A30q4K>;GH8xee_9 z?wpZ$52qatK#D&Zl?-rV80`PY>4To<>)ijQ4bf|1{%=nk5d}h;();hLMkN94DgY1s zbxSiccMEt9wBCC`t zxjlLq)>9ihpm&$P=LVQrP(+pPn9%xhJKO(C;Ukr~?_Q@$Z@fDUzw)Sc4fNm18E(fs z7w=QyZQ1poxoi4}ynk9`cE3oK{61kAe$1A?f2QAmYEKta*Vkv%e6Ck9|5RxOegeGC zlHalhV^qcW--1IW)Rncv(_ZlHk5Iz{RLM`H`{Gw#H7>#U-&zuR{|s-pF02@w@M7H$ zP@1-jDmgQ{2X-^7d<*)2Ul`H9zJ&T|QNJhbtON6ZE5&T3?jIf98H+1Fe>TL53rp@( zKg{m_=>Msi{pjuQDMi%j>0Mv+@{5q^qmr_3Mm5L! zt#d*Dp${VG&(h0Ej!*6Q+;75g{r@PbR+N-&8&wb2HB18id#ALb-{!qjR+2xl&5K_C z;C~RXxVUU{dUdQ{mks)NO>RuTFC1J}oS)t51$!T$RQh2_+2`q1uztlb(7$a$U3!13 zds)e$u`U0@eKsuZITLS2Y1v2Vl`yw#5a|DMd`Z9)IX<0{cEU&FF{yT&wpvC%(P zDjNDn>C!Cx$VG-Gpnv5Q*!_UFp$$s^*qU7zgD*A-y51~VnoX~B)_S0S*#|LLDX($K z&CfDxz4-a(Hn~=^ILnEjbCSxSf8jVcwtrrOl4~nQS9$UM7pDDIyfDi}PqYX0&kQ;6 z{m-jk{M*9xxEJ4lY2r`C3$mQFei!JU5yD?IL%c@CKg}JDKOFpm6Vv$9)%jx`74*}~ zueABqpC%8ry!iezr28(;85bFUEA;<^5MJ{MMbnG>#tzcI`1_v_u0J(B-9szVz-G`S zT0c_MIkkSoK=BKAe-O!?u{Lw0hmYfIb-3u>q!2bgLXoz1#yf9vU%Y-o+@{xnAr5-Y zmH&1(Jbn~*1xa~yuQr3*J?GI4sPG>rcoo5I+{QxpUwZELr7^?tGml^~#r8H0@i!P= zcp^B_iE8>)qU6l&^I304B7TCWPK@UKPxLcbOcIVnzz@*AFZwYwAY$|IOQ zzM=xjmpAh=`@i^muA - - - - IBEditorPositions - - 29 - 69 252 121 44 0 0 1152 746 - - IBFramework Version - 248.0 - IBOpenObjects - - 29 - - IBSystem Version - 5V21 - - diff --git a/code/macosx/Quake3.nib/objects.nib b/code/macosx/Quake3.nib/objects.nib deleted file mode 100644 index fbea89acbecfd2a014a31c83c001191365453f66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 765 zcmZ8f%Wl&^6dltxjc8heV2hL;s@RcTS5AW}c@am&AAly#C=BrsJ6KrG z5R*!kc*%+)^#k|?Bz}P$pF7MO^+2a~z}JLey=is-PsTAl+!nL%%8>X5x;isQ`00qru3?gz;qGb~=-ZM_tTm z7|28lgYGDR-L;(_2_lOVKQ{hmTCrA@V)Qc;+tf5oB9snH1XweWyg*HaF5a!zYm~q< zP1~s&drqcd#9VTiDZs&7mXAk7bM946yDy15_AwhvnTT)dJKO+SKi#9R$)2;zePFE7z&aRs);r*wIxJAKd@gb{C*{#xxDgI_kyeNBp_WGA3HpEsaa z9WJSwl?x@5cG@^?cf)|Q(DMj`$Y*LXQ_EbfmU&I(0NBW0s_T;Rbc3N*|6^tvb3#4x zc-rcp1)!>yP`VkIR15g2-^Q+I*?=6XSviEmq;_B{-~cOOA(>W<3-Qo)Y&z&i+#?(e z1h8%)i_x!g0paGhc0UtaFvFQPTOSgSjLK+bn&i8%cl5{G;`&XoijgW7kBViC-WPd{ cJ`^(pJ|A - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - qagame - CFBundleGetInfoString - Quake 3 Arena (1.16) - CFBundleIconFile - Quake3.icns - CFBundleIdentifier - - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.16 - CFBundleSignature - ???? - CFBundleVersion - 0.0.1d1 - - -"; - }; - 00F5ED39FEBA95B7C697A12F = { - buildActionMask = 2147483647; - files = ( - 13380E1300ADFAD5C697A10E, - 13380E1500ADFB0CC697A10E, - 13380E1700ADFBFDC697A10E, - 13380E1900ADFC10C697A10E, - 13380E1B00ADFC22C697A10E, - 13380E1D00ADFC32C697A10E, - 13380E1F00ADFC43C697A10E, - 13380E2500ADFCA7C697A10E, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 00F5ED55FEBA95B7C697A12F = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 00F5ED56FEBA95B7C697A12F = { - buildActionMask = 2147483647; - files = ( - 13380E0900ADF941C697A10E, - 13380E0B00ADFA16C697A10E, - 13380E0C00ADFA72C697A10E, - 13380E0D00ADFA94C697A10E, - 13380E0E00ADFA9EC697A10E, - 13380E1200ADFACAC697A10E, - 13380E1400ADFAD5C697A10E, - 13380E1600ADFB0CC697A10E, - 13380E1800ADFBFDC697A10E, - 13380E1A00ADFC10C697A10E, - 13380E1C00ADFC22C697A10E, - 13380E1E00ADFC32C697A10E, - 13380E2000ADFC43C697A10E, - 13380E2100ADFC59C697A10E, - 13380E2200ADFC78C697A10E, - 13380E2300ADFC85C697A10E, - 13380E2400ADFC9CC697A10E, - 13380E2600ADFCA7C697A10E, - 13380E2700ADFCBDC697A10E, - 13380E2800ADFCC8C697A10E, - 13380E2900ADFCD1C697A10E, - 13380E2A00ADFCEBC697A10E, - 13380E2B00ADFCF6C697A10E, - 13380E2C00ADFD01C697A10E, - 13380E2D00ADFD1FC697A10E, - 13380E2E00ADFD28C697A10E, - 13380E2F00ADFD38C697A10E, - 13380E3000ADFD46C697A10E, - 13380E3100ADFD58C697A10E, - 13380E3200ADFD71C697A10E, - 13380E3300ADFD85C697A10E, - 4F23A81708F4FA8F00CB90D3, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 00F5ED77FEBA95B7C697A12F = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 00F5ED78FEBA95B7C697A12F = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXRezBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 00F5ED90FEBA9615C697A12F = { - buildPhases = ( - 00F5ED91FEBA9615C697A12F, - 00F5ED92FEBA9615C697A12F, - 00F5ED93FEBA9615C697A12F, - 00F5ED94FEBA9615C697A12F, - 00F5ED95FEBA9615C697A12F, - ); - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ""; - HEADER_SEARCH_PATHS = ""; - INSTALL_PATH = "/Users/Shared/$(USER)/InstalledProducts"; - LIBRARY_SEARCH_PATHS = ""; - OTHER_LDFLAGS = "-bundle -undefined error"; - OTHER_REZFLAGS = ""; - PREBINDING = NO; - PRODUCT_NAME = cgame; - PROFILE_FLAGS = ""; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wall -Wno-four-char-constants -Wno-unknown-pragmas"; - WRAPPER_EXTENSION = bundle; - }; - dependencies = ( - ); - isa = PBXBundleTarget; - name = cgame; - productInstallPath = "/Users/Shared/$(USER)/InstalledProducts"; - productName = cgame; - productReference = 07F3F508FFE98E8EC697A10E; - productSettingsXML = " - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - - CFBundleGetInfoString - - CFBundleIconFile - - CFBundleIdentifier - - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - - CFBundlePackageType - BNDL - CFBundleShortVersionString - - CFBundleSignature - ???? - CFBundleVersion - 0.0.1d1 - - -"; - }; - 00F5ED91FEBA9615C697A12F = { - buildActionMask = 2147483647; - files = ( - 13380E5100AE0235C697A10E, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 00F5ED92FEBA9615C697A12F = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 00F5ED93FEBA9615C697A12F = { - buildActionMask = 2147483647; - files = ( - 13380E3400ADFDA1C697A10E, - 13380E3500ADFDA1C697A10E, - 13380E3900ADFDE1C697A10E, - 13380E3B00ADFE0CC697A10E, - 13380E3C00ADFE1EC697A10E, - 13380E3D00ADFE24C697A10E, - 13380E3E00ADFE3DC697A10E, - 13380E3F00ADFE4AC697A10E, - 13380E4000ADFE58C697A10E, - 13380E4100ADFE6BC697A10E, - 13380E4200ADFE7AC697A10E, - 13380E4300ADFE88C697A10E, - 13380E4400ADFE97C697A10E, - 13380E4500ADFEA7C697A10E, - 13380E4600ADFEB8C697A10E, - 13380E4700ADFEC9C697A10E, - 13380E4800ADFED7C697A10E, - 13380E4900ADFEE7C697A10E, - 13380E4A00ADFEF5C697A10E, - 13380E4B00ADFF05C697A10E, - 13380E4C00ADFF27C697A10E, - 13380E4F00AE0112C697A10E, - 13380E5000AE020FC697A10E, - 13380E5200AE0235C697A10E, - 4F23A81B08F4FA8F00CB90D3, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 00F5ED94FEBA9615C697A12F = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 00F5ED95FEBA9615C697A12F = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXRezBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; -//000 -//001 -//002 -//003 -//004 -//010 -//011 -//012 -//013 -//014 - 011F78F200B25B65C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = macosx_qgl.h; - refType = 4; - sourceTree = ""; - }; - 011F78F300B25B66C697A10E = { - fileRef = 011F78F200B25B65C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 012AD90700868211C697A10E = { - children = ( - 92603734091019830018EAE6, - 92603735091019830018EAE6, - 92603736091019830018EAE6, - 92603737091019830018EAE6, - 92603738091019830018EAE6, - 92603739091019830018EAE6, - 9260373A091019830018EAE6, - 9260373B091019830018EAE6, - 9260373C091019830018EAE6, - 012AD90800868211C697A10E, - 012AD90900868211C697A10E, - 012AD90A00868211C697A10E, - 012AD90B00868211C697A10E, - 012AD90C00868211C697A10E, - 012AD90D00868211C697A10E, - 012AD90E00868211C697A10E, - 012AD90F00868211C697A10E, - 012AD91000868211C697A10E, - 012AD91100868211C697A10E, - 012AD91200868211C697A10E, - 012AD91300868211C697A10E, - 012AD91400868211C697A10E, - 012AD91500868211C697A10E, - 012AD91600868211C697A10E, - 012AD91700868211C697A10E, - 012AD91800868211C697A10E, - 012AD91900868211C697A10E, - 012AD91A00868211C697A10E, - 012AD91B00868211C697A10E, - 012AD91C00868211C697A10E, - 012AD91D00868211C697A10E, - 012AD91E00868211C697A10E, - 012AD91F00868211C697A10E, - 012AD92000868211C697A10E, - 012AD92100868211C697A10E, - 012AD92200868211C697A10E, - 012AD92300868211C697A10E, - 012AD92400868211C697A10E, - 012AD92500868211C697A10E, - 012AD92600868211C697A10E, - 012AD92700868211C697A10E, - 012AD92800868211C697A10E, - 012AD92900868211C697A10E, - 012AD92A00868211C697A10E, - 012AD92B00868211C697A10E, - 012AD92C00868211C697A10E, - 012AD92D00868211C697A10E, - 012AD92E00868211C697A10E, - 012AD92F00868211C697A10E, - 012AD93000868211C697A10E, - 012AD93100868211C697A10E, - 012AD93200868211C697A10E, - 012AD93300868211C697A10E, - 012AD93400868211C697A10E, - 012AD93500868211C697A10E, - 012AD93600868211C697A10E, - 012AD93700868211C697A10E, - 012AD93800868211C697A10E, - 012AD93900868211C697A10E, - 012AD93A00868211C697A10E, - 012AD93B00868211C697A10E, - 012AD93C00868211C697A10E, - ); - isa = PBXGroup; - path = botlib; - refType = 4; - sourceTree = ""; - }; - 012AD90800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = aasfile.h; - refType = 4; - sourceTree = ""; - }; - 012AD90900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas_bsp.h; - refType = 4; - sourceTree = ""; - }; - 012AD90A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_aas_bspq3.c; - refType = 4; - sourceTree = ""; - }; - 012AD90B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_aas_cluster.c; - refType = 4; - sourceTree = ""; - }; - 012AD90C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas_cluster.h; - refType = 4; - sourceTree = ""; - }; - 012AD90D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_aas_debug.c; - refType = 4; - sourceTree = ""; - }; - 012AD90E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas_debug.h; - refType = 4; - sourceTree = ""; - }; - 012AD90F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas_def.h; - refType = 4; - sourceTree = ""; - }; - 012AD91000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_aas_entity.c; - refType = 4; - sourceTree = ""; - }; - 012AD91100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas_entity.h; - refType = 4; - sourceTree = ""; - }; - 012AD91200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_aas_file.c; - refType = 4; - sourceTree = ""; - }; - 012AD91300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas_file.h; - refType = 4; - sourceTree = ""; - }; - 012AD91400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas_funcs.h; - refType = 4; - sourceTree = ""; - }; - 012AD91500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_aas_main.c; - refType = 4; - sourceTree = ""; - }; - 012AD91600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas_main.h; - refType = 4; - sourceTree = ""; - }; - 012AD91700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_aas_move.c; - refType = 4; - sourceTree = ""; - }; - 012AD91800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas_move.h; - refType = 4; - sourceTree = ""; - }; - 012AD91900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_aas_optimize.c; - refType = 4; - sourceTree = ""; - }; - 012AD91A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas_optimize.h; - refType = 4; - sourceTree = ""; - }; - 012AD91B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_aas_reach.c; - refType = 4; - sourceTree = ""; - }; - 012AD91C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas_reach.h; - refType = 4; - sourceTree = ""; - }; - 012AD91D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_aas_route.c; - refType = 4; - sourceTree = ""; - }; - 012AD91E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas_route.h; - refType = 4; - sourceTree = ""; - }; - 012AD91F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_aas_routealt.c; - refType = 4; - sourceTree = ""; - }; - 012AD92000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas_routealt.h; - refType = 4; - sourceTree = ""; - }; - 012AD92100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_aas_sample.c; - refType = 4; - sourceTree = ""; - }; - 012AD92200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas_sample.h; - refType = 4; - sourceTree = ""; - }; - 012AD92300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_ai_char.c; - refType = 4; - sourceTree = ""; - }; - 012AD92400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_ai_chat.c; - refType = 4; - sourceTree = ""; - }; - 012AD92500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_ai_gen.c; - refType = 4; - sourceTree = ""; - }; - 012AD92600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_ai_goal.c; - refType = 4; - sourceTree = ""; - }; - 012AD92700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_ai_move.c; - refType = 4; - sourceTree = ""; - }; - 012AD92800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_ai_weap.c; - refType = 4; - sourceTree = ""; - }; - 012AD92900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_ai_weight.c; - refType = 4; - sourceTree = ""; - }; - 012AD92A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_ai_weight.h; - refType = 4; - sourceTree = ""; - }; - 012AD92B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_ea.c; - refType = 4; - sourceTree = ""; - }; - 012AD92C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = be_interface.c; - refType = 4; - sourceTree = ""; - }; - 012AD92D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_interface.h; - refType = 4; - sourceTree = ""; - }; - 012AD92E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = l_crc.c; - refType = 4; - sourceTree = ""; - }; - 012AD92F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = l_crc.h; - refType = 4; - sourceTree = ""; - }; - 012AD93000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = l_libvar.c; - refType = 4; - sourceTree = ""; - }; - 012AD93100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = l_libvar.h; - refType = 4; - sourceTree = ""; - }; - 012AD93200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = l_log.c; - refType = 4; - sourceTree = ""; - }; - 012AD93300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = l_log.h; - refType = 4; - sourceTree = ""; - }; - 012AD93400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = l_memory.c; - refType = 4; - sourceTree = ""; - }; - 012AD93500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = l_memory.h; - refType = 4; - sourceTree = ""; - }; - 012AD93600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = l_precomp.c; - refType = 4; - sourceTree = ""; - }; - 012AD93700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = l_precomp.h; - refType = 4; - sourceTree = ""; - }; - 012AD93800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = l_script.c; - refType = 4; - sourceTree = ""; - }; - 012AD93900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = l_script.h; - refType = 4; - sourceTree = ""; - }; - 012AD93A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = l_struct.c; - refType = 4; - sourceTree = ""; - }; - 012AD93B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = l_struct.h; - refType = 4; - sourceTree = ""; - }; - 012AD93C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = l_utils.h; - refType = 4; - sourceTree = ""; - }; - 012AD98D00868211C697A10E = { - children = ( - 012AD98E00868211C697A10E, - 012AD98F00868211C697A10E, - 012AD99000868211C697A10E, - 012AD99100868211C697A10E, - 012AD99200868211C697A10E, - 012AD99300868211C697A10E, - 012AD99400868211C697A10E, - 012AD99500868211C697A10E, - 012AD99600868211C697A10E, - 012AD99700868211C697A10E, - 012AD99800868211C697A10E, - 012AD99900868211C697A10E, - 012AD99A00868211C697A10E, - 012AD99B00868211C697A10E, - 012AD99C00868211C697A10E, - 012AD99D00868211C697A10E, - 012AD99E00868211C697A10E, - 012AD99F00868211C697A10E, - 012AD9A000868211C697A10E, - 012AD9A100868211C697A10E, - 012AD9A200868211C697A10E, - 012AD9A300868211C697A10E, - ); - isa = PBXGroup; - path = cgame; - refType = 4; - sourceTree = ""; - }; - 012AD98E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_consolecmds.c; - refType = 4; - sourceTree = ""; - }; - 012AD98F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_draw.c; - refType = 4; - sourceTree = ""; - }; - 012AD99000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_drawtools.c; - refType = 4; - sourceTree = ""; - }; - 012AD99100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_effects.c; - refType = 4; - sourceTree = ""; - }; - 012AD99200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_ents.c; - refType = 4; - sourceTree = ""; - }; - 012AD99300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_event.c; - refType = 4; - sourceTree = ""; - }; - 012AD99400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_info.c; - refType = 4; - sourceTree = ""; - }; - 012AD99500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = cg_local.h; - refType = 4; - sourceTree = ""; - }; - 012AD99600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_localents.c; - refType = 4; - sourceTree = ""; - }; - 012AD99700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_main.c; - refType = 4; - sourceTree = ""; - }; - 012AD99800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_marks.c; - refType = 4; - sourceTree = ""; - }; - 012AD99900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_newdraw.c; - refType = 4; - sourceTree = ""; - }; - 012AD99A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_players.c; - refType = 4; - sourceTree = ""; - }; - 012AD99B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_playerstate.c; - refType = 4; - sourceTree = ""; - }; - 012AD99C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_predict.c; - refType = 4; - sourceTree = ""; - }; - 012AD99D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = cg_public.h; - refType = 4; - sourceTree = ""; - }; - 012AD99E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_scoreboard.c; - refType = 4; - sourceTree = ""; - }; - 012AD99F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_servercmds.c; - refType = 4; - sourceTree = ""; - }; - 012AD9A000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_snapshot.c; - refType = 4; - sourceTree = ""; - }; - 012AD9A100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_syscalls.c; - refType = 4; - sourceTree = ""; - }; - 012AD9A200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_view.c; - refType = 4; - sourceTree = ""; - }; - 012AD9A300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cg_weapons.c; - refType = 4; - sourceTree = ""; - }; - 012AD9A500868211C697A10E = { - children = ( - 92847F3509279B370056BC59, - 92847F3609279B370056BC59, - 92847F3709279B370056BC59, - 92847F3809279B370056BC59, - 92847F3909279B370056BC59, - 92847F3A09279B370056BC59, - 92847F3B09279B370056BC59, - 9260378009101A6C0018EAE6, - 012AD9A600868211C697A10E, - 012AD9A700868211C697A10E, - 012AD9A800868211C697A10E, - 012AD9A900868211C697A10E, - 012AD9AA00868211C697A10E, - 012AD9AB00868211C697A10E, - 012AD9AC00868211C697A10E, - 012AD9AD00868211C697A10E, - 012AD9AE00868211C697A10E, - 012AD9AF00868211C697A10E, - 012AD9B000868211C697A10E, - 012AD9B100868211C697A10E, - 012AD9B200868211C697A10E, - 012AD9B300868211C697A10E, - 012AD9B400868211C697A10E, - 012AD9B500868211C697A10E, - 012AD9B600868211C697A10E, - 012AD9B700868211C697A10E, - 012AD9B800868211C697A10E, - ); - isa = PBXGroup; - path = client; - refType = 4; - sourceTree = ""; - }; - 012AD9A600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cl_cgame.c; - refType = 4; - sourceTree = ""; - }; - 012AD9A700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cl_cin.c; - refType = 4; - sourceTree = ""; - }; - 012AD9A800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cl_console.c; - refType = 4; - sourceTree = ""; - }; - 012AD9A900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cl_input.c; - refType = 4; - sourceTree = ""; - }; - 012AD9AA00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cl_keys.c; - refType = 4; - sourceTree = ""; - }; - 012AD9AB00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cl_main.c; - refType = 4; - sourceTree = ""; - }; - 012AD9AC00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cl_net_chan.c; - refType = 4; - sourceTree = ""; - }; - 012AD9AD00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cl_parse.c; - refType = 4; - sourceTree = ""; - }; - 012AD9AE00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cl_scrn.c; - refType = 4; - sourceTree = ""; - }; - 012AD9AF00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cl_ui.c; - refType = 4; - sourceTree = ""; - }; - 012AD9B000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = client.h; - refType = 4; - sourceTree = ""; - }; - 012AD9B100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = keys.h; - refType = 4; - sourceTree = ""; - }; - 012AD9B200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = snd_adpcm.c; - refType = 4; - sourceTree = ""; - }; - 012AD9B300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = snd_dma.c; - refType = 4; - sourceTree = ""; - }; - 012AD9B400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = snd_local.h; - refType = 4; - sourceTree = ""; - }; - 012AD9B500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = snd_mem.c; - refType = 4; - sourceTree = ""; - }; - 012AD9B600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = snd_mix.c; - refType = 4; - sourceTree = ""; - }; - 012AD9B700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = snd_public.h; - refType = 4; - sourceTree = ""; - }; - 012AD9B800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = snd_wavelet.c; - refType = 4; - sourceTree = ""; - }; - 012ADA2400868211C697A10E = { - children = ( - 012ADA2500868211C697A10E, - 012ADA2600868211C697A10E, - 012ADA2700868211C697A10E, - 012ADA2800868211C697A10E, - 012ADA2900868211C697A10E, - 012ADA2A00868211C697A10E, - 012ADA2B00868211C697A10E, - 012ADA2C00868211C697A10E, - 012ADA2D00868211C697A10E, - 012ADA2E00868211C697A10E, - 012ADA2F00868211C697A10E, - 012ADA3000868211C697A10E, - 012ADA3100868211C697A10E, - 012ADA3200868211C697A10E, - 012ADA3B00868211C697A10E, - 012ADA3C00868211C697A10E, - 012ADA3D00868211C697A10E, - 012ADA3E00868211C697A10E, - 012ADA3F00868211C697A10E, - 012ADA4000868211C697A10E, - 012ADA4100868211C697A10E, - 012ADA4300868211C697A10E, - 012ADA4400868211C697A10E, - 012ADA4500868211C697A10E, - 012ADA4600868211C697A10E, - 012ADA4700868211C697A10E, - 012ADA4800868211C697A10E, - 012ADA4900868211C697A10E, - 012ADA4A00868211C697A10E, - 012ADA4B00868211C697A10E, - 012ADA4C00868211C697A10E, - 012ADA4D00868211C697A10E, - 012ADA4E00868211C697A10E, - 012ADA4F00868211C697A10E, - 012ADA5000868211C697A10E, - 012ADA5100868211C697A10E, - 012ADA5200868211C697A10E, - 012ADA5300868211C697A10E, - 012ADA5400868211C697A10E, - 012ADA5500868211C697A10E, - 012ADA5600868211C697A10E, - 012ADA5700868211C697A10E, - 012ADA5800868211C697A10E, - 012ADA5900868211C697A10E, - 012ADA5A00868211C697A10E, - 012ADA5B00868211C697A10E, - 012ADA5C00868211C697A10E, - 012ADA5D00868211C697A10E, - 012ADA5E00868211C697A10E, - 012ADA5F00868211C697A10E, - 012ADA6400868211C697A10E, - ); - isa = PBXGroup; - path = game; - refType = 4; - sourceTree = ""; - }; - 012ADA2500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ai_chat.c; - refType = 4; - sourceTree = ""; - }; - 012ADA2600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = ai_chat.h; - refType = 4; - sourceTree = ""; - }; - 012ADA2700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ai_cmd.c; - refType = 4; - sourceTree = ""; - }; - 012ADA2800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = ai_cmd.h; - refType = 4; - sourceTree = ""; - }; - 012ADA2900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ai_dmnet.c; - refType = 4; - sourceTree = ""; - }; - 012ADA2A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = ai_dmnet.h; - refType = 4; - sourceTree = ""; - }; - 012ADA2B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ai_dmq3.c; - refType = 4; - sourceTree = ""; - }; - 012ADA2C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = ai_dmq3.h; - refType = 4; - sourceTree = ""; - }; - 012ADA2D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ai_main.c; - refType = 4; - sourceTree = ""; - }; - 012ADA2E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = ai_main.h; - refType = 4; - sourceTree = ""; - }; - 012ADA2F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ai_team.c; - refType = 4; - sourceTree = ""; - }; - 012ADA3000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = ai_team.h; - refType = 4; - sourceTree = ""; - }; - 012ADA3100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ai_vcmd.c; - refType = 4; - sourceTree = ""; - }; - 012ADA3200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = ai_vcmd.h; - refType = 4; - sourceTree = ""; - }; - 012ADA3B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = bg_lib.c; - refType = 4; - sourceTree = ""; - }; - 012ADA3C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = bg_lib.h; - refType = 4; - sourceTree = ""; - }; - 012ADA3D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = bg_local.h; - refType = 4; - sourceTree = ""; - }; - 012ADA3E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = bg_misc.c; - refType = 4; - sourceTree = ""; - }; - 012ADA3F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = bg_pmove.c; - refType = 4; - sourceTree = ""; - }; - 012ADA4000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = bg_public.h; - refType = 4; - sourceTree = ""; - }; - 012ADA4100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = bg_slidemove.c; - refType = 4; - sourceTree = ""; - }; - 012ADA4300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = chars.h; - refType = 4; - sourceTree = ""; - }; - 012ADA4400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_active.c; - refType = 4; - sourceTree = ""; - }; - 012ADA4500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_arenas.c; - refType = 4; - sourceTree = ""; - }; - 012ADA4600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_bot.c; - refType = 4; - sourceTree = ""; - }; - 012ADA4700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_client.c; - refType = 4; - sourceTree = ""; - }; - 012ADA4800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_cmds.c; - refType = 4; - sourceTree = ""; - }; - 012ADA4900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_combat.c; - refType = 4; - sourceTree = ""; - }; - 012ADA4A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_items.c; - refType = 4; - sourceTree = ""; - }; - 012ADA4B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = g_local.h; - refType = 4; - sourceTree = ""; - }; - 012ADA4C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_main.c; - refType = 4; - sourceTree = ""; - }; - 012ADA4D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_mem.c; - refType = 4; - sourceTree = ""; - }; - 012ADA4E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_misc.c; - refType = 4; - sourceTree = ""; - }; - 012ADA4F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_missile.c; - refType = 4; - sourceTree = ""; - }; - 012ADA5000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_mover.c; - refType = 4; - sourceTree = ""; - }; - 012ADA5100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = g_public.h; - refType = 4; - sourceTree = ""; - }; - 012ADA5200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_rankings.c; - refType = 4; - sourceTree = ""; - }; - 012ADA5300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = g_rankings.h; - refType = 4; - sourceTree = ""; - }; - 012ADA5400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_session.c; - refType = 4; - sourceTree = ""; - }; - 012ADA5500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_spawn.c; - refType = 4; - sourceTree = ""; - }; - 012ADA5600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_svcmds.c; - refType = 4; - sourceTree = ""; - }; - 012ADA5700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_syscalls.c; - refType = 4; - sourceTree = ""; - }; - 012ADA5800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_target.c; - refType = 4; - sourceTree = ""; - }; - 012ADA5900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_team.c; - refType = 4; - sourceTree = ""; - }; - 012ADA5A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = g_team.h; - refType = 4; - sourceTree = ""; - }; - 012ADA5B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_trigger.c; - refType = 4; - sourceTree = ""; - }; - 012ADA5C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_utils.c; - refType = 4; - sourceTree = ""; - }; - 012ADA5D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = g_weapon.c; - refType = 4; - sourceTree = ""; - }; - 012ADA5E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = inv.h; - refType = 4; - sourceTree = ""; - }; - 012ADA5F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = match.h; - refType = 4; - sourceTree = ""; - }; - 012ADA6400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = syn.h; - refType = 4; - sourceTree = ""; - }; - 012ADA6500868211C697A10E = { - children = ( - 012ADA6600868211C697A10E, - 012ADA6700868211C697A10E, - 012ADA6800868211C697A10E, - 012ADA6900868211C697A10E, - 012ADA6A00868211C697A10E, - 012ADA6B00868211C697A10E, - 012ADA6C00868211C697A10E, - 012ADA6D00868211C697A10E, - 012ADA6E00868211C697A10E, - 012ADA6F00868211C697A10E, - 012ADA7000868211C697A10E, - 012ADA7100868211C697A10E, - 012ADA7200868211C697A10E, - 012ADA7300868211C697A10E, - 012ADA7400868211C697A10E, - 012ADA7500868211C697A10E, - 012ADA7600868211C697A10E, - 012ADA7700868211C697A10E, - 012ADA7800868211C697A10E, - 012ADA7900868211C697A10E, - 012ADA7A00868211C697A10E, - 012ADA7B00868211C697A10E, - 012ADA7C00868211C697A10E, - 012ADA7D00868211C697A10E, - 012ADA7E00868211C697A10E, - 012ADA7F00868211C697A10E, - 012ADA8000868211C697A10E, - 012ADA8100868211C697A10E, - 012ADA8200868211C697A10E, - 012ADA8300868211C697A10E, - 012ADA8400868211C697A10E, - 012ADA8500868211C697A10E, - 012ADA8600868211C697A10E, - 012ADA8700868211C697A10E, - 012ADA8800868211C697A10E, - 012ADA8900868211C697A10E, - 012ADA8A00868211C697A10E, - 012ADA8B00868211C697A10E, - 012ADA8C00868211C697A10E, - 012ADA8D00868211C697A10E, - 012ADA8E00868211C697A10E, - 012ADA8F00868211C697A10E, - 012ADA9000868211C697A10E, - 012ADA9100868211C697A10E, - 012ADA9200868211C697A10E, - 012ADA9300868211C697A10E, - 012ADA9400868211C697A10E, - 012ADA9500868211C697A10E, - 012ADA9600868211C697A10E, - 012ADA9700868211C697A10E, - 012ADA9800868211C697A10E, - 012ADA9900868211C697A10E, - 012ADA9A00868211C697A10E, - 012ADA9B00868211C697A10E, - 012ADA9C00868211C697A10E, - 012ADA9D00868211C697A10E, - 012ADA9E00868211C697A10E, - 012ADA9F00868211C697A10E, - 012ADAA000868211C697A10E, - 012ADAA100868211C697A10E, - 012ADAA200868211C697A10E, - 012ADAA300868211C697A10E, - ); - isa = PBXGroup; - path = "jpeg-6"; - refType = 4; - sourceTree = ""; - }; - 012ADA6600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jcapimin.c; - refType = 4; - sourceTree = ""; - }; - 012ADA6700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jcapistd.c; - refType = 4; - sourceTree = ""; - }; - 012ADA6800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jccoefct.c; - refType = 4; - sourceTree = ""; - }; - 012ADA6900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jccolor.c; - refType = 4; - sourceTree = ""; - }; - 012ADA6A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jcdctmgr.c; - refType = 4; - sourceTree = ""; - }; - 012ADA6B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jchuff.c; - refType = 4; - sourceTree = ""; - }; - 012ADA6C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = jchuff.h; - refType = 4; - sourceTree = ""; - }; - 012ADA6D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jcinit.c; - refType = 4; - sourceTree = ""; - }; - 012ADA6E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jcmainct.c; - refType = 4; - sourceTree = ""; - }; - 012ADA6F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jcmarker.c; - refType = 4; - sourceTree = ""; - }; - 012ADA7000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jcmaster.c; - refType = 4; - sourceTree = ""; - }; - 012ADA7100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jcomapi.c; - refType = 4; - sourceTree = ""; - }; - 012ADA7200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = jconfig.h; - refType = 4; - sourceTree = ""; - }; - 012ADA7300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jcparam.c; - refType = 4; - sourceTree = ""; - }; - 012ADA7400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jcphuff.c; - refType = 4; - sourceTree = ""; - }; - 012ADA7500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jcprepct.c; - refType = 4; - sourceTree = ""; - }; - 012ADA7600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jcsample.c; - refType = 4; - sourceTree = ""; - }; - 012ADA7700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jctrans.c; - refType = 4; - sourceTree = ""; - }; - 012ADA7800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdapimin.c; - refType = 4; - sourceTree = ""; - }; - 012ADA7900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdapistd.c; - refType = 4; - sourceTree = ""; - }; - 012ADA7A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdatadst.c; - refType = 4; - sourceTree = ""; - }; - 012ADA7B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdatasrc.c; - refType = 4; - sourceTree = ""; - }; - 012ADA7C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdcoefct.c; - refType = 4; - sourceTree = ""; - }; - 012ADA7D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdcolor.c; - refType = 4; - sourceTree = ""; - }; - 012ADA7E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = jdct.h; - refType = 4; - sourceTree = ""; - }; - 012ADA7F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jddctmgr.c; - refType = 4; - sourceTree = ""; - }; - 012ADA8000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdhuff.c; - refType = 4; - sourceTree = ""; - }; - 012ADA8100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = jdhuff.h; - refType = 4; - sourceTree = ""; - }; - 012ADA8200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdinput.c; - refType = 4; - sourceTree = ""; - }; - 012ADA8300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdmainct.c; - refType = 4; - sourceTree = ""; - }; - 012ADA8400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdmarker.c; - refType = 4; - sourceTree = ""; - }; - 012ADA8500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdmaster.c; - refType = 4; - sourceTree = ""; - }; - 012ADA8600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdmerge.c; - refType = 4; - sourceTree = ""; - }; - 012ADA8700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdphuff.c; - refType = 4; - sourceTree = ""; - }; - 012ADA8800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdpostct.c; - refType = 4; - sourceTree = ""; - }; - 012ADA8900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdsample.c; - refType = 4; - sourceTree = ""; - }; - 012ADA8A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jdtrans.c; - refType = 4; - sourceTree = ""; - }; - 012ADA8B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jerror.c; - refType = 4; - sourceTree = ""; - }; - 012ADA8C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = jerror.h; - refType = 4; - sourceTree = ""; - }; - 012ADA8D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jfdctflt.c; - refType = 4; - sourceTree = ""; - }; - 012ADA8E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jfdctfst.c; - refType = 4; - sourceTree = ""; - }; - 012ADA8F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jfdctint.c; - refType = 4; - sourceTree = ""; - }; - 012ADA9000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jidctflt.c; - refType = 4; - sourceTree = ""; - }; - 012ADA9100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jidctfst.c; - refType = 4; - sourceTree = ""; - }; - 012ADA9200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jidctint.c; - refType = 4; - sourceTree = ""; - }; - 012ADA9300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jidctred.c; - refType = 4; - sourceTree = ""; - }; - 012ADA9400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = jinclude.h; - refType = 4; - sourceTree = ""; - }; - 012ADA9500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jload.c; - refType = 4; - sourceTree = ""; - }; - 012ADA9600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jmemansi.c; - refType = 4; - sourceTree = ""; - }; - 012ADA9700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jmemdos.c; - refType = 4; - sourceTree = ""; - }; - 012ADA9800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jmemmgr.c; - refType = 4; - sourceTree = ""; - }; - 012ADA9900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jmemname.c; - refType = 4; - sourceTree = ""; - }; - 012ADA9A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jmemnobs.c; - refType = 4; - sourceTree = ""; - }; - 012ADA9B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = jmemsys.h; - refType = 4; - sourceTree = ""; - }; - 012ADA9C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = jmorecfg.h; - refType = 4; - sourceTree = ""; - }; - 012ADA9D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = jpegint.h; - refType = 4; - sourceTree = ""; - }; - 012ADA9E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = jpeglib.h; - refType = 4; - sourceTree = ""; - }; - 012ADA9F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jpegtran.c; - refType = 4; - sourceTree = ""; - }; - 012ADAA000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jquant1.c; - refType = 4; - sourceTree = ""; - }; - 012ADAA100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jquant2.c; - refType = 4; - sourceTree = ""; - }; - 012ADAA200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = jutils.c; - refType = 4; - sourceTree = ""; - }; - 012ADAA300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = jversion.h; - refType = 4; - sourceTree = ""; - }; - 012ADAB300868211C697A10E = { - children = ( - 012ADAB400868211C697A10E, - 012ADAB500868211C697A10E, - 012ADAB600868211C697A10E, - 012ADAB700868211C697A10E, - 012ADAB800868211C697A10E, - 012ADAB900868211C697A10E, - 012ADABA00868211C697A10E, - ); - isa = PBXGroup; - path = null; - refType = 4; - sourceTree = ""; - }; - 012ADAB400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = mac_net.c; - refType = 4; - sourceTree = ""; - }; - 012ADAB500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = null_client.c; - refType = 4; - sourceTree = ""; - }; - 012ADAB600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = null_glimp.c; - refType = 4; - sourceTree = ""; - }; - 012ADAB700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = null_input.c; - refType = 4; - sourceTree = ""; - }; - 012ADAB800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = null_main.c; - refType = 4; - sourceTree = ""; - }; - 012ADAB900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = null_net.c; - refType = 4; - sourceTree = ""; - }; - 012ADABA00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = null_snddma.c; - refType = 4; - sourceTree = ""; - }; - 012ADABB00868211C697A10E = { - children = ( - 012ADABD00868211C697A10E, - 012ADABE00868211C697A10E, - 012ADABF00868211C697A10E, - 012ADAC000868211C697A10E, - 012ADAC100868211C697A10E, - 012ADAC200868211C697A10E, - 012ADAC300868211C697A10E, - 012ADAC400868211C697A10E, - 012ADAC500868211C697A10E, - 012ADAC600868211C697A10E, - 012ADAC700868211C697A10E, - 012ADAC800868211C697A10E, - 012ADAC900868211C697A10E, - 012ADACA00868211C697A10E, - 012ADACB00868211C697A10E, - 012ADACC00868211C697A10E, - 012ADACD00868211C697A10E, - 012ADACE00868211C697A10E, - 012ADACF00868211C697A10E, - 012ADAD000868211C697A10E, - 012ADAD100868211C697A10E, - 012ADAD200868211C697A10E, - 012ADAD300868211C697A10E, - 012ADAD400868211C697A10E, - 012ADAD500868211C697A10E, - 012ADAD600868211C697A10E, - 012ADAD700868211C697A10E, - 012ADAD800868211C697A10E, - 012ADAD900868211C697A10E, - 012ADADA00868211C697A10E, - 012ADADB00868211C697A10E, - 012ADADC00868211C697A10E, - 012ADADD00868211C697A10E, - 012ADADE00868211C697A10E, - 012ADADF00868211C697A10E, - 012ADAE000868211C697A10E, - 012ADAE100868211C697A10E, - 012ADAE200868211C697A10E, - 012ADAE300868211C697A10E, - 012ADAE400868211C697A10E, - 012ADAE500868211C697A10E, - 012ADAE600868211C697A10E, - 012ADAE700868211C697A10E, - 012ADAE800868211C697A10E, - 012ADAE900868211C697A10E, - 012ADAEA00868211C697A10E, - 012ADAEB00868211C697A10E, - ); - isa = PBXGroup; - path = q3_ui; - refType = 4; - sourceTree = ""; - }; - 012ADABD00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_addbots.c; - refType = 4; - sourceTree = ""; - }; - 012ADABE00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_atoms.c; - refType = 4; - sourceTree = ""; - }; - 012ADABF00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_cdkey.c; - refType = 4; - sourceTree = ""; - }; - 012ADAC000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_cinematics.c; - refType = 4; - sourceTree = ""; - }; - 012ADAC100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_confirm.c; - refType = 4; - sourceTree = ""; - }; - 012ADAC200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_connect.c; - refType = 4; - sourceTree = ""; - }; - 012ADAC300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_controls2.c; - refType = 4; - sourceTree = ""; - }; - 012ADAC400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_credits.c; - refType = 4; - sourceTree = ""; - }; - 012ADAC500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_demo2.c; - refType = 4; - sourceTree = ""; - }; - 012ADAC600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_display.c; - refType = 4; - sourceTree = ""; - }; - 012ADAC700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_gameinfo.c; - refType = 4; - sourceTree = ""; - }; - 012ADAC800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_ingame.c; - refType = 4; - sourceTree = ""; - }; - 012ADAC900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_loadconfig.c; - refType = 4; - sourceTree = ""; - }; - 012ADACA00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = ui_local.h; - refType = 4; - sourceTree = ""; - }; - 012ADACB00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_login.c; - refType = 4; - sourceTree = ""; - }; - 012ADACC00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_main.c; - refType = 4; - sourceTree = ""; - }; - 012ADACD00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_menu.c; - refType = 4; - sourceTree = ""; - }; - 012ADACE00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_mfield.c; - refType = 4; - sourceTree = ""; - }; - 012ADACF00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_mods.c; - refType = 4; - sourceTree = ""; - }; - 012ADAD000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_network.c; - refType = 4; - sourceTree = ""; - }; - 012ADAD100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_options.c; - refType = 4; - sourceTree = ""; - }; - 012ADAD200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_playermodel.c; - refType = 4; - sourceTree = ""; - }; - 012ADAD300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_players.c; - refType = 4; - sourceTree = ""; - }; - 012ADAD400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_playersettings.c; - refType = 4; - sourceTree = ""; - }; - 012ADAD500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_preferences.c; - refType = 4; - sourceTree = ""; - }; - 012ADAD600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_qmenu.c; - refType = 4; - sourceTree = ""; - }; - 012ADAD700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_rankings.c; - refType = 4; - sourceTree = ""; - }; - 012ADAD800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_rankstatus.c; - refType = 4; - sourceTree = ""; - }; - 012ADAD900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_removebots.c; - refType = 4; - sourceTree = ""; - }; - 012ADADA00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_saveconfig.c; - refType = 4; - sourceTree = ""; - }; - 012ADADB00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_serverinfo.c; - refType = 4; - sourceTree = ""; - }; - 012ADADC00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_servers2.c; - refType = 4; - sourceTree = ""; - }; - 012ADADD00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_setup.c; - refType = 4; - sourceTree = ""; - }; - 012ADADE00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_signup.c; - refType = 4; - sourceTree = ""; - }; - 012ADADF00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_sound.c; - refType = 4; - sourceTree = ""; - }; - 012ADAE000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_sparena.c; - refType = 4; - sourceTree = ""; - }; - 012ADAE100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_specifyleague.c; - refType = 4; - sourceTree = ""; - }; - 012ADAE200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_specifyserver.c; - refType = 4; - sourceTree = ""; - }; - 012ADAE300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_splevel.c; - refType = 4; - sourceTree = ""; - }; - 012ADAE400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_sppostgame.c; - refType = 4; - sourceTree = ""; - }; - 012ADAE500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_spreset.c; - refType = 4; - sourceTree = ""; - }; - 012ADAE600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_spskill.c; - refType = 4; - sourceTree = ""; - }; - 012ADAE700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_startserver.c; - refType = 4; - sourceTree = ""; - }; - 012ADAE800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = file; - path = ui_syscalls.c; - refType = 4; - sourceTree = ""; - }; - 012ADAE900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_team.c; - refType = 4; - sourceTree = ""; - }; - 012ADAEA00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_teamorders.c; - refType = 4; - sourceTree = ""; - }; - 012ADAEB00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_video.c; - refType = 4; - sourceTree = ""; - }; - 012ADAEC00868211C697A10E = { - children = ( - 9292851709192BA800286DE9, - 92603763091019D20018EAE6, - 92603764091019D20018EAE6, - 92603765091019D20018EAE6, - 92603766091019D20018EAE6, - 012ADAED00868211C697A10E, - 012ADAEE00868211C697A10E, - 012ADAEF00868211C697A10E, - 012ADAF000868211C697A10E, - 012ADAF100868211C697A10E, - 012ADAF200868211C697A10E, - 012ADAF300868211C697A10E, - 012ADAF400868211C697A10E, - 012ADAF500868211C697A10E, - 012ADAF600868211C697A10E, - 012ADAF700868211C697A10E, - 012ADAF800868211C697A10E, - 012ADAF900868211C697A10E, - 016F1B6300ACDA9BC697A10E, - 012ADAFA00868211C697A10E, - 012ADAFB00868211C697A10E, - 012ADAFC00868211C697A10E, - 012ADAFD00868211C697A10E, - 012ADAFE00868211C697A10E, - 012ADAFF00868211C697A10E, - 012ADB0000868211C697A10E, - 012ADB0100868211C697A10E, - 012ADB0200868211C697A10E, - 012ADB0300868211C697A10E, - 012ADB0400868211C697A10E, - 012ADB0500868211C697A10E, - 4FB23863047AB9F60098ACF3, - ); - isa = PBXGroup; - path = qcommon; - refType = 4; - sourceTree = ""; - }; - 012ADAED00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cm_load.c; - refType = 4; - sourceTree = ""; - }; - 012ADAEE00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = cm_local.h; - refType = 4; - sourceTree = ""; - }; - 012ADAEF00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cm_patch.c; - refType = 4; - sourceTree = ""; - }; - 012ADAF000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = cm_patch.h; - refType = 4; - sourceTree = ""; - }; - 012ADAF100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cm_polylib.c; - refType = 4; - sourceTree = ""; - }; - 012ADAF200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = cm_polylib.h; - refType = 4; - sourceTree = ""; - }; - 012ADAF300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = cm_public.h; - refType = 4; - sourceTree = ""; - }; - 012ADAF400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cm_test.c; - refType = 4; - sourceTree = ""; - }; - 012ADAF500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cm_trace.c; - refType = 4; - sourceTree = ""; - }; - 012ADAF600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cmd.c; - refType = 4; - sourceTree = ""; - }; - 012ADAF700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = common.c; - refType = 4; - sourceTree = ""; - }; - 012ADAF800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = cvar.c; - refType = 4; - sourceTree = ""; - }; - 012ADAF900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = files.c; - refType = 4; - sourceTree = ""; - }; - 012ADAFA00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = md4.c; - refType = 4; - sourceTree = ""; - }; - 012ADAFB00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = msg.c; - refType = 4; - sourceTree = ""; - }; - 012ADAFC00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = net_chan.c; - refType = 4; - sourceTree = ""; - }; - 012ADAFD00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = qcommon.h; - refType = 4; - sourceTree = ""; - }; - 012ADAFE00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = qfiles.h; - refType = 4; - sourceTree = ""; - }; - 012ADAFF00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = unzip.c; - refType = 4; - sourceTree = ""; - }; - 012ADB0000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = unzip.h; - refType = 4; - sourceTree = ""; - }; - 012ADB0100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = vm.c; - refType = 4; - sourceTree = ""; - }; - 012ADB0200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = vm_interpreted.c; - refType = 4; - sourceTree = ""; - }; - 012ADB0300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = vm_local.h; - refType = 4; - sourceTree = ""; - }; - 012ADB0400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = vm_ppc.c; - refType = 4; - sourceTree = ""; - }; - 012ADB0500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = vm_x86.c; - refType = 4; - sourceTree = ""; - }; - 012ADB0600868211C697A10E = { - children = ( - 9260377909101A3B0018EAE6, - 012ADB0800868211C697A10E, - 012ADB0900868211C697A10E, - 012ADB0A00868211C697A10E, - 012ADB0B00868211C697A10E, - 012ADB0C00868211C697A10E, - 012ADB0D00868211C697A10E, - 012ADB0E00868211C697A10E, - 012ADB0F00868211C697A10E, - 012ADB1000868211C697A10E, - 012ADB1100868211C697A10E, - 012ADB1200868211C697A10E, - 012ADB1300868211C697A10E, - 012ADB1400868211C697A10E, - 012ADB1500868211C697A10E, - 012ADB1600868211C697A10E, - 012ADB1700868211C697A10E, - 012ADB1800868211C697A10E, - 012ADB1900868211C697A10E, - 012ADB1A00868211C697A10E, - 012ADB1B00868211C697A10E, - 012ADB1C00868211C697A10E, - 012ADB1D00868211C697A10E, - 012ADB1E00868211C697A10E, - 012ADB1F00868211C697A10E, - 012ADB2000868211C697A10E, - 012ADB2100868211C697A10E, - 012ADB2200868211C697A10E, - ); - isa = PBXGroup; - path = renderer; - refType = 4; - sourceTree = ""; - }; - 012ADB0800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = qgl.h; - refType = 4; - sourceTree = ""; - }; - 012ADB0900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = qgl_linked.h; - refType = 4; - sourceTree = ""; - }; - 012ADB0A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_animation.c; - refType = 4; - sourceTree = ""; - }; - 012ADB0B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_backend.c; - refType = 4; - sourceTree = ""; - }; - 012ADB0C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - lineEnding = 0; - path = tr_bsp.c; - refType = 4; - sourceTree = ""; - }; - 012ADB0D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_cmds.c; - refType = 4; - sourceTree = ""; - }; - 012ADB0E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_curve.c; - refType = 4; - sourceTree = ""; - }; - 012ADB0F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_flares.c; - refType = 4; - sourceTree = ""; - }; - 012ADB1000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_font.c; - refType = 4; - sourceTree = ""; - }; - 012ADB1100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_image.c; - refType = 4; - sourceTree = ""; - }; - 012ADB1200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_init.c; - refType = 4; - sourceTree = ""; - }; - 012ADB1300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_light.c; - refType = 4; - sourceTree = ""; - }; - 012ADB1400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = tr_local.h; - refType = 4; - sourceTree = ""; - }; - 012ADB1500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_main.c; - refType = 4; - sourceTree = ""; - }; - 012ADB1600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_marks.c; - refType = 4; - sourceTree = ""; - }; - 012ADB1700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_mesh.c; - refType = 4; - sourceTree = ""; - }; - 012ADB1800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_model.c; - refType = 4; - sourceTree = ""; - }; - 012ADB1900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_noise.c; - refType = 4; - sourceTree = ""; - }; - 012ADB1A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = tr_public.h; - refType = 4; - sourceTree = ""; - }; - 012ADB1B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_scene.c; - refType = 4; - sourceTree = ""; - }; - 012ADB1C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_shade.c; - refType = 4; - sourceTree = ""; - }; - 012ADB1D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_shade_calc.c; - refType = 4; - sourceTree = ""; - }; - 012ADB1E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_shader.c; - refType = 4; - sourceTree = ""; - }; - 012ADB1F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_shadows.c; - refType = 4; - sourceTree = ""; - }; - 012ADB2000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_sky.c; - refType = 4; - sourceTree = ""; - }; - 012ADB2100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_surface.c; - refType = 4; - sourceTree = ""; - }; - 012ADB2200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = tr_world.c; - refType = 4; - sourceTree = ""; - }; - 012ADB2300868211C697A10E = { - children = ( - 012ADB2400868211C697A10E, - 012ADB2500868211C697A10E, - 012ADB2600868211C697A10E, - 012ADB2700868211C697A10E, - 012ADB2800868211C697A10E, - 012ADB2900868211C697A10E, - 012ADB2A00868211C697A10E, - 012ADB2B00868211C697A10E, - 012ADB2C00868211C697A10E, - 012ADB2D00868211C697A10E, - 012ADB2E00868211C697A10E, - ); - isa = PBXGroup; - path = server; - refType = 4; - sourceTree = ""; - }; - 012ADB2400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = server.h; - refType = 4; - sourceTree = ""; - }; - 012ADB2500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = sv_bot.c; - refType = 4; - sourceTree = ""; - }; - 012ADB2600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = sv_ccmds.c; - refType = 4; - sourceTree = ""; - }; - 012ADB2700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = sv_client.c; - refType = 4; - sourceTree = ""; - }; - 012ADB2800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = sv_game.c; - refType = 4; - sourceTree = ""; - }; - 012ADB2900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = sv_init.c; - refType = 4; - sourceTree = ""; - }; - 012ADB2A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = sv_main.c; - refType = 4; - sourceTree = ""; - }; - 012ADB2B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = sv_net_chan.c; - refType = 4; - sourceTree = ""; - }; - 012ADB2C00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = sv_rankings.c; - refType = 4; - sourceTree = ""; - }; - 012ADB2D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = sv_snapshot.c; - refType = 4; - sourceTree = ""; - }; - 012ADB2E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = sv_world.c; - refType = 4; - sourceTree = ""; - }; - 012ADB4000868211C697A10E = { - children = ( - 012ADB4200868211C697A10E, - 012ADB4300868211C697A10E, - 012ADB4400868211C697A10E, - 012ADB4500868211C697A10E, - 012ADB4600868211C697A10E, - 012ADB4700868211C697A10E, - 012ADB4800868211C697A10E, - 012ADB4900868211C697A10E, - 012ADB4A00868211C697A10E, - ); - isa = PBXGroup; - path = ui; - refType = 4; - sourceTree = ""; - }; - 012ADB4200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_atoms.c; - refType = 4; - sourceTree = ""; - }; - 012ADB4300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_gameinfo.c; - refType = 4; - sourceTree = ""; - }; - 012ADB4400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = ui_local.h; - refType = 4; - sourceTree = ""; - }; - 012ADB4500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_main.c; - refType = 4; - sourceTree = ""; - }; - 012ADB4600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_players.c; - refType = 4; - sourceTree = ""; - }; - 012ADB4700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = ui_public.h; - refType = 4; - sourceTree = ""; - }; - 012ADB4800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_shared.c; - refType = 4; - sourceTree = ""; - }; - 012ADB4900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = ui_shared.h; - refType = 4; - sourceTree = ""; - }; - 012ADB4A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = ui_syscalls.c; - refType = 4; - sourceTree = ""; - }; - 012ADB4C00868211C697A10E = { - children = ( - 012ADB4D00868211C697A10E, - 012ADB4E00868211C697A10E, - 012ADB4F00868211C697A10E, - 012ADB5000868211C697A10E, - 012ADB5100868211C697A10E, - 012ADB5200868211C697A10E, - 012ADB5300868211C697A10E, - 012ADB5400868211C697A10E, - 012ADB5500868211C697A10E, - 012ADB5600868211C697A10E, - 012ADB5700868211C697A10E, - 012ADB5800868211C697A10E, - 012ADB5900868211C697A10E, - ); - isa = PBXGroup; - path = unix; - refType = 4; - sourceTree = ""; - }; - 012ADB4D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = linux_common.c; - refType = 4; - sourceTree = ""; - }; - 012ADB4E00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = linux_glimp.c; - refType = 4; - sourceTree = ""; - }; - 012ADB4F00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = linux_joystick.c; - refType = 4; - sourceTree = ""; - }; - 012ADB5000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = linux_local.h; - refType = 4; - sourceTree = ""; - }; - 012ADB5100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = linux_qgl.c; - refType = 4; - sourceTree = ""; - }; - 012ADB5200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = linux_snd.c; - refType = 4; - sourceTree = ""; - }; - 012ADB5300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = qasm.h; - refType = 4; - sourceTree = ""; - }; - 012ADB5400868211C697A10E = { - isa = PBXFileReference; - lastKnownFileType = image.gif; - path = quake3.gif; - refType = 4; - sourceTree = ""; - }; - 012ADB5500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = unix_glw.h; - refType = 4; - sourceTree = ""; - }; - 012ADB5600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = unix_main.c; - refType = 4; - sourceTree = ""; - }; - 012ADB5700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = unix_net.c; - refType = 4; - sourceTree = ""; - }; - 012ADB5800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = unix_shared.c; - refType = 4; - sourceTree = ""; - }; - 012ADB5900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = vm_x86.c; - refType = 4; - sourceTree = ""; - }; - 012ADB5A00868211C697A10E = { - children = ( - 012ADB5B00868211C697A10E, - 012ADB5C00868211C697A10E, - 012ADB5D00868211C697A10E, - 012ADB5E00868211C697A10E, - 012ADB5F00868211C697A10E, - 012ADB6000868211C697A10E, - 012ADB6100868211C697A10E, - 012ADB6200868211C697A10E, - 012ADB6300868211C697A10E, - 012ADB6400868211C697A10E, - 012ADB6500868211C697A10E, - 012ADB6600868211C697A10E, - 012ADB6700868211C697A10E, - 012ADB6800868211C697A10E, - 012ADB6900868211C697A10E, - 012ADB6A00868211C697A10E, - 012ADB6B00868211C697A10E, - ); - isa = PBXGroup; - path = win32; - refType = 4; - sourceTree = ""; - }; - 012ADB5B00868211C697A10E = { - isa = PBXFileReference; - lastKnownFileType = image.bmp; - path = background.bmp; - refType = 4; - sourceTree = ""; - }; - 012ADB5C00868211C697A10E = { - isa = PBXFileReference; - lastKnownFileType = image.bmp; - path = clear.bmp; - refType = 4; - sourceTree = ""; - }; - 012ADB5D00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = glw_win.h; - refType = 4; - sourceTree = ""; - }; - 012ADB5E00868211C697A10E = { - isa = PBXFileReference; - lastKnownFileType = image.ico; - path = icon2.ico; - refType = 4; - sourceTree = ""; - }; - 012ADB5F00868211C697A10E = { - isa = PBXFileReference; - lastKnownFileType = image.ico; - path = qe3.ico; - refType = 4; - sourceTree = ""; - }; - 012ADB6000868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = resource.h; - refType = 4; - sourceTree = ""; - }; - 012ADB6100868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = win_gamma.c; - refType = 4; - sourceTree = ""; - }; - 012ADB6200868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = win_glimp.c; - refType = 4; - sourceTree = ""; - }; - 012ADB6300868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = win_input.c; - refType = 4; - sourceTree = ""; - }; - 012ADB6400868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = win_local.h; - refType = 4; - sourceTree = ""; - }; - 012ADB6500868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = win_main.c; - refType = 4; - sourceTree = ""; - }; - 012ADB6600868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = win_net.c; - refType = 4; - sourceTree = ""; - }; - 012ADB6700868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = win_qgl.c; - refType = 4; - sourceTree = ""; - }; - 012ADB6800868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = win_shared.c; - refType = 4; - sourceTree = ""; - }; - 012ADB6900868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = win_snd.c; - refType = 4; - sourceTree = ""; - }; - 012ADB6A00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = win_syscon.c; - refType = 4; - sourceTree = ""; - }; - 012ADB6B00868211C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = win_wndproc.c; - refType = 4; - sourceTree = ""; - }; - 015ECC0C00894EC0C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = macosx_display.h; - refType = 4; - sourceTree = ""; - }; - 015ECC0D00894EC0C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = macosx_display.m; - refType = 4; - sourceTree = ""; - }; - 015ECC0E00894EC0C697A10E = { - fileRef = 015ECC0C00894EC0C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 015ECC0F00894EC0C697A10E = { - fileRef = 015ECC0D00894EC0C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 016B4A3B00ACCF9FC697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = macosx_glsmp_mutex.m; - refType = 4; - sourceTree = ""; - }; - 016B4A3C00ACCF9FC697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = macosx_glsmp_null.m; - refType = 4; - sourceTree = ""; - }; - 016B4A3D00ACCF9FC697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = macosx_glsmp_ports.m; - refType = 4; - sourceTree = ""; - }; - 016B4A3E00ACCF9FC697A10E = { - fileRef = 016B4A3B00ACCF9FC697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 016EAE0200B4BDD1C697A10E = { - explicitFileType = wrapper.cfbundle; - isa = PBXFileReference; - path = ui.bundle; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 016EAE0300B4BDD1C697A10E = { - buildPhases = ( - 016EAE0400B4BDD1C697A10E, - 016EAE0900B4BDD1C697A10E, - 016EAE0A00B4BDD1C697A10E, - 016EAE1200B4BDD1C697A10E, - 016EAE1300B4BDD1C697A10E, - ); - buildSettings = { - INSTALL_PATH = "/Users/Shared/$(USER)/InstalledProducts"; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = "-bundle -undefined error"; - OTHER_REZFLAGS = ""; - PREBINDING = NO; - PRODUCT_NAME = ui; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - WRAPPER_EXTENSION = bundle; - }; - dependencies = ( - ); - isa = PBXBundleTarget; - name = ui; - productInstallPath = "/Users/Shared/$(USER)/InstalledProducts"; - productName = ui; - productReference = 016EAE0200B4BDD1C697A10E; - productSettingsXML = " - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - - CFBundleGetInfoString - - CFBundleIconFile - - CFBundleIdentifier - - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - - CFBundlePackageType - BNDL - CFBundleShortVersionString - - CFBundleSignature - ???? - CFBundleVersion - 0.0.1d1 - - -"; - }; - 016EAE0400B4BDD1C697A10E = { - buildActionMask = 2147483647; - files = ( - 016EAE0500B4BDD1C697A10E, - 016EAE0600B4BDD1C697A10E, - 016EAE0700B4BDD1C697A10E, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 016EAE0500B4BDD1C697A10E = { - fileRef = 012ADB4900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 016EAE0600B4BDD1C697A10E = { - fileRef = 012ADB4700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 016EAE0700B4BDD1C697A10E = { - fileRef = 012ADB4400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 016EAE0900B4BDD1C697A10E = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 016EAE0A00B4BDD1C697A10E = { - buildActionMask = 2147483647; - files = ( - 016EAE0C00B4BDD1C697A10E, - 016EAE0D00B4BDD1C697A10E, - 016EAE0E00B4BDD1C697A10E, - 016EAE0F00B4BDD1C697A10E, - 016EAE1000B4BDD1C697A10E, - 016EAE1100B4BDD1C697A10E, - 016EAE1700B4BE53C697A10E, - 4F23A81908F4FA8F00CB90D3, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 016EAE0C00B4BDD1C697A10E = { - fileRef = 012ADB4A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 016EAE0D00B4BDD1C697A10E = { - fileRef = 012ADB4800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 016EAE0E00B4BDD1C697A10E = { - fileRef = 012ADB4600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 016EAE0F00B4BDD1C697A10E = { - fileRef = 012ADB4500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 016EAE1000B4BDD1C697A10E = { - fileRef = 012ADB4300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 016EAE1100B4BDD1C697A10E = { - fileRef = 012ADB4200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 016EAE1200B4BDD1C697A10E = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 016EAE1300B4BDD1C697A10E = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXRezBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 016EAE1700B4BE53C697A10E = { - fileRef = 012ADA3E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 016F1B6300ACDA9BC697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = huffman.c; - refType = 4; - sourceTree = ""; - }; - 016F1B6400ACDA9BC697A10E = { - fileRef = 016F1B6300ACDA9BC697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170304A00B4885DC697A10E = { - explicitFileType = "compiled.mach-o.executable"; - isa = PBXFileReference; - path = Q3DedicatedServer; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 0170304B00B4885DC697A10E = { - buildPhases = ( - 0170304C00B4885DC697A10E, - 0170304D00B4885DC697A10E, - 0170304E00B4885DC697A10E, - 0170304F00B4885DC697A10E, - ); - buildSettings = { - DEBUGGING_SYMBOLS = NO; - GCC_VERSION = 3.3; - INSTALL_PATH = ""; - LIBRARY_SEARCH_PATHS = "\"/Users/zaphod/Quake3/code/macosx/GameRanger SDK/Libraries\""; - OPTIMIZATION_CFLAGS = "-O2"; - OTHER_CFLAGS = "-DDEDICATED -DMACOS_X -DBOTLIB -DMISSIONPACK -force_cpusubtype_ALL -Wno-long-double"; - OTHER_LDFLAGS = ""; - OTHER_REZFLAGS = ""; - PREBINDING = NO; - PRODUCT_NAME = Q3DedicatedServer; - REZ_EXECUTABLE = YES; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - }; - dependencies = ( - ); - isa = PBXToolTarget; - name = "Dedicated Server"; - productInstallPath = ""; - productName = "Dedicated Server"; - productReference = 0170304A00B4885DC697A10E; - }; - 0170304C00B4885DC697A10E = { - buildActionMask = 2147483647; - files = ( - 0170305200B488AEC697A10E, - 0170305300B488AEC697A10E, - 0170305400B488AEC697A10E, - 0170305500B488AEC697A10E, - 0170305600B488AEC697A10E, - 0170305700B488AEC697A10E, - 0170305800B488AEC697A10E, - 0170305900B488AEC697A10E, - 0170306B00B489B5C697A10E, - 0170307700B48B5CC697A10E, - 0170307800B48B5CC697A10E, - 0170307900B48B5CC697A10E, - 0170307A00B48B5CC697A10E, - 0170307B00B48B5CC697A10E, - 0170307C00B48B5CC697A10E, - 0170307D00B48B5CC697A10E, - 0170307E00B48B5CC697A10E, - 0170308400B48B5CC697A10E, - 0170308500B48B5CC697A10E, - 0170308600B48B5CC697A10E, - 0170308700B48B5CC697A10E, - 0170308800B48B5CC697A10E, - 0170308900B48B5CC697A10E, - 0170308A00B48B5CC697A10E, - 0170308B00B48B5CC697A10E, - 0170308C00B48B5CC697A10E, - 0170308D00B48B5CC697A10E, - 0170308E00B48B5CC697A10E, - 0170308F00B48B5CC697A10E, - 0170309000B48B5CC697A10E, - 0170309100B48B5CC697A10E, - 0170309200B48B5CC697A10E, - 0170309300B48B5CC697A10E, - 0170309400B48B5CC697A10E, - 0170309500B48B5CC697A10E, - 0170309600B48B5CC697A10E, - 0170309700B48B5CC697A10E, - 0170309800B48B5CC697A10E, - 0170309900B48B5CC697A10E, - 0170309A00B48B5CC697A10E, - 0170309B00B48B5CC697A10E, - 0170309C00B48B5CC697A10E, - 0170309E00B48B5CC697A10E, - 0170309F00B48B5CC697A10E, - 017030A000B48B5CC697A10E, - 017030A100B48B5CC697A10E, - 017030A200B48B5CC697A10E, - 017030A300B48B5CC697A10E, - 9260374F091019830018EAE6, - 92603750091019830018EAE6, - 92603751091019830018EAE6, - 92603752091019830018EAE6, - 92603753091019830018EAE6, - 92603754091019830018EAE6, - 92603755091019830018EAE6, - 92603756091019830018EAE6, - 92603757091019830018EAE6, - 92603771091019D30018EAE6, - 92603772091019D30018EAE6, - 9260377C09101A3B0018EAE6, - 9260378309101A6C0018EAE6, - 9292851A09192BA800286DE9, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 0170304D00B4885DC697A10E = { - buildActionMask = 2147483647; - files = ( - 0170305B00B488AEC697A10E, - 0170305C00B488AEC697A10E, - 0170305D00B488AEC697A10E, - 0170305E00B488AEC697A10E, - 0170305F00B488AEC697A10E, - 0170306000B488AEC697A10E, - 0170306100B488AEC697A10E, - 0170306200B488AEC697A10E, - 0170306300B488AEC697A10E, - 0170306400B488AEC697A10E, - 0170306500B488AEC697A10E, - 0170306600B488AEC697A10E, - 0170306700B488AEC697A10E, - 0170306800B488AEC697A10E, - 0170306900B488AEC697A10E, - 0170306A00B488AEC697A10E, - 0170306C00B489B5C697A10E, - 0170306D00B489B5C697A10E, - 0170306E00B489B5C697A10E, - 0170306F00B489B5C697A10E, - 0170307000B489B5C697A10E, - 0170307100B489B5C697A10E, - 0170307200B489B5C697A10E, - 0170307400B489B5C697A10E, - 0170307500B489B5C697A10E, - 017030A400B48B5CC697A10E, - 017030A500B48B5CC697A10E, - 017030A900B48B5CC697A10E, - 017030AA00B48B5CC697A10E, - 017030AB00B48B5CC697A10E, - 017030AC00B48B5CC697A10E, - 017030AD00B48B5CC697A10E, - 017030AE00B48B5CC697A10E, - 017030AF00B48B5CC697A10E, - 017030B000B48B5CC697A10E, - 017030B100B48B5CC697A10E, - 017030B200B48B5CC697A10E, - 017030B300B48B5CC697A10E, - 017030B400B48B5CC697A10E, - 017030B500B48B5CC697A10E, - 017030B600B48B5CC697A10E, - 017030B700B48B5CC697A10E, - 017030B800B48B5CC697A10E, - 017030B900B48B5CC697A10E, - 017030BA00B48B5CC697A10E, - 017030BB00B48B5CC697A10E, - 017030BC00B48B5CC697A10E, - 017030BD00B48B5CC697A10E, - 017030BE00B48B5CC697A10E, - 017030BF00B48B5CC697A10E, - 017030C000B48B5CC697A10E, - 017030C100B48B5CC697A10E, - 017030C200B48B5CC697A10E, - 017030C300B48B5CC697A10E, - 017030C400B48B5CC697A10E, - 017030C500B48B5CC697A10E, - 017030C600B48B5CC697A10E, - 017030C700B48B5CC697A10E, - 017030C800B48B5CC697A10E, - 017030C900B48B5CC697A10E, - 017030CA00B48B5CC697A10E, - 017030CB00B48B5CC697A10E, - 017030CC00B48B5CC697A10E, - 017030CD00B48B5CC697A10E, - 017030CE00B48B5CC697A10E, - 017030CF00B48B5CC697A10E, - 017030D000B48B5CC697A10E, - 017030D100B48B5CC697A10E, - 017030D200B48B5CC697A10E, - 017030D300B48B5CC697A10E, - 017030D400B48B5CC697A10E, - 017030D500B48B5CC697A10E, - 017030D600B48B5CC697A10E, - 017030D700B48B5CC697A10E, - 017030D800B48B5CC697A10E, - 017030D900B48B5CC697A10E, - 017030DA00B48B5CC697A10E, - 017030DB00B48B5CC697A10E, - 017030DC00B48B5CC697A10E, - 017030DD00B48B5CC697A10E, - 017030DE00B48B5CC697A10E, - 017030DF00B48B5CC697A10E, - 017030E000B48B5CC697A10E, - 017030F200B48B5CC697A10E, - 017030F300B48B5CC697A10E, - 017030F400B48B5CC697A10E, - 017030F500B48B5CC697A10E, - 017030F600B48B5CC697A10E, - 017030F700B48B5CC697A10E, - 017030F800B48B5CC697A10E, - 017030F900B48B5CC697A10E, - 017030FA00B48B5CC697A10E, - 017030FB00B48B5CC697A10E, - 017030FC00B48B5CC697A10E, - 017030FD00B48B5CC697A10E, - 017030FE00B48B5CC697A10E, - 017030FF00B48B5CC697A10E, - 0170310000B48B5CC697A10E, - 0170310100B48B5CC697A10E, - 0170310200B48B5CC697A10E, - 0170310300B48B5CC697A10E, - 0170310400B48B5CC697A10E, - 0170310500B48B5CC697A10E, - 0170310600B48B5CC697A10E, - 0170310700B48B5CC697A10E, - 0170310800B48B5CC697A10E, - 0170310900B48B5CC697A10E, - 0170310A00B48B5CC697A10E, - 0170310B00B48B5CC697A10E, - 0170310C00B48B5CC697A10E, - 0170310D00B48B5CC697A10E, - 0170310F00B48B5CC697A10E, - 0170311000B48B5CC697A10E, - 0170311100B48B5CC697A10E, - 0170311200B48B5CC697A10E, - 0170311400B48B5CC697A10E, - 0170311500B48B5CC697A10E, - 0170311600B48B5CC697A10E, - F54951F40354EAA2011BCB42, - 4FB23865047AB9F60098ACF3, - 4F23A81308F4FA8F00CB90D3, - 9260376F091019D30018EAE6, - 92603770091019D30018EAE6, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 0170304E00B4885DC697A10E = { - buildActionMask = 2147483647; - files = ( - 0170311700B48E9AC697A10E, - 0170311800B48E9AC697A10E, - 0170311900B48E9AC697A10E, - 0170311A00B48E9AC697A10E, - 0170311B00B48E9AC697A10E, - F54951E80354E75E011BCB42, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 0170304F00B4885DC697A10E = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXRezBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 0170305200B488AEC697A10E = { - fileRef = 012ADB0300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170305300B488AEC697A10E = { - fileRef = 012ADB0000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170305400B488AEC697A10E = { - fileRef = 012ADAFE00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170305500B488AEC697A10E = { - fileRef = 012ADAFD00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170305600B488AEC697A10E = { - fileRef = 012ADAF300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170305700B488AEC697A10E = { - fileRef = 012ADAF200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170305800B488AEC697A10E = { - fileRef = 012ADAF000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170305900B488AEC697A10E = { - fileRef = 012ADAEE00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170305B00B488AEC697A10E = { - fileRef = 012ADB0200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170305C00B488AEC697A10E = { - fileRef = 012ADAFF00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170305D00B488AEC697A10E = { - fileRef = 012ADB0100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170305E00B488AEC697A10E = { - fileRef = 012ADAFC00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170305F00B488AEC697A10E = { - fileRef = 012ADAFB00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306000B488AEC697A10E = { - fileRef = 012ADAFA00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306100B488AEC697A10E = { - fileRef = 016F1B6300ACDA9BC697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306200B488AEC697A10E = { - fileRef = 012ADAF900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306300B488AEC697A10E = { - fileRef = 012ADAF800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306400B488AEC697A10E = { - fileRef = 012ADAF700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306500B488AEC697A10E = { - fileRef = 012ADAF600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306600B488AEC697A10E = { - fileRef = 012ADAF500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306700B488AEC697A10E = { - fileRef = 012ADAF400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306800B488AEC697A10E = { - fileRef = 012ADAF100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306900B488AEC697A10E = { - fileRef = 012ADAEF00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306A00B488AEC697A10E = { - fileRef = 012ADAED00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306B00B489B5C697A10E = { - fileRef = 012ADB2400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306C00B489B5C697A10E = { - fileRef = 012ADB2500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306D00B489B5C697A10E = { - fileRef = 012ADB2600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306E00B489B5C697A10E = { - fileRef = 012ADB2700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170306F00B489B5C697A10E = { - fileRef = 012ADB2800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170307000B489B5C697A10E = { - fileRef = 012ADB2900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170307100B489B5C697A10E = { - fileRef = 012ADB2A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170307200B489B5C697A10E = { - fileRef = 012ADB2B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170307400B489B5C697A10E = { - fileRef = 012ADB2D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170307500B489B5C697A10E = { - fileRef = 012ADB2E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170307700B48B5CC697A10E = { - fileRef = 012ADB1400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170307800B48B5CC697A10E = { - fileRef = 012ADB1A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170307900B48B5CC697A10E = { - fileRef = 012ADB0800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170307A00B48B5CC697A10E = { - fileRef = 012ADB0900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170307B00B48B5CC697A10E = { - fileRef = 012ADA6C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170307C00B48B5CC697A10E = { - fileRef = 012ADA8100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170307D00B48B5CC697A10E = { - fileRef = 012ADA8C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170307E00B48B5CC697A10E = { - fileRef = 012ADA9B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170308400B48B5CC697A10E = { - fileRef = 012AD90800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170308500B48B5CC697A10E = { - fileRef = 012AD90900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170308600B48B5CC697A10E = { - fileRef = 012AD90C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170308700B48B5CC697A10E = { - fileRef = 012AD90E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170308800B48B5CC697A10E = { - fileRef = 012AD90F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170308900B48B5CC697A10E = { - fileRef = 012AD91100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170308A00B48B5CC697A10E = { - fileRef = 012AD91300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170308B00B48B5CC697A10E = { - fileRef = 012AD91400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170308C00B48B5CC697A10E = { - fileRef = 012AD91600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170308D00B48B5CC697A10E = { - fileRef = 012AD91800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170308E00B48B5CC697A10E = { - fileRef = 012AD91A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170308F00B48B5CC697A10E = { - fileRef = 012AD91C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309000B48B5CC697A10E = { - fileRef = 012AD91E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309100B48B5CC697A10E = { - fileRef = 012AD92000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309200B48B5CC697A10E = { - fileRef = 012AD92200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309300B48B5CC697A10E = { - fileRef = 012AD92A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309400B48B5CC697A10E = { - fileRef = 012AD92D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309500B48B5CC697A10E = { - fileRef = 012AD92F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309600B48B5CC697A10E = { - fileRef = 012AD93100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309700B48B5CC697A10E = { - fileRef = 012AD93300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309800B48B5CC697A10E = { - fileRef = 012AD93500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309900B48B5CC697A10E = { - fileRef = 012AD93700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309A00B48B5CC697A10E = { - fileRef = 012AD93900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309B00B48B5CC697A10E = { - fileRef = 012AD93B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309C00B48B5CC697A10E = { - fileRef = 012AD93C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309E00B48B5CC697A10E = { - fileRef = 015ECC0C00894EC0C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170309F00B48B5CC697A10E = { - fileRef = 011F78F200B25B65C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030A000B48B5CC697A10E = { - fileRef = 043627A600868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030A100B48B5CC697A10E = { - fileRef = 043627A900868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030A200B48B5CC697A10E = { - fileRef = 043627B000868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030A300B48B5CC697A10E = { - fileRef = 043627AE00868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030A400B48B5CC697A10E = { - fileRef = 012ADB5700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030A500B48B5CC697A10E = { - fileRef = 012ADB5800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030A900B48B5CC697A10E = { - fileRef = 012ADB0A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030AA00B48B5CC697A10E = { - fileRef = 012ADB0B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030AB00B48B5CC697A10E = { - fileRef = 012ADB0C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030AC00B48B5CC697A10E = { - fileRef = 012ADB0D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030AD00B48B5CC697A10E = { - fileRef = 012ADB0E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030AE00B48B5CC697A10E = { - fileRef = 012ADB0F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030AF00B48B5CC697A10E = { - fileRef = 012ADB1000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030B000B48B5CC697A10E = { - fileRef = 012ADB1100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030B100B48B5CC697A10E = { - fileRef = 012ADB1200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030B200B48B5CC697A10E = { - fileRef = 012ADB1300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030B300B48B5CC697A10E = { - fileRef = 012ADB1500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030B400B48B5CC697A10E = { - fileRef = 012ADB1600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030B500B48B5CC697A10E = { - fileRef = 012ADB1700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030B600B48B5CC697A10E = { - fileRef = 012ADB1800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030B700B48B5CC697A10E = { - fileRef = 012ADB1900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030B800B48B5CC697A10E = { - fileRef = 012ADB1B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030B900B48B5CC697A10E = { - fileRef = 012ADB1C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030BA00B48B5CC697A10E = { - fileRef = 012ADB1D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030BB00B48B5CC697A10E = { - fileRef = 012ADB1E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030BC00B48B5CC697A10E = { - fileRef = 012ADB1F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030BD00B48B5CC697A10E = { - fileRef = 012ADB2000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030BE00B48B5CC697A10E = { - fileRef = 012ADB2100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030BF00B48B5CC697A10E = { - fileRef = 012ADB2200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030C000B48B5CC697A10E = { - fileRef = 012ADA6600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030C100B48B5CC697A10E = { - fileRef = 012ADA6800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030C200B48B5CC697A10E = { - fileRef = 012ADA6900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030C300B48B5CC697A10E = { - fileRef = 012ADA6A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030C400B48B5CC697A10E = { - fileRef = 012ADA6B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030C500B48B5CC697A10E = { - fileRef = 012ADA6D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030C600B48B5CC697A10E = { - fileRef = 012ADA6E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030C700B48B5CC697A10E = { - fileRef = 012ADA6F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030C800B48B5CC697A10E = { - fileRef = 012ADA7000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030C900B48B5CC697A10E = { - fileRef = 012ADA7100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030CA00B48B5CC697A10E = { - fileRef = 012ADA7300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030CB00B48B5CC697A10E = { - fileRef = 012ADA7400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030CC00B48B5CC697A10E = { - fileRef = 012ADA7500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030CD00B48B5CC697A10E = { - fileRef = 012ADA7600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030CE00B48B5CC697A10E = { - fileRef = 012ADA7800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030CF00B48B5CC697A10E = { - fileRef = 012ADA7900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030D000B48B5CC697A10E = { - fileRef = 012ADA7B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030D100B48B5CC697A10E = { - fileRef = 012ADA7C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030D200B48B5CC697A10E = { - fileRef = 012ADA7D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030D300B48B5CC697A10E = { - fileRef = 012ADA7F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030D400B48B5CC697A10E = { - fileRef = 012ADA8000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030D500B48B5CC697A10E = { - fileRef = 012ADA8200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030D600B48B5CC697A10E = { - fileRef = 012ADA8300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030D700B48B5CC697A10E = { - fileRef = 012ADA8400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030D800B48B5CC697A10E = { - fileRef = 012ADA8500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030D900B48B5CC697A10E = { - fileRef = 012ADA8900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030DA00B48B5CC697A10E = { - fileRef = 012ADA8800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030DB00B48B5CC697A10E = { - fileRef = 012ADA8B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030DC00B48B5CC697A10E = { - fileRef = 012ADA8D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030DD00B48B5CC697A10E = { - fileRef = 012ADA9000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030DE00B48B5CC697A10E = { - fileRef = 012ADA9600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030DF00B48B5CC697A10E = { - fileRef = 012ADA9800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030E000B48B5CC697A10E = { - fileRef = 012ADAA200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030F200B48B5CC697A10E = { - fileRef = 012AD90A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030F300B48B5CC697A10E = { - fileRef = 012AD90B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030F400B48B5CC697A10E = { - fileRef = 012AD90D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030F500B48B5CC697A10E = { - fileRef = 012AD91000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030F600B48B5CC697A10E = { - fileRef = 012AD91200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030F700B48B5CC697A10E = { - fileRef = 012AD91500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030F800B48B5CC697A10E = { - fileRef = 012AD91700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030F900B48B5CC697A10E = { - fileRef = 012AD91900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030FA00B48B5CC697A10E = { - fileRef = 012AD91B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030FB00B48B5CC697A10E = { - fileRef = 012AD91D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030FC00B48B5CC697A10E = { - fileRef = 012AD91F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030FD00B48B5CC697A10E = { - fileRef = 012AD92100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030FE00B48B5CC697A10E = { - fileRef = 012AD92300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 017030FF00B48B5CC697A10E = { - fileRef = 012AD92400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310000B48B5CC697A10E = { - fileRef = 012AD92500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310100B48B5CC697A10E = { - fileRef = 012AD92600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310200B48B5CC697A10E = { - fileRef = 012AD92700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310300B48B5CC697A10E = { - fileRef = 012AD92800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310400B48B5CC697A10E = { - fileRef = 012AD92900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310500B48B5CC697A10E = { - fileRef = 012AD92B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310600B48B5CC697A10E = { - fileRef = 012AD92C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310700B48B5CC697A10E = { - fileRef = 012AD92E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310800B48B5CC697A10E = { - fileRef = 012AD93000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310900B48B5CC697A10E = { - fileRef = 012AD93200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310A00B48B5CC697A10E = { - fileRef = 012AD93400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310B00B48B5CC697A10E = { - fileRef = 012AD93600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310C00B48B5CC697A10E = { - fileRef = 012AD93800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310D00B48B5CC697A10E = { - fileRef = 012AD93A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170310F00B48B5CC697A10E = { - fileRef = 015ECC0D00894EC0C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170311000B48B5CC697A10E = { - fileRef = 043627A700868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170311100B48B5CC697A10E = { - fileRef = 016B4A3B00ACCF9FC697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170311200B48B5CC697A10E = { - fileRef = 043627A800868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170311400B48B5CC697A10E = { - fileRef = 043627AD00868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170311500B48B5CC697A10E = { - fileRef = 043627B100868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170311600B48B5CC697A10E = { - fileRef = 043627AF00868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0170311700B48E9AC697A10E = { - fileRef = 0654BA58FE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 0170311800B48E9AC697A10E = { - fileRef = 0654BA59FE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 0170311900B48E9AC697A10E = { - fileRef = 00E9D914FEDB4D29C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 0170311A00B48E9AC697A10E = { - fileRef = 0654BA5AFE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 0170311B00B48E9AC697A10E = { - fileRef = 0654BA5BFE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 0170311C00B49352C697A10E = { - buildPhases = ( - ); - buildSettings = { - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = All; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - }; - dependencies = ( - 0170311D00B49352C697A10E, - 18A3D358065F663A006A719A, - 18A3D356065F6636006A719A, - 4FF091EA04897B0000030DA8, - 18A3D35A065F663F006A719A, - ); - isa = PBXAggregateTarget; - name = All; - productName = All; - }; - 0170311D00B49352C697A10E = { - isa = PBXTargetDependency; - target = 0654BA5CFE8ECEE0C697A12F; - targetProxy = 1895FF33065E291B00F8B3F4; - }; -//010 -//011 -//012 -//013 -//014 -//040 -//041 -//042 -//043 -//044 - 043627A000868916C697A10E = { - children = ( - 015ECC0C00894EC0C697A10E, - 015ECC0D00894EC0C697A10E, - 011F78F200B25B65C697A10E, - 043627A600868916C697A10E, - 043627A700868916C697A10E, - 016B4A3B00ACCF9FC697A10E, - 016B4A3C00ACCF9FC697A10E, - 016B4A3D00ACCF9FC697A10E, - 043627A800868916C697A10E, - 043627A900868916C697A10E, - 043627AB00868916C697A10E, - 043627AD00868916C697A10E, - 043627AE00868916C697A10E, - 043627AF00868916C697A10E, - 043627B000868916C697A10E, - 043627B100868916C697A10E, - 043627B200868916C697A10E, - 043627B300868916C697A10E, - 043627B400868916C697A10E, - 043627B500868916C697A10E, - 043627B600868916C697A10E, - 043627B700868916C697A10E, - 043627B800868916C697A10E, - 4F23A81108F4FA8F00CB90D3, - ); - isa = PBXGroup; - name = "Mac OS X"; - path = ""; - refType = 4; - sourceTree = ""; - }; - 043627A600868916C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = macosx_glimp.h; - refType = 4; - sourceTree = ""; - }; - 043627A700868916C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = macosx_glimp.m; - refType = 4; - sourceTree = ""; - }; - 043627A800868916C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = macosx_input.m; - refType = 4; - sourceTree = ""; - }; - 043627A900868916C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = macosx_local.h; - refType = 4; - sourceTree = ""; - }; - 043627AB00868916C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = macosx_sndcore.m; - refType = 4; - sourceTree = ""; - }; - 043627AD00868916C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = macosx_sys.m; - refType = 4; - sourceTree = ""; - }; - 043627AE00868916C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = macosx_timers.h; - refType = 4; - sourceTree = ""; - }; - 043627AF00868916C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = macosx_timers.m; - refType = 4; - sourceTree = ""; - }; - 043627B000868916C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = Q3Controller.h; - refType = 4; - sourceTree = ""; - }; - 043627B100868916C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.objc; - path = Q3Controller.m; - refType = 4; - sourceTree = ""; - }; - 043627B200868916C697A10E = { - isa = PBXFileReference; - lastKnownFileType = wrapper.nib; - path = Quake3.nib; - refType = 4; - sourceTree = ""; - }; - 043627B300868916C697A10E = { - isa = PBXFileReference; - lastKnownFileType = image.icns; - path = Quake3.icns; - refType = 4; - sourceTree = ""; - }; - 043627B400868916C697A10E = { - isa = PBXFileReference; - lastKnownFileType = image.jpeg; - path = banner.jpg; - refType = 4; - sourceTree = ""; - }; - 043627B500868916C697A10E = { - isa = PBXFileReference; - lastKnownFileType = text.rtf; - path = Performance.rtf; - refType = 4; - sourceTree = ""; - }; - 043627B600868916C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.script.sh; - path = BuildRelease; - refType = 4; - sourceTree = ""; - }; - 043627B700868916C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.script.sh; - path = RecordDemo.zsh; - refType = 4; - sourceTree = ""; - }; - 043627B800868916C697A10E = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = text.script.sh; - path = timedemo.zsh; - refType = 4; - sourceTree = ""; - }; - 043627BC00868916C697A10E = { - fileRef = 043627A600868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627BD00868916C697A10E = { - fileRef = 043627A900868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627BE00868916C697A10E = { - fileRef = 043627AE00868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627BF00868916C697A10E = { - fileRef = 043627B000868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627C000868916C697A10E = { - fileRef = 043627B300868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627C100868916C697A10E = { - fileRef = 043627B200868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627C200868916C697A10E = { - fileRef = 043627B400868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627C500868916C697A10E = { - fileRef = 043627A700868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627C600868916C697A10E = { - fileRef = 043627A800868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627C800868916C697A10E = { - fileRef = 043627AB00868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627CA00868916C697A10E = { - fileRef = 043627AD00868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627CB00868916C697A10E = { - fileRef = 043627AF00868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627CC00868916C697A10E = { - fileRef = 043627B100868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627D20086963EC697A10E = { - fileRef = 012ADAF600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627D600869679C697A10E = { - fileRef = 012ADB1200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627D700869713C697A10E = { - fileRef = 012ADB0300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627D800869713C697A10E = { - fileRef = 012ADAF700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627D900869713C697A10E = { - fileRef = 012ADAF800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627DA00869713C697A10E = { - fileRef = 012ADAF900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627DB00869713C697A10E = { - fileRef = 012ADB0100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627DD00869713C697A10E = { - fileRef = 012ADB0200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627DE00869726C697A10E = { - fileRef = 012ADB0000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627DF00869726C697A10E = { - fileRef = 012ADAFF00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627E00086978DC697A10E = { - fileRef = 012ADB5800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627E100869827C697A10E = { - fileRef = 012ADAEE00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627E200869827C697A10E = { - fileRef = 012ADAF000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627E300869827C697A10E = { - fileRef = 012ADAF200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627E400869827C697A10E = { - fileRef = 012ADAF300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627E500869827C697A10E = { - fileRef = 012ADAFD00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627E600869827C697A10E = { - fileRef = 012ADAFE00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627E700869827C697A10E = { - fileRef = 012ADB0800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627E800869827C697A10E = { - fileRef = 012ADB0900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627E900869827C697A10E = { - fileRef = 012ADB1400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627EA00869827C697A10E = { - fileRef = 012ADB1A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627EB00869827C697A10E = { - fileRef = 012ADB2400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627EC00869827C697A10E = { - fileRef = 012AD9A600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627ED00869827C697A10E = { - fileRef = 012AD9A700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627EE00869827C697A10E = { - fileRef = 012AD9A800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627EF00869827C697A10E = { - fileRef = 012AD9A900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627F000869827C697A10E = { - fileRef = 012AD9AA00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627F100869827C697A10E = { - fileRef = 012AD9AB00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627F200869827C697A10E = { - fileRef = 012AD9AC00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627F300869827C697A10E = { - fileRef = 012AD9AD00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627F400869827C697A10E = { - fileRef = 012AD9AE00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627F500869827C697A10E = { - fileRef = 012AD9AF00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627F600869827C697A10E = { - fileRef = 012ADAED00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627F700869827C697A10E = { - fileRef = 012ADAEF00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627F900869827C697A10E = { - fileRef = 012ADAF400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627FA00869827C697A10E = { - fileRef = 012ADAF500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627FB00869827C697A10E = { - fileRef = 012ADAFA00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627FC00869827C697A10E = { - fileRef = 012ADAFB00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627FD00869827C697A10E = { - fileRef = 012ADAFC00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627FE00869827C697A10E = { - fileRef = 012ADB0A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043627FF00869827C697A10E = { - fileRef = 012ADB0B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280000869827C697A10E = { - fileRef = 012ADB0C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280100869827C697A10E = { - fileRef = 012ADB0D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280200869827C697A10E = { - fileRef = 012ADB0E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280300869827C697A10E = { - fileRef = 012ADB0F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280400869827C697A10E = { - fileRef = 012ADB1000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280500869827C697A10E = { - fileRef = 012ADB1100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280600869827C697A10E = { - fileRef = 012ADB1300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280700869827C697A10E = { - fileRef = 012ADB1500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280800869827C697A10E = { - fileRef = 012ADB1600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280900869827C697A10E = { - fileRef = 012ADB1700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280A00869827C697A10E = { - fileRef = 012ADB1800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280B00869827C697A10E = { - fileRef = 012ADB1900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280C00869827C697A10E = { - fileRef = 012ADB1B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280D00869827C697A10E = { - fileRef = 012ADB1C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280E00869827C697A10E = { - fileRef = 012ADB1D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436280F00869827C697A10E = { - fileRef = 012ADB1E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281000869827C697A10E = { - fileRef = 012ADB1F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281100869827C697A10E = { - fileRef = 012ADB2000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281200869827C697A10E = { - fileRef = 012ADB2100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281300869827C697A10E = { - fileRef = 012ADB2200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281400869827C697A10E = { - fileRef = 012ADB2500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281500869827C697A10E = { - fileRef = 012ADB2600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281600869827C697A10E = { - fileRef = 012ADB2700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281700869827C697A10E = { - fileRef = 012ADB2800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281800869827C697A10E = { - fileRef = 012ADB2900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281900869827C697A10E = { - fileRef = 012ADB2A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281A00869827C697A10E = { - fileRef = 012ADB2B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281C00869827C697A10E = { - fileRef = 012ADB2D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281D00869827C697A10E = { - fileRef = 012ADB2E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281E00869827C697A10E = { - fileRef = 012ADB5700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436281F008698F8C697A10E = { - fileRef = 012AD9B000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 04362820008698F8C697A10E = { - fileRef = 012AD9B100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 04362821008698F8C697A10E = { - fileRef = 012AD9B400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 04362822008698F8C697A10E = { - fileRef = 012AD9B700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 04362823008698F8C697A10E = { - fileRef = 012AD9B200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 04362824008698F8C697A10E = { - fileRef = 012AD9B300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 04362825008698F8C697A10E = { - fileRef = 012AD9B500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 04362826008698F8C697A10E = { - fileRef = 012AD9B600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628270086991FC697A10E = { - fileRef = 012AD9B800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436283300869AC5C697A10E = { - fileRef = 012ADA9800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436283400869AC5C697A10E = { - fileRef = 012ADA9600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436284900869B0BC697A10E = { - fileRef = 012ADA8C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436284B00869B0BC697A10E = { - fileRef = 012ADA9B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436286A00869C36C697A10E = { - fileRef = 012ADA8B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436286B00869C6FC697A10E = { - fileRef = 012ADA6600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436286C00869CB4C697A10E = { - fileRef = 012ADA7100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436286D00869CC9C697A10E = { - fileRef = 012ADAA200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436286E00869D0AC697A10E = { - fileRef = 012ADA6F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436286F00869D18C697A10E = { - fileRef = 012ADA7900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287000869D23C697A10E = { - fileRef = 012ADA6D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287100869D3BC697A10E = { - fileRef = 012ADA7400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287200869D48C697A10E = { - fileRef = 012ADA6C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287300869D48C697A10E = { - fileRef = 012ADA6B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287400869D56C697A10E = { - fileRef = 012ADA6A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287500869D61C697A10E = { - fileRef = 012ADA7600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287600869D71C697A10E = { - fileRef = 012ADA6900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287700869D7FC697A10E = { - fileRef = 012ADA7500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287800869D92C697A10E = { - fileRef = 012ADA6800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287900869DBBC697A10E = { - fileRef = 012ADA8D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287A00869DC7C697A10E = { - fileRef = 012ADA7000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287B00869DD4C697A10E = { - fileRef = 012ADA8500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287C00869DDDC697A10E = { - fileRef = 012ADA7800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287D00869DF1C697A10E = { - fileRef = 012ADA8400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287E00869DFAC697A10E = { - fileRef = 012ADA8200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436287F00869E04C697A10E = { - fileRef = 012ADA8900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288000869E10C697A10E = { - fileRef = 012ADA7F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288100869E21C697A10E = { - fileRef = 012ADA8100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288200869E21C697A10E = { - fileRef = 012ADA8000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288300869E3DC697A10E = { - fileRef = 012ADA9000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288400869E4CC697A10E = { - fileRef = 012ADA8800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288500869E56C697A10E = { - fileRef = 012ADA7300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288600869E60C697A10E = { - fileRef = 012ADA7B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288700869E80C697A10E = { - fileRef = 012ADA8300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288800869E8DC697A10E = { - fileRef = 012ADA7C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288900869E96C697A10E = { - fileRef = 012ADA7D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288A00869EA2C697A10E = { - fileRef = 012ADA6E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288B00869ED7C697A10E = { - fileRef = 012AD92C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288C00869EF3C697A10E = { - fileRef = 012AD92400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288D00869F06C697A10E = { - fileRef = 012AD93700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288E00869F06C697A10E = { - fileRef = 012AD93600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436288F00869F0FC697A10E = { - fileRef = 012AD93100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289000869F0FC697A10E = { - fileRef = 012AD93000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289100869F2AC697A10E = { - fileRef = 012AD93900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289200869F2AC697A10E = { - fileRef = 012AD93800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289300869F38C697A10E = { - fileRef = 012AD93500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289400869F38C697A10E = { - fileRef = 012AD93400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289500869F40C697A10E = { - fileRef = 012AD93300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289600869F40C697A10E = { - fileRef = 012AD93200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289700869F4BC697A10E = { - fileRef = 012AD92500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289800869F63C697A10E = { - fileRef = 012AD92B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289900869F7FC697A10E = { - fileRef = 012AD92300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289A00869F8EC697A10E = { - fileRef = 012AD92700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289B00869FAEC697A10E = { - fileRef = 012AD91E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289C00869FAEC697A10E = { - fileRef = 012AD91D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289D00869FBBC697A10E = { - fileRef = 012AD91800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289E00869FBBC697A10E = { - fileRef = 012AD91700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 0436289F00869FC3C697A10E = { - fileRef = 012AD92200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628A000869FC3C697A10E = { - fileRef = 012AD92100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628A100869FDEC697A10E = { - fileRef = 012AD90900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628A200869FDEC697A10E = { - fileRef = 012AD90A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628A300869FE8C697A10E = { - fileRef = 012AD90E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628A400869FE8C697A10E = { - fileRef = 012AD90D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628A500869FEFC697A10E = { - fileRef = 012AD91C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628A600869FEFC697A10E = { - fileRef = 012AD91B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628A70086A057C697A10E = { - fileRef = 012AD91600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628A80086A057C697A10E = { - fileRef = 012AD91500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628A90086A061C697A10E = { - fileRef = 012AD92600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628AA0086A081C697A10E = { - fileRef = 012AD92A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628AB0086A081C697A10E = { - fileRef = 012AD92900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628AC0086A092C697A10E = { - fileRef = 012AD91A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628AD0086A092C697A10E = { - fileRef = 012AD91900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628AE0086A099C697A10E = { - fileRef = 012AD92000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628AF0086A099C697A10E = { - fileRef = 012AD91F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628B00086A0B9C697A10E = { - fileRef = 012AD93B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628B10086A0B9C697A10E = { - fileRef = 012AD92D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628B20086A0B9C697A10E = { - fileRef = 012AD92F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628B30086A0B9C697A10E = { - fileRef = 012AD93C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628B40086A0B9C697A10E = { - fileRef = 012AD93A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628B50086A0B9C697A10E = { - fileRef = 012AD92E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628B60086A0BFC697A10E = { - fileRef = 012AD92800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628B70086A0E6C697A10E = { - fileRef = 012AD91300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628B80086A0E6C697A10E = { - fileRef = 012AD91200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628B90086A0F1C697A10E = { - fileRef = 012AD91100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628BA0086A0F1C697A10E = { - fileRef = 012AD91000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628BB0086A136C697A10E = { - fileRef = 012AD90C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628BC0086A136C697A10E = { - fileRef = 012AD90F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628BD0086A136C697A10E = { - fileRef = 012AD91400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628BE0086A136C697A10E = { - fileRef = 012AD90800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 043628BF0086A136C697A10E = { - fileRef = 012AD90B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; -//040 -//041 -//042 -//043 -//044 -//060 -//061 -//062 -//063 -//064 - 0654BA41FE8ECEE0C697A12F = { - buildSettings = { - }; - buildStyles = ( - 07F3F50BFFE98E8EC697A10E, - 07F3F50CFFE98E8EC697A10E, - ); - hasScannedForEncodings = 1; - isa = PBXProject; - mainGroup = 0654BA42FE8ECEE0C697A12F; - projectDirPath = ""; - targets = ( - 0170311C00B49352C697A10E, - 0654BA5CFE8ECEE0C697A12F, - 4FF0904804896C0E00030DA8, - 00F5ED38FEBA95B7C697A12F, - 00F5ED90FEBA9615C697A12F, - 016EAE0300B4BDD1C697A10E, - 0170304B00B4885DC697A10E, - 4FF0912704896C1600030DA8, - ); - }; - 0654BA42FE8ECEE0C697A12F = { - children = ( - 043627A000868916C697A10E, - 0654BA76FE8ED011C697A12F, - 0654BA57FE8ECEE0C697A12F, - 07FB599DFEB762C8C697A12F, - ); - isa = PBXGroup; - name = Quake3; - refType = 4; - sourceTree = ""; - }; - 0654BA57FE8ECEE0C697A12F = { - children = ( - 0654BA58FE8ECEE0C697A12F, - 0654BA5AFE8ECEE0C697A12F, - 0654BA5BFE8ECEE0C697A12F, - F564505801E623B201F62882, - 00E9D914FEDB4D29C697A12F, - 0654BA59FE8ECEE0C697A12F, - ); - isa = PBXGroup; - name = "External Frameworks and Libraries"; - path = ""; - refType = 4; - sourceTree = ""; - }; - 0654BA58FE8ECEE0C697A12F = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = OpenGL.framework; - path = /System/Library/Frameworks/OpenGL.framework; - refType = 0; - sourceTree = ""; - }; - 0654BA59FE8ECEE0C697A12F = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = Carbon.framework; - path = /System/Library/Frameworks/Carbon.framework; - refType = 0; - sourceTree = ""; - }; - 0654BA5AFE8ECEE0C697A12F = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = AppKit.framework; - path = /System/Library/Frameworks/AppKit.framework; - refType = 0; - sourceTree = ""; - }; - 0654BA5BFE8ECEE0C697A12F = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = Foundation.framework; - path = /System/Library/Frameworks/Foundation.framework; - refType = 0; - sourceTree = ""; - }; - 0654BA5CFE8ECEE0C697A12F = { - buildPhases = ( - 0654BA5DFE8ECEE0C697A12F, - 0654BA61FE8ECEE0C697A12F, - 0654BA65FE8ECEE0C697A12F, - 0654BA6BFE8ECEE0C697A12F, - 0654BA70FE8ECEE0C697A12F, - ); - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ""; - HEADER_SEARCH_PATHS = ""; - INSTALL_PATH = "/Users/Shared/$(USER)/InstalledProducts"; - LIBRARY_SEARCH_PATHS = ""; - OPTIMIZATION_CFLAGS = "-O2"; - OTHER_CFLAGS = "-DMACOS_X -DBOTLIB -DMISSIONPACK -DSMP -force_cpusubtype_ALL"; - OTHER_REZFLAGS = ""; - PREBINDING = NO; - PRODUCT_NAME = Quake3; - SECTORDER_FLAGS = ""; - USE_GCC3_PFE_SUPPORT = NO; - WARNING_CFLAGS = "-Wno-long-double -Wall -Wno-four-char-constants -Wno-unknown-pragmas"; - WRAPPER_EXTENSION = app; - }; - dependencies = ( - ); - isa = PBXApplicationTarget; - name = "Quake3 (Application)"; - productInstallPath = "/Users/Shared/$(USER)/InstalledProducts"; - productName = Quake3; - productReference = 09143A93FF39F3EF11CA2562; - productSettingsXML = " - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - Quake3 - CFBundleGetInfoString - icculus.org/quake3 1.33 - CFBundleIconFile - Quake3.icns - CFBundleIdentifier - com.idsoftware.Quake3 - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Quake3 - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.33 - CFBundleSignature - IDQ3 - CFBundleVersion - 1.3.2 - NSExtensions - - NSMainNibFile - Quake3.nib - NSPrincipalClass - NSApplication - NSServices - - - NSMenuItem - - default - Quake3/Connect To Server - - NSMessage - connectToServer - NSPortName - Quake3 - NSSendTypes - - NSStringPboardType - - - - NSMenuItem - - default - Quake3/Perform Command - - NSMessage - performCommand - NSPortName - Quake3 - NSSendTypes - - NSStringPboardType - - - - - -"; - }; - 0654BA5DFE8ECEE0C697A12F = { - buildActionMask = 2147483647; - files = ( - 043627BC00868916C697A10E, - 043627BD00868916C697A10E, - 043627BE00868916C697A10E, - 043627BF00868916C697A10E, - 043627D700869713C697A10E, - 043627DE00869726C697A10E, - 043627E100869827C697A10E, - 043627E200869827C697A10E, - 043627E300869827C697A10E, - 043627E400869827C697A10E, - 043627E500869827C697A10E, - 043627E600869827C697A10E, - 043627E700869827C697A10E, - 043627E800869827C697A10E, - 043627E900869827C697A10E, - 043627EA00869827C697A10E, - 043627EB00869827C697A10E, - 0436281F008698F8C697A10E, - 04362820008698F8C697A10E, - 04362821008698F8C697A10E, - 04362822008698F8C697A10E, - 0436284900869B0BC697A10E, - 0436284B00869B0BC697A10E, - 0436287200869D48C697A10E, - 0436288100869E21C697A10E, - 0436288D00869F06C697A10E, - 0436288F00869F0FC697A10E, - 0436289100869F2AC697A10E, - 0436289300869F38C697A10E, - 0436289500869F40C697A10E, - 0436289B00869FAEC697A10E, - 0436289D00869FBBC697A10E, - 0436289F00869FC3C697A10E, - 043628A100869FDEC697A10E, - 043628A300869FE8C697A10E, - 043628A500869FEFC697A10E, - 043628A70086A057C697A10E, - 043628AA0086A081C697A10E, - 043628AC0086A092C697A10E, - 043628AE0086A099C697A10E, - 043628B00086A0B9C697A10E, - 043628B10086A0B9C697A10E, - 043628B20086A0B9C697A10E, - 043628B30086A0B9C697A10E, - 043628B70086A0E6C697A10E, - 043628B90086A0F1C697A10E, - 043628BB0086A136C697A10E, - 043628BC0086A136C697A10E, - 043628BD0086A136C697A10E, - 043628BE0086A136C697A10E, - 015ECC0E00894EC0C697A10E, - 011F78F300B25B66C697A10E, - 9260373D091019830018EAE6, - 9260373E091019830018EAE6, - 9260373F091019830018EAE6, - 92603740091019830018EAE6, - 92603741091019830018EAE6, - 92603742091019830018EAE6, - 92603743091019830018EAE6, - 92603744091019830018EAE6, - 92603745091019830018EAE6, - 92603769091019D30018EAE6, - 9260376A091019D30018EAE6, - 9260377A09101A3B0018EAE6, - 9260378109101A6C0018EAE6, - 9292851809192BA800286DE9, - 92847F3D09279B370056BC59, - 92847F4009279B370056BC59, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 0654BA61FE8ECEE0C697A12F = { - buildActionMask = 2147483647; - files = ( - 043627C000868916C697A10E, - 043627C100868916C697A10E, - 043627C200868916C697A10E, - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 0654BA65FE8ECEE0C697A12F = { - buildActionMask = 2147483647; - files = ( - 043627C500868916C697A10E, - 043627C600868916C697A10E, - 043627C800868916C697A10E, - 043627CA00868916C697A10E, - 043627CB00868916C697A10E, - 043627CC00868916C697A10E, - 043627D20086963EC697A10E, - 043627D600869679C697A10E, - 043627D800869713C697A10E, - 043627D900869713C697A10E, - 043627DA00869713C697A10E, - 043627DB00869713C697A10E, - 043627DD00869713C697A10E, - 043627DF00869726C697A10E, - 043627E00086978DC697A10E, - 043627EC00869827C697A10E, - 043627ED00869827C697A10E, - 043627EE00869827C697A10E, - 043627EF00869827C697A10E, - 043627F000869827C697A10E, - 043627F100869827C697A10E, - 043627F200869827C697A10E, - 043627F300869827C697A10E, - 043627F400869827C697A10E, - 043627F500869827C697A10E, - 043627F600869827C697A10E, - 043627F700869827C697A10E, - 043627F900869827C697A10E, - 043627FA00869827C697A10E, - 043627FB00869827C697A10E, - 043627FC00869827C697A10E, - 043627FD00869827C697A10E, - 043627FE00869827C697A10E, - 043627FF00869827C697A10E, - 0436280000869827C697A10E, - 0436280100869827C697A10E, - 0436280200869827C697A10E, - 0436280300869827C697A10E, - 0436280400869827C697A10E, - 0436280500869827C697A10E, - 0436280600869827C697A10E, - 0436280700869827C697A10E, - 0436280800869827C697A10E, - 0436280900869827C697A10E, - 0436280A00869827C697A10E, - 0436280B00869827C697A10E, - 0436280C00869827C697A10E, - 0436280D00869827C697A10E, - 0436280E00869827C697A10E, - 0436280F00869827C697A10E, - 0436281000869827C697A10E, - 0436281100869827C697A10E, - 0436281200869827C697A10E, - 0436281300869827C697A10E, - 0436281400869827C697A10E, - 0436281500869827C697A10E, - 0436281600869827C697A10E, - 0436281700869827C697A10E, - 0436281800869827C697A10E, - 0436281900869827C697A10E, - 0436281A00869827C697A10E, - 0436281C00869827C697A10E, - 0436281D00869827C697A10E, - 0436281E00869827C697A10E, - 04362823008698F8C697A10E, - 04362824008698F8C697A10E, - 04362825008698F8C697A10E, - 04362826008698F8C697A10E, - 043628270086991FC697A10E, - 0436283300869AC5C697A10E, - 0436283400869AC5C697A10E, - 0436286A00869C36C697A10E, - 0436286B00869C6FC697A10E, - 0436286C00869CB4C697A10E, - 0436286D00869CC9C697A10E, - 0436286E00869D0AC697A10E, - 0436286F00869D18C697A10E, - 0436287000869D23C697A10E, - 0436287100869D3BC697A10E, - 0436287300869D48C697A10E, - 0436287400869D56C697A10E, - 0436287500869D61C697A10E, - 0436287600869D71C697A10E, - 0436287700869D7FC697A10E, - 0436287800869D92C697A10E, - 0436287900869DBBC697A10E, - 0436287A00869DC7C697A10E, - 0436287B00869DD4C697A10E, - 0436287C00869DDDC697A10E, - 0436287D00869DF1C697A10E, - 0436287E00869DFAC697A10E, - 0436287F00869E04C697A10E, - 0436288000869E10C697A10E, - 0436288200869E21C697A10E, - 0436288300869E3DC697A10E, - 0436288400869E4CC697A10E, - 0436288500869E56C697A10E, - 0436288600869E60C697A10E, - 0436288700869E80C697A10E, - 0436288800869E8DC697A10E, - 0436288900869E96C697A10E, - 0436288A00869EA2C697A10E, - 0436288B00869ED7C697A10E, - 0436288C00869EF3C697A10E, - 0436288E00869F06C697A10E, - 0436289000869F0FC697A10E, - 0436289200869F2AC697A10E, - 0436289400869F38C697A10E, - 0436289600869F40C697A10E, - 0436289700869F4BC697A10E, - 0436289800869F63C697A10E, - 0436289900869F7FC697A10E, - 0436289A00869F8EC697A10E, - 0436289C00869FAEC697A10E, - 0436289E00869FBBC697A10E, - 043628A000869FC3C697A10E, - 043628A200869FDEC697A10E, - 043628A400869FE8C697A10E, - 043628A600869FEFC697A10E, - 043628A80086A057C697A10E, - 043628A90086A061C697A10E, - 043628AB0086A081C697A10E, - 043628AD0086A092C697A10E, - 043628AF0086A099C697A10E, - 043628B40086A0B9C697A10E, - 043628B50086A0B9C697A10E, - 043628B60086A0BFC697A10E, - 043628B80086A0E6C697A10E, - 043628BA0086A0F1C697A10E, - 043628BF0086A136C697A10E, - 015ECC0F00894EC0C697A10E, - 016B4A3E00ACCF9FC697A10E, - 016F1B6400ACDA9BC697A10E, - 4FB23867047ABF780098ACF3, - 4FEFFEDA047B008000719638, - 4F23A81D08F4FA8F00CB90D3, - 92603767091019D30018EAE6, - 92603768091019D30018EAE6, - 92847F3C09279B370056BC59, - 92847F3E09279B370056BC59, - 92847F3F09279B370056BC59, - 92847F4109279B370056BC59, - 92847F4209279B370056BC59, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 0654BA6BFE8ECEE0C697A12F = { - buildActionMask = 2147483647; - files = ( - 0654BA6CFE8ECEE0C697A12F, - 0654BA6EFE8ECEE0C697A12F, - 0654BA6FFE8ECEE0C697A12F, - 00E9D91DFEDB5295C697A12F, - F564505901E623B201F62882, - F5D8C5E0035259DF0106E832, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 0654BA6CFE8ECEE0C697A12F = { - fileRef = 0654BA58FE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 0654BA6EFE8ECEE0C697A12F = { - fileRef = 0654BA5AFE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 0654BA6FFE8ECEE0C697A12F = { - fileRef = 0654BA5BFE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 0654BA70FE8ECEE0C697A12F = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXRezBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 0654BA76FE8ED011C697A12F = { - children = ( - 012AD90700868211C697A10E, - 012AD98D00868211C697A10E, - 012AD9A500868211C697A10E, - 012ADA2400868211C697A10E, - 012ADA6500868211C697A10E, - 012ADAB300868211C697A10E, - 012ADABB00868211C697A10E, - 012ADAEC00868211C697A10E, - 012ADB0600868211C697A10E, - 012ADB2300868211C697A10E, - 012ADB4000868211C697A10E, - 012ADB4C00868211C697A10E, - 012ADB5A00868211C697A10E, - ); - isa = PBXGroup; - name = "Id Source"; - path = ..; - refType = 4; - sourceTree = ""; - }; -//060 -//061 -//062 -//063 -//064 -//070 -//071 -//072 -//073 -//074 - 07F3F507FFE98E8EC697A10E = { - explicitFileType = wrapper.cfbundle; - isa = PBXFileReference; - path = qagame.bundle; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 07F3F508FFE98E8EC697A10E = { - explicitFileType = wrapper.cfbundle; - isa = PBXFileReference; - path = cgame.bundle; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 07F3F50BFFE98E8EC697A10E = { - buildSettings = { - COMMON_CFLAGS = "-DMISSIONPACK -DBOTLIB -DMACOS_X -force_cpusubtype_ALL"; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - NO_OPT_CFLAGS = "-O0 -fno-inline -fno-inline-functions"; - OPTIMIZATION_CFLAGS = "-O0"; - OTHER_CFLAGS = "\U0001-g -Wall -DQGL_CHECK_GL_ERRORS $(NO_OPT_CFLAGS) $(COMMON_CFLAGS)"; - ZERO_LINK = YES; - }; - isa = PBXBuildStyle; - name = Development; - }; - 07F3F50CFFE98E8EC697A10E = { - buildSettings = { - COMMON_CFLAGS = "-DMISSIONPACK -DBOTLIB -DMACOS_X -force_cpusubtype_ALL\n"; - COPY_PHASE_STRIP = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - ZERO_LINK = NO; - }; - isa = PBXBuildStyle; - name = Deployment; - }; - 07FB599DFEB762C8C697A12F = { - children = ( - 09143A93FF39F3EF11CA2562, - 07F3F507FFE98E8EC697A10E, - 07F3F508FFE98E8EC697A10E, - 016EAE0200B4BDD1C697A10E, - 0170304A00B4885DC697A10E, - 4FF0912504896C0E00030DA8, - 4FF091E804896C1600030DA8, - ); - isa = PBXGroup; - name = Products; - refType = 4; - sourceTree = ""; - }; -//070 -//071 -//072 -//073 -//074 -//090 -//091 -//092 -//093 -//094 - 09143A93FF39F3EF11CA2562 = { - explicitFileType = wrapper.application; - isa = PBXFileReference; - path = Quake3.app; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; -//090 -//091 -//092 -//093 -//094 -//130 -//131 -//132 -//133 -//134 - 13380E0900ADF941C697A10E = { - fileRef = 012ADA4C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E0B00ADFA16C697A10E = { - fileRef = 012ADA5700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E0C00ADFA72C697A10E = { - fileRef = 012ADA5600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E0D00ADFA94C697A10E = { - fileRef = 012ADA4D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E0E00ADFA9EC697A10E = { - fileRef = 012ADA4600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E1200ADFACAC697A10E = { - fileRef = 012ADA4500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E1300ADFAD5C697A10E = { - fileRef = 012ADA2E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E1400ADFAD5C697A10E = { - fileRef = 012ADA2D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E1500ADFB0CC697A10E = { - fileRef = 012ADA2C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E1600ADFB0CC697A10E = { - fileRef = 012ADA2B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E1700ADFBFDC697A10E = { - fileRef = 012ADA3200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E1800ADFBFDC697A10E = { - fileRef = 012ADA3100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E1900ADFC10C697A10E = { - fileRef = 012ADA2800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E1A00ADFC10C697A10E = { - fileRef = 012ADA2700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E1B00ADFC22C697A10E = { - fileRef = 012ADA3000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E1C00ADFC22C697A10E = { - fileRef = 012ADA2F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E1D00ADFC32C697A10E = { - fileRef = 012ADA2600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E1E00ADFC32C697A10E = { - fileRef = 012ADA2500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E1F00ADFC43C697A10E = { - fileRef = 012ADA2A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2000ADFC43C697A10E = { - fileRef = 012ADA2900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2100ADFC59C697A10E = { - fileRef = 012ADA5C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2200ADFC78C697A10E = { - fileRef = 012ADA4900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2300ADFC85C697A10E = { - fileRef = 012ADA3E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2400ADFC9CC697A10E = { - fileRef = 012ADA5D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2500ADFCA7C697A10E = { - fileRef = 012ADA5A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2600ADFCA7C697A10E = { - fileRef = 012ADA5900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2700ADFCBDC697A10E = { - fileRef = 012ADA4700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2800ADFCC8C697A10E = { - fileRef = 012ADA4A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2900ADFCD1C697A10E = { - fileRef = 012ADA4F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2A00ADFCEBC697A10E = { - fileRef = 012ADA5500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2B00ADFCF6C697A10E = { - fileRef = 012ADA5400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2C00ADFD01C697A10E = { - fileRef = 012ADA4800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2D00ADFD1FC697A10E = { - fileRef = 012ADA4E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2E00ADFD28C697A10E = { - fileRef = 012ADA5B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E2F00ADFD38C697A10E = { - fileRef = 012ADA5800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E3000ADFD46C697A10E = { - fileRef = 012ADA5000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E3100ADFD58C697A10E = { - fileRef = 012ADA4400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E3200ADFD71C697A10E = { - fileRef = 012ADA3F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E3300ADFD85C697A10E = { - fileRef = 012ADA4100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E3400ADFDA1C697A10E = { - fileRef = 012AD99700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E3500ADFDA1C697A10E = { - fileRef = 012AD9A100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E3900ADFDE1C697A10E = { - fileRef = 012ADA3E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E3B00ADFE0CC697A10E = { - fileRef = 012AD99C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E3C00ADFE1EC697A10E = { - fileRef = 012ADA3F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E3D00ADFE24C697A10E = { - fileRef = 012ADA4100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E3E00ADFE3DC697A10E = { - fileRef = 012AD99B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E3F00ADFE4AC697A10E = { - fileRef = 012AD99300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E4000ADFE58C697A10E = { - fileRef = 012AD99100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E4100ADFE6BC697A10E = { - fileRef = 012AD99600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E4200ADFE7AC697A10E = { - fileRef = 012AD99800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E4300ADFE88C697A10E = { - fileRef = 012AD9A300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E4400ADFE97C697A10E = { - fileRef = 012AD99200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E4500ADFEA7C697A10E = { - fileRef = 012AD99A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E4600ADFEB8C697A10E = { - fileRef = 012AD99000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E4700ADFEC9C697A10E = { - fileRef = 012AD9A200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E4800ADFED7C697A10E = { - fileRef = 012AD9A000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E4900ADFEE7C697A10E = { - fileRef = 012AD99F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E4A00ADFEF5C697A10E = { - fileRef = 012AD99E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E4B00ADFF05C697A10E = { - fileRef = 012AD99400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E4C00ADFF27C697A10E = { - fileRef = 012AD98E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E4F00AE0112C697A10E = { - fileRef = 012AD98F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E5000AE020FC697A10E = { - fileRef = 012AD99900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E5100AE0235C697A10E = { - fileRef = 012ADB4900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 13380E5200AE0235C697A10E = { - fileRef = 012ADB4800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; -//130 -//131 -//132 -//133 -//134 -//180 -//181 -//182 -//183 -//184 - 1895FF2E065E291B00F8B3F4 = { - containerPortal = 0654BA41FE8ECEE0C697A12F; - isa = PBXContainerItemProxy; - proxyType = 1; - remoteGlobalIDString = 4FF0904804896C0E00030DA8; - remoteInfo = "Quake3 G4 (Application)"; - }; - 1895FF33065E291B00F8B3F4 = { - containerPortal = 0654BA41FE8ECEE0C697A12F; - isa = PBXContainerItemProxy; - proxyType = 1; - remoteGlobalIDString = 0654BA5CFE8ECEE0C697A12F; - remoteInfo = "Quake3 (Application)"; - }; - 18A3D355065F6636006A719A = { - containerPortal = 0654BA41FE8ECEE0C697A12F; - isa = PBXContainerItemProxy; - proxyType = 1; - remoteGlobalIDString = 00F5ED38FEBA95B7C697A12F; - remoteInfo = qagame; - }; - 18A3D356065F6636006A719A = { - isa = PBXTargetDependency; - target = 00F5ED38FEBA95B7C697A12F; - targetProxy = 18A3D355065F6636006A719A; - }; - 18A3D357065F663A006A719A = { - containerPortal = 0654BA41FE8ECEE0C697A12F; - isa = PBXContainerItemProxy; - proxyType = 1; - remoteGlobalIDString = 00F5ED90FEBA9615C697A12F; - remoteInfo = cgame; - }; - 18A3D358065F663A006A719A = { - isa = PBXTargetDependency; - target = 00F5ED90FEBA9615C697A12F; - targetProxy = 18A3D357065F663A006A719A; - }; - 18A3D359065F663F006A719A = { - containerPortal = 0654BA41FE8ECEE0C697A12F; - isa = PBXContainerItemProxy; - proxyType = 1; - remoteGlobalIDString = 016EAE0300B4BDD1C697A10E; - remoteInfo = ui; - }; - 18A3D35A065F663F006A719A = { - isa = PBXTargetDependency; - target = 016EAE0300B4BDD1C697A10E; - targetProxy = 18A3D359065F663F006A719A; - }; -//180 -//181 -//182 -//183 -//184 -//4F0 -//4F1 -//4F2 -//4F3 -//4F4 - 4F23A81108F4FA8F00CB90D3 = { - fileEncoding = 4; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = macosx_common.c; - refType = 4; - sourceTree = ""; - }; - 4F23A81308F4FA8F00CB90D3 = { - fileRef = 4F23A81108F4FA8F00CB90D3; - isa = PBXBuildFile; - settings = { - }; - }; - 4F23A81508F4FA8F00CB90D3 = { - fileRef = 4F23A81108F4FA8F00CB90D3; - isa = PBXBuildFile; - settings = { - }; - }; - 4F23A81708F4FA8F00CB90D3 = { - fileRef = 4F23A81108F4FA8F00CB90D3; - isa = PBXBuildFile; - settings = { - }; - }; - 4F23A81908F4FA8F00CB90D3 = { - fileRef = 4F23A81108F4FA8F00CB90D3; - isa = PBXBuildFile; - settings = { - }; - }; - 4F23A81B08F4FA8F00CB90D3 = { - fileRef = 4F23A81108F4FA8F00CB90D3; - isa = PBXBuildFile; - settings = { - }; - }; - 4F23A81D08F4FA8F00CB90D3 = { - fileRef = 4F23A81108F4FA8F00CB90D3; - isa = PBXBuildFile; - settings = { - }; - }; - 4F23A81F08F4FA8F00CB90D3 = { - fileRef = 4F23A81108F4FA8F00CB90D3; - isa = PBXBuildFile; - settings = { - }; - }; - 4FB23863047AB9F60098ACF3 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = vm_ppc_new.c; - refType = 4; - sourceTree = ""; - }; - 4FB23865047AB9F60098ACF3 = { - fileRef = 4FB23863047AB9F60098ACF3; - isa = PBXBuildFile; - settings = { - }; - }; - 4FB23867047ABF780098ACF3 = { - fileRef = 4FB23863047AB9F60098ACF3; - isa = PBXBuildFile; - settings = { - }; - }; - 4FEFFEDA047B008000719638 = { - fileRef = 012ADAF100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0904804896C0E00030DA8 = { - buildPhases = ( - 4FF0904904896C0E00030DA8, - 4FF0908704896C0E00030DA8, - 4FF0908B04896C0E00030DA8, - 4FF0911D04896C0E00030DA8, - 4FF0912404896C0E00030DA8, - ); - buildSettings = { - FRAMEWORK_SEARCH_PATHS = ""; - GCC_VERSION = 3.3; - HEADER_SEARCH_PATHS = ""; - INSTALL_PATH = "/Users/Shared/$(USER)/InstalledProducts"; - LIBRARY_SEARCH_PATHS = "\"/Users/zaphod/QUAKE3/CODE/macosx/GameRanger SDK/Libraries\""; - OPTIMIZATION_CFLAGS = "-O2"; - OTHER_CFLAGS = "-DMACOS_X -DBOTLIB -DMISSIONPACK -DSMP -force_cpusubtype_ALL -faltivec"; - OTHER_LDFLAGS = ""; - OTHER_REZFLAGS = ""; - PREBINDING = NO; - PRODUCT_NAME = "Quake3 G4"; - SECTORDER_FLAGS = ""; - USE_GCC3_PFE_SUPPORT = NO; - WARNING_CFLAGS = "-Wno-long-double -Wall -Wno-four-char-constants -Wno-unknown-pragmas"; - WRAPPER_EXTENSION = app; - }; - dependencies = ( - ); - isa = PBXApplicationTarget; - name = "Quake3 G4 (Application)"; - productInstallPath = "/Users/Shared/$(USER)/InstalledProducts"; - productName = Quake3; - productReference = 4FF0912504896C0E00030DA8; - productSettingsXML = " - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - Quake3 G4 - CFBundleGetInfoString - Quake 3 Arena 1.3.2 - CFBundleIconFile - Quake3.icns - CFBundleIdentifier - com.idsoftware.Quake3 - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Quake3 - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.3.2 - CFBundleSignature - IDQ3 - CFBundleVersion - 1.3.2 - NSExtensions - - NSMainNibFile - Quake3.nib - NSPrincipalClass - NSApplication - NSServices - - - NSMenuItem - - default - Quake3/Connect To Server - - NSMessage - connectToServer - NSPortName - Quake3 - NSSendTypes - - NSStringPboardType - - - - NSMenuItem - - default - Quake3/Perform Command - - NSMessage - performCommand - NSPortName - Quake3 - NSSendTypes - - NSStringPboardType - - - - - -"; - }; - 4FF0904904896C0E00030DA8 = { - buildActionMask = 2147483647; - files = ( - 4FF0904A04896C0E00030DA8, - 4FF0904B04896C0E00030DA8, - 4FF0904C04896C0E00030DA8, - 4FF0904D04896C0E00030DA8, - 4FF0904F04896C0E00030DA8, - 4FF0905004896C0E00030DA8, - 4FF0905104896C0E00030DA8, - 4FF0905204896C0E00030DA8, - 4FF0905304896C0E00030DA8, - 4FF0905404896C0E00030DA8, - 4FF0905504896C0E00030DA8, - 4FF0905604896C0E00030DA8, - 4FF0905704896C0E00030DA8, - 4FF0905804896C0E00030DA8, - 4FF0905904896C0E00030DA8, - 4FF0905A04896C0E00030DA8, - 4FF0905B04896C0E00030DA8, - 4FF0905C04896C0E00030DA8, - 4FF0905D04896C0E00030DA8, - 4FF0905E04896C0E00030DA8, - 4FF0905F04896C0E00030DA8, - 4FF0906104896C0E00030DA8, - 4FF0906204896C0E00030DA8, - 4FF0906304896C0E00030DA8, - 4FF0906404896C0E00030DA8, - 4FF0906504896C0E00030DA8, - 4FF0906604896C0E00030DA8, - 4FF0906704896C0E00030DA8, - 4FF0906804896C0E00030DA8, - 4FF0906904896C0E00030DA8, - 4FF0906A04896C0E00030DA8, - 4FF0906B04896C0E00030DA8, - 4FF0906C04896C0E00030DA8, - 4FF0906D04896C0E00030DA8, - 4FF0906E04896C0E00030DA8, - 4FF0906F04896C0E00030DA8, - 4FF0907004896C0E00030DA8, - 4FF0907104896C0E00030DA8, - 4FF0907204896C0E00030DA8, - 4FF0907304896C0E00030DA8, - 4FF0907404896C0E00030DA8, - 4FF0907504896C0E00030DA8, - 4FF0907604896C0E00030DA8, - 4FF0907704896C0E00030DA8, - 4FF0907804896C0E00030DA8, - 4FF0907904896C0E00030DA8, - 4FF0907A04896C0E00030DA8, - 4FF0907B04896C0E00030DA8, - 4FF0907C04896C0E00030DA8, - 4FF0907D04896C0E00030DA8, - 4FF0907E04896C0E00030DA8, - 4FF0907F04896C0E00030DA8, - 92603746091019830018EAE6, - 92603747091019830018EAE6, - 92603748091019830018EAE6, - 92603749091019830018EAE6, - 9260374A091019830018EAE6, - 9260374B091019830018EAE6, - 9260374C091019830018EAE6, - 9260374D091019830018EAE6, - 9260374E091019830018EAE6, - 9260376D091019D30018EAE6, - 9260376E091019D30018EAE6, - 9260377B09101A3B0018EAE6, - 9260378209101A6C0018EAE6, - 9292851909192BA800286DE9, - 92847F4409279B370056BC59, - 92847F4709279B370056BC59, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF0904A04896C0E00030DA8 = { - fileRef = 043627A600868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0904B04896C0E00030DA8 = { - fileRef = 043627A900868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0904C04896C0E00030DA8 = { - fileRef = 043627AE00868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0904D04896C0E00030DA8 = { - fileRef = 043627B000868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0904F04896C0E00030DA8 = { - fileRef = 012ADB0300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905004896C0E00030DA8 = { - fileRef = 012ADB0000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905104896C0E00030DA8 = { - fileRef = 012ADAEE00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905204896C0E00030DA8 = { - fileRef = 012ADAF000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905304896C0E00030DA8 = { - fileRef = 012ADAF200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905404896C0E00030DA8 = { - fileRef = 012ADAF300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905504896C0E00030DA8 = { - fileRef = 012ADAFD00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905604896C0E00030DA8 = { - fileRef = 012ADAFE00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905704896C0E00030DA8 = { - fileRef = 012ADB0800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905804896C0E00030DA8 = { - fileRef = 012ADB0900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905904896C0E00030DA8 = { - fileRef = 012ADB1400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905A04896C0E00030DA8 = { - fileRef = 012ADB1A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905B04896C0E00030DA8 = { - fileRef = 012ADB2400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905C04896C0E00030DA8 = { - fileRef = 012AD9B000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905D04896C0E00030DA8 = { - fileRef = 012AD9B100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905E04896C0E00030DA8 = { - fileRef = 012AD9B400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0905F04896C0E00030DA8 = { - fileRef = 012AD9B700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906104896C0E00030DA8 = { - fileRef = 012ADA8C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906204896C0E00030DA8 = { - fileRef = 012ADA9B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906304896C0E00030DA8 = { - fileRef = 012ADA6C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906404896C0E00030DA8 = { - fileRef = 012ADA8100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906504896C0E00030DA8 = { - fileRef = 012AD93700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906604896C0E00030DA8 = { - fileRef = 012AD93100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906704896C0E00030DA8 = { - fileRef = 012AD93900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906804896C0E00030DA8 = { - fileRef = 012AD93500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906904896C0E00030DA8 = { - fileRef = 012AD93300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906A04896C0E00030DA8 = { - fileRef = 012AD91E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906B04896C0E00030DA8 = { - fileRef = 012AD91800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906C04896C0E00030DA8 = { - fileRef = 012AD92200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906D04896C0E00030DA8 = { - fileRef = 012AD90900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906E04896C0E00030DA8 = { - fileRef = 012AD90E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0906F04896C0E00030DA8 = { - fileRef = 012AD91C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907004896C0E00030DA8 = { - fileRef = 012AD91600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907104896C0E00030DA8 = { - fileRef = 012AD92A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907204896C0E00030DA8 = { - fileRef = 012AD91A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907304896C0E00030DA8 = { - fileRef = 012AD92000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907404896C0E00030DA8 = { - fileRef = 012AD93B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907504896C0E00030DA8 = { - fileRef = 012AD92D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907604896C0E00030DA8 = { - fileRef = 012AD92F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907704896C0E00030DA8 = { - fileRef = 012AD93C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907804896C0E00030DA8 = { - fileRef = 012AD91300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907904896C0E00030DA8 = { - fileRef = 012AD91100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907A04896C0E00030DA8 = { - fileRef = 012AD90C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907B04896C0E00030DA8 = { - fileRef = 012AD90F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907C04896C0E00030DA8 = { - fileRef = 012AD91400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907D04896C0E00030DA8 = { - fileRef = 012AD90800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907E04896C0E00030DA8 = { - fileRef = 015ECC0C00894EC0C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0907F04896C0E00030DA8 = { - fileRef = 011F78F200B25B65C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0908704896C0E00030DA8 = { - buildActionMask = 2147483647; - files = ( - 4FF0908804896C0E00030DA8, - 4FF0908904896C0E00030DA8, - 4FF0908A04896C0E00030DA8, - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF0908804896C0E00030DA8 = { - fileRef = 043627B300868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0908904896C0E00030DA8 = { - fileRef = 043627B200868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0908A04896C0E00030DA8 = { - fileRef = 043627B400868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0908B04896C0E00030DA8 = { - buildActionMask = 2147483647; - files = ( - 4FF0908C04896C0E00030DA8, - 4FF0908D04896C0E00030DA8, - 4FF0908E04896C0E00030DA8, - 4FF0908F04896C0E00030DA8, - 4FF0909004896C0E00030DA8, - 4FF0909104896C0E00030DA8, - 4FF0909204896C0E00030DA8, - 4FF0909504896C0E00030DA8, - 4FF0909604896C0E00030DA8, - 4FF0909704896C0E00030DA8, - 4FF0909804896C0E00030DA8, - 4FF0909904896C0E00030DA8, - 4FF0909A04896C0E00030DA8, - 4FF0909B04896C0E00030DA8, - 4FF0909C04896C0E00030DA8, - 4FF0909D04896C0E00030DA8, - 4FF0909E04896C0E00030DA8, - 4FF0909F04896C0E00030DA8, - 4FF090A004896C0E00030DA8, - 4FF090A104896C0E00030DA8, - 4FF090A204896C0E00030DA8, - 4FF090A304896C0E00030DA8, - 4FF090A404896C0E00030DA8, - 4FF090A504896C0E00030DA8, - 4FF090A604896C0E00030DA8, - 4FF090A704896C0E00030DA8, - 4FF090A804896C0E00030DA8, - 4FF090A904896C0E00030DA8, - 4FF090AA04896C0E00030DA8, - 4FF090AB04896C0E00030DA8, - 4FF090AC04896C0E00030DA8, - 4FF090AD04896C0E00030DA8, - 4FF090AE04896C0E00030DA8, - 4FF090AF04896C0E00030DA8, - 4FF090B004896C0E00030DA8, - 4FF090B104896C0E00030DA8, - 4FF090B204896C0E00030DA8, - 4FF090B304896C0E00030DA8, - 4FF090B404896C0E00030DA8, - 4FF090B504896C0E00030DA8, - 4FF090B604896C0E00030DA8, - 4FF090B704896C0E00030DA8, - 4FF090B804896C0E00030DA8, - 4FF090B904896C0E00030DA8, - 4FF090BA04896C0E00030DA8, - 4FF090BB04896C0E00030DA8, - 4FF090BC04896C0E00030DA8, - 4FF090BD04896C0E00030DA8, - 4FF090BE04896C0E00030DA8, - 4FF090BF04896C0E00030DA8, - 4FF090C004896C0E00030DA8, - 4FF090C104896C0E00030DA8, - 4FF090C204896C0E00030DA8, - 4FF090C304896C0E00030DA8, - 4FF090C404896C0E00030DA8, - 4FF090C504896C0E00030DA8, - 4FF090C604896C0E00030DA8, - 4FF090C704896C0E00030DA8, - 4FF090C804896C0E00030DA8, - 4FF090C904896C0E00030DA8, - 4FF090CA04896C0E00030DA8, - 4FF090CB04896C0E00030DA8, - 4FF090CC04896C0E00030DA8, - 4FF090CD04896C0E00030DA8, - 4FF090CE04896C0E00030DA8, - 4FF090CF04896C0E00030DA8, - 4FF090D004896C0E00030DA8, - 4FF090D104896C0E00030DA8, - 4FF090D204896C0E00030DA8, - 4FF090D604896C0E00030DA8, - 4FF090D704896C0E00030DA8, - 4FF090D804896C0E00030DA8, - 4FF090D904896C0E00030DA8, - 4FF090DA04896C0E00030DA8, - 4FF090DB04896C0E00030DA8, - 4FF090DC04896C0E00030DA8, - 4FF090DD04896C0E00030DA8, - 4FF090DE04896C0E00030DA8, - 4FF090DF04896C0E00030DA8, - 4FF090E004896C0E00030DA8, - 4FF090E104896C0E00030DA8, - 4FF090E204896C0E00030DA8, - 4FF090E304896C0E00030DA8, - 4FF090E404896C0E00030DA8, - 4FF090E504896C0E00030DA8, - 4FF090E604896C0E00030DA8, - 4FF090E704896C0E00030DA8, - 4FF090E804896C0E00030DA8, - 4FF090E904896C0E00030DA8, - 4FF090EA04896C0E00030DA8, - 4FF090EB04896C0E00030DA8, - 4FF090EC04896C0E00030DA8, - 4FF090ED04896C0E00030DA8, - 4FF090EE04896C0E00030DA8, - 4FF090EF04896C0E00030DA8, - 4FF090F004896C0E00030DA8, - 4FF090F104896C0E00030DA8, - 4FF090F204896C0E00030DA8, - 4FF090F304896C0E00030DA8, - 4FF090F404896C0E00030DA8, - 4FF090F504896C0E00030DA8, - 4FF090F604896C0E00030DA8, - 4FF090F704896C0E00030DA8, - 4FF090F804896C0E00030DA8, - 4FF090F904896C0E00030DA8, - 4FF090FA04896C0E00030DA8, - 4FF090FB04896C0E00030DA8, - 4FF090FC04896C0E00030DA8, - 4FF090FD04896C0E00030DA8, - 4FF090FE04896C0E00030DA8, - 4FF090FF04896C0E00030DA8, - 4FF0910004896C0E00030DA8, - 4FF0910104896C0E00030DA8, - 4FF0910204896C0E00030DA8, - 4FF0910304896C0E00030DA8, - 4FF0910404896C0E00030DA8, - 4FF0910504896C0E00030DA8, - 4FF0910604896C0E00030DA8, - 4FF0910704896C0E00030DA8, - 4FF0910804896C0E00030DA8, - 4FF0910904896C0E00030DA8, - 4FF0910A04896C0E00030DA8, - 4FF0910B04896C0E00030DA8, - 4FF0910C04896C0E00030DA8, - 4FF0910D04896C0E00030DA8, - 4FF0910E04896C0E00030DA8, - 4FF0910F04896C0E00030DA8, - 4FF0911004896C0E00030DA8, - 4FF0911104896C0E00030DA8, - 4FF0911204896C0E00030DA8, - 4FF0911304896C0E00030DA8, - 4FF0911404896C0E00030DA8, - 4FF0911504896C0E00030DA8, - 4FF0911B04896C0E00030DA8, - 4FF0911C04896C0E00030DA8, - 4F23A81508F4FA8F00CB90D3, - 9260376B091019D30018EAE6, - 9260376C091019D30018EAE6, - 92847F4309279B370056BC59, - 92847F4509279B370056BC59, - 92847F4609279B370056BC59, - 92847F4809279B370056BC59, - 92847F4909279B370056BC59, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF0908C04896C0E00030DA8 = { - fileRef = 043627A700868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0908D04896C0E00030DA8 = { - fileRef = 043627A800868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0908E04896C0E00030DA8 = { - fileRef = 043627AB00868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0908F04896C0E00030DA8 = { - fileRef = 043627AD00868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0909004896C0E00030DA8 = { - fileRef = 043627AF00868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0909104896C0E00030DA8 = { - fileRef = 043627B100868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0909204896C0E00030DA8 = { - fileRef = 012ADAF600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0909504896C0E00030DA8 = { - fileRef = 012ADB1200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0909604896C0E00030DA8 = { - fileRef = 012ADAF700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0909704896C0E00030DA8 = { - fileRef = 012ADAF800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0909804896C0E00030DA8 = { - fileRef = 012ADAF900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0909904896C0E00030DA8 = { - fileRef = 012ADB0100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0909A04896C0E00030DA8 = { - fileRef = 012ADB0200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0909B04896C0E00030DA8 = { - fileRef = 012ADAFF00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0909C04896C0E00030DA8 = { - fileRef = 012ADB5800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0909D04896C0E00030DA8 = { - fileRef = 012AD9A600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0909E04896C0E00030DA8 = { - fileRef = 012AD9A700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0909F04896C0E00030DA8 = { - fileRef = 012AD9A800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090A004896C0E00030DA8 = { - fileRef = 012AD9A900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090A104896C0E00030DA8 = { - fileRef = 012AD9AA00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090A204896C0E00030DA8 = { - fileRef = 012AD9AB00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090A304896C0E00030DA8 = { - fileRef = 012AD9AC00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090A404896C0E00030DA8 = { - fileRef = 012AD9AD00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090A504896C0E00030DA8 = { - fileRef = 012AD9AE00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090A604896C0E00030DA8 = { - fileRef = 012AD9AF00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090A704896C0E00030DA8 = { - fileRef = 012ADAED00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090A804896C0E00030DA8 = { - fileRef = 012ADAEF00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090A904896C0E00030DA8 = { - fileRef = 012ADAF400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090AA04896C0E00030DA8 = { - fileRef = 012ADAF500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090AB04896C0E00030DA8 = { - fileRef = 012ADAFA00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090AC04896C0E00030DA8 = { - fileRef = 012ADAFB00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090AD04896C0E00030DA8 = { - fileRef = 012ADAFC00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090AE04896C0E00030DA8 = { - fileRef = 012ADB0A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090AF04896C0E00030DA8 = { - fileRef = 012ADB0B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090B004896C0E00030DA8 = { - fileRef = 012ADB0C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090B104896C0E00030DA8 = { - fileRef = 012ADB0D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090B204896C0E00030DA8 = { - fileRef = 012ADB0E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090B304896C0E00030DA8 = { - fileRef = 012ADB0F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090B404896C0E00030DA8 = { - fileRef = 012ADB1000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090B504896C0E00030DA8 = { - fileRef = 012ADB1100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090B604896C0E00030DA8 = { - fileRef = 012ADB1300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090B704896C0E00030DA8 = { - fileRef = 012ADB1500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090B804896C0E00030DA8 = { - fileRef = 012ADB1600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090B904896C0E00030DA8 = { - fileRef = 012ADB1700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090BA04896C0E00030DA8 = { - fileRef = 012ADB1800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090BB04896C0E00030DA8 = { - fileRef = 012ADB1900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090BC04896C0E00030DA8 = { - fileRef = 012ADB1B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090BD04896C0E00030DA8 = { - fileRef = 012ADB1C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090BE04896C0E00030DA8 = { - fileRef = 012ADB1D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090BF04896C0E00030DA8 = { - fileRef = 012ADB1E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090C004896C0E00030DA8 = { - fileRef = 012ADB1F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090C104896C0E00030DA8 = { - fileRef = 012ADB2000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090C204896C0E00030DA8 = { - fileRef = 012ADB2100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090C304896C0E00030DA8 = { - fileRef = 012ADB2200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090C404896C0E00030DA8 = { - fileRef = 012ADB2500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090C504896C0E00030DA8 = { - fileRef = 012ADB2600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090C604896C0E00030DA8 = { - fileRef = 012ADB2700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090C704896C0E00030DA8 = { - fileRef = 012ADB2800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090C804896C0E00030DA8 = { - fileRef = 012ADB2900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090C904896C0E00030DA8 = { - fileRef = 012ADB2A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090CA04896C0E00030DA8 = { - fileRef = 012ADB2B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090CB04896C0E00030DA8 = { - fileRef = 012ADB2D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090CC04896C0E00030DA8 = { - fileRef = 012ADB2E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090CD04896C0E00030DA8 = { - fileRef = 012ADB5700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090CE04896C0E00030DA8 = { - fileRef = 012AD9B200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090CF04896C0E00030DA8 = { - fileRef = 012AD9B300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090D004896C0E00030DA8 = { - fileRef = 012AD9B500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090D104896C0E00030DA8 = { - fileRef = 012AD9B600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090D204896C0E00030DA8 = { - fileRef = 012AD9B800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090D604896C0E00030DA8 = { - fileRef = 012ADA9800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090D704896C0E00030DA8 = { - fileRef = 012ADA9600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090D804896C0E00030DA8 = { - fileRef = 012ADA8B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090D904896C0E00030DA8 = { - fileRef = 012ADA6600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090DA04896C0E00030DA8 = { - fileRef = 012ADA7100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090DB04896C0E00030DA8 = { - fileRef = 012ADAA200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090DC04896C0E00030DA8 = { - fileRef = 012ADA6F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090DD04896C0E00030DA8 = { - fileRef = 012ADA7900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090DE04896C0E00030DA8 = { - fileRef = 012ADA6D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090DF04896C0E00030DA8 = { - fileRef = 012ADA7400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090E004896C0E00030DA8 = { - fileRef = 012ADA6B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090E104896C0E00030DA8 = { - fileRef = 012ADA6A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090E204896C0E00030DA8 = { - fileRef = 012ADA7600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090E304896C0E00030DA8 = { - fileRef = 012ADA6900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090E404896C0E00030DA8 = { - fileRef = 012ADA7500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090E504896C0E00030DA8 = { - fileRef = 012ADA6800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090E604896C0E00030DA8 = { - fileRef = 012ADA8D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090E704896C0E00030DA8 = { - fileRef = 012ADA7000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090E804896C0E00030DA8 = { - fileRef = 012ADA8500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090E904896C0E00030DA8 = { - fileRef = 012ADA7800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090EA04896C0E00030DA8 = { - fileRef = 012ADA8400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090EB04896C0E00030DA8 = { - fileRef = 012ADA8200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090EC04896C0E00030DA8 = { - fileRef = 012ADA8900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090ED04896C0E00030DA8 = { - fileRef = 012ADA7F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090EE04896C0E00030DA8 = { - fileRef = 012ADA8000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090EF04896C0E00030DA8 = { - fileRef = 012ADA9000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090F004896C0E00030DA8 = { - fileRef = 012ADA8800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090F104896C0E00030DA8 = { - fileRef = 012ADA7300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090F204896C0E00030DA8 = { - fileRef = 012ADA7B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090F304896C0E00030DA8 = { - fileRef = 012ADA8300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090F404896C0E00030DA8 = { - fileRef = 012ADA7C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090F504896C0E00030DA8 = { - fileRef = 012ADA7D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090F604896C0E00030DA8 = { - fileRef = 012ADA6E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090F704896C0E00030DA8 = { - fileRef = 012AD92C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090F804896C0E00030DA8 = { - fileRef = 012AD92400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090F904896C0E00030DA8 = { - fileRef = 012AD93600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090FA04896C0E00030DA8 = { - fileRef = 012AD93000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090FB04896C0E00030DA8 = { - fileRef = 012AD93800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090FC04896C0E00030DA8 = { - fileRef = 012AD93400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090FD04896C0E00030DA8 = { - fileRef = 012AD93200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090FE04896C0E00030DA8 = { - fileRef = 012AD92500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF090FF04896C0E00030DA8 = { - fileRef = 012AD92B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910004896C0E00030DA8 = { - fileRef = 012AD92300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910104896C0E00030DA8 = { - fileRef = 012AD92700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910204896C0E00030DA8 = { - fileRef = 012AD91D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910304896C0E00030DA8 = { - fileRef = 012AD91700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910404896C0E00030DA8 = { - fileRef = 012AD92100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910504896C0E00030DA8 = { - fileRef = 012AD90A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910604896C0E00030DA8 = { - fileRef = 012AD90D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910704896C0E00030DA8 = { - fileRef = 012AD91B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910804896C0E00030DA8 = { - fileRef = 012AD91500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910904896C0E00030DA8 = { - fileRef = 012AD92600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910A04896C0E00030DA8 = { - fileRef = 012AD92900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910B04896C0E00030DA8 = { - fileRef = 012AD91900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910C04896C0E00030DA8 = { - fileRef = 012AD91F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910D04896C0E00030DA8 = { - fileRef = 012AD93A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910E04896C0E00030DA8 = { - fileRef = 012AD92E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0910F04896C0E00030DA8 = { - fileRef = 012AD92800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0911004896C0E00030DA8 = { - fileRef = 012AD91200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0911104896C0E00030DA8 = { - fileRef = 012AD91000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0911204896C0E00030DA8 = { - fileRef = 012AD90B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0911304896C0E00030DA8 = { - fileRef = 015ECC0D00894EC0C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0911404896C0E00030DA8 = { - fileRef = 016B4A3B00ACCF9FC697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0911504896C0E00030DA8 = { - fileRef = 016F1B6300ACDA9BC697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0911B04896C0E00030DA8 = { - fileRef = 4FB23863047AB9F60098ACF3; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0911C04896C0E00030DA8 = { - fileRef = 012ADAF100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0911D04896C0E00030DA8 = { - buildActionMask = 2147483647; - files = ( - 4FF0911E04896C0E00030DA8, - 4FF0911F04896C0E00030DA8, - 4FF0912004896C0E00030DA8, - 4FF0912104896C0E00030DA8, - 4FF0912204896C0E00030DA8, - 4FF0912304896C0E00030DA8, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF0911E04896C0E00030DA8 = { - fileRef = 0654BA58FE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0911F04896C0E00030DA8 = { - fileRef = 0654BA5AFE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0912004896C0E00030DA8 = { - fileRef = 0654BA5BFE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0912104896C0E00030DA8 = { - fileRef = 00E9D914FEDB4D29C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0912204896C0E00030DA8 = { - fileRef = F564505801E623B201F62882; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0912304896C0E00030DA8 = { - fileRef = 0654BA59FE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0912404896C0E00030DA8 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXRezBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF0912504896C0E00030DA8 = { - explicitFileType = wrapper.application; - isa = PBXFileReference; - path = "Quake3 G4.app"; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 4FF0912704896C1600030DA8 = { - buildPhases = ( - 4FF0912804896C1600030DA8, - 4FF0915C04896C1600030DA8, - 4FF091E004896C1600030DA8, - 4FF091E704896C1600030DA8, - ); - buildSettings = { - DEBUGGING_SYMBOLS = NO; - GCC_VERSION = 3.3; - INSTALL_PATH = ""; - LIBRARY_SEARCH_PATHS = "\"/Users/zaphod/Quake3/code/macosx/GameRanger SDK/Libraries\""; - OPTIMIZATION_CFLAGS = "-O2"; - OTHER_CFLAGS = "-DMACOS_X -DBOTLIB -DMISSIONPACK -DSMP -force_cpusubtype_ALL -faltivec -falign-loops=16 -falign-jumps=16 -fstrict-aliasing "; - OTHER_LDFLAGS = ""; - OTHER_REZFLAGS = ""; - PREBINDING = NO; - PRODUCT_NAME = Q3DedicatedServer; - REZ_EXECUTABLE = YES; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - }; - dependencies = ( - ); - isa = PBXToolTarget; - name = "Dedicated Server G4"; - productInstallPath = ""; - productName = "Dedicated Server"; - productReference = 4FF091E804896C1600030DA8; - }; - 4FF0912804896C1600030DA8 = { - buildActionMask = 2147483647; - files = ( - 4FF0912904896C1600030DA8, - 4FF0912A04896C1600030DA8, - 4FF0912B04896C1600030DA8, - 4FF0912C04896C1600030DA8, - 4FF0912D04896C1600030DA8, - 4FF0912E04896C1600030DA8, - 4FF0912F04896C1600030DA8, - 4FF0913004896C1600030DA8, - 4FF0913104896C1600030DA8, - 4FF0913304896C1600030DA8, - 4FF0913404896C1600030DA8, - 4FF0913504896C1600030DA8, - 4FF0913604896C1600030DA8, - 4FF0913704896C1600030DA8, - 4FF0913804896C1600030DA8, - 4FF0913904896C1600030DA8, - 4FF0913A04896C1600030DA8, - 4FF0913C04896C1600030DA8, - 4FF0913D04896C1600030DA8, - 4FF0913E04896C1600030DA8, - 4FF0913F04896C1600030DA8, - 4FF0914004896C1600030DA8, - 4FF0914104896C1600030DA8, - 4FF0914204896C1600030DA8, - 4FF0914304896C1600030DA8, - 4FF0914404896C1600030DA8, - 4FF0914504896C1600030DA8, - 4FF0914604896C1600030DA8, - 4FF0914704896C1600030DA8, - 4FF0914804896C1600030DA8, - 4FF0914904896C1600030DA8, - 4FF0914A04896C1600030DA8, - 4FF0914B04896C1600030DA8, - 4FF0914C04896C1600030DA8, - 4FF0914D04896C1600030DA8, - 4FF0914E04896C1600030DA8, - 4FF0914F04896C1600030DA8, - 4FF0915004896C1600030DA8, - 4FF0915104896C1600030DA8, - 4FF0915204896C1600030DA8, - 4FF0915304896C1600030DA8, - 4FF0915404896C1600030DA8, - 4FF0915604896C1600030DA8, - 4FF0915704896C1600030DA8, - 4FF0915804896C1600030DA8, - 4FF0915904896C1600030DA8, - 4FF0915A04896C1600030DA8, - 4FF0915B04896C1600030DA8, - 92603758091019830018EAE6, - 92603759091019830018EAE6, - 9260375A091019830018EAE6, - 9260375B091019830018EAE6, - 9260375C091019830018EAE6, - 9260375D091019830018EAE6, - 9260375E091019830018EAE6, - 9260375F091019830018EAE6, - 92603760091019830018EAE6, - 92603775091019D30018EAE6, - 92603776091019D30018EAE6, - 9260377D09101A3B0018EAE6, - 9260378409101A6C0018EAE6, - 9292851B09192BA800286DE9, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF0912904896C1600030DA8 = { - fileRef = 012ADB0300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0912A04896C1600030DA8 = { - fileRef = 012ADB0000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0912B04896C1600030DA8 = { - fileRef = 012ADAFE00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0912C04896C1600030DA8 = { - fileRef = 012ADAFD00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0912D04896C1600030DA8 = { - fileRef = 012ADAF300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0912E04896C1600030DA8 = { - fileRef = 012ADAF200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0912F04896C1600030DA8 = { - fileRef = 012ADAF000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0913004896C1600030DA8 = { - fileRef = 012ADAEE00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0913104896C1600030DA8 = { - fileRef = 012ADB2400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0913304896C1600030DA8 = { - fileRef = 012ADB1400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0913404896C1600030DA8 = { - fileRef = 012ADB1A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0913504896C1600030DA8 = { - fileRef = 012ADB0800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0913604896C1600030DA8 = { - fileRef = 012ADB0900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0913704896C1600030DA8 = { - fileRef = 012ADA6C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0913804896C1600030DA8 = { - fileRef = 012ADA8100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0913904896C1600030DA8 = { - fileRef = 012ADA8C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0913A04896C1600030DA8 = { - fileRef = 012ADA9B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0913C04896C1600030DA8 = { - fileRef = 012AD90800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0913D04896C1600030DA8 = { - fileRef = 012AD90900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0913E04896C1600030DA8 = { - fileRef = 012AD90C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0913F04896C1600030DA8 = { - fileRef = 012AD90E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914004896C1600030DA8 = { - fileRef = 012AD90F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914104896C1600030DA8 = { - fileRef = 012AD91100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914204896C1600030DA8 = { - fileRef = 012AD91300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914304896C1600030DA8 = { - fileRef = 012AD91400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914404896C1600030DA8 = { - fileRef = 012AD91600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914504896C1600030DA8 = { - fileRef = 012AD91800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914604896C1600030DA8 = { - fileRef = 012AD91A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914704896C1600030DA8 = { - fileRef = 012AD91C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914804896C1600030DA8 = { - fileRef = 012AD91E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914904896C1600030DA8 = { - fileRef = 012AD92000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914A04896C1600030DA8 = { - fileRef = 012AD92200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914B04896C1600030DA8 = { - fileRef = 012AD92A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914C04896C1600030DA8 = { - fileRef = 012AD92D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914D04896C1600030DA8 = { - fileRef = 012AD92F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914E04896C1600030DA8 = { - fileRef = 012AD93100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0914F04896C1600030DA8 = { - fileRef = 012AD93300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0915004896C1600030DA8 = { - fileRef = 012AD93500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0915104896C1600030DA8 = { - fileRef = 012AD93700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0915204896C1600030DA8 = { - fileRef = 012AD93900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0915304896C1600030DA8 = { - fileRef = 012AD93B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0915404896C1600030DA8 = { - fileRef = 012AD93C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0915604896C1600030DA8 = { - fileRef = 015ECC0C00894EC0C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0915704896C1600030DA8 = { - fileRef = 011F78F200B25B65C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0915804896C1600030DA8 = { - fileRef = 043627A600868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0915904896C1600030DA8 = { - fileRef = 043627A900868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0915A04896C1600030DA8 = { - fileRef = 043627B000868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0915B04896C1600030DA8 = { - fileRef = 043627AE00868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0915C04896C1600030DA8 = { - buildActionMask = 2147483647; - files = ( - 4FF0915E04896C1600030DA8, - 4FF0915F04896C1600030DA8, - 4FF0916004896C1600030DA8, - 4FF0916104896C1600030DA8, - 4FF0916204896C1600030DA8, - 4FF0916304896C1600030DA8, - 4FF0916404896C1600030DA8, - 4FF0916504896C1600030DA8, - 4FF0916604896C1600030DA8, - 4FF0916704896C1600030DA8, - 4FF0916804896C1600030DA8, - 4FF0916904896C1600030DA8, - 4FF0916A04896C1600030DA8, - 4FF0916B04896C1600030DA8, - 4FF0916C04896C1600030DA8, - 4FF0916D04896C1600030DA8, - 4FF0916E04896C1600030DA8, - 4FF0916F04896C1600030DA8, - 4FF0917004896C1600030DA8, - 4FF0917104896C1600030DA8, - 4FF0917204896C1600030DA8, - 4FF0917304896C1600030DA8, - 4FF0917404896C1600030DA8, - 4FF0917504896C1600030DA8, - 4FF0917604896C1600030DA8, - 4FF0917704896C1600030DA8, - 4FF0917804896C1600030DA8, - 4FF0917C04896C1600030DA8, - 4FF0917D04896C1600030DA8, - 4FF0917E04896C1600030DA8, - 4FF0917F04896C1600030DA8, - 4FF0918004896C1600030DA8, - 4FF0918104896C1600030DA8, - 4FF0918204896C1600030DA8, - 4FF0918304896C1600030DA8, - 4FF0918404896C1600030DA8, - 4FF0918504896C1600030DA8, - 4FF0918604896C1600030DA8, - 4FF0918704896C1600030DA8, - 4FF0918804896C1600030DA8, - 4FF0918904896C1600030DA8, - 4FF0918A04896C1600030DA8, - 4FF0918B04896C1600030DA8, - 4FF0918C04896C1600030DA8, - 4FF0918D04896C1600030DA8, - 4FF0918E04896C1600030DA8, - 4FF0918F04896C1600030DA8, - 4FF0919004896C1600030DA8, - 4FF0919104896C1600030DA8, - 4FF0919204896C1600030DA8, - 4FF0919304896C1600030DA8, - 4FF0919404896C1600030DA8, - 4FF0919504896C1600030DA8, - 4FF0919604896C1600030DA8, - 4FF0919704896C1600030DA8, - 4FF0919804896C1600030DA8, - 4FF0919904896C1600030DA8, - 4FF0919A04896C1600030DA8, - 4FF0919B04896C1600030DA8, - 4FF0919C04896C1600030DA8, - 4FF0919D04896C1600030DA8, - 4FF0919E04896C1600030DA8, - 4FF0919F04896C1600030DA8, - 4FF091A004896C1600030DA8, - 4FF091A104896C1600030DA8, - 4FF091A204896C1600030DA8, - 4FF091A304896C1600030DA8, - 4FF091A404896C1600030DA8, - 4FF091A504896C1600030DA8, - 4FF091A604896C1600030DA8, - 4FF091A704896C1600030DA8, - 4FF091A804896C1600030DA8, - 4FF091A904896C1600030DA8, - 4FF091AA04896C1600030DA8, - 4FF091AB04896C1600030DA8, - 4FF091AC04896C1600030DA8, - 4FF091AD04896C1600030DA8, - 4FF091AE04896C1600030DA8, - 4FF091AF04896C1600030DA8, - 4FF091B004896C1600030DA8, - 4FF091B104896C1600030DA8, - 4FF091B204896C1600030DA8, - 4FF091B304896C1600030DA8, - 4FF091B604896C1600030DA8, - 4FF091B704896C1600030DA8, - 4FF091B804896C1600030DA8, - 4FF091B904896C1600030DA8, - 4FF091BA04896C1600030DA8, - 4FF091BB04896C1600030DA8, - 4FF091BC04896C1600030DA8, - 4FF091BD04896C1600030DA8, - 4FF091BE04896C1600030DA8, - 4FF091BF04896C1600030DA8, - 4FF091C004896C1600030DA8, - 4FF091C104896C1600030DA8, - 4FF091C204896C1600030DA8, - 4FF091C304896C1600030DA8, - 4FF091C404896C1600030DA8, - 4FF091C504896C1600030DA8, - 4FF091C604896C1600030DA8, - 4FF091C704896C1600030DA8, - 4FF091C804896C1600030DA8, - 4FF091C904896C1600030DA8, - 4FF091CA04896C1600030DA8, - 4FF091CB04896C1600030DA8, - 4FF091CC04896C1600030DA8, - 4FF091CD04896C1600030DA8, - 4FF091CE04896C1600030DA8, - 4FF091CF04896C1600030DA8, - 4FF091D004896C1600030DA8, - 4FF091D104896C1600030DA8, - 4FF091D304896C1600030DA8, - 4FF091D404896C1600030DA8, - 4FF091D504896C1600030DA8, - 4FF091D604896C1600030DA8, - 4FF091D704896C1600030DA8, - 4FF091D804896C1600030DA8, - 4FF091D904896C1600030DA8, - 4FF091DD04896C1600030DA8, - 4FF091DF04896C1600030DA8, - 4F23A81F08F4FA8F00CB90D3, - 92603773091019D30018EAE6, - 92603774091019D30018EAE6, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF0915E04896C1600030DA8 = { - fileRef = 012ADB0200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0915F04896C1600030DA8 = { - fileRef = 012ADAFF00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916004896C1600030DA8 = { - fileRef = 012ADB0100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916104896C1600030DA8 = { - fileRef = 012ADAFC00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916204896C1600030DA8 = { - fileRef = 012ADAFB00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916304896C1600030DA8 = { - fileRef = 012ADAFA00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916404896C1600030DA8 = { - fileRef = 016F1B6300ACDA9BC697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916504896C1600030DA8 = { - fileRef = 012ADAF900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916604896C1600030DA8 = { - fileRef = 012ADAF800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916704896C1600030DA8 = { - fileRef = 012ADAF700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916804896C1600030DA8 = { - fileRef = 012ADAF600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916904896C1600030DA8 = { - fileRef = 012ADAF500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916A04896C1600030DA8 = { - fileRef = 012ADAF400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916B04896C1600030DA8 = { - fileRef = 012ADAF100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916C04896C1600030DA8 = { - fileRef = 012ADAEF00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916D04896C1600030DA8 = { - fileRef = 012ADAED00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916E04896C1600030DA8 = { - fileRef = 012ADB2500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0916F04896C1600030DA8 = { - fileRef = 012ADB2600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0917004896C1600030DA8 = { - fileRef = 012ADB2700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0917104896C1600030DA8 = { - fileRef = 012ADB2800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0917204896C1600030DA8 = { - fileRef = 012ADB2900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0917304896C1600030DA8 = { - fileRef = 012ADB2A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0917404896C1600030DA8 = { - fileRef = 012ADB2B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0917504896C1600030DA8 = { - fileRef = 012ADB2D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0917604896C1600030DA8 = { - fileRef = 012ADB2E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0917704896C1600030DA8 = { - fileRef = 012ADB5700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0917804896C1600030DA8 = { - fileRef = 012ADB5800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0917C04896C1600030DA8 = { - fileRef = 012ADB0A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0917D04896C1600030DA8 = { - fileRef = 012ADB0B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0917E04896C1600030DA8 = { - fileRef = 012ADB0C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0917F04896C1600030DA8 = { - fileRef = 012ADB0D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918004896C1600030DA8 = { - fileRef = 012ADB0E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918104896C1600030DA8 = { - fileRef = 012ADB0F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918204896C1600030DA8 = { - fileRef = 012ADB1000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918304896C1600030DA8 = { - fileRef = 012ADB1100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918404896C1600030DA8 = { - fileRef = 012ADB1200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918504896C1600030DA8 = { - fileRef = 012ADB1300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918604896C1600030DA8 = { - fileRef = 012ADB1500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918704896C1600030DA8 = { - fileRef = 012ADB1600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918804896C1600030DA8 = { - fileRef = 012ADB1700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918904896C1600030DA8 = { - fileRef = 012ADB1800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918A04896C1600030DA8 = { - fileRef = 012ADB1900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918B04896C1600030DA8 = { - fileRef = 012ADB1B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918C04896C1600030DA8 = { - fileRef = 012ADB1C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918D04896C1600030DA8 = { - fileRef = 012ADB1D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918E04896C1600030DA8 = { - fileRef = 012ADB1E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0918F04896C1600030DA8 = { - fileRef = 012ADB1F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919004896C1600030DA8 = { - fileRef = 012ADB2000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919104896C1600030DA8 = { - fileRef = 012ADB2100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919204896C1600030DA8 = { - fileRef = 012ADB2200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919304896C1600030DA8 = { - fileRef = 012ADA6600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919404896C1600030DA8 = { - fileRef = 012ADA6800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919504896C1600030DA8 = { - fileRef = 012ADA6900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919604896C1600030DA8 = { - fileRef = 012ADA6A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919704896C1600030DA8 = { - fileRef = 012ADA6B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919804896C1600030DA8 = { - fileRef = 012ADA6D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919904896C1600030DA8 = { - fileRef = 012ADA6E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919A04896C1600030DA8 = { - fileRef = 012ADA6F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919B04896C1600030DA8 = { - fileRef = 012ADA7000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919C04896C1600030DA8 = { - fileRef = 012ADA7100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919D04896C1600030DA8 = { - fileRef = 012ADA7300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919E04896C1600030DA8 = { - fileRef = 012ADA7400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF0919F04896C1600030DA8 = { - fileRef = 012ADA7500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091A004896C1600030DA8 = { - fileRef = 012ADA7600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091A104896C1600030DA8 = { - fileRef = 012ADA7800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091A204896C1600030DA8 = { - fileRef = 012ADA7900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091A304896C1600030DA8 = { - fileRef = 012ADA7B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091A404896C1600030DA8 = { - fileRef = 012ADA7C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091A504896C1600030DA8 = { - fileRef = 012ADA7D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091A604896C1600030DA8 = { - fileRef = 012ADA7F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091A704896C1600030DA8 = { - fileRef = 012ADA8000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091A804896C1600030DA8 = { - fileRef = 012ADA8200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091A904896C1600030DA8 = { - fileRef = 012ADA8300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091AA04896C1600030DA8 = { - fileRef = 012ADA8400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091AB04896C1600030DA8 = { - fileRef = 012ADA8500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091AC04896C1600030DA8 = { - fileRef = 012ADA8900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091AD04896C1600030DA8 = { - fileRef = 012ADA8800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091AE04896C1600030DA8 = { - fileRef = 012ADA8B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091AF04896C1600030DA8 = { - fileRef = 012ADA8D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091B004896C1600030DA8 = { - fileRef = 012ADA9000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091B104896C1600030DA8 = { - fileRef = 012ADA9600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091B204896C1600030DA8 = { - fileRef = 012ADA9800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091B304896C1600030DA8 = { - fileRef = 012ADAA200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091B604896C1600030DA8 = { - fileRef = 012AD90A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091B704896C1600030DA8 = { - fileRef = 012AD90B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091B804896C1600030DA8 = { - fileRef = 012AD90D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091B904896C1600030DA8 = { - fileRef = 012AD91000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091BA04896C1600030DA8 = { - fileRef = 012AD91200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091BB04896C1600030DA8 = { - fileRef = 012AD91500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091BC04896C1600030DA8 = { - fileRef = 012AD91700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091BD04896C1600030DA8 = { - fileRef = 012AD91900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091BE04896C1600030DA8 = { - fileRef = 012AD91B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091BF04896C1600030DA8 = { - fileRef = 012AD91D00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091C004896C1600030DA8 = { - fileRef = 012AD91F00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091C104896C1600030DA8 = { - fileRef = 012AD92100868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091C204896C1600030DA8 = { - fileRef = 012AD92300868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091C304896C1600030DA8 = { - fileRef = 012AD92400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091C404896C1600030DA8 = { - fileRef = 012AD92500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091C504896C1600030DA8 = { - fileRef = 012AD92600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091C604896C1600030DA8 = { - fileRef = 012AD92700868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091C704896C1600030DA8 = { - fileRef = 012AD92800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091C804896C1600030DA8 = { - fileRef = 012AD92900868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091C904896C1600030DA8 = { - fileRef = 012AD92B00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091CA04896C1600030DA8 = { - fileRef = 012AD92C00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091CB04896C1600030DA8 = { - fileRef = 012AD92E00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091CC04896C1600030DA8 = { - fileRef = 012AD93000868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091CD04896C1600030DA8 = { - fileRef = 012AD93200868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091CE04896C1600030DA8 = { - fileRef = 012AD93400868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091CF04896C1600030DA8 = { - fileRef = 012AD93600868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091D004896C1600030DA8 = { - fileRef = 012AD93800868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091D104896C1600030DA8 = { - fileRef = 012AD93A00868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091D304896C1600030DA8 = { - fileRef = 015ECC0D00894EC0C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091D404896C1600030DA8 = { - fileRef = 043627A700868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091D504896C1600030DA8 = { - fileRef = 016B4A3B00ACCF9FC697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091D604896C1600030DA8 = { - fileRef = 043627A800868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091D704896C1600030DA8 = { - fileRef = 043627AD00868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091D804896C1600030DA8 = { - fileRef = 043627B100868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091D904896C1600030DA8 = { - fileRef = 043627AF00868916C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091DD04896C1600030DA8 = { - fileRef = 012ADAB500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091DF04896C1600030DA8 = { - fileRef = 4FB23863047AB9F60098ACF3; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091E004896C1600030DA8 = { - buildActionMask = 2147483647; - files = ( - 4FF091E104896C1600030DA8, - 4FF091E204896C1600030DA8, - 4FF091E304896C1600030DA8, - 4FF091E404896C1600030DA8, - 4FF091E504896C1600030DA8, - 4FF091E604896C1600030DA8, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF091E104896C1600030DA8 = { - fileRef = 0654BA58FE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091E204896C1600030DA8 = { - fileRef = 0654BA59FE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091E304896C1600030DA8 = { - fileRef = 00E9D914FEDB4D29C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091E404896C1600030DA8 = { - fileRef = 0654BA5AFE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091E504896C1600030DA8 = { - fileRef = 0654BA5BFE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091E604896C1600030DA8 = { - fileRef = F564505801E623B201F62882; - isa = PBXBuildFile; - settings = { - }; - }; - 4FF091E704896C1600030DA8 = { - buildActionMask = 2147483647; - files = ( - ); - isa = PBXRezBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - 4FF091E804896C1600030DA8 = { - explicitFileType = "compiled.mach-o.executable"; - isa = PBXFileReference; - path = Q3DedicatedServer; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 4FF091EA04897B0000030DA8 = { - isa = PBXTargetDependency; - target = 4FF0904804896C0E00030DA8; - targetProxy = 1895FF2E065E291B00F8B3F4; - }; -//4F0 -//4F1 -//4F2 -//4F3 -//4F4 -//920 -//921 -//922 -//923 -//924 - 92603734091019830018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_aas.h; - refType = 4; - sourceTree = ""; - }; - 92603735091019830018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_ai_char.h; - refType = 4; - sourceTree = ""; - }; - 92603736091019830018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_ai_chat.h; - refType = 4; - sourceTree = ""; - }; - 92603737091019830018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_ai_gen.h; - refType = 4; - sourceTree = ""; - }; - 92603738091019830018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_ai_goal.h; - refType = 4; - sourceTree = ""; - }; - 92603739091019830018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_ai_move.h; - refType = 4; - sourceTree = ""; - }; - 9260373A091019830018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_ai_weap.h; - refType = 4; - sourceTree = ""; - }; - 9260373B091019830018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = be_ea.h; - refType = 4; - sourceTree = ""; - }; - 9260373C091019830018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = botlib.h; - refType = 4; - sourceTree = ""; - }; - 9260373D091019830018EAE6 = { - fileRef = 92603734091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260373E091019830018EAE6 = { - fileRef = 92603735091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260373F091019830018EAE6 = { - fileRef = 92603736091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603740091019830018EAE6 = { - fileRef = 92603737091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603741091019830018EAE6 = { - fileRef = 92603738091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603742091019830018EAE6 = { - fileRef = 92603739091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603743091019830018EAE6 = { - fileRef = 9260373A091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603744091019830018EAE6 = { - fileRef = 9260373B091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603745091019830018EAE6 = { - fileRef = 9260373C091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603746091019830018EAE6 = { - fileRef = 92603734091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603747091019830018EAE6 = { - fileRef = 92603735091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603748091019830018EAE6 = { - fileRef = 92603736091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603749091019830018EAE6 = { - fileRef = 92603737091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260374A091019830018EAE6 = { - fileRef = 92603738091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260374B091019830018EAE6 = { - fileRef = 92603739091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260374C091019830018EAE6 = { - fileRef = 9260373A091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260374D091019830018EAE6 = { - fileRef = 9260373B091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260374E091019830018EAE6 = { - fileRef = 9260373C091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260374F091019830018EAE6 = { - fileRef = 92603734091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603750091019830018EAE6 = { - fileRef = 92603735091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603751091019830018EAE6 = { - fileRef = 92603736091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603752091019830018EAE6 = { - fileRef = 92603737091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603753091019830018EAE6 = { - fileRef = 92603738091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603754091019830018EAE6 = { - fileRef = 92603739091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603755091019830018EAE6 = { - fileRef = 9260373A091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603756091019830018EAE6 = { - fileRef = 9260373B091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603757091019830018EAE6 = { - fileRef = 9260373C091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603758091019830018EAE6 = { - fileRef = 92603734091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603759091019830018EAE6 = { - fileRef = 92603735091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260375A091019830018EAE6 = { - fileRef = 92603736091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260375B091019830018EAE6 = { - fileRef = 92603737091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260375C091019830018EAE6 = { - fileRef = 92603738091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260375D091019830018EAE6 = { - fileRef = 92603739091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260375E091019830018EAE6 = { - fileRef = 9260373A091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260375F091019830018EAE6 = { - fileRef = 9260373B091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603760091019830018EAE6 = { - fileRef = 9260373C091019830018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603763091019D20018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = q_math.c; - refType = 4; - sourceTree = ""; - }; - 92603764091019D20018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = q_shared.c; - refType = 4; - sourceTree = ""; - }; - 92603765091019D20018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = q_shared.h; - refType = 4; - sourceTree = ""; - }; - 92603766091019D20018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = surfaceflags.h; - refType = 4; - sourceTree = ""; - }; - 92603767091019D30018EAE6 = { - fileRef = 92603763091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603768091019D30018EAE6 = { - fileRef = 92603764091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603769091019D30018EAE6 = { - fileRef = 92603765091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260376A091019D30018EAE6 = { - fileRef = 92603766091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260376B091019D30018EAE6 = { - fileRef = 92603763091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260376C091019D30018EAE6 = { - fileRef = 92603764091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260376D091019D30018EAE6 = { - fileRef = 92603765091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260376E091019D30018EAE6 = { - fileRef = 92603766091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260376F091019D30018EAE6 = { - fileRef = 92603763091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603770091019D30018EAE6 = { - fileRef = 92603764091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603771091019D30018EAE6 = { - fileRef = 92603765091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603772091019D30018EAE6 = { - fileRef = 92603766091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603773091019D30018EAE6 = { - fileRef = 92603763091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603774091019D30018EAE6 = { - fileRef = 92603764091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603775091019D30018EAE6 = { - fileRef = 92603765091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92603776091019D30018EAE6 = { - fileRef = 92603766091019D20018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260377909101A3B0018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = tr_types.h; - refType = 4; - sourceTree = ""; - }; - 9260377A09101A3B0018EAE6 = { - fileRef = 9260377909101A3B0018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260377B09101A3B0018EAE6 = { - fileRef = 9260377909101A3B0018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260377C09101A3B0018EAE6 = { - fileRef = 9260377909101A3B0018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260377D09101A3B0018EAE6 = { - fileRef = 9260377909101A3B0018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260378009101A6C0018EAE6 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = keycodes.h; - refType = 4; - sourceTree = ""; - }; - 9260378109101A6C0018EAE6 = { - fileRef = 9260378009101A6C0018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260378209101A6C0018EAE6 = { - fileRef = 9260378009101A6C0018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260378309101A6C0018EAE6 = { - fileRef = 9260378009101A6C0018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 9260378409101A6C0018EAE6 = { - fileRef = 9260378009101A6C0018EAE6; - isa = PBXBuildFile; - settings = { - }; - }; - 92847F3509279B370056BC59 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = qal.c; - refType = 4; - sourceTree = ""; - }; - 92847F3609279B370056BC59 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = qal.h; - refType = 4; - sourceTree = ""; - }; - 92847F3709279B370056BC59 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = snd_codec_wav.c; - refType = 4; - sourceTree = ""; - }; - 92847F3809279B370056BC59 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = snd_codec.c; - refType = 4; - sourceTree = ""; - }; - 92847F3909279B370056BC59 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = snd_codec.h; - refType = 4; - sourceTree = ""; - }; - 92847F3A09279B370056BC59 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = snd_main.c; - refType = 4; - sourceTree = ""; - }; - 92847F3B09279B370056BC59 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.c; - path = snd_openal.c; - refType = 4; - sourceTree = ""; - }; - 92847F3C09279B370056BC59 = { - fileRef = 92847F3509279B370056BC59; - isa = PBXBuildFile; - settings = { - }; - }; - 92847F3D09279B370056BC59 = { - fileRef = 92847F3609279B370056BC59; - isa = PBXBuildFile; - settings = { - }; - }; - 92847F3E09279B370056BC59 = { - fileRef = 92847F3709279B370056BC59; - isa = PBXBuildFile; - settings = { - }; - }; - 92847F3F09279B370056BC59 = { - fileRef = 92847F3809279B370056BC59; - isa = PBXBuildFile; - settings = { - }; - }; - 92847F4009279B370056BC59 = { - fileRef = 92847F3909279B370056BC59; - isa = PBXBuildFile; - settings = { - }; - }; - 92847F4109279B370056BC59 = { - fileRef = 92847F3A09279B370056BC59; - isa = PBXBuildFile; - settings = { - }; - }; - 92847F4209279B370056BC59 = { - fileRef = 92847F3B09279B370056BC59; - isa = PBXBuildFile; - settings = { - }; - }; - 92847F4309279B370056BC59 = { - fileRef = 92847F3509279B370056BC59; - isa = PBXBuildFile; - settings = { - }; - }; - 92847F4409279B370056BC59 = { - fileRef = 92847F3609279B370056BC59; - isa = PBXBuildFile; - settings = { - }; - }; - 92847F4509279B370056BC59 = { - fileRef = 92847F3709279B370056BC59; - isa = PBXBuildFile; - settings = { - }; - }; - 92847F4609279B370056BC59 = { - fileRef = 92847F3809279B370056BC59; - isa = PBXBuildFile; - settings = { - }; - }; - 92847F4709279B370056BC59 = { - fileRef = 92847F3909279B370056BC59; - isa = PBXBuildFile; - settings = { - }; - }; - 92847F4809279B370056BC59 = { - fileRef = 92847F3A09279B370056BC59; - isa = PBXBuildFile; - settings = { - }; - }; - 92847F4909279B370056BC59 = { - fileRef = 92847F3B09279B370056BC59; - isa = PBXBuildFile; - settings = { - }; - }; - 9292851709192BA800286DE9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - path = q_platform.h; - refType = 4; - sourceTree = ""; - }; - 9292851809192BA800286DE9 = { - fileRef = 9292851709192BA800286DE9; - isa = PBXBuildFile; - settings = { - }; - }; - 9292851909192BA800286DE9 = { - fileRef = 9292851709192BA800286DE9; - isa = PBXBuildFile; - settings = { - }; - }; - 9292851A09192BA800286DE9 = { - fileRef = 9292851709192BA800286DE9; - isa = PBXBuildFile; - settings = { - }; - }; - 9292851B09192BA800286DE9 = { - fileRef = 9292851709192BA800286DE9; - isa = PBXBuildFile; - settings = { - }; - }; -//920 -//921 -//922 -//923 -//924 -//F50 -//F51 -//F52 -//F53 -//F54 - F54951E80354E75E011BCB42 = { - fileRef = F564505801E623B201F62882; - isa = PBXBuildFile; - settings = { - }; - }; - F54951F40354EAA2011BCB42 = { - fileRef = 012ADAB500868211C697A10E; - isa = PBXBuildFile; - settings = { - }; - }; - F564505801E623B201F62882 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = IOKit.framework; - path = /System/Library/Frameworks/IOKit.framework; - refType = 0; - sourceTree = ""; - }; - F564505901E623B201F62882 = { - fileRef = F564505801E623B201F62882; - isa = PBXBuildFile; - settings = { - }; - }; - F5D8C5E0035259DF0106E832 = { - fileRef = 0654BA59FE8ECEE0C697A12F; - isa = PBXBuildFile; - settings = { - }; - }; - }; - rootObject = 0654BA41FE8ECEE0C697A12F; -} diff --git a/code/macosx/RecordDemo.zsh b/code/macosx/RecordDemo.zsh deleted file mode 100644 index 273f4e6f..00000000 --- a/code/macosx/RecordDemo.zsh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/zsh -x - -/Local/Public/bungi/BuildOutput/Quake3.app/Contents/MacOS/Quake3 \ - +set sv_pure 0 \ - +set g_syncronousClients 1 \ - +map q3dm6 \ - +record foo - - diff --git a/code/macosx/banner.jpg b/code/macosx/banner.jpg deleted file mode 100644 index 7087c34b77ae2fd40a9cd25d124623f5ec8f4adb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55841 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∈rCC+zd?x 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 diff --git a/code/macosx/botlib.log b/code/macosx/botlib.log deleted file mode 100644 index 70b2f74e..00000000 --- a/code/macosx/botlib.log +++ /dev/null @@ -1,196 +0,0 @@ -item team_redobelisk has modelindex 0item team_blueobelisk has modelindex 0item team_neutralobelisk has modelindex 0item item_botroam has modelindex 0entity worldspawn unknown item -entity target_delay unknown item -entity light unknown item -entity target_delay unknown item -entity target_speaker unknown item -entity trigger_multiple unknown item -entity target_speaker unknown item -entity trigger_multiple unknown item -entity target_speaker unknown item -entity trigger_multiple unknown item -entity target_speaker unknown item -entity trigger_multiple unknown item -entity target_speaker unknown item -entity trigger_multiple unknown item -entity target_speaker unknown item -entity trigger_multiple unknown item -entity misc_model unknown item -entity light unknown item -entity light unknown item -entity target_speaker unknown item -entity target_speaker unknown item -entity func_timer unknown item -entity target_speaker unknown item -entity target_speaker unknown item -entity target_position unknown item -entity info_player_intermission unknown item -entity target_speaker unknown item -entity func_timer unknown item -entity target_speaker unknown item -entity misc_model unknown item -entity light unknown item -entity misc_teleporter_dest unknown item -entity target_position unknown item -entity misc_portal_camera unknown item -entity light unknown item -entity light unknown item -entity target_position unknown item -entity light unknown item -entity info_player_deathmatch unknown item -entity light unknown item -entity light unknown item -entity info_null unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity target_position unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity info_player_deathmatch unknown item -entity info_player_deathmatch unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity misc_model unknown item -entity light unknown item -entity light unknown item -entity misc_model unknown item -entity info_player_deathmatch unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity trigger_multiple unknown item -entity func_timer unknown item -entity target_speaker unknown item -entity trigger_multiple unknown item -entity func_timer unknown item -entity target_speaker unknown item -entity target_speaker unknown item -entity trigger_teleport unknown item -entity misc_portal_surface unknown item -entity misc_portal_surface unknown item -entity info_player_deathmatch unknown item -entity misc_model unknown item -entity light unknown item -entity func_rotating unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity target_position unknown item -entity light unknown item -entity light unknown item -entity target_position unknown item -entity light unknown item -entity light unknown item -entity func_rotating unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity light unknown item -entity misc_model unknown item -entity misc_model unknown item -entity func_timer unknown item -entity target_speaker unknown item -entity target_speaker unknown item -entity func_timer unknown item -entity target_speaker unknown item -entity func_timer unknown item -entity target_speaker unknown item -entity func_door unknown item -entity func_door unknown item -entity light unknown item -entity light unknown item -entity misc_model unknown item -entity light unknown item -bots/crash_c.cskill 1073741824 -{ - 0 Crash - 1 female - 2 0.366667 - 3 bots/crash_w.c - 4 0.366667 - 5 180 - 6 4.166667 - 7 0.366667 - 8 0.366667 - 9 0.450000 - 10 0.450000 - 11 0.450000 - 12 0.450000 - 13 0.450000 - 14 0.450000 - 15 0.450000 - 16 0.366667 - 17 0.450000 - 18 0.450000 - 19 0.450000 - 20 0.450000 - 21 bots/crash_t.c - 22 crash - 23 400 - 24 0.400000 - 25 1.000000 - 26 1.000000 - 27 1.000000 - 28 1.000000 - 29 1.000000 - 30 1.000000 - 31 1.000000 - 32 1.000000 - 33 1.000000 - 34 1.000000 - 35 1.000000 - 36 0.000000 - 37 0.000000 - 38 0.000000 - 39 0.000000 - 40 bots/crash_i.c - 41 0.233333 - 42 0.233333 - 43 0.233333 - 44 0.233333 - 45 0.000000 - 46 0.233333 - 47 0.333333 - 48 1.000000 -} -item info 7 "weapon_gauntlet" has no fuzzy weight -item info 16 "weapon_grapplinghook" has no fuzzy weight -item info 49 "team_redobelisk" has no fuzzy weight -item info 50 "team_blueobelisk" has no fuzzy weight -item info 51 "team_neutralobelisk" has no fuzzy weight diff --git a/code/macosx/macosx_common.c b/code/macosx/macosx_common.c deleted file mode 100644 index 1d42d907..00000000 --- a/code/macosx/macosx_common.c +++ /dev/null @@ -1,33 +0,0 @@ -#if 0 // not used anymore -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -#include -#include - -void Com_Memcpy (void* dest, const void* src, const size_t count) { - memcpy(dest, src, count); -} - -void Com_Memset (void* dest, const int val, const size_t count) { - memset(dest, val, count); -} -#endif diff --git a/code/macosx/macosx_display.h b/code/macosx/macosx_display.h deleted file mode 100644 index 9c0d7341..00000000 --- a/code/macosx/macosx_display.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -#include "tr_local.h" -#include "macosx_local.h" - -@class NSDictionary; - -extern NSDictionary *Sys_GetMatchingDisplayMode(qboolean allowStretchedModes); - -extern void Sys_StoreGammaTables(); -extern void Sys_GetGammaTable(glwgamma_t *table); -extern void Sys_SetScreenFade(glwgamma_t *table, float fraction); - -extern void Sys_FadeScreens(); -extern void Sys_FadeScreen(CGDirectDisplayID display); -extern void Sys_UnfadeScreens(); -extern void Sys_UnfadeScreen(CGDirectDisplayID display, glwgamma_t *table); -extern void Sys_ReleaseAllDisplays(); - diff --git a/code/macosx/macosx_display.m b/code/macosx/macosx_display.m deleted file mode 100644 index 308d5f5d..00000000 --- a/code/macosx/macosx_display.m +++ /dev/null @@ -1,369 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ - -#import "macosx_display.h" - -#include "tr_local.h" -#import "macosx_local.h" - -#import -#import // for interpreting the kCGDisplayIOFlags element of the display mode - - -NSDictionary *Sys_GetMatchingDisplayMode(qboolean allowStretchedModes) -{ - NSArray *displayModes; - NSDictionary *mode; - unsigned int modeIndex, modeCount, bestModeIndex; - int verbose; - cvar_t *cMinFreq, *cMaxFreq; - int minFreq, maxFreq; - unsigned int colorDepth; - - verbose = r_verbose->integer; - - colorDepth = r_colorbits->integer; - if (colorDepth < 16 || !r_fullscreen->integer) - colorDepth = [[glw_state.desktopMode objectForKey: (id)kCGDisplayBitsPerPixel] intValue]; - - cMinFreq = ri.Cvar_Get("r_minDisplayRefresh", "0", CVAR_ARCHIVE); - cMaxFreq = ri.Cvar_Get("r_maxDisplayRefresh", "0", CVAR_ARCHIVE); - - if (cMinFreq && cMaxFreq && cMinFreq->integer && cMaxFreq->integer && - cMinFreq->integer > cMaxFreq->integer) { - ri.Error(ERR_FATAL, "r_minDisplayRefresh must be less than or equal to r_maxDisplayRefresh"); - } - - minFreq = cMinFreq ? cMinFreq->integer : 0; - maxFreq = cMaxFreq ? cMaxFreq->integer : 0; - - displayModes = (NSArray *)CGDisplayAvailableModes(glw_state.display); - if (!displayModes) { - ri.Error(ERR_FATAL, "CGDisplayAvailableModes returned NULL -- 0x%0x is an invalid display", glw_state.display); - } - - modeCount = [displayModes count]; - if (verbose) { - ri.Printf(PRINT_ALL, "%d modes avaliable\n", modeCount); - ri.Printf(PRINT_ALL, "Current mode is %s\n", [[(id)CGDisplayCurrentMode(glw_state.display) description] cString]); - } - - // Default to the current desktop mode - bestModeIndex = 0xFFFFFFFF; - - for ( modeIndex = 0; modeIndex < modeCount; ++modeIndex ) { - id object; - int refresh; - - mode = [displayModes objectAtIndex: modeIndex]; - if (verbose) { - ri.Printf(PRINT_ALL, " mode %d -- %s\n", modeIndex, [[mode description] cString]); - } - - // Make sure we get the right size - object = [mode objectForKey: (id)kCGDisplayWidth]; - - if ([[mode objectForKey: (id)kCGDisplayWidth] intValue] != glConfig.vidWidth || - [[mode objectForKey: (id)kCGDisplayHeight] intValue] != glConfig.vidHeight) { - if (verbose) - ri.Printf(PRINT_ALL, " -- bad size\n"); - continue; - } - - if (!allowStretchedModes) { - if ([[mode objectForKey: (id)kCGDisplayIOFlags] intValue] & kDisplayModeStretchedFlag) { - if (verbose) - ri.Printf(PRINT_ALL, " -- stretched modes disallowed\n"); - continue; - } - } - - // Make sure that our frequency restrictions are observed - refresh = [[mode objectForKey: (id)kCGDisplayRefreshRate] intValue]; - if (minFreq && refresh < minFreq) { - if (verbose) - ri.Printf(PRINT_ALL, " -- refresh too low\n"); - continue; - } - - if (maxFreq && refresh > maxFreq) { - if (verbose) - ri.Printf(PRINT_ALL, " -- refresh too high\n"); - continue; - } - - if ([[mode objectForKey: (id)kCGDisplayBitsPerPixel] intValue] != colorDepth) { - if (verbose) - ri.Printf(PRINT_ALL, " -- bad depth\n"); - continue; - } - - bestModeIndex = modeIndex; - if (verbose) - ri.Printf(PRINT_ALL, " -- OK\n", bestModeIndex); - } - - if (verbose) - ri.Printf(PRINT_ALL, " bestModeIndex = %d\n", bestModeIndex); - - if (bestModeIndex == 0xFFFFFFFF) { - ri.Printf(PRINT_ALL, "No suitable display mode available.\n"); - return nil; - } - - return [displayModes objectAtIndex: bestModeIndex]; -} - - -#define MAX_DISPLAYS 128 - -void Sys_GetGammaTable(glwgamma_t *table) -{ - CGTableCount tableSize = 512; - CGDisplayErr err; - - table->tableSize = tableSize; - if (table->red) - free(table->red); - table->red = malloc(tableSize * sizeof(*table->red)); - if (table->green) - free(table->green); - table->green = malloc(tableSize * sizeof(*table->green)); - if (table->blue) - free(table->blue); - table->blue = malloc(tableSize * sizeof(*table->blue)); - - // TJW: We _could_ loop here if we get back the same size as our table, increasing the table size. - err = CGGetDisplayTransferByTable(table->display, tableSize, table->red, table->green, table->blue, -&table->tableSize); - if (err != CGDisplayNoErr) { - Com_Printf("GLimp_Init: CGGetDisplayTransferByTable returned %d.\n", err); - table->tableSize = 0; - } -} - -void Sys_SetGammaTable(glwgamma_t *table) -{ -} - - -void Sys_StoreGammaTables() -{ - // Store the original gamma for all monitors so that we can fade and unfade them all - CGDirectDisplayID displays[MAX_DISPLAYS]; - CGDisplayCount displayIndex; - CGDisplayErr err; - - err = CGGetActiveDisplayList(MAX_DISPLAYS, displays, &glw_state.displayCount); - if (err != CGDisplayNoErr) - Sys_Error("Cannot get display list -- CGGetActiveDisplayList returned %d.\n", err); - - glw_state.originalDisplayGammaTables = calloc(glw_state.displayCount, sizeof(*glw_state.originalDisplayGammaTables)); - for (displayIndex = 0; displayIndex < glw_state.displayCount; displayIndex++) { - glwgamma_t *table; - - table = &glw_state.originalDisplayGammaTables[displayIndex]; - table->display = displays[displayIndex]; - Sys_GetGammaTable(table); - } -} - - -// This isn't a mathematically correct fade, but we don't care that much. -void Sys_SetScreenFade(glwgamma_t *table, float fraction) -{ - CGTableCount tableSize; - CGGammaValue *red, *blue, *green; - CGTableCount gammaIndex; - - if (!glConfig.deviceSupportsGamma) - return; - - if (!(tableSize = table->tableSize)) - // we couldn't get the table for this display for some reason - return; - -// Com_Printf("0x%08x %f\n", table->display, fraction); - - red = glw_state.tempTable.red; - green = glw_state.tempTable.green; - blue = glw_state.tempTable.blue; - if (glw_state.tempTable.tableSize < tableSize) { - glw_state.tempTable.tableSize = tableSize; - red = realloc(red, sizeof(*red) * tableSize); - green = realloc(green, sizeof(*green) * tableSize); - blue = realloc(blue, sizeof(*blue) * tableSize); - glw_state.tempTable.red = red; - glw_state.tempTable.green = green; - glw_state.tempTable.blue = blue; - } - - for (gammaIndex = 0; gammaIndex < table->tableSize; gammaIndex++) { - red[gammaIndex] = table->red[gammaIndex] * fraction; - blue[gammaIndex] = table->blue[gammaIndex] * fraction; - green[gammaIndex] = table->green[gammaIndex] * fraction; - } - - CGSetDisplayTransferByTable(table->display, table->tableSize, red, green, blue); -} - -// Fades all the active displays at the same time. - -#define FADE_DURATION 0.5 -void Sys_FadeScreens() -{ - CGDisplayCount displayIndex; - glwgamma_t *table; - NSTimeInterval start, current; - float time; - - if (!glConfig.deviceSupportsGamma) - return; - - Com_Printf("Fading all displays\n"); - - start = [NSDate timeIntervalSinceReferenceDate]; - time = 0.0; - while (time != FADE_DURATION) { - current = [NSDate timeIntervalSinceReferenceDate]; - time = current - start; - if (time > FADE_DURATION) - time = FADE_DURATION; - - for (displayIndex = 0; displayIndex < glw_state.displayCount; displayIndex++) { - table = &glw_state.originalDisplayGammaTables[displayIndex]; - Sys_SetScreenFade(table, 1.0 - time / FADE_DURATION); - } - } -} - -void Sys_FadeScreen(CGDirectDisplayID display) -{ - CGDisplayCount displayIndex; - glwgamma_t *table; - - if (!glConfig.deviceSupportsGamma) - return; - - Com_Printf("Fading display 0x%08x\n", display); - - for (displayIndex = 0; displayIndex < glw_state.displayCount; displayIndex++) { - if (display == glw_state.originalDisplayGammaTables[displayIndex].display) { - NSTimeInterval start, current; - float time; - - start = [NSDate timeIntervalSinceReferenceDate]; - time = 0.0; - - table = &glw_state.originalDisplayGammaTables[displayIndex]; - while (time != FADE_DURATION) { - current = [NSDate timeIntervalSinceReferenceDate]; - time = current - start; - if (time > FADE_DURATION) - time = FADE_DURATION; - - Sys_SetScreenFade(table, 1.0 - time / FADE_DURATION); - } - return; - } - } - - Com_Printf("Unable to find display to fade it\n"); -} - -void Sys_UnfadeScreens() -{ - CGDisplayCount displayIndex; - glwgamma_t *table; - NSTimeInterval start, current; - float time; - - if (!glConfig.deviceSupportsGamma) - return; - - Com_Printf("Unfading all displays\n"); - - start = [NSDate timeIntervalSinceReferenceDate]; - time = 0.0; - while (time != FADE_DURATION) { - current = [NSDate timeIntervalSinceReferenceDate]; - time = current - start; - if (time > FADE_DURATION) - time = FADE_DURATION; - - for (displayIndex = 0; displayIndex < glw_state.displayCount; displayIndex++) { - table = &glw_state.originalDisplayGammaTables[displayIndex]; - Sys_SetScreenFade(table, time / FADE_DURATION); - } - } -} - -void Sys_UnfadeScreen(CGDirectDisplayID display, glwgamma_t *table) -{ - CGDisplayCount displayIndex; - - if (!glConfig.deviceSupportsGamma) - return; - - Com_Printf("Unfading display 0x%08x\n", display); - - if (table) { - CGTableCount i; - - Com_Printf("Given table:\n"); - for (i = 0; i < table->tableSize; i++) { - Com_Printf(" %f %f %f\n", table->red[i], table->blue[i], table->green[i]); - } - } - - // Search for the original gamma table for the display - if (!table) { - for (displayIndex = 0; displayIndex < glw_state.displayCount; displayIndex++) { - if (display == glw_state.originalDisplayGammaTables[displayIndex].display) { - table = &glw_state.originalDisplayGammaTables[displayIndex]; - break; - } - } - } - - if (table) { - NSTimeInterval start, current; - float time; - - start = [NSDate timeIntervalSinceReferenceDate]; - time = 0.0; - - while (time != FADE_DURATION) { - current = [NSDate timeIntervalSinceReferenceDate]; - time = current - start; - if (time > FADE_DURATION) - time = FADE_DURATION; - Sys_SetScreenFade(table, time / FADE_DURATION); - } - return; - } - - Com_Printf("Unable to find display to unfade it\n"); -} - - - diff --git a/code/macosx/macosx_glimp.h b/code/macosx/macosx_glimp.h deleted file mode 100644 index 4cbece8e..00000000 --- a/code/macosx/macosx_glimp.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -#include -#include -#include -#ifndef GL_EXT_abgr -#include -#endif - -// This can be defined to use the CGLMacro.h support which avoids looking up -// the current context. -//#define USE_CGLMACROS - -#ifdef USE_CGLMACROS -#include "macosx_local.h" -#define cgl_ctx glw_state._cgl_ctx -#include -#endif diff --git a/code/macosx/macosx_glimp.m b/code/macosx/macosx_glimp.m deleted file mode 100644 index 3641ca2d..00000000 --- a/code/macosx/macosx_glimp.m +++ /dev/null @@ -1,1114 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -#import "macosx_glimp.h" - -#include "tr_local.h" -#import "macosx_local.h" -#import "macosx_display.h" -#import "macosx_timers.h" - -#import -#import - -#import -#import -#import - -cvar_t *r_allowSoftwareGL; // don't abort out if the pixelformat claims software -cvar_t *r_enablerender; // Enable actual rendering -cvar_t *r_appleTransformHint; // Enable Apple transform hint - -static void GLW_InitExtensions( void ); -static qboolean CreateGameWindow( qboolean isSecondTry ); -static unsigned long Sys_QueryVideoMemory(); -static CGDisplayErr Sys_CaptureActiveDisplays(void); - - -glwstate_t glw_state; -qboolean Sys_IsHidden = qfalse; - -#ifdef OMNI_TIMER -OTStampList glThreadStampList; -#endif - -@interface NSOpenGLContext (CGLContextAccess) -- (CGLContextObj) cglContext; -@end - -@implementation NSOpenGLContext (CGLContextAccess) -- (CGLContextObj) cglContext; -{ - return _contextAuxiliary; -} -@end - -/* -============ -CheckErrors -============ -*/ -void CheckErrors( void ) -{ - GLenum err; - - err = qglGetError(); - if ( err != GL_NO_ERROR ) { - ri.Error( ERR_FATAL, "glGetError: %s\n", qglGetString( err ) ); - } -} - -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - -unsigned int QGLBeginStarted = 0; - -void QGLErrorBreak(void) -{ -} - -void QGLCheckError(const char *message) -{ - GLenum error; - static unsigned int errorCount = 0; - - error = _glGetError(); - if (error != GL_NO_ERROR) { - if (errorCount == 100) { - Com_Printf("100 GL errors printed ... disabling further error reporting.\n"); - } else if (errorCount < 100) { - if (errorCount == 0) { - fprintf(stderr, "BREAK ON QGLErrorBreak to stop at the GL errors\n"); - } - fprintf(stderr, "OpenGL Error(%s): 0x%04x -- %s\n", message, (int)error, gluErrorString(error)); - QGLErrorBreak(); - } - errorCount++; - } -} -#endif - -/* -** GLimp_SetMode -*/ - -qboolean GLimp_SetMode( qboolean isSecondTry ) -{ - if ( !CreateGameWindow(isSecondTry) ) { - ri.Printf( PRINT_ALL, "GLimp_Init: window could not be created!\n" ); - return qfalse; - } - - // draw something to show that GL is alive - if (r_enablerender->integer) { - qglClearColor( 0.5, 0.5, 0.7, 0 ); - qglClear( GL_COLOR_BUFFER_BIT ); - GLimp_EndFrame(); - - qglClearColor( 0.5, 0.5, 0.7, 0 ); - qglClear( GL_COLOR_BUFFER_BIT ); - GLimp_EndFrame(); - } - - Sys_UnfadeScreen(Sys_DisplayToUse(), NULL); - - CheckErrors(); - - return qtrue; -} - -/* - ================= - GetPixelAttributes - ================= - */ - -#define ADD_ATTR(x) \ -do { \ - if (attributeIndex >= attributeSize) { \ - attributeSize *= 2; \ - pixelAttributes = NSZoneRealloc(NULL, pixelAttributes, sizeof(*pixelAttributes) * attributeSize); \ - } \ - pixelAttributes[attributeIndex] = x; \ - attributeIndex++; \ - if (verbose) { \ - ri.Printf(PRINT_ALL, "Adding pixel attribute: %d (%s)\n", x, #x); \ - } \ -} while(0) - -static NSOpenGLPixelFormatAttribute *GetPixelAttributes() -{ - NSOpenGLPixelFormatAttribute *pixelAttributes; - unsigned int attributeIndex = 0; - unsigned int attributeSize = 128; - int verbose = 0; - unsigned int colorDepth; - - verbose = r_verbose->integer; - - pixelAttributes = NSZoneMalloc(NULL, sizeof(*pixelAttributes) * attributeSize); - - if (r_fullscreen->integer) { - ADD_ATTR(NSOpenGLPFAFullScreen); - - // Since we are fullscreen, specify the screen that we need. - ADD_ATTR(NSOpenGLPFAScreenMask); - ADD_ATTR(CGDisplayIDToOpenGLDisplayMask(Sys_DisplayToUse())); - } - - // Require hardware acceleration unless otherwise directed - if (!r_allowSoftwareGL->integer) { - ADD_ATTR(NSOpenGLPFAAccelerated); - } - - // Require double-buffer - ADD_ATTR(NSOpenGLPFADoubleBuffer); - - // Specify the number of color bits. If we don't have a valid specified value or we are not full screen, use the current display mode's value. - ADD_ATTR(NSOpenGLPFAColorSize); - colorDepth = r_colorbits->integer; - if (colorDepth < 16) - colorDepth = 16; - else if (colorDepth > 16) - colorDepth = 32; - if (!r_fullscreen->integer) - colorDepth = [[glw_state.desktopMode objectForKey: (id)kCGDisplayBitsPerPixel] intValue]; - ADD_ATTR(colorDepth); - - // Specify the number of depth bits - ADD_ATTR(NSOpenGLPFADepthSize); - ADD_ATTR(r_depthbits->integer ? r_depthbits->integer : 16); - - // Specify the number of stencil bits - if (r_stencilbits->integer) { - ADD_ATTR(NSOpenGLPFAStencilSize); - ADD_ATTR(r_stencilbits->integer); - } - - // Terminate the list - ADD_ATTR(0); - - return pixelAttributes; -} - -// Needs to be visible to Q3Controller.m. -void Sys_UpdateWindowMouseInputRect(void) -{ - NSRect windowRect, screenRect; - NSScreen *screen; - - // It appears we need to flip the coordinate system here. This means we need - // to know the size of the screen. - screen = [glw_state.window screen]; - screenRect = [screen frame]; - windowRect = [glw_state.window frame]; - windowRect.origin.y = screenRect.size.height - (windowRect.origin.y + windowRect.size.height); - - Sys_SetMouseInputRect(CGRectMake(windowRect.origin.x, windowRect.origin.y, - windowRect.size.width, windowRect.size.height)); -} - -// This is needed since CGReleaseAllDisplays() restores the gamma on the displays and we want to fade it up rather than just flickering all the displays -static void ReleaseAllDisplays() -{ - CGDisplayCount displayIndex; - - Com_Printf("Releasing displays\n"); - for (displayIndex = 0; displayIndex < glw_state.displayCount; displayIndex++) { - CGDisplayRelease(glw_state.originalDisplayGammaTables[displayIndex].display); - } -} - -/* -================= -CreateGameWindow -================= -*/ -static qboolean CreateGameWindow( qboolean isSecondTry ) -{ - const char *windowed[] = { "Windowed", "Fullscreen" }; - int current_mode; - NSOpenGLPixelFormatAttribute *pixelAttributes; - NSOpenGLPixelFormat *pixelFormat; - CGDisplayErr err; - - - // get mode info - current_mode = r_mode->integer; - glConfig.isFullscreen = (r_fullscreen->integer != 0); - - glw_state.desktopMode = (NSDictionary *)CGDisplayCurrentMode(glw_state.display); - if (!glw_state.desktopMode) { - ri.Error(ERR_FATAL, "Could not get current graphics mode for display 0x%08x\n", glw_state.display); - } - -#if 0 - ri.Printf( PRINT_ALL, "... desktop mode %d = %dx%d %s\n", glw_state.desktopMode, - glw_state.desktopDesc.width, glw_state.desktopDesc.height, - depthStrings[glw_state.desktopDesc.depth]); -#endif - - ri.Printf( PRINT_ALL, "...setting mode %d:\n", current_mode ); - if ( !R_GetModeInfo( &glConfig.vidWidth, &glConfig.vidHeight, &glConfig.windowAspect, current_mode ) ) { - ri.Printf( PRINT_ALL, " invalid mode\n" ); - return qfalse; - } - ri.Printf( PRINT_ALL, " %d %d %s\n", glConfig.vidWidth, glConfig.vidHeight, windowed[glConfig.isFullscreen] ); - - if (glConfig.isFullscreen) { - - // We'll set up the screen resolution first in case that effects the list of pixel - // formats that are available (for example, a smaller frame buffer might mean more - // bits for depth/stencil buffers). Allow stretched video modes if we are in fallback mode. - glw_state.gameMode = Sys_GetMatchingDisplayMode(isSecondTry); - if (!glw_state.gameMode) { - ri.Printf( PRINT_ALL, "Unable to find requested display mode.\n"); - return qfalse; - } - - // Fade all screens to black - Sys_FadeScreens(); - - err = Sys_CaptureActiveDisplays(); - if ( err != CGDisplayNoErr ) { - CGDisplayRestoreColorSyncSettings(); - ri.Printf( PRINT_ALL, " Unable to capture displays err = %d\n", err ); - return qfalse; - } - - err = CGDisplaySwitchToMode(glw_state.display, (CFDictionaryRef)glw_state.gameMode); - if ( err != CGDisplayNoErr ) { - CGDisplayRestoreColorSyncSettings(); - ReleaseAllDisplays(); - ri.Printf( PRINT_ALL, " Unable to set display mode, err = %d\n", err ); - return qfalse; - } - } else { - glw_state.gameMode = glw_state.desktopMode; - } - - - // Get the GL pixel format - pixelAttributes = GetPixelAttributes(); - pixelFormat = [[[NSOpenGLPixelFormat alloc] initWithAttributes: pixelAttributes] autorelease]; - NSZoneFree(NULL, pixelAttributes); - - if (!pixelFormat) { - CGDisplayRestoreColorSyncSettings(); - CGDisplaySwitchToMode(glw_state.display, (CFDictionaryRef)glw_state.desktopMode); - ReleaseAllDisplays(); - ri.Printf( PRINT_ALL, " No pixel format found\n"); - return qfalse; - } - - // Create a context with the desired pixel attributes - OSX_SetGLContext([[NSOpenGLContext alloc] initWithFormat: pixelFormat shareContext: nil]); - if (!OSX_GetNSGLContext()) { - CGDisplayRestoreColorSyncSettings(); - CGDisplaySwitchToMode(glw_state.display, (CFDictionaryRef)glw_state.desktopMode); - ReleaseAllDisplays(); - ri.Printf(PRINT_ALL, "... +[NSOpenGLContext createWithFormat:share:] failed.\n" ); - return qfalse; - } - - if (!glConfig.isFullscreen) { - cvar_t *vid_xpos; - cvar_t *vid_ypos; - NSRect windowRect; - - vid_xpos = ri.Cvar_Get( "vid_xpos", "100", CVAR_ARCHIVE ); - vid_ypos = ri.Cvar_Get( "vid_ypos", "100", CVAR_ARCHIVE ); - - // Create a window of the desired size - windowRect.origin.x = vid_xpos->integer; - windowRect.origin.y = vid_ypos->integer; - windowRect.size.width = glConfig.vidWidth; - windowRect.size.height = glConfig.vidHeight; - - glw_state.window = [[NSWindow alloc] initWithContentRect:windowRect - styleMask:NSTitledWindowMask - backing:NSBackingStoreRetained - defer:NO]; - - [glw_state.window setTitle: @"Quake3"]; - - [glw_state.window orderFront: nil]; - - // Always get mouse moved events (if mouse support is turned off (rare) - // the event system will filter them out. - [glw_state.window setAcceptsMouseMovedEvents: YES]; - - // Direct the context to draw in this window - [OSX_GetNSGLContext() setView: [glw_state.window contentView]]; - - // Sync input rect with where the window actually is... - Sys_UpdateWindowMouseInputRect(); - } else { - CGLError err; - - err = CGLSetFullScreen(OSX_GetCGLContext()); - if (err) { - CGDisplayRestoreColorSyncSettings(); - CGDisplaySwitchToMode(glw_state.display, (CFDictionaryRef)glw_state.desktopMode); - ReleaseAllDisplays(); - Com_Printf("CGLSetFullScreen -> %d (%s)\n", err, CGLErrorString(err)); - return qfalse; - } - - Sys_SetMouseInputRect(CGDisplayBounds(glw_state.display)); - } - - -#ifndef USE_CGLMACROS - // Make this the current context - OSX_GLContextSetCurrent(); -#endif - - // Store off the pixel format attributes that we actually got - [pixelFormat getValues: (long *) &glConfig.colorBits forAttribute: NSOpenGLPFAColorSize forVirtualScreen: 0]; - [pixelFormat getValues: (long *) &glConfig.depthBits forAttribute: NSOpenGLPFADepthSize forVirtualScreen: 0]; - [pixelFormat getValues: (long *) &glConfig.stencilBits forAttribute: NSOpenGLPFAStencilSize forVirtualScreen: 0]; - - glConfig.displayFrequency = [[glw_state.gameMode objectForKey: (id)kCGDisplayRefreshRate] intValue]; - - - ri.Printf(PRINT_ALL, "ok\n" ); - - return qtrue; -} - -// This can be used to temporarily disassociate the GL context from the screen so that CoreGraphics can be used to draw to the screen. -void Sys_PauseGL () -{ - if (!glw_state.glPauseCount) { - qglFinish (); // must do this to ensure the queue is complete - - // Have to call both to actually deallocate kernel resources and free the NSSurface - CGLClearDrawable(OSX_GetCGLContext()); - [OSX_GetNSGLContext() clearDrawable]; - } - glw_state.glPauseCount++; -} - -// This can be used to reverse the pausing caused by Sys_PauseGL() -void Sys_ResumeGL () -{ - if (glw_state.glPauseCount) { - glw_state.glPauseCount--; - if (!glw_state.glPauseCount) { - if (!glConfig.isFullscreen) { - [OSX_GetNSGLContext() setView: [glw_state.window contentView]]; - } else { - CGLError err; - - err = CGLSetFullScreen(OSX_GetCGLContext()); - if (err) - Com_Printf("CGLSetFullScreen -> %d (%s)\n", err, CGLErrorString(err)); - } - } - } -} - -/* -=================== -GLimp_Init - -Don't return unless OpenGL has been properly initialized -=================== -*/ - -static void GLImp_Toggle_Renderer_f(void) -{ - ri.Cvar_Set("r_enablerender", r_enablerender->integer ? "0" : "1"); -} - -#ifdef OMNI_TIMER -static void GLImp_Dump_Stamp_List_f(void) -{ - OTStampListDumpToFile(glThreadStampList, "/tmp/gl_stamps"); -} -#endif - -void GLimp_Init( void ) -{ - static BOOL addedCommands = NO; - cvar_t *lastValidRenderer = ri.Cvar_Get( "r_lastValidRenderer", "(uninitialized)", CVAR_ARCHIVE ); - char *buf; - - if (!addedCommands) { - addedCommands = YES; - -#ifdef OMNI_TIMER - glThreadStampList = OTStampListCreate(64); - Cmd_AddCommand ("dump_stamp_list", GLImp_Dump_Stamp_List_f); -#endif - Cmd_AddCommand ("toggle_renderer", GLImp_Toggle_Renderer_f); - } - - ri.Printf( PRINT_ALL, "Initializing OpenGL subsystem\n" ); - ri.Printf( PRINT_ALL, " Last renderer was '%s'\n", lastValidRenderer->string); - ri.Printf( PRINT_ALL, " r_fullscreen = %d\n", r_fullscreen->integer); - - memset( &glConfig, 0, sizeof( glConfig ) ); - - // We only allow changing the gamma if we are full screen - glConfig.deviceSupportsGamma = (r_fullscreen->integer != 0); - if (glConfig.deviceSupportsGamma) { - Sys_StoreGammaTables(); - } - - r_allowSoftwareGL = ri.Cvar_Get( "r_allowSoftwareGL", "0", CVAR_LATCH ); - r_enablerender = ri.Cvar_Get("r_enablerender", "1", 0 ); - - if (Sys_QueryVideoMemory() == 0 && !r_allowSoftwareGL->integer) { - ri.Error( ERR_FATAL, "Could not initialize OpenGL. There does not appear to be an OpenGL-supported video card in your system.\n" ); - } - - if ( ! GLimp_SetMode(qfalse) ) { - // fall back to the known-good mode - ri.Cvar_Set( "r_fullscreen", "1" ); - ri.Cvar_Set( "r_mode", "3" ); - ri.Cvar_Set( "r_stereo", "0" ); - ri.Cvar_Set( "r_depthBits", "16" ); - ri.Cvar_Set( "r_colorBits", "16" ); - ri.Cvar_Set( "r_stencilBits", "0" ); - if ( GLimp_SetMode(qtrue) ) { - ri.Printf( PRINT_ALL, "------------------\n" ); - return; - } - - ri.Error( ERR_FATAL, "Could not initialize OpenGL\n" ); - return; - } - - ri.Printf( PRINT_ALL, "------------------\n" ); - - // get our config strings - Q_strncpyz( glConfig.vendor_string, (const char *)qglGetString (GL_VENDOR), sizeof( glConfig.vendor_string ) ); - Q_strncpyz( glConfig.renderer_string, (const char *)qglGetString (GL_RENDERER), sizeof( glConfig.renderer_string ) ); - Q_strncpyz( glConfig.version_string, (const char *)qglGetString (GL_VERSION), sizeof( glConfig.version_string ) ); - Q_strncpyz( glConfig.extensions_string, (const char *)qglGetString (GL_EXTENSIONS), sizeof( glConfig.extensions_string ) ); - - // - // chipset specific configuration - // - buf = malloc(strlen(glConfig.renderer_string) + 1); - strcpy( buf, glConfig.renderer_string ); - Q_strlwr( buf ); - - ri.Cvar_Set( "r_lastValidRenderer", glConfig.renderer_string ); - free(buf); - - GLW_InitExtensions(); - -#ifndef USE_CGLMACROS - if (!r_enablerender->integer) - OSX_GLContextClearCurrent(); -#endif -} - - -/* -** GLimp_EndFrame -** -** Responsible for doing a swapbuffers and possibly for other stuff -** as yet to be determined. Probably better not to make this a GLimp -** function and instead do a call to GLimp_SwapBuffers. -*/ -void GLimp_EndFrame (void) -{ - GLSTAMP("GLimp_EndFrame start", 0); - - // - // swapinterval stuff - // - if ( r_swapInterval->modified ) { - r_swapInterval->modified = qfalse; - - if ( !glConfig.stereoEnabled ) { // why? - [[NSOpenGLContext currentContext] setValues: (long *)&r_swapInterval->integer - forParameter: NSOpenGLCPSwapInterval]; - } - } - -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - QGLCheckError("GLimp_EndFrame"); -#endif - - if (!glw_state.glPauseCount && !Sys_IsHidden) { - glw_state.bufferSwapCount++; - [OSX_GetNSGLContext() flushBuffer]; - } - - // Enable turning off GL at any point for performance testing - if (OSX_GLContextIsCurrent() != r_enablerender->integer) { - if (r_enablerender->integer) { - Com_Printf("--- Enabling Renderer ---\n"); - OSX_GLContextSetCurrent(); - } else { - Com_Printf("--- Disabling Renderer ---\n"); - OSX_GLContextClearCurrent(); - } - } - - GLSTAMP("GLimp_EndFrame end", 0); -} - -/* -** GLimp_Shutdown -** -** This routine does all OS specific shutdown procedures for the OpenGL -** subsystem. Under OpenGL this means NULLing out the current DC and -** HGLRC, deleting the rendering context, and releasing the DC acquired -** for the window. The state structure is also nulled out. -** -*/ - -static void _GLimp_RestoreOriginalVideoSettings() -{ - CGDisplayErr err; - - // CGDisplayCurrentMode lies because we've captured the display and thus we won't - // get any notifications about what the current display mode really is. For now, - // we just always force it back to what mode we remember the desktop being in. - if (glConfig.isFullscreen) { - err = CGDisplaySwitchToMode(glw_state.display, (CFDictionaryRef)glw_state.desktopMode); - if ( err != CGDisplayNoErr ) - ri.Printf( PRINT_ALL, " Unable to restore display mode!\n" ); - - ReleaseAllDisplays(); - } -} - -void GLimp_Shutdown( void ) -{ - CGDisplayCount displayIndex; - - Com_Printf("----- Shutting down GL -----\n"); - - Sys_FadeScreen(Sys_DisplayToUse()); - - if (OSX_GetNSGLContext()) { -#ifndef USE_CGLMACROS - OSX_GLContextClearCurrent(); -#endif - // Have to call both to actually deallocate kernel resources and free the NSSurface - CGLClearDrawable(OSX_GetCGLContext()); - [OSX_GetNSGLContext() clearDrawable]; - - [OSX_GetNSGLContext() release]; - OSX_SetGLContext((id)nil); - } - - _GLimp_RestoreOriginalVideoSettings(); - - Sys_UnfadeScreens(); - - // Restore the original gamma if needed. - if (glConfig.deviceSupportsGamma) { - Com_Printf("Restoring ColorSync settings\n"); - CGDisplayRestoreColorSyncSettings(); - } - - if (glw_state.window) { - [glw_state.window release]; - glw_state.window = nil; - } - - if (glw_state.log_fp) { - fclose(glw_state.log_fp); - glw_state.log_fp = 0; - } - - for (displayIndex = 0; displayIndex < glw_state.displayCount; displayIndex++) { - free(glw_state.originalDisplayGammaTables[displayIndex].red); - free(glw_state.originalDisplayGammaTables[displayIndex].blue); - free(glw_state.originalDisplayGammaTables[displayIndex].green); - } - free(glw_state.originalDisplayGammaTables); - if (glw_state.tempTable.red) { - free(glw_state.tempTable.red); - free(glw_state.tempTable.blue); - free(glw_state.tempTable.green); - } - if (glw_state.inGameTable.red) { - free(glw_state.inGameTable.red); - free(glw_state.inGameTable.blue); - free(glw_state.inGameTable.green); - } - - memset(&glConfig, 0, sizeof(glConfig)); - memset(&glState, 0, sizeof(glState)); - memset(&glw_state, 0, sizeof(glw_state)); - - Com_Printf("----- Done shutting down GL -----\n"); -} - -/* -=============== -GLimp_LogComment - -=============== -*/ -void GLimp_LogComment( char *comment ) { - } - -/* -=============== -GLimp_SetGamma - -=============== -*/ -void GLimp_SetGamma(unsigned char red[256], - unsigned char green[256], - unsigned char blue[256]) -{ - CGGammaValue redGamma[256], greenGamma[256], blueGamma[256]; - CGTableCount i; - CGDisplayErr err; - - if (!glConfig.deviceSupportsGamma) - return; - - for (i = 0; i < 256; i++) { - redGamma[i] = red[i] / 255.0; - greenGamma[i] = green[i] / 255.0; - blueGamma[i] = blue[i] / 255.0; - } - - err = CGSetDisplayTransferByTable(glw_state.display, 256, redGamma, greenGamma, blueGamma); - if (err != CGDisplayNoErr) { - Com_Printf("GLimp_SetGamma: CGSetDisplayTransferByByteTable returned %d.\n", err); - } - - // Store the gamma table that we ended up using so we can reapply it later when unhiding or to work around the bug where if you leave the game sitting and the monitor sleeps, when it wakes, the gamma isn't reset. - glw_state.inGameTable.display = glw_state.display; - Sys_GetGammaTable(&glw_state.inGameTable); -} - -qboolean GLimp_ChangeMode( int mode ) -{ - qboolean result; - int oldvalue = r_mode->integer; - - Com_Printf("*** GLimp_ChangeMode\n"); - r_mode->integer = mode; - if (!(result = GLimp_SetMode(qfalse))) - r_mode->integer = oldvalue; - - return result; -} - -/*****************************************************************************/ - -void *qwglGetProcAddress(const char *name) -{ - NSSymbol symbol; - char *symbolName; - - // Prepend a '_' for the Unix C symbol mangling convention - symbolName = malloc(strlen(name) + 2); - strcpy(symbolName + 1, name); - symbolName[0] = '_'; - - if (NSIsSymbolNameDefined(symbolName)) - symbol = NSLookupAndBindSymbol(symbolName); - else - symbol = NULL; - - free(symbolName); - - if (!symbol) - // shouldn't happen ... - return NULL; - - return NSAddressOfSymbol(symbol); -} - -/* -** GLW_InitExtensions -*/ -static void GLW_InitExtensions( void ) -{ - if ( !r_allowExtensions->integer ) - { - ri.Printf( PRINT_ALL, "*** IGNORING OPENGL EXTENSIONS ***\n" ); - return; - } - - ri.Printf( PRINT_ALL, "Initializing OpenGL extensions\n" ); - ri.Printf( PRINT_ALL, "... Supported extensions are %s\n", glConfig.extensions_string); - - // GL_S3_s3tc - glConfig.textureCompression = TC_NONE; - if ( strstr( glConfig.extensions_string, "GL_S3_s3tc" ) ) - { - if ( r_ext_compressed_textures->integer ) - { - glConfig.textureCompression = TC_S3TC; - ri.Printf( PRINT_ALL, "...using GL_S3_s3tc\n" ); - } - else - { - glConfig.textureCompression = TC_NONE; - ri.Printf( PRINT_ALL, "...ignoring GL_S3_s3tc\n" ); - } - } - else - { - ri.Printf( PRINT_ALL, "...GL_S3_s3tc not found\n" ); - } - - -#ifdef GL_EXT_texture_env_add - // GL_EXT_texture_env_add - glConfig.textureEnvAddAvailable = qfalse; - if ( strstr( glConfig.extensions_string, "GL_EXT_texture_env_add" ) ) - { - if ( r_ext_texture_env_add->integer ) - { - glConfig.textureEnvAddAvailable = qtrue; - ri.Printf( PRINT_ALL, "...using GL_EXT_texture_env_add\n" ); - } - else - { - glConfig.textureEnvAddAvailable = qfalse; - ri.Printf( PRINT_ALL, "...ignoring GL_EXT_texture_env_add\n" ); - } - } - else - { - ri.Printf( PRINT_ALL, "...GL_EXT_texture_env_add not found\n" ); - } -#endif - -#ifdef GL_ARB_texture_env_add - // GL_ARB_texture_env_add -- only if we didn't find GL_EXT_texture_env_add - if (!glConfig.textureEnvAddAvailable) { - if ( strstr( glConfig.extensions_string, "GL_ARB_texture_env_add" ) ) - { - if ( r_ext_texture_env_add->integer ) - { - glConfig.textureEnvAddAvailable = qtrue; - ri.Printf( PRINT_ALL, "...using GL_ARB_texture_env_add\n" ); - } - else - { - glConfig.textureEnvAddAvailable = qfalse; - ri.Printf( PRINT_ALL, "...ignoring GL_ARB_texture_env_add\n" ); - } - } - else - { - ri.Printf( PRINT_ALL, "...GL_ARB_texture_env_add not found\n" ); - } - } -#endif - - -#if 0 // Win32 does this differently than we do -- I'll provide a C function that looks the same - // that will do the correct ObjC stuff - // WGL_EXT_swap_control - qwglSwapIntervalEXT = ( BOOL (WINAPI *)(int)) qwglGetProcAddress( "wglSwapIntervalEXT" ); - if ( qwglSwapIntervalEXT ) - { - ri.Printf( PRINT_ALL, "...using WGL_EXT_swap_control\n" ); - r_swapInterval->modified = qtrue; // force a set next frame - } - else - { - ri.Printf( PRINT_ALL, "...WGL_EXT_swap_control not found\n" ); - } -#else - if (r_swapInterval) { - ri.Printf( PRINT_ALL, "...using +[NSOpenGLContext setParameter:] for qwglSwapIntervalEXT\n" ); - r_swapInterval->modified = qtrue; // force a set next frame - } -#endif - - // GL_ARB_multitexture - qglMultiTexCoord2fARB = NULL; - qglActiveTextureARB = NULL; - qglClientActiveTextureARB = NULL; - if ( strstr( glConfig.extensions_string, "GL_ARB_multitexture" ) ) - { - if ( r_ext_multitexture->integer ) - { - qglMultiTexCoord2fARB = ( PFNGLMULTITEXCOORD2FARBPROC ) qwglGetProcAddress( "glMultiTexCoord2fARB" ); - qglActiveTextureARB = ( PFNGLACTIVETEXTUREARBPROC ) qwglGetProcAddress( "glActiveTextureARB" ); - qglClientActiveTextureARB = ( PFNGLCLIENTACTIVETEXTUREARBPROC ) qwglGetProcAddress( "glClientActiveTextureARB" ); - - if ( qglActiveTextureARB ) - { - qglGetIntegerv( GL_MAX_ACTIVE_TEXTURES_ARB, (GLint *)&glConfig.maxActiveTextures ); - - if ( glConfig.maxActiveTextures > 1 ) - { - ri.Printf( PRINT_ALL, "...using GL_ARB_multitexture\n" ); - } - else - { - qglMultiTexCoord2fARB = NULL; - qglActiveTextureARB = NULL; - qglClientActiveTextureARB = NULL; - ri.Printf( PRINT_ALL, "...not using GL_ARB_multitexture, < 2 texture units\n" ); - } - } - } - else - { - ri.Printf( PRINT_ALL, "...ignoring GL_ARB_multitexture\n" ); - } - } - else - { - ri.Printf( PRINT_ALL, "...GL_ARB_multitexture not found\n" ); - } - - // GL_EXT_compiled_vertex_array - qglLockArraysEXT = NULL; - qglUnlockArraysEXT = NULL; - if ( strstr( glConfig.extensions_string, "GL_EXT_compiled_vertex_array" ) && ( glConfig.hardwareType != GLHW_RIVA128 ) ) - { - if ( r_ext_compiled_vertex_array->integer ) - { - ri.Printf( PRINT_ALL, "...using GL_EXT_compiled_vertex_array\n" ); - qglLockArraysEXT = ( void ( APIENTRY * )( GLint, GLint ) ) qwglGetProcAddress( "glLockArraysEXT" ); - qglUnlockArraysEXT = ( void ( APIENTRY * )( void ) ) qwglGetProcAddress( "glUnlockArraysEXT" ); - if (!qglLockArraysEXT || !qglUnlockArraysEXT) { - ri.Error (ERR_FATAL, "bad getprocaddress\n"); - } - } - else - { - ri.Printf( PRINT_ALL, "...ignoring GL_EXT_compiled_vertex_array\n" ); - } - } - else - { - ri.Printf( PRINT_ALL, "...GL_EXT_compiled_vertex_array not found\n" ); - } - -#ifdef GL_APPLE_transform_hint - if ( strstr( glConfig.extensions_string, "GL_APPLE_transform_hint" ) ) { - r_appleTransformHint = ri.Cvar_Get("r_appleTransformHint", "1", CVAR_ARCHIVE ); - if (r_appleTransformHint->value) { - ri.Printf( PRINT_ALL, "...using GL_APPLE_transform_hint\n"); - qglHint(GL_TRANSFORM_HINT_APPLE, GL_FASTEST); - CheckErrors(); - } else { - ri.Printf( PRINT_ALL, "...ignoring using GL_APPLE_transform_hint\n"); - } - } else { - ri.Printf( PRINT_ALL, "...GL_APPLE_transform_hint not found\n" ); - } -#endif -} - - -#define MAX_RENDERER_INFO_COUNT 128 - -// Returns zero if there are no hardware renderers. Otherwise, returns the max memory across all renderers (on the presumption that the screen that we'll use has the most memory). -static unsigned long Sys_QueryVideoMemory() -{ - CGLError err; - CGLRendererInfoObj rendererInfo, rendererInfos[MAX_RENDERER_INFO_COUNT]; - long rendererInfoIndex, rendererInfoCount = MAX_RENDERER_INFO_COUNT; - long rendererIndex, rendererCount; - long maxVRAM = 0, vram; - long accelerated; - long rendererID; - long totalRenderers = 0; - - err = CGLQueryRendererInfo(CGDisplayIDToOpenGLDisplayMask(Sys_DisplayToUse()), rendererInfos, &rendererInfoCount); - if (err) { - Com_Printf("CGLQueryRendererInfo -> %d\n", err); - return vram; - } - - //Com_Printf("rendererInfoCount = %d\n", rendererInfoCount); - for (rendererInfoIndex = 0; rendererInfoIndex < rendererInfoCount && totalRenderers < rendererInfoCount; rendererInfoIndex++) { - rendererInfo = rendererInfos[rendererInfoIndex]; - //Com_Printf("rendererInfo: 0x%08x\n", rendererInfo); - - - err = CGLDescribeRenderer(rendererInfo, 0, kCGLRPRendererCount, &rendererCount); - if (err) { - Com_Printf("CGLDescribeRenderer(kCGLRPRendererID) -> %d\n", err); - continue; - } - //Com_Printf(" rendererCount: %d\n", rendererCount); - - for (rendererIndex = 0; rendererIndex < rendererCount; rendererIndex++) { - totalRenderers++; - //Com_Printf(" rendererIndex: %d\n", rendererIndex); - - rendererID = 0xffffffff; - err = CGLDescribeRenderer(rendererInfo, rendererIndex, kCGLRPRendererID, &rendererID); - if (err) { - Com_Printf("CGLDescribeRenderer(kCGLRPRendererID) -> %d\n", err); - continue; - } - //Com_Printf(" rendererID: 0x%08x\n", rendererID); - - accelerated = 0; - err = CGLDescribeRenderer(rendererInfo, rendererIndex, kCGLRPAccelerated, &accelerated); - if (err) { - Com_Printf("CGLDescribeRenderer(kCGLRPAccelerated) -> %d\n", err); - continue; - } - //Com_Printf(" accelerated: %d\n", accelerated); - if (!accelerated) - continue; - - vram = 0; - err = CGLDescribeRenderer(rendererInfo, rendererIndex, kCGLRPVideoMemory, &vram); - if (err) { - Com_Printf("CGLDescribeRenderer -> %d\n", err); - continue; - } - //Com_Printf(" vram: 0x%08x\n", vram); - - // presumably we'll be running on the best card, so we'll take the max of the vrams - if (vram > maxVRAM) - maxVRAM = vram; - } - -#if 0 - err = CGLDestroyRendererInfo(rendererInfo); - if (err) { - Com_Printf("CGLDestroyRendererInfo -> %d\n", err); - } -#endif - } - - return maxVRAM; -} - - -// We will set the Sys_IsHidden global to cause input to be handle differently (we'll just let NSApp handle events in this case). We also will unbind the GL context and restore the video mode. -qboolean Sys_Hide() -{ - if (Sys_IsHidden) - // Eh? - return qfalse; - - if (!r_fullscreen->integer) - // We only support hiding in fullscreen mode right now - return qfalse; - - Sys_IsHidden = qtrue; - - // Don't need to store the current gamma since we always keep it around in glw_state.inGameTable. - - Sys_FadeScreen(Sys_DisplayToUse()); - - // Disassociate the GL context from the screen - // Have to call both to actually deallocate kernel resources and free the NSSurface - CGLClearDrawable(OSX_GetCGLContext()); - [OSX_GetNSGLContext() clearDrawable]; - - // Restore the original video mode - _GLimp_RestoreOriginalVideoSettings(); - - // Restore the original gamma if needed. - if (glConfig.deviceSupportsGamma) { - CGDisplayRestoreColorSyncSettings(); - } - - // Release the screen(s) - ReleaseAllDisplays(); - - Sys_UnfadeScreens(); - - // Shut down the input system so the mouse and keyboard settings are restore to normal - Sys_ShutdownInput(); - - // Hide the application so that when the user clicks on our app icon, we'll get an unhide notification - [NSApp hide: nil]; - - return qtrue; -} - -static CGDisplayErr Sys_CaptureActiveDisplays(void) -{ - CGDisplayErr err; - CGDisplayCount displayIndex; - for (displayIndex = 0; displayIndex < glw_state.displayCount; displayIndex++) { - const glwgamma_t *table; - table = &glw_state.originalDisplayGammaTables[displayIndex]; - err = CGDisplayCapture(table->display); - if (err != CGDisplayNoErr) - return err; - } - return CGDisplayNoErr; -} - -qboolean Sys_Unhide() -{ - CGDisplayErr err; - CGLError glErr; - - if (!Sys_IsHidden) - // Eh? - return qfalse; - - Sys_FadeScreens(); - - // Capture the screen(s) - err = Sys_CaptureActiveDisplays(); - if (err != CGDisplayNoErr) { - Sys_UnfadeScreens(); - ri.Printf( PRINT_ALL, "Unhide failed -- cannot capture the display again.\n" ); - return qfalse; - } - - // Restore the game mode - err = CGDisplaySwitchToMode(glw_state.display, (CFDictionaryRef)glw_state.gameMode); - if ( err != CGDisplayNoErr ) { - ReleaseAllDisplays(); - Sys_UnfadeScreens(); - ri.Printf( PRINT_ALL, "Unhide failed -- Unable to set display mode\n" ); - return qfalse; - } - - // Reassociate the GL context and the screen - glErr = CGLSetFullScreen(OSX_GetCGLContext()); - if (err) { - ReleaseAllDisplays(); - Sys_UnfadeScreens(); - ri.Printf( PRINT_ALL, "Unhide failed: CGLSetFullScreen -> %d (%s)\n", err, CGLErrorString(err)); - return qfalse; - } - - // Restore the current context - [OSX_GetNSGLContext() makeCurrentContext]; - - // Restore the gamma that the game had set - Sys_UnfadeScreen(Sys_DisplayToUse(), &glw_state.inGameTable); - - // Restore the input system (last so if something goes wrong we don't eat the mouse) - Sys_InitInput(); - - Sys_IsHidden = qfalse; - return qtrue; -} - - diff --git a/code/macosx/macosx_glsmp_mutex.m b/code/macosx/macosx_glsmp_mutex.m deleted file mode 100644 index 3fe03d8c..00000000 --- a/code/macosx/macosx_glsmp_mutex.m +++ /dev/null @@ -1,176 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -#import "macosx_glimp.h" - -#include "tr_local.h" -#import "macosx_local.h" -#import "macosx_display.h" - -#import -#import -#import - -// -// The main Q3 SMP API -// - -static pthread_mutex_t smpMutex; -static pthread_cond_t mainThreadCondition; -static pthread_cond_t renderThreadCondition; - -static volatile qboolean smpDataChanged; -static volatile void *smpData; - - -static void *GLimp_RenderThreadWrapper(void *arg) -{ - Com_Printf("Render thread starting\n"); - - ((void (*)())arg)(); - -#ifndef USE_CGLMACROS - // Unbind the context before we die - OSX_GLContextClearCurrent(); -#endif - - Com_Printf("Render thread terminating\n"); - - return arg; -} - -qboolean GLimp_SpawnRenderThread( void (*function)( void ) ) -{ - pthread_t renderThread; - int rc; - - pthread_mutex_init(&smpMutex, NULL); - pthread_cond_init(&mainThreadCondition, NULL); - pthread_cond_init(&renderThreadCondition, NULL); - - rc = pthread_create(&renderThread, NULL, GLimp_RenderThreadWrapper, function); - if (rc) { - ri.Printf(PRINT_ALL, "pthread_create returned %d: %s", rc, strerror(rc)); - return qfalse; - } else { - rc = pthread_detach(renderThread); - if (rc) { - ri.Printf(PRINT_ALL, "pthread_detach returned %d: %s", rc, strerror(rc)); - } - } - - return qtrue; -} - -// Called in the rendering thread to wait until a command buffer is ready. -// The command buffer returned might be NULL, indicating that the rendering thread should exit. -void *GLimp_RendererSleep(void) -{ - volatile void *data; - - GLSTAMP("GLimp_RendererSleep start", 0); - -#ifndef USE_CGLMACROS - // Clear the current context while we sleep so the main thread can access it - OSX_GLContextClearCurrent(); -#endif - - pthread_mutex_lock(&smpMutex); { - // Clear out any data we had and signal the main thread that we are no longer busy - smpData = NULL; - smpDataChanged = qfalse; - pthread_cond_signal(&mainThreadCondition); - - // Wait until we get something new to work on - while (!smpDataChanged) - pthread_cond_wait(&renderThreadCondition, &smpMutex); - - // Record the data (if any). - data = smpData; - } pthread_mutex_unlock(&smpMutex); - -#ifndef USE_CGLMACROS - // We are going to render a frame... retake the context - OSX_GLContextSetCurrent(); -#endif - - GLSTAMP("GLimp_RendererSleep end", 0); - - return (void *)data; -} - -// Called from the main thread to wait until the rendering thread is done with the command buffer. -void GLimp_FrontEndSleep(void) -{ - GLSTAMP("GLimp_FrontEndSleep start", 0); - - pthread_mutex_lock(&smpMutex); { - while (smpData) { -#if 0 - struct timespec ts; - int result; - - ts.tv_sec = 1; - ts.tv_nsec = 0; - result = pthread_cond_timedwait_relative_np(&mainThreadCondition, &smpMutex, &ts); - if (result) { - Com_Printf("GLimp_FrontEndSleep timed out. Probably due to R_SyncRenderThread called due to Com_Error being called\n"); - break; - } -#else - pthread_cond_wait(&mainThreadCondition, &smpMutex); -#endif - } - } pthread_mutex_unlock(&smpMutex); - - -#ifndef USE_CGLMACROS - // We are done waiting for the background thread, take the current context back. - OSX_GLContextSetCurrent(); -#endif - - GLSTAMP("GLimp_FrontEndSleep end", 0); -} - -// This is called in the main thread to issue another command -// buffer to the rendering thread. This is always called AFTER -// GLimp_FrontEndSleep, so we know that there is no command -// pending in 'smpData'. -void GLimp_WakeRenderer( void *data ) -{ - GLSTAMP("GLimp_WakeRenderer start", data); - -#ifndef USE_CGLMACROS - // We want the background thread to draw stuff. Give up the current context - OSX_GLContextClearCurrent(); -#endif - - pthread_mutex_lock(&smpMutex); { - // Store the new data pointer and wake up the rendering thread - assert(smpData == NULL); - smpData = data; - smpDataChanged = qtrue; - pthread_cond_signal(&renderThreadCondition); - } pthread_mutex_unlock(&smpMutex); - - GLSTAMP("GLimp_WakeRenderer end", data); -} - diff --git a/code/macosx/macosx_glsmp_null.m b/code/macosx/macosx_glsmp_null.m deleted file mode 100644 index 0568d282..00000000 --- a/code/macosx/macosx_glsmp_null.m +++ /dev/null @@ -1,46 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -#import "macosx_glimp.h" - -#include "tr_local.h" -#import "macosx_local.h" - -qboolean GLimp_SpawnRenderThread( void (*function)( void ) ) -{ - return qfalse; -} - -void *GLimp_RendererSleep(void) -{ - return NULL; -} - -void GLimp_FrontEndSleep(void) -{ - -} - -void GLimp_WakeRenderer( void *data ) -{ - -} - diff --git a/code/macosx/macosx_glsmp_ports.m b/code/macosx/macosx_glsmp_ports.m deleted file mode 100644 index 5fb008a7..00000000 --- a/code/macosx/macosx_glsmp_ports.m +++ /dev/null @@ -1,425 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -#import "macosx_glimp.h" - -#include "tr_local.h" -#import "macosx_local.h" -#import "macosx_display.h" - -#import -#import -#import -#import - - -#warning Using Mach Ports SMP acceleration implementation - -/* -=========================================================== - -SMP acceleration - -=========================================================== -*/ - -#import - -#define USE_MACH_PORTS 1 - -// This is a small cover layer that makes for easier calling - -typedef struct _MsgPort { -#if USE_MACH_PORTS - mach_port_t port; - id nsPort; -#else - pthread_mutex_t mutex; - pthread_cond_t condition; - volatile unsigned int status; - unsigned int msgCode; - void *msgData; -#endif -} MsgPort; - -static BOOL portsInited = NO; -static pthread_mutex_t logMutex; - -static unsigned int renderMsgOutstanding; -static unsigned int rendererProcessingCommand; - -static MsgPort rendererMsgPort; -static MsgPort frontEndMsgPort; - -enum { - MsgNone, - MsgPending, -}; - -enum { - MsgCodeInvalid = 0, - RenderCommandMsg = 1, - RenderCompletedMsg = 2, -}; - -static /*ID_INLINE*/ void MsgPortInit(MsgPort *port) -{ -#if USE_MACH_PORTS - port->nsPort = [[NSMachPort alloc] init]; - port->port = [port->nsPort machPort]; - - //rc = mach_port_allocate(mach_task_self(), MACH_PORT_TYPE_SEND_RECEIVE, &port->port); - //if (rc) { - // fprintf(stderr, "MsgPortInit: mach_port_allocate returned: %d: %s \n",rc, mach_error_string(rc)); - // } -#else - int rc; - rc = pthread_mutex_init(&port->mutex, NULL); - if (rc) { - ri.Printf(PRINT_ALL, "MsgPortInit: pthread_mutex_init returned: %d: %s\n", rc, strerror(rc)); - } - rc = pthread_cond_init(&port->condition, NULL); - if (rc) { - ri.Printf(PRINT_ALL, "EventInit: pthread_cond_init returned %d: %s\n", rc, strerror(rc)); - } - port->status = MsgNone; - port->msgCode = MsgCodeInvalid; - port->msgData = NULL; -#endif -} - -static /*ID_INLINE*/ void _SendMsg(MsgPort *port, unsigned int msgCode, void *msgData, - const char *functionName, const char *portName, const char *msgName) -{ - int rc; - -#if USE_MACH_PORTS - mach_msg_header_t msg; - - //printf("SendMsg: %s %s %s (%d %08lx)\n",functionName, portName, msgName, msgCode, msgData); -/* - typedef struct - { - mach_msg_bits_t msgh_bits; - mach_msg_size_t msgh_size; - mach_port_t msgh_remote_port; - mach_port_t msgh_local_port; - mach_msg_size_t msgh_reserved; - mach_msg_id_t msgh_id; - } mach_msg_header_t; -*/ - msg.msgh_bits = MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND,MACH_MSG_TYPE_MAKE_SEND_ONCE); - msg.msgh_size=sizeof(msg); - //msg.msg_type=MSG_TYPE_NORMAL; - msg.msgh_local_port=MACH_PORT_NULL; - msg.msgh_remote_port=port->port; - msg.msgh_reserved = 0; - msg.msgh_id=(mach_msg_id_t)msgData; // HACK - - rc = mach_msg_send(&msg); - if(rc) { - fprintf(stderr,"SendMsg: mach_msg_send returned %d: %s\n", rc, mach_error_string(rc)); - } -#else - //printf("SendMsg: %s %s %s (%d %08lx)\n",functionName, portName, msgName, msgCode, msgData); - rc = pthread_mutex_lock(&port->mutex); - if(rc) { - fprintf(stderr,"SendMsg: pthread_mutex_lock returned %d: %s\n", rc, strerror(rc)); - } - - /* Block until port is empty */ - while(port->status != MsgNone) { - //fprintf(stderr, "SendMsg: %s blocking until port %s is empty\n", functionName, portName); - rc = pthread_cond_wait(&port->condition, &port->mutex); - if(rc) { - fprintf(stderr, "SendMsg: pthread_cond_wait returned %d: %s\n", rc, strerror(rc)); - } - } - - /* Queue msg */ - port->msgCode = msgCode; - port->msgData = msgData; - port->status = MsgPending; - - /* Unlock port */ - rc = pthread_mutex_unlock(&port->mutex); - if(rc) { - fprintf(stderr, "SendMsg: pthread_mutex_unlock returned %d: %s\n", rc, strerror(rc)); - } - - /* Wake up any threads blocked waiting for a message */ - rc = pthread_cond_broadcast(&port->condition); - if(rc) { - fprintf(stderr, "SendMsg: pthread_cond_broadcast returned %d: %s\n", rc, strerror(rc)); - } -#endif -} - -static /*ID_INLINE*/ void _WaitMsg(MsgPort *port, unsigned int *msgCode, void **msgData, - const char *functionName, const char *portName) -{ - int rc; -#if USE_MACH_PORTS - mach_msg_empty_rcv_t msg; - - //printf("WaitMsg: %s %s\n",functionName, portName); - - msg.header.msgh_bits = MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND,MACH_MSG_TYPE_MAKE_SEND_ONCE); - msg.header.msgh_size= sizeof(msg); - //msg.msg_type=MSG_TYPE_NORMAL; - msg.header.msgh_local_port=port->port; - msg.header.msgh_remote_port=MACH_PORT_NULL; - msg.header.msgh_reserved = 0; - msg.header.msgh_id=(mach_msg_id_t)msgData; // HACK - - rc = mach_msg_receive(&msg.header); - if(rc) { - fprintf(stderr,"SendMsg: mach_msg_receive returned %d: %s\n", rc, mach_error_string(rc)); - } - - *msgData = (void *)msg.header.msgh_id; - //printf("WaitMsg: %s %s got %08lx\n",functionName, portName, *msgData); -#else - //printf("WaitMsg: %s %s\n",functionName, portName); - - rc = pthread_mutex_lock(&port->mutex); - if(rc) { - fprintf(stderr, "WaitMsg: pthread_mutex_lock returned %d: %s\n", rc, strerror(rc)); - } - - /* Block until port is empty */ - while(port->status != MsgPending) { - rc = pthread_cond_wait(&port->condition, &port->mutex); - if(rc) { - fprintf(stderr, "WaitMsg: pthread_cond_wait returned %d: %s\n", rc, strerror(rc)); - } - } - - /* Remove msg */ - *msgCode = port->msgCode; - *msgData = port->msgData; - - //printf("WaitMsg: %s %s got %d %08lx\n",functionName, portName, *msgCode, *msgData); - - port->status = MsgNone; - port->msgCode = 0; - port->msgData = NULL; - - rc = pthread_mutex_unlock(&port->mutex); - if(rc) { - fprintf(stderr, "WaitMsg: pthread_mutex_unlock returned %d: %s\n", rc, strerror(rc)); - } - - /* Wake up any threads blocked waiting for port to be empty. */ - rc = pthread_cond_broadcast(&port->condition); - if(rc) { - fprintf(stderr, "SendMsg: pthread_cond_broadcast returned %d: %s\n", rc, strerror(rc)); - } -#endif -} - - -#define SendMsg(p, c, d) _SendMsg(p, c, d, __PRETTY_FUNCTION__, #p, #c) -#define WaitMsg(p, c, d) _WaitMsg(p, c, d, __PRETTY_FUNCTION__, #p) - -#if 0 -static void _Log(const char *msg) -{ - int rc; - - rc = pthread_mutex_lock(&logMutex); - if (rc) - ri.Printf(PRINT_ALL, "_Log: pthread_mutex_lock returned %d: %s\n", rc, strerror(rc)); - - fputs(msg,stderr); - fflush(stderr); - - rc = pthread_mutex_unlock(&logMutex); - if (rc) - ri.Printf(PRINT_ALL, "_Log: pthread_mutex_unlock returned %d: %s\n", rc, strerror(rc)); -} -#endif - - -// -// The main Q3 SMP API -// - -static void (*glimpRenderThread)( void ) = NULL; - -static void *GLimp_RenderThreadWrapper(void *arg) -{ - Com_Printf("Render thread starting\n"); - - glimpRenderThread(); - -#ifndef USE_CGLMACROS - // Unbind the context before we die - OSX_GLContextClearCurrent(); -#endif - - // Send one last message back to front end before we die... - // This is somewhat of a hack.. fixme. - if (rendererProcessingCommand) { - SendMsg(&frontEndMsgPort, RenderCompletedMsg, NULL); - rendererProcessingCommand = NO; - } - - Com_Printf("Render thread terminating\n"); - - return arg; -} - -qboolean GLimp_SpawnRenderThread( void (*function)( void ) ) -{ - pthread_t renderThread; - int rc; - - if (!portsInited) { - portsInited = YES; - MsgPortInit(&rendererMsgPort); - MsgPortInit(&frontEndMsgPort); - renderMsgOutstanding = NO; - rendererProcessingCommand = NO; - pthread_mutex_init(&logMutex, NULL); - } - - glimpRenderThread = function; - - rc = pthread_create(&renderThread, - NULL, // attributes - GLimp_RenderThreadWrapper, - NULL); // argument - if (rc) { - ri.Printf(PRINT_ALL, "pthread_create returned %d: %s", rc, strerror(rc)); - return qfalse; - } else { - rc = pthread_detach(renderThread); - if (rc) { - ri.Printf(PRINT_ALL, "pthread_detach returned %d: %s", rc, strerror(rc)); - } - } - - return qtrue; -} - -static volatile void *smpData; - -// TJW - This is calling in the rendering thread to wait until another -// command buffer is ready. The command buffer returned might be NULL, -// indicating that the rendering thread should exit. -void *GLimp_RendererSleep(void) -{ - //_Log(__PRETTY_FUNCTION__ " entered"); - unsigned int msgCode; - void *msgData; - - GLSTAMP("GLimp_RendererSleep start", 0); - -#ifndef USE_CGLMACROS - // Clear the current context while we sleep so the main thread can access it - OSX_GLContextClearCurrent(); -#endif - - // Let the main thread we are idle and that no work is queued - //_Log("rs0\n"); - /* If we actually had some work to do, then tell the front end we completed it. */ - if (rendererProcessingCommand) { - SendMsg(&frontEndMsgPort, RenderCompletedMsg, NULL); - rendererProcessingCommand = NO; - } - - // Wait for new msg - for (;;) { - WaitMsg(&rendererMsgPort, &msgCode, &msgData); - if (1 || msgCode == RenderCommandMsg) { - smpData = msgData; - break; - } else { - printf("renderer received unknown message: %d\n",msgCode); - } - } - -#ifndef USE_CGLMACROS - // We are going to render a frame... retake the context - OSX_GLContextSetCurrent(); -#endif - - rendererProcessingCommand = YES; - - GLSTAMP("GLimp_RendererSleep end", 0); - - return (void *)smpData; -} - - -// TJW - This is from the main thread to wait until the rendering thread -// has completed the command buffer that it has -void GLimp_FrontEndSleep(void) -{ - unsigned int msgCode; - void *msgData; - - GLSTAMP("GLimp_FrontEndSleep start", 1); - - if (renderMsgOutstanding) { - for (;;) { - WaitMsg(&frontEndMsgPort, &msgCode, &msgData); - if(1 || msgCode == RenderCompletedMsg) { - break; - } else { - printf("front end received unknown message: %d\n",msgCode); - } - } - renderMsgOutstanding = NO; - } - -#ifndef USE_CGLMACROS - // We are done waiting for the background thread, take the current context back. - OSX_GLContextSetCurrent(); -#endif - - GLSTAMP("GLimp_FrontEndSleep end", 1); -} - - -// TJW - This is called in the main thread to issue another command -// buffer to the rendering thread. This is always called AFTER -// GLimp_FrontEndSleep, so we know that there is no command -// pending in 'smpData'. -void GLimp_WakeRenderer( void *data ) -{ - GLSTAMP("GLimp_WakeRenderer start", 1); - -#ifndef USE_CGLMACROS - // We want the background thread to draw stuff. Give up the current context - OSX_GLContextClearCurrent(); -#endif - - SendMsg(&rendererMsgPort, RenderCommandMsg, data); - - // Don't set flag saying that the renderer is processing something if it's just - // being told to exit. - //if(data != NULL) - renderMsgOutstanding = YES; - - GLSTAMP("GLimp_WakeRenderer end", 1); -} diff --git a/code/macosx/macosx_input.m b/code/macosx/macosx_input.m deleted file mode 100644 index b87c1821..00000000 --- a/code/macosx/macosx_input.m +++ /dev/null @@ -1,916 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -#import -#import -#include - -#import "../client/client.h" -#import "macosx_local.h" -#import "../renderer/tr_local.h" - -#import "Q3Controller.h" -//#import "CGMouseDeltaFix.h" -#import "macosx_timers.h" -#import "macosx_display.h" // For Sys_SetScreenFade - -#import -#import -#import -#import - - -static qboolean inputActive; - -static NSDate *distantPast; - -static cvar_t *in_nomouse; -static cvar_t *in_showevents; -static cvar_t *in_mouseLowEndSlope; -static cvar_t *in_mouseHighEndCutoff; -static cvar_t *in_disableOSMouseScaling; - -static void Sys_StartMouseInput(); -static void Sys_StopMouseInput(); -static qboolean mouseactive = qfalse; -static BOOL inputRectValid = NO; -static CGRect inputRect; -static NXMouseScaling originalScaling; - -static unsigned int currentModifierFlags; - - - -static void Sys_PreventMouseMovement(CGPoint point) -{ - CGEventErr err; - - //Com_Printf("**** Calling CGAssociateMouseAndMouseCursorPosition(false)\n"); - err = CGAssociateMouseAndMouseCursorPosition(false); - if (err != CGEventNoErr) { - Sys_Error("Could not disable mouse movement, CGAssociateMouseAndMouseCursorPosition returned %d\n", err); - } - - // Put the mouse in the position we want to leave it at - err = CGWarpMouseCursorPosition(point); - if (err != CGEventNoErr) { - Sys_Error("Could not disable mouse movement, CGWarpMouseCursorPosition returned %d\n", err); - } -} - -static void Sys_ReenableMouseMovement() -{ - CGEventErr err; - - //Com_Printf("**** Calling CGAssociateMouseAndMouseCursorPosition(true)\n"); - - err = CGAssociateMouseAndMouseCursorPosition(true); - if (err != CGEventNoErr) { - Sys_Error("Could not reenable mouse movement, CGAssociateMouseAndMouseCursorPosition returned %d\n", err); - } - - // Leave the mouse where it was -- don't warp here. -} - - -void Sys_InitInput(void) -{ - // no input with dedicated servers - if ( com_dedicated->integer ) { - return; - } - - // The Cvars don't seem to work really early. - [(Q3Controller *)[NSApp delegate] showBanner]; - - Com_Printf( "------- Input Initialization -------\n" ); - - if (!distantPast) - distantPast = [[NSDate distantPast] retain]; - - // For hide support. If we don't do this, then the command key will get stuck on when we hide (since we won't get the flags changed event when it goes up). - currentModifierFlags = 0; - - r_fullscreen = Cvar_Get( "r_fullscreen", "1", CVAR_ARCHIVE | CVAR_LATCH ); - in_nomouse = Cvar_Get( "in_nomouse", "0", 0 ); - in_showevents = Cvar_Get( "in_showevents", "0", 0 ); - - // these defaults were arrived at via emprical testing between a Windows box and a Mac OS X box -#define ACT_LIKE_WINDOWS -#ifdef ACT_LIKE_WINDOWS - in_mouseLowEndSlope = Cvar_Get("in_mouseLowEndSlope", "3.5", CVAR_ARCHIVE); - if (in_mouseLowEndSlope->value < 1) { - Cvar_Set("in_mouseLowEndSlope", "1"); - } -#else - in_mouseLowEndSlope = Cvar_Get("in_mouseLowEndSlope", "1", CVAR_ARCHIVE); - if (in_mouseLowEndSlope->value < 1) { - Cvar_Set("in_mouseLowEndSlope", "1"); - } -#endif - - in_mouseHighEndCutoff = Cvar_Get("in_mouseHighEndCutoff", "20", CVAR_ARCHIVE); - if (in_mouseLowEndSlope->value < 1) { - Cvar_Set("in_mouseHighEndCutoff", "1"); - } - in_disableOSMouseScaling = Cvar_Get("in_disableOSMouseScaling", "1", CVAR_ARCHIVE ); - - glw_state.display = Sys_DisplayToUse(); - - inputActive = qtrue; - - if ( in_nomouse->integer == 0 ) - Sys_StartMouseInput(); - else - Com_Printf( " in_nomouse is set, skipping.\n" ); - - Com_Printf( "------------------------------------\n" ); -} - -void Sys_ShutdownInput(void) -{ - // no input with dedicated servers - if ( !com_dedicated || com_dedicated->integer ) { - return; - } - - Com_Printf( "------- Input Shutdown -------\n" ); - if ( !inputActive ) { - return; - } - inputActive = qfalse; - - if (mouseactive) - Sys_StopMouseInput(); - - Com_Printf( "------------------------------\n" ); -} - -static void Sys_LockMouseInInputRect(CGRect rect) -{ - CGPoint center; - - center.x = rect.origin.x + rect.size.width / 2.0; - center.y = rect.origin.y + rect.size.height / 2.0; - - // Now, put the mouse in the middle of the input rect (anywhere over it would do) - // and don't allow it to move. This means that the user won't be able to accidentally - // select another application. - Sys_PreventMouseMovement(center); -} - -extern void Sys_UpdateWindowMouseInputRect(void); - -static void Sys_StartMouseInput() -{ - NXEventHandle eventStatus; - CGMouseDelta dx, dy; - - if (mouseactive) { - //Com_Printf("**** Attempted to start mouse input while already started\n"); - return; - } - - Com_Printf("Starting mouse input\n"); - - mouseactive = qtrue; - if (inputRectValid && !glConfig.isFullscreen) - // Make sure that if window moved we don't hose the user... - Sys_UpdateWindowMouseInputRect(); - - Sys_LockMouseInInputRect(inputRect); - - // Grab any mouse delta information to reset the last delta buffer - CGGetLastMouseDelta(&dx, &dy); - - // Turn off mouse scaling - if (in_disableOSMouseScaling->integer==0 && (eventStatus = NXOpenEventStatus())) { - NXMouseScaling newScaling; - - NXGetMouseScaling(eventStatus, &originalScaling); - newScaling.numScaleLevels = 1; - newScaling.scaleThresholds[0] = 1; - newScaling.scaleFactors[0] = -1; - NXSetMouseScaling(eventStatus, &newScaling); - NXCloseEventStatus(eventStatus); - } - - [NSCursor hide]; -} - -static void Sys_StopMouseInput() -{ - NXEventHandle eventStatus; - if (!mouseactive) { - //Com_Printf("**** Attempted to stop mouse input while already stopped\n"); - return; - } - - Com_Printf("Stopping mouse input\n"); - - // Restore mouse scaling - if (in_disableOSMouseScaling->integer == 0 && (eventStatus = NXOpenEventStatus())) { - NXSetMouseScaling(eventStatus, &originalScaling); - NXCloseEventStatus(eventStatus); - } - - mouseactive = qfalse; - Sys_ReenableMouseMovement(); - - [NSCursor unhide]; -} - -//=========================================================================== - -#include -#include -#include - -static char *Sys_ConsoleInput(void) -{ - extern qboolean stdin_active; - static char text[256]; - int len; - fd_set fdset; - struct timeval timeout; - - if (!com_dedicated || !com_dedicated->integer) - return NULL; - - if (!stdin_active) - return NULL; - - FD_ZERO(&fdset); - FD_SET(fileno(stdin), &fdset); - timeout.tv_sec = 0; - timeout.tv_usec = 0; - if (select (1, &fdset, NULL, NULL, &timeout) == -1 || !FD_ISSET(fileno(stdin), &fdset)) - return NULL; - - len = read (fileno(stdin), text, sizeof(text)); - if (len == 0) { // eof! - stdin_active = qfalse; - return NULL; - } - - if (len < 1) - return NULL; - text[len-1] = 0; // rip off the /n and terminate - - return text; -} - -//=========================================================================== -// Mouse input -//=========================================================================== - -#define MAX_DISPLAYS 128 - -CGDirectDisplayID Sys_DisplayToUse(void) -{ - static BOOL gotDisplay = NO; - static CGDirectDisplayID displayToUse; - - cvar_t *vid_screen; - CGDisplayErr err; - CGDirectDisplayID displays[MAX_DISPLAYS]; - CGDisplayCount displayCount; - int displayIndex; - - if (gotDisplay) - return displayToUse; - gotDisplay = YES; - - err = CGGetActiveDisplayList(MAX_DISPLAYS, displays, &displayCount); - if (err != CGDisplayNoErr) - Sys_Error("Cannot get display list -- CGGetActiveDisplayList returned %d.\n", err); - - // -1, the default, means to use the main screen - if ((vid_screen = Cvar_Get("vid_screen", "-1", CVAR_ARCHIVE))) - displayIndex = vid_screen->integer; - else - displayIndex = -1; - - if (displayIndex < 0 || displayIndex >= displayCount) - // This is documented (in CGDirectDisplay.h) to be the main display. We want to - // return this instead of kCGDirectMainDisplay since this will allow us to compare - // display IDs. - displayToUse = displays[0]; - else - displayToUse = displays[displayIndex]; - - return displayToUse; -} - -void Sys_SetMouseInputRect(CGRect newRect) -{ - inputRectValid = YES; - inputRect = newRect; - //Com_Printf("**** inputRect = (%f, %f, %f, %f)\n", newRect.origin.x, newRect.origin.y, newRect.size.width, newRect.size.height); - - if (mouseactive) - Sys_LockMouseInInputRect(inputRect); -} - - -static void Sys_ProcessMouseMovedEvent(NSEvent *mouseMovedEvent, int currentTime) -{ - float dx, dy; - - if (!mouseactive) - return; - - dx = [mouseMovedEvent deltaX]; - dy = [mouseMovedEvent deltaY]; - - if (in_showevents->integer) - Com_Printf("MOUSE MOVED: %d, %d\n", dx, dy); - - Sys_QueEvent(currentTime, SE_MOUSE, dx, dy, 0, NULL ); -} - -// If we are 'paused' (i.e., in any state that our normal key bindings aren't in effect), then interpret cmd-h and cmd-tab as hiding the application. -static qboolean maybeHide() -{ - if ((currentModifierFlags & NSCommandKeyMask) == 0) - return qfalse; - - return Sys_Hide(); -} - -static ID_INLINE void sendEventForCharacter(NSEvent *event, unichar character, qboolean keyDownFlag, int currentTime) -{ - if (in_showevents->integer) - Com_Printf("CHARACTER: 0x%02x down=%d\n", character, keyDownFlag); - -#ifdef OMNI_TIMER - if (character == NSF9FunctionKey && !keyDownFlag) { - // Log and reset the root timer. We should currently only have the root on the stack. - OTStackPopRoot(); - OTStackReportResults(NULL); - OTStackReset(); - OTStackPushRoot(rootNode); - } -#endif - - switch (character) { - case 0x03: - Sys_QueEvent(currentTime, SE_KEY, K_KP_ENTER, keyDownFlag, 0, NULL); - break; - case '\b': - case '\177': - Sys_QueEvent(currentTime, SE_KEY, K_BACKSPACE, keyDownFlag, 0, NULL); - if (keyDownFlag) { - Sys_QueEvent(currentTime, SE_CHAR, '\b', 0, 0, NULL); - } - break; - case '\t': - if (maybeHide()) - return; - Sys_QueEvent(currentTime, SE_KEY, K_TAB, keyDownFlag, 0, NULL); - if (keyDownFlag) { - Sys_QueEvent(currentTime, SE_CHAR, '\t', 0, 0, NULL); - } - break; - case '\r': - case '\n': - Sys_QueEvent(currentTime, SE_KEY, K_ENTER, keyDownFlag, 0, NULL); - if (keyDownFlag) { - Sys_QueEvent(currentTime, SE_CHAR, '\r', 0, 0, NULL); - } - break; - case '\033': - Sys_QueEvent(currentTime, SE_KEY, K_ESCAPE, keyDownFlag, 0, NULL); - break; - case ' ': - Sys_QueEvent(currentTime, SE_KEY, K_SPACE, keyDownFlag, 0, NULL); - if (keyDownFlag) { - Sys_QueEvent(currentTime, SE_CHAR, ' ', 0, 0, NULL); - } - break; - case NSUpArrowFunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_UPARROW, keyDownFlag, 0, NULL); - break; - case NSDownArrowFunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_DOWNARROW, keyDownFlag, 0, NULL); - break; - case NSLeftArrowFunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_LEFTARROW, keyDownFlag, 0, NULL); - break; - case NSRightArrowFunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_RIGHTARROW, keyDownFlag, 0, NULL); - break; - case NSF1FunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_F1, keyDownFlag, 0, NULL); - break; - case NSF2FunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_F2, keyDownFlag, 0, NULL); - break; - case NSF3FunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_F3, keyDownFlag, 0, NULL); - break; - case NSF4FunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_F4, keyDownFlag, 0, NULL); - break; - case NSF5FunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_F5, keyDownFlag, 0, NULL); - break; - case NSF6FunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_F6, keyDownFlag, 0, NULL); - break; - case NSF7FunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_F7, keyDownFlag, 0, NULL); - break; - case NSF8FunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_F8, keyDownFlag, 0, NULL); - break; - case NSF9FunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_F9, keyDownFlag, 0, NULL); - break; - case NSF10FunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_F10, keyDownFlag, 0, NULL); - break; - case NSF11FunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_F11, keyDownFlag, 0, NULL); - break; - case NSF12FunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_F12, keyDownFlag, 0, NULL); - break; - case NSF13FunctionKey: - Sys_QueEvent(currentTime, SE_KEY, '`', keyDownFlag, 0, NULL); - if (keyDownFlag) { - Sys_QueEvent(currentTime, SE_CHAR, '`', 0, 0, NULL); - } - break; - case NSInsertFunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_INS, keyDownFlag, 0, NULL); - break; - case NSDeleteFunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_DEL, keyDownFlag, 0, NULL); - break; - case NSPageDownFunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_PGDN, keyDownFlag, 0, NULL); - break; - case NSPageUpFunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_PGUP, keyDownFlag, 0, NULL); - break; - case NSHomeFunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_HOME, keyDownFlag, 0, NULL); - break; - case NSEndFunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_END, keyDownFlag, 0, NULL); - break; - case NSPauseFunctionKey: - Sys_QueEvent(currentTime, SE_KEY, K_PAUSE, keyDownFlag, 0, NULL); - break; - default: - if ([event modifierFlags] & NSNumericPadKeyMask) { - switch (character) { - case '0': - Sys_QueEvent(currentTime, SE_KEY, K_KP_INS, keyDownFlag, 0, NULL); - break; - case '1': - Sys_QueEvent(currentTime, SE_KEY, K_KP_END, keyDownFlag, 0, NULL); - break; - case '2': - Sys_QueEvent(currentTime, SE_KEY, K_KP_DOWNARROW, keyDownFlag, 0, NULL); - break; - case '3': - Sys_QueEvent(currentTime, SE_KEY, K_KP_PGDN, keyDownFlag, 0, NULL); - break; - case '4': - Sys_QueEvent(currentTime, SE_KEY, K_KP_LEFTARROW, keyDownFlag, 0, NULL); - break; - case '5': - Sys_QueEvent(currentTime, SE_KEY, K_KP_5, keyDownFlag, 0, NULL); - break; - case '6': - Sys_QueEvent(currentTime, SE_KEY, K_KP_RIGHTARROW, keyDownFlag, 0, NULL); - break; - case '7': - Sys_QueEvent(currentTime, SE_KEY, K_KP_HOME, keyDownFlag, 0, NULL); - break; - case '8': - Sys_QueEvent(currentTime, SE_KEY, K_KP_UPARROW, keyDownFlag, 0, NULL); - break; - case '9': - Sys_QueEvent(currentTime, SE_KEY, K_KP_PGUP, keyDownFlag, 0, NULL); - break; - case '.': - case ',': - Sys_QueEvent(currentTime, SE_KEY, K_KP_DEL, keyDownFlag, 0, NULL); - break; - case '+': - Sys_QueEvent(currentTime, SE_KEY, K_KP_PLUS, keyDownFlag, 0, NULL); - break; - case '-': - Sys_QueEvent(currentTime, SE_KEY, K_KP_MINUS, keyDownFlag, 0, NULL); - break; - case '*': - Sys_QueEvent(currentTime, SE_KEY, K_KP_STAR, keyDownFlag, 0, NULL); - break; - case '/': - Sys_QueEvent(currentTime, SE_KEY, K_KP_SLASH, keyDownFlag, 0, NULL); - break; - case '=': - Sys_QueEvent(currentTime, SE_KEY, K_KP_EQUALS, keyDownFlag, 0, NULL); - break; - default: - //NSLog(@"TODO: Implement character %d", (int)character); - break; - } - } else if (character >= 'a' && character <= 'z') { - if (character == 'h') { - if (maybeHide()) - return; - } - Sys_QueEvent(currentTime, SE_KEY, character, keyDownFlag, 0, NULL); - if (keyDownFlag) { - Sys_QueEvent(currentTime, SE_CHAR, (char)character, 0, 0, NULL); - } - } else if (character >= 'A' && character <= 'Z') { - Sys_QueEvent(currentTime, SE_KEY, 'a' + (character - 'A'), keyDownFlag, 0, NULL); - if (keyDownFlag) { - Sys_QueEvent(currentTime, SE_CHAR, character, 0, 0, NULL); - } - } else if (character >= 32 && character < 127) { - Sys_QueEvent(currentTime, SE_KEY, character, keyDownFlag, 0, NULL); - if (keyDownFlag) { - Sys_QueEvent(currentTime, SE_CHAR, (char)character, 0, 0, NULL); - } - } else { - //NSLog(@"TODO: Implement character %d", (int)character); - } - break; - } -} - -static ID_INLINE void processKeyEvent(NSEvent *keyEvent, qboolean keyDownFlag, int currentTime) -{ - NSEventType eventType; - NSString *characters; - unsigned int characterIndex, characterCount; - - eventType = [keyEvent type]; - characters = [keyEvent charactersIgnoringModifiers]; - characterCount = [characters length]; - - for (characterIndex = 0; characterIndex < characterCount; characterIndex++) { - sendEventForCharacter(keyEvent, [characters characterAtIndex:characterIndex], keyDownFlag, currentTime); - } -} - -static ID_INLINE void sendEventForMaskChangeInFlags(int quakeKey, unsigned int modifierMask, unsigned int newModifierFlags, int currentTime) -{ - BOOL oldHadModifier, newHasModifier; - - oldHadModifier = (currentModifierFlags & modifierMask) != 0; - newHasModifier = (newModifierFlags & modifierMask) != 0; - if (oldHadModifier != newHasModifier) { - // NSLog(@"Key %d posted for modifier mask modifierMask", quakeKey); - Sys_QueEvent(currentTime, SE_KEY, quakeKey, newHasModifier, 0, NULL); - } -} - -static ID_INLINE void processFlagsChangedEvent(NSEvent *flagsChangedEvent, int currentTime) -{ - int newModifierFlags; - - newModifierFlags = [flagsChangedEvent modifierFlags]; - sendEventForMaskChangeInFlags(K_COMMAND, NSCommandKeyMask, newModifierFlags, currentTime); - sendEventForMaskChangeInFlags(K_CAPSLOCK, NSAlphaShiftKeyMask, newModifierFlags, currentTime); - sendEventForMaskChangeInFlags(K_ALT, NSAlternateKeyMask, newModifierFlags, currentTime); - sendEventForMaskChangeInFlags(K_CTRL, NSControlKeyMask, newModifierFlags, currentTime); - sendEventForMaskChangeInFlags(K_SHIFT, NSShiftKeyMask, newModifierFlags, currentTime); - currentModifierFlags = newModifierFlags; -} - -static ID_INLINE void processSystemDefinedEvent(NSEvent *systemDefinedEvent, int currentTime) -{ - static int oldButtons = 0; - int buttonsDelta; - int buttons; - int isDown; - - if ([systemDefinedEvent subtype] == 7) { - - if (!mouseactive) - return; - - - buttons = [systemDefinedEvent data2]; - buttonsDelta = oldButtons ^ buttons; - - //Com_Printf("uberbuttons: %08lx %08lx\n",buttonsDelta,buttons); - - - if (buttonsDelta & 1) { - isDown = buttons & 1; - Sys_QueEvent(currentTime, SE_KEY, K_MOUSE1, isDown, 0, NULL); - if (in_showevents->integer) { - Com_Printf("MOUSE2: %s\n", isDown ? "down" : "up"); - } - } - - if (buttonsDelta & 2) { - isDown = buttons & 2; - Sys_QueEvent(currentTime, SE_KEY, K_MOUSE2, isDown, 0, NULL); - if (in_showevents->integer) { - Com_Printf("MOUSE3: %s\n", isDown ? "down" : "up"); - } - } - - if (buttonsDelta & 4) { - isDown = buttons & 4; - Sys_QueEvent(currentTime, SE_KEY, K_MOUSE3, isDown, 0, NULL); - if (in_showevents->integer) { - Com_Printf("MOUSE1: %s\n", isDown ? "down" : "up"); - } - } - - if (buttonsDelta & 8) { - isDown = buttons & 8; - Sys_QueEvent(currentTime, SE_KEY, K_MOUSE4, isDown, 0, NULL); - if (in_showevents->integer) { - Com_Printf("MOUSE4: %s\n", isDown ? "down" : "up"); - } - } - - if (buttonsDelta & 16) { - isDown = buttons & 16; - Sys_QueEvent(currentTime, SE_KEY, K_MOUSE5, isDown, 0, NULL); - if (in_showevents->integer) { - Com_Printf("MOUSE5: %s\n", isDown ? "down" : "up"); - } - } - - oldButtons = buttons; - } -} - -static ID_INLINE void processEvent(NSEvent *event, int currentTime) -{ - NSEventType eventType; - - if (!inputActive) - return; - - eventType = [event type]; - - if (in_showevents->integer) - NSLog(@"event = %@", event); - - switch (eventType) { - // These six event types are ignored since we do all of our mouse down/up process via the uber-mouse system defined event. We have to accept these events however since they get enqueued and the queue will fill up if we don't. - case NSLeftMouseDown: - //Sys_QueEvent(currentTime, SE_KEY, K_MOUSE1, qtrue, 0, NULL); - return; - case NSLeftMouseUp: - //Sys_QueEvent(currentTime, SE_KEY, K_MOUSE1, qfalse, 0, NULL); - return; - case NSRightMouseDown: - //Sys_QueEvent(currentTime, SE_KEY, K_MOUSE2, qtrue, 0, NULL); - return; - case NSRightMouseUp: - //Sys_QueEvent(currentTime, SE_KEY, K_MOUSE2, qfalse, 0, NULL); - return; - case 25: // other mouse down - return; - case 26: // other mouse up - return; - - case NSMouseMoved: - case NSLeftMouseDragged: - case NSRightMouseDragged: - case 27: // other mouse dragged - Sys_ProcessMouseMovedEvent(event, currentTime); - return; - case NSKeyDown: - case NSKeyUp: - processKeyEvent(event, eventType == NSKeyDown, currentTime); - return; - case NSFlagsChanged: - processFlagsChangedEvent(event, currentTime); - return; - case NSSystemDefined: - processSystemDefinedEvent(event, currentTime); - return; - case NSScrollWheel: - if ([event deltaY] < 0.0) { - Sys_QueEvent(currentTime, SE_KEY, K_MWHEELDOWN, qtrue, 0, NULL ); - Sys_QueEvent(currentTime, SE_KEY, K_MWHEELDOWN, qfalse, 0, NULL ); - } else { - Sys_QueEvent(currentTime, SE_KEY, K_MWHEELUP, qtrue, 0, NULL ); - Sys_QueEvent(currentTime, SE_KEY, K_MWHEELUP, qfalse, 0, NULL ); - } - return; - default: - break; - } - [NSApp sendEvent:event]; -} - -static void Sys_SendKeyEvents(int currentTime) -{ -#ifndef DEDICATED - NSEvent *event; - NSDate *timeout; - extern float SNDDMA_GetBufferDuration(); - - timeout = distantPast; - if (Sys_IsHidden) - timeout = [NSDate dateWithTimeIntervalSinceNow: 0.25 * SNDDMA_GetBufferDuration()]; - - // This gets call regardless of whether inputActive is true or not. This is important since we need to be poking the event queue in order for the unhide event to make its way through the system. This means that when we hide, we can just shut down the input system and reeanbled it when we unhide. - while ((event = [NSApp nextEventMatchingMask: NSAnyEventMask - untilDate: timeout - inMode: NSDefaultRunLoopMode - dequeue:YES])) { - if (Sys_IsHidden) { - // Just let NSApp handle events so that we'll get the app activation event - [NSApp sendEvent: event]; - timeout = [NSDate dateWithTimeIntervalSinceNow: 0.1]; - } else { - static int lastEventTime = 0; - static BOOL lastEventTimeValid = NO; - - // Mac OS X 10.0.3 has a bug where the if the monitor goes to sleep in fullscreen GL mode, the gamma won't be restored. We'll restore the gamma if there is a pause while in the game of more than 10 seconds. We don't do this on the 'Sys_IsHidden' branch since unhiding will restore the monitor gamma. - if ((currentTime - lastEventTime > 1 * 1000) && lastEventTimeValid) { - //Com_Printf("Restoring monitor gamma after being idle for %f seconds.\n", (currentTime - lastEventTime) / 1000.0); - [NSCursor hide]; - Sys_SetScreenFade(&glw_state.inGameTable, 1.0); - } - lastEventTime = [event timestamp] * 1000.0; //currentTime; - lastEventTimeValid = YES; - - processEvent(event, lastEventTime); - } - } -#endif -} - -/* -======================================================================== - -EVENT LOOP - -======================================================================== -*/ - -extern qboolean Sys_GetPacket ( netadr_t *net_from, msg_t *net_message ); - -#define MAX_QUED_EVENTS 256 -#define MASK_QUED_EVENTS ( MAX_QUED_EVENTS - 1 ) - -static sysEvent_t eventQue[MAX_QUED_EVENTS]; -static int eventHead, eventTail; -static byte sys_packetReceived[MAX_MSGLEN]; - -/* -================ -Sys_QueEvent - -A time of 0 will get the current time -Ptr should either be null, or point to a block of data that can -be freed by the game later. -================ -*/ -void Sys_QueEvent( int time, sysEventType_t type, int value, int value2, int ptrLength, void *ptr ) { - sysEvent_t *ev; - int i,j; -#ifndef DEDICATED - if (in_showevents->integer) - NSLog(@"EVENT ENQUEUE: time=%d type=%d value=0x%08x value2=0x%08x\n", time, type, value, value2); -#endif - - if ( eventHead - eventTail >= MAX_QUED_EVENTS ) { - Com_Printf("Sys_QueEvent: overflow\n"); - } - - if ( !time ) { - time = Sys_Milliseconds(); - } - - // insert it by time - for ( i = eventTail ; i < eventHead ; i++ ) { - ev = &eventQue[ i & MASK_QUED_EVENTS ]; - if ( ev->evTime > time ) { - break; - } - } - - // insert before i - for ( j = eventHead ; j > i ; j-- ) { - eventQue[ j & MASK_QUED_EVENTS ] = eventQue[ (j-1) & MASK_QUED_EVENTS ]; - } - ev = &eventQue[ i & MASK_QUED_EVENTS ]; - - eventHead++; - - ev->evTime = time; - ev->evType = type; - ev->evValue = value; - ev->evValue2 = value2; - ev->evPtrLength = ptrLength; - ev->evPtr = ptr; -} - -/* -================ -Sys_GetEvent - -================ -*/ -sysEvent_t Sys_GetEvent( void ) -{ - sysEvent_t ev; - char *s; - msg_t netmsg; - netadr_t adr; - int currentTime; - - // return if we have data - if (eventHead > eventTail) { - eventTail++; - return eventQue[ ( eventTail - 1 ) & MASK_QUED_EVENTS ]; - } - - // The queue must be empty. Check all of the event sources. If the events are - // already in the queue, we can't imply any real ordering, so we'll avoid extra - // system calls and give them all the same time. - currentTime = Sys_Milliseconds(); - - // Check for mouse and keyboard events - Sys_SendKeyEvents(currentTime); - - // check for console commands - s = Sys_ConsoleInput(); - if ( s ) { - char *b; - int len; - - len = strlen( s ) + 1; - b = Z_Malloc( len ); - strcpy( b, s ); - Sys_QueEvent( currentTime, SE_CONSOLE, 0, 0, len, b ); - } - - - // During debugging it is sometimes usefull to be able to start/stop mouse input. - // Don't turn on the input when we've disabled it because we're hidden, however. - if (!com_dedicated->integer) { - if (in_nomouse->integer == mouseactive && !Sys_IsHidden) { - if (in_nomouse->integer) - Sys_StopMouseInput(); - else - Sys_StartMouseInput(); - } - } - - // check for network packets - MSG_Init( &netmsg, sys_packetReceived, sizeof( sys_packetReceived ) ); - if ( Sys_GetPacket ( &adr, &netmsg ) ) { - netadr_t *buf; - int len; - - // copy out to a seperate buffer for qeueing - len = sizeof( netadr_t ) + netmsg.cursize; - buf = Z_Malloc( len ); - *buf = adr; - memcpy( buf+1, netmsg.data, netmsg.cursize ); - Sys_QueEvent( currentTime, SE_PACKET, 0, 0, len, buf ); - } - - // If we got an event, return it - if (eventHead > eventTail) { - eventTail++; - return eventQue[ ( eventTail - 1 ) & MASK_QUED_EVENTS ]; - } - - // Otherwise, return an empty event to indicate that there are no events pending. - memset( &ev, 0, sizeof( ev ) ); - ev.evTime = currentTime; - - return ev; -} - - - diff --git a/code/macosx/macosx_local.h b/code/macosx/macosx_local.h deleted file mode 100644 index d6eaa1ed..00000000 --- a/code/macosx/macosx_local.h +++ /dev/null @@ -1,129 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -#ifndef __macosx_local_h -#define __macosx_local_h - -#include "qcommon.h" - -#ifdef __cplusplus -typedef void NSDictionary; -typedef void NSOpenGLContext; -typedef void NSWindow; - -extern "C" { -#else -#import -@class NSEvent, NSOpenGLContext, NSWindow; -#endif - -#include -#include - -// In macosx_input.m -extern void Sys_InitInput(void); -extern void Sys_ShutdownInput(void); -extern void Sys_SetMouseInputRect(CGRect newRect); -extern CGDirectDisplayID Sys_DisplayToUse(void); - -// In macosx_sys.m -extern void Sys_QueEvent(int time, sysEventType_t type, int value, int value2, int ptrLength, void *ptr); -extern void Sys_AnnoyingBanner(); - -// In macosx_glimp.m -extern qboolean Sys_IsHidden; -extern qboolean Sys_Hide(); -extern qboolean Sys_Unhide(); - -typedef struct { - CGDirectDisplayID display; - CGTableCount tableSize; - CGGammaValue *red; - CGGammaValue *blue; - CGGammaValue *green; -} glwgamma_t; - -typedef struct -{ - CGDirectDisplayID display; - NSDictionary *desktopMode; - NSDictionary *gameMode; - - CGDisplayCount displayCount; - glwgamma_t *originalDisplayGammaTables; - glwgamma_t inGameTable; - glwgamma_t tempTable; - - NSOpenGLContext *_ctx; - CGLContextObj _cgl_ctx; - qboolean _ctx_is_current; - NSWindow *window; - - FILE *log_fp; - - unsigned int bufferSwapCount; - unsigned int glPauseCount; -} glwstate_t; - -extern glwstate_t glw_state; - -#define OSX_SetGLContext(context) \ -do { \ - NSOpenGLContext *_context = (context); \ - glw_state._ctx = _context; \ - glw_state._cgl_ctx = [_context cglContext]; \ -} while (0) - -#define OSX_GetNSGLContext() glw_state._ctx -#define OSX_GetCGLContext() glw_state._cgl_ctx - -#define OSX_GLContextIsCurrent() glw_state._ctx_is_current -#define OSX_GLContextSetCurrent() \ -do { \ - [glw_state._ctx makeCurrentContext]; \ - glw_state._ctx_is_current = (glw_state._ctx != nil); \ -} while (0) - -#define OSX_GLContextClearCurrent() \ -do { \ - [NSOpenGLContext clearCurrentContext]; \ - glw_state._ctx_is_current = NO; \ -} while (0) - - -extern void Sys_PauseGL(); -extern void Sys_ResumeGL(); - - -#import "macosx_timers.h" - -#ifdef OMNI_TIMER -extern OTStampList glThreadStampList; -#define GLSTAMP(name, data) OTStampListAddStamp(glThreadStampList, name, data) -#else -#define GLSTAMP(name, data) -#endif - -#ifdef __cplusplus -} -#endif - -#endif // __macosx_local_h diff --git a/code/macosx/macosx_qgl.h b/code/macosx/macosx_qgl.h deleted file mode 100644 index 92b736d5..00000000 --- a/code/macosx/macosx_qgl.h +++ /dev/null @@ -1,5095 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -/**** This file is autogenerated. Run GenerateQGL.pl to update it ****/ - -#ifdef QGL_LOG_GL_CALLS -extern unsigned int QGLLogGLCalls; -extern FILE *QGLDebugFile(void); -#endif - -extern void QGLCheckError(const char *message); -extern unsigned int QGLBeginStarted; - -// This has to be done to avoid infinite recursion between our glGetError wrapper and QGLCheckError() -static ID_INLINE GLenum _glGetError(void) { - return glGetError(); -} - -// void glAccum (GLenum op, GLfloat value); -static ID_INLINE void qglAccum(GLenum op, GLfloat value) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glAccum(op=%lu, value=%f)\n", op, value); -#endif - glAccum(op, value); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glAccum"); -#endif -} - -// void glAlphaFunc (GLenum func, GLclampf ref); -static ID_INLINE void qglAlphaFunc(GLenum func, GLclampf ref) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glAlphaFunc(func=%lu, ref=%f)\n", func, ref); -#endif - glAlphaFunc(func, ref); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glAlphaFunc"); -#endif -} - -// GLboolean glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences); -static ID_INLINE GLboolean qglAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences) -{ - GLboolean returnValue; -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glAreTexturesResident(n=%ld, textures=%p, residences=%p)\n", n, textures, residences); -#endif - returnValue = glAreTexturesResident(n, textures, residences); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glAreTexturesResident"); -#endif - return returnValue; -} - -// void glArrayElement (GLint i); -static ID_INLINE void qglArrayElement(GLint i) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glArrayElement(i=%ld)\n", i); -#endif - glArrayElement(i); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glArrayElement"); -#endif -} - -// void glBegin (GLenum mode); -static ID_INLINE void qglBegin(GLenum mode) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glBegin(mode=%lu)\n", mode); -#endif - glBegin(mode); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - QGLBeginStarted++; - if (!QGLBeginStarted) - QGLCheckError("glBegin"); -#endif -} - -// void glBindTexture (GLenum target, GLuint texture); -static ID_INLINE void qglBindTexture(GLenum target, GLuint texture) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glBindTexture(target=%lu, texture=%lu)\n", target, texture); -#endif - glBindTexture(target, texture); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glBindTexture"); -#endif -} - -// void glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); -static ID_INLINE void qglBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glBitmap(width=%ld, height=%ld, xorig=%f, yorig=%f, xmove=%f, ymove=%f, bitmap=%p)\n", width, height, xorig, yorig, xmove, ymove, bitmap); -#endif - glBitmap(width, height, xorig, yorig, xmove, ymove, bitmap); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glBitmap"); -#endif -} - -// void glBlendFunc (GLenum sfactor, GLenum dfactor); -static ID_INLINE void qglBlendFunc(GLenum sfactor, GLenum dfactor) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glBlendFunc(sfactor=%lu, dfactor=%lu)\n", sfactor, dfactor); -#endif - glBlendFunc(sfactor, dfactor); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glBlendFunc"); -#endif -} - -// void glCallList (GLuint list); -static ID_INLINE void qglCallList(GLuint list) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glCallList(list=%lu)\n", list); -#endif - glCallList(list); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glCallList"); -#endif -} - -// void glCallLists (GLsizei n, GLenum type, const GLvoid *lists); -static ID_INLINE void qglCallLists(GLsizei n, GLenum type, const GLvoid *lists) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glCallLists(n=%ld, type=%lu, lists=%p)\n", n, type, lists); -#endif - glCallLists(n, type, lists); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glCallLists"); -#endif -} - -// void glClear (GLbitfield mask); -static ID_INLINE void qglClear(GLbitfield mask) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glClear(mask=%lu)\n", mask); -#endif - glClear(mask); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glClear"); -#endif -} - -// void glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -static ID_INLINE void qglClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glClearAccum(red=%f, green=%f, blue=%f, alpha=%f)\n", red, green, blue, alpha); -#endif - glClearAccum(red, green, blue, alpha); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glClearAccum"); -#endif -} - -// void glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -static ID_INLINE void qglClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glClearColor(red=%f, green=%f, blue=%f, alpha=%f)\n", red, green, blue, alpha); -#endif - glClearColor(red, green, blue, alpha); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glClearColor"); -#endif -} - -// void glClearDepth (GLclampd depth); -static ID_INLINE void qglClearDepth(GLclampd depth) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glClearDepth(depth=%f)\n", depth); -#endif - glClearDepth(depth); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glClearDepth"); -#endif -} - -// void glClearIndex (GLfloat c); -static ID_INLINE void qglClearIndex(GLfloat c) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glClearIndex(c=%f)\n", c); -#endif - glClearIndex(c); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glClearIndex"); -#endif -} - -// void glClearStencil (GLint s); -static ID_INLINE void qglClearStencil(GLint s) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glClearStencil(s=%ld)\n", s); -#endif - glClearStencil(s); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glClearStencil"); -#endif -} - -// void glClipPlane (GLenum plane, const GLdouble *equation); -static ID_INLINE void qglClipPlane(GLenum plane, const GLdouble *equation) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glClipPlane(plane=%lu, equation=%p)\n", plane, equation); -#endif - glClipPlane(plane, equation); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glClipPlane"); -#endif -} - -// void glColor3b (GLbyte red, GLbyte green, GLbyte blue); -static ID_INLINE void qglColor3b(GLbyte red, GLbyte green, GLbyte blue) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3b(red=%d, green=%d, blue=%d)\n", red, green, blue); -#endif - glColor3b(red, green, blue); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3b"); -#endif -} - -// void glColor3bv (const GLbyte *v); -static ID_INLINE void qglColor3bv(const GLbyte *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3bv(v=%p)\n", v); -#endif - glColor3bv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3bv"); -#endif -} - -// void glColor3d (GLdouble red, GLdouble green, GLdouble blue); -static ID_INLINE void qglColor3d(GLdouble red, GLdouble green, GLdouble blue) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3d(red=%f, green=%f, blue=%f)\n", red, green, blue); -#endif - glColor3d(red, green, blue); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3d"); -#endif -} - -// void glColor3dv (const GLdouble *v); -static ID_INLINE void qglColor3dv(const GLdouble *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3dv(v=%p)\n", v); -#endif - glColor3dv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3dv"); -#endif -} - -// void glColor3f (GLfloat red, GLfloat green, GLfloat blue); -static ID_INLINE void qglColor3f(GLfloat red, GLfloat green, GLfloat blue) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3f(red=%f, green=%f, blue=%f)\n", red, green, blue); -#endif - glColor3f(red, green, blue); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3f"); -#endif -} - -// void glColor3fv (const GLfloat *v); -static ID_INLINE void qglColor3fv(const GLfloat *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3fv(v=%p)\n", v); -#endif - glColor3fv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3fv"); -#endif -} - -// void glColor3i (GLint red, GLint green, GLint blue); -static ID_INLINE void qglColor3i(GLint red, GLint green, GLint blue) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3i(red=%ld, green=%ld, blue=%ld)\n", red, green, blue); -#endif - glColor3i(red, green, blue); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3i"); -#endif -} - -// void glColor3iv (const GLint *v); -static ID_INLINE void qglColor3iv(const GLint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3iv(v=%p)\n", v); -#endif - glColor3iv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3iv"); -#endif -} - -// void glColor3s (GLshort red, GLshort green, GLshort blue); -static ID_INLINE void qglColor3s(GLshort red, GLshort green, GLshort blue) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3s(red=%d, green=%d, blue=%d)\n", red, green, blue); -#endif - glColor3s(red, green, blue); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3s"); -#endif -} - -// void glColor3sv (const GLshort *v); -static ID_INLINE void qglColor3sv(const GLshort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3sv(v=%p)\n", v); -#endif - glColor3sv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3sv"); -#endif -} - -// void glColor3ub (GLubyte red, GLubyte green, GLubyte blue); -static ID_INLINE void qglColor3ub(GLubyte red, GLubyte green, GLubyte blue) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3ub(red=%u, green=%u, blue=%u)\n", red, green, blue); -#endif - glColor3ub(red, green, blue); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3ub"); -#endif -} - -// void glColor3ubv (const GLubyte *v); -static ID_INLINE void qglColor3ubv(const GLubyte *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3ubv(v=%p)\n", v); -#endif - glColor3ubv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3ubv"); -#endif -} - -// void glColor3ui (GLuint red, GLuint green, GLuint blue); -static ID_INLINE void qglColor3ui(GLuint red, GLuint green, GLuint blue) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3ui(red=%lu, green=%lu, blue=%lu)\n", red, green, blue); -#endif - glColor3ui(red, green, blue); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3ui"); -#endif -} - -// void glColor3uiv (const GLuint *v); -static ID_INLINE void qglColor3uiv(const GLuint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3uiv(v=%p)\n", v); -#endif - glColor3uiv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3uiv"); -#endif -} - -// void glColor3us (GLushort red, GLushort green, GLushort blue); -static ID_INLINE void qglColor3us(GLushort red, GLushort green, GLushort blue) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3us(red=%u, green=%u, blue=%u)\n", red, green, blue); -#endif - glColor3us(red, green, blue); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3us"); -#endif -} - -// void glColor3usv (const GLushort *v); -static ID_INLINE void qglColor3usv(const GLushort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor3usv(v=%p)\n", v); -#endif - glColor3usv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor3usv"); -#endif -} - -// void glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); -static ID_INLINE void qglColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4b(red=%d, green=%d, blue=%d, alpha=%d)\n", red, green, blue, alpha); -#endif - glColor4b(red, green, blue, alpha); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4b"); -#endif -} - -// void glColor4bv (const GLbyte *v); -static ID_INLINE void qglColor4bv(const GLbyte *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4bv(v=%p)\n", v); -#endif - glColor4bv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4bv"); -#endif -} - -// void glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); -static ID_INLINE void qglColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4d(red=%f, green=%f, blue=%f, alpha=%f)\n", red, green, blue, alpha); -#endif - glColor4d(red, green, blue, alpha); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4d"); -#endif -} - -// void glColor4dv (const GLdouble *v); -static ID_INLINE void qglColor4dv(const GLdouble *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4dv(v=%p)\n", v); -#endif - glColor4dv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4dv"); -#endif -} - -// void glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); -static ID_INLINE void qglColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4f(red=%f, green=%f, blue=%f, alpha=%f)\n", red, green, blue, alpha); -#endif - glColor4f(red, green, blue, alpha); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4f"); -#endif -} - -// void glColor4fv (const GLfloat *v); -static ID_INLINE void qglColor4fv(const GLfloat *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4fv(v=%p)\n", v); -#endif - glColor4fv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4fv"); -#endif -} - -// void glColor4i (GLint red, GLint green, GLint blue, GLint alpha); -static ID_INLINE void qglColor4i(GLint red, GLint green, GLint blue, GLint alpha) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4i(red=%ld, green=%ld, blue=%ld, alpha=%ld)\n", red, green, blue, alpha); -#endif - glColor4i(red, green, blue, alpha); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4i"); -#endif -} - -// void glColor4iv (const GLint *v); -static ID_INLINE void qglColor4iv(const GLint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4iv(v=%p)\n", v); -#endif - glColor4iv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4iv"); -#endif -} - -// void glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha); -static ID_INLINE void qglColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4s(red=%d, green=%d, blue=%d, alpha=%d)\n", red, green, blue, alpha); -#endif - glColor4s(red, green, blue, alpha); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4s"); -#endif -} - -// void glColor4sv (const GLshort *v); -static ID_INLINE void qglColor4sv(const GLshort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4sv(v=%p)\n", v); -#endif - glColor4sv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4sv"); -#endif -} - -// void glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); -static ID_INLINE void qglColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4ub(red=%u, green=%u, blue=%u, alpha=%u)\n", red, green, blue, alpha); -#endif - glColor4ub(red, green, blue, alpha); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4ub"); -#endif -} - -// void glColor4ubv (const GLubyte *v); -static ID_INLINE void qglColor4ubv(const GLubyte *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4ubv(v=%p)\n", v); -#endif - glColor4ubv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4ubv"); -#endif -} - -// void glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha); -static ID_INLINE void qglColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4ui(red=%lu, green=%lu, blue=%lu, alpha=%lu)\n", red, green, blue, alpha); -#endif - glColor4ui(red, green, blue, alpha); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4ui"); -#endif -} - -// void glColor4uiv (const GLuint *v); -static ID_INLINE void qglColor4uiv(const GLuint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4uiv(v=%p)\n", v); -#endif - glColor4uiv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4uiv"); -#endif -} - -// void glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha); -static ID_INLINE void qglColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4us(red=%u, green=%u, blue=%u, alpha=%u)\n", red, green, blue, alpha); -#endif - glColor4us(red, green, blue, alpha); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4us"); -#endif -} - -// void glColor4usv (const GLushort *v); -static ID_INLINE void qglColor4usv(const GLushort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColor4usv(v=%p)\n", v); -#endif - glColor4usv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColor4usv"); -#endif -} - -// void glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -static ID_INLINE void qglColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColorMask(red=%u, green=%u, blue=%u, alpha=%u)\n", red, green, blue, alpha); -#endif - glColorMask(red, green, blue, alpha); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColorMask"); -#endif -} - -// void glColorMaterial (GLenum face, GLenum mode); -static ID_INLINE void qglColorMaterial(GLenum face, GLenum mode) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColorMaterial(face=%lu, mode=%lu)\n", face, mode); -#endif - glColorMaterial(face, mode); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColorMaterial"); -#endif -} - -// void glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -static ID_INLINE void qglColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glColorPointer(size=%ld, type=%lu, stride=%ld, pointer=%p)\n", size, type, stride, pointer); -#endif - glColorPointer(size, type, stride, pointer); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glColorPointer"); -#endif -} - -// void glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); -static ID_INLINE void qglCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glCopyPixels(x=%ld, y=%ld, width=%ld, height=%ld, type=%lu)\n", x, y, width, height, type); -#endif - glCopyPixels(x, y, width, height, type); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glCopyPixels"); -#endif -} - -// void glCopyTexImage1D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border); -static ID_INLINE void qglCopyTexImage1D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glCopyTexImage1D(target=%lu, level=%ld, internalFormat=%lu, x=%ld, y=%ld, width=%ld, border=%ld)\n", target, level, internalFormat, x, y, width, border); -#endif - glCopyTexImage1D(target, level, internalFormat, x, y, width, border); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glCopyTexImage1D"); -#endif -} - -// void glCopyTexImage2D (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -static ID_INLINE void qglCopyTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glCopyTexImage2D(target=%lu, level=%ld, internalFormat=%lu, x=%ld, y=%ld, width=%ld, height=%ld, border=%ld)\n", target, level, internalFormat, x, y, width, height, border); -#endif - glCopyTexImage2D(target, level, internalFormat, x, y, width, height, border); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glCopyTexImage2D"); -#endif -} - -// void glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -static ID_INLINE void qglCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glCopyTexSubImage1D(target=%lu, level=%ld, xoffset=%ld, x=%ld, y=%ld, width=%ld)\n", target, level, xoffset, x, y, width); -#endif - glCopyTexSubImage1D(target, level, xoffset, x, y, width); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glCopyTexSubImage1D"); -#endif -} - -// void glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -static ID_INLINE void qglCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glCopyTexSubImage2D(target=%lu, level=%ld, xoffset=%ld, yoffset=%ld, x=%ld, y=%ld, width=%ld, height=%ld)\n", target, level, xoffset, yoffset, x, y, width, height); -#endif - glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glCopyTexSubImage2D"); -#endif -} - -// void glCullFace (GLenum mode); -static ID_INLINE void qglCullFace(GLenum mode) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glCullFace(mode=%lu)\n", mode); -#endif - glCullFace(mode); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glCullFace"); -#endif -} - -// void glDeleteLists (GLuint list, GLsizei range); -static ID_INLINE void qglDeleteLists(GLuint list, GLsizei range) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glDeleteLists(list=%lu, range=%ld)\n", list, range); -#endif - glDeleteLists(list, range); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glDeleteLists"); -#endif -} - -// void glDeleteTextures (GLsizei n, const GLuint *textures); -static ID_INLINE void qglDeleteTextures(GLsizei n, const GLuint *textures) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glDeleteTextures(n=%ld, textures=%p)\n", n, textures); -#endif - glDeleteTextures(n, textures); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glDeleteTextures"); -#endif -} - -// void glDepthFunc (GLenum func); -static ID_INLINE void qglDepthFunc(GLenum func) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glDepthFunc(func=%lu)\n", func); -#endif - glDepthFunc(func); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glDepthFunc"); -#endif -} - -// void glDepthMask (GLboolean flag); -static ID_INLINE void qglDepthMask(GLboolean flag) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glDepthMask(flag=%u)\n", flag); -#endif - glDepthMask(flag); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glDepthMask"); -#endif -} - -// void glDepthRange (GLclampd zNear, GLclampd zFar); -static ID_INLINE void qglDepthRange(GLclampd zNear, GLclampd zFar) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glDepthRange(zNear=%f, zFar=%f)\n", zNear, zFar); -#endif - glDepthRange(zNear, zFar); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glDepthRange"); -#endif -} - -// void glDisable (GLenum cap); -static ID_INLINE void qglDisable(GLenum cap) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glDisable(cap=%lu)\n", cap); -#endif - glDisable(cap); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glDisable"); -#endif -} - -// void glDisableClientState (GLenum array); -static ID_INLINE void qglDisableClientState(GLenum array) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glDisableClientState(array=%lu)\n", array); -#endif - glDisableClientState(array); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glDisableClientState"); -#endif -} - -// void glDrawArrays (GLenum mode, GLint first, GLsizei count); -static ID_INLINE void qglDrawArrays(GLenum mode, GLint first, GLsizei count) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glDrawArrays(mode=%lu, first=%ld, count=%ld)\n", mode, first, count); -#endif - glDrawArrays(mode, first, count); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glDrawArrays"); -#endif -} - -// void glDrawBuffer (GLenum mode); -static ID_INLINE void qglDrawBuffer(GLenum mode) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glDrawBuffer(mode=%lu)\n", mode); -#endif - glDrawBuffer(mode); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glDrawBuffer"); -#endif -} - -// void glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); -static ID_INLINE void qglDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glDrawElements(mode=%lu, count=%ld, type=%lu, indices=%p)\n", mode, count, type, indices); -#endif - glDrawElements(mode, count, type, indices); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glDrawElements"); -#endif -} - -// void glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -static ID_INLINE void qglDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glDrawPixels(width=%ld, height=%ld, format=%lu, type=%lu, pixels=%p)\n", width, height, format, type, pixels); -#endif - glDrawPixels(width, height, format, type, pixels); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glDrawPixels"); -#endif -} - -// void glEdgeFlag (GLboolean flag); -static ID_INLINE void qglEdgeFlag(GLboolean flag) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEdgeFlag(flag=%u)\n", flag); -#endif - glEdgeFlag(flag); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEdgeFlag"); -#endif -} - -// void glEdgeFlagPointer (GLsizei stride, const GLvoid *pointer); -static ID_INLINE void qglEdgeFlagPointer(GLsizei stride, const GLvoid *pointer) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEdgeFlagPointer(stride=%ld, pointer=%p)\n", stride, pointer); -#endif - glEdgeFlagPointer(stride, pointer); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEdgeFlagPointer"); -#endif -} - -// void glEdgeFlagv (const GLboolean *flag); -static ID_INLINE void qglEdgeFlagv(const GLboolean *flag) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEdgeFlagv(flag=%p)\n", flag); -#endif - glEdgeFlagv(flag); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEdgeFlagv"); -#endif -} - -// void glEnable (GLenum cap); -static ID_INLINE void qglEnable(GLenum cap) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEnable(cap=%lu)\n", cap); -#endif - glEnable(cap); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEnable"); -#endif -} - -// void glEnableClientState (GLenum array); -static ID_INLINE void qglEnableClientState(GLenum array) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEnableClientState(array=%lu)\n", array); -#endif - glEnableClientState(array); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEnableClientState"); -#endif -} - -// void glEnd (void); -static ID_INLINE void qglEnd(void) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEnd(void)\n"); -#endif - glEnd(); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - QGLBeginStarted--; - if (!QGLBeginStarted) - QGLCheckError("glEnd"); -#endif -} - -// void glEndList (void); -static ID_INLINE void qglEndList(void) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEndList(void)\n"); -#endif - glEndList(); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEndList"); -#endif -} - -// void glEvalCoord1d (GLdouble u); -static ID_INLINE void qglEvalCoord1d(GLdouble u) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEvalCoord1d(u=%f)\n", u); -#endif - glEvalCoord1d(u); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEvalCoord1d"); -#endif -} - -// void glEvalCoord1dv (const GLdouble *u); -static ID_INLINE void qglEvalCoord1dv(const GLdouble *u) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEvalCoord1dv(u=%p)\n", u); -#endif - glEvalCoord1dv(u); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEvalCoord1dv"); -#endif -} - -// void glEvalCoord1f (GLfloat u); -static ID_INLINE void qglEvalCoord1f(GLfloat u) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEvalCoord1f(u=%f)\n", u); -#endif - glEvalCoord1f(u); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEvalCoord1f"); -#endif -} - -// void glEvalCoord1fv (const GLfloat *u); -static ID_INLINE void qglEvalCoord1fv(const GLfloat *u) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEvalCoord1fv(u=%p)\n", u); -#endif - glEvalCoord1fv(u); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEvalCoord1fv"); -#endif -} - -// void glEvalCoord2d (GLdouble u, GLdouble v); -static ID_INLINE void qglEvalCoord2d(GLdouble u, GLdouble v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEvalCoord2d(u=%f, v=%f)\n", u, v); -#endif - glEvalCoord2d(u, v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEvalCoord2d"); -#endif -} - -// void glEvalCoord2dv (const GLdouble *u); -static ID_INLINE void qglEvalCoord2dv(const GLdouble *u) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEvalCoord2dv(u=%p)\n", u); -#endif - glEvalCoord2dv(u); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEvalCoord2dv"); -#endif -} - -// void glEvalCoord2f (GLfloat u, GLfloat v); -static ID_INLINE void qglEvalCoord2f(GLfloat u, GLfloat v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEvalCoord2f(u=%f, v=%f)\n", u, v); -#endif - glEvalCoord2f(u, v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEvalCoord2f"); -#endif -} - -// void glEvalCoord2fv (const GLfloat *u); -static ID_INLINE void qglEvalCoord2fv(const GLfloat *u) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEvalCoord2fv(u=%p)\n", u); -#endif - glEvalCoord2fv(u); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEvalCoord2fv"); -#endif -} - -// void glEvalMesh1 (GLenum mode, GLint i1, GLint i2); -static ID_INLINE void qglEvalMesh1(GLenum mode, GLint i1, GLint i2) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEvalMesh1(mode=%lu, i1=%ld, i2=%ld)\n", mode, i1, i2); -#endif - glEvalMesh1(mode, i1, i2); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEvalMesh1"); -#endif -} - -// void glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); -static ID_INLINE void qglEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEvalMesh2(mode=%lu, i1=%ld, i2=%ld, j1=%ld, j2=%ld)\n", mode, i1, i2, j1, j2); -#endif - glEvalMesh2(mode, i1, i2, j1, j2); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEvalMesh2"); -#endif -} - -// void glEvalPoint1 (GLint i); -static ID_INLINE void qglEvalPoint1(GLint i) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEvalPoint1(i=%ld)\n", i); -#endif - glEvalPoint1(i); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEvalPoint1"); -#endif -} - -// void glEvalPoint2 (GLint i, GLint j); -static ID_INLINE void qglEvalPoint2(GLint i, GLint j) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glEvalPoint2(i=%ld, j=%ld)\n", i, j); -#endif - glEvalPoint2(i, j); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glEvalPoint2"); -#endif -} - -// void glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer); -static ID_INLINE void qglFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glFeedbackBuffer(size=%ld, type=%lu, buffer=%p)\n", size, type, buffer); -#endif - glFeedbackBuffer(size, type, buffer); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glFeedbackBuffer"); -#endif -} - -// void glFinish (void); -static ID_INLINE void qglFinish(void) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glFinish(void)\n"); -#endif - glFinish(); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glFinish"); -#endif -} - -// void glFlush (void); -static ID_INLINE void qglFlush(void) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glFlush(void)\n"); -#endif - glFlush(); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glFlush"); -#endif -} - -// void glFogf (GLenum pname, GLfloat param); -static ID_INLINE void qglFogf(GLenum pname, GLfloat param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glFogf(pname=%lu, param=%f)\n", pname, param); -#endif - glFogf(pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glFogf"); -#endif -} - -// void glFogfv (GLenum pname, const GLfloat *params); -static ID_INLINE void qglFogfv(GLenum pname, const GLfloat *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glFogfv(pname=%lu, params=%p)\n", pname, params); -#endif - glFogfv(pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glFogfv"); -#endif -} - -// void glFogi (GLenum pname, GLint param); -static ID_INLINE void qglFogi(GLenum pname, GLint param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glFogi(pname=%lu, param=%ld)\n", pname, param); -#endif - glFogi(pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glFogi"); -#endif -} - -// void glFogiv (GLenum pname, const GLint *params); -static ID_INLINE void qglFogiv(GLenum pname, const GLint *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glFogiv(pname=%lu, params=%p)\n", pname, params); -#endif - glFogiv(pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glFogiv"); -#endif -} - -// void glFrontFace (GLenum mode); -static ID_INLINE void qglFrontFace(GLenum mode) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glFrontFace(mode=%lu)\n", mode); -#endif - glFrontFace(mode); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glFrontFace"); -#endif -} - -// void glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -static ID_INLINE void qglFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glFrustum(left=%f, right=%f, bottom=%f, top=%f, zNear=%f, zFar=%f)\n", left, right, bottom, top, zNear, zFar); -#endif - glFrustum(left, right, bottom, top, zNear, zFar); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glFrustum"); -#endif -} - -// GLuint glGenLists (GLsizei range); -static ID_INLINE GLuint qglGenLists(GLsizei range) -{ - GLuint returnValue; -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGenLists(range=%ld)\n", range); -#endif - returnValue = glGenLists(range); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGenLists"); -#endif - return returnValue; -} - -// void glGenTextures (GLsizei n, GLuint *textures); -static ID_INLINE void qglGenTextures(GLsizei n, GLuint *textures) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGenTextures(n=%ld, textures=%p)\n", n, textures); -#endif - glGenTextures(n, textures); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGenTextures"); -#endif -} - -// void glGetBooleanv (GLenum pname, GLboolean *params); -static ID_INLINE void qglGetBooleanv(GLenum pname, GLboolean *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetBooleanv(pname=%lu, params=%p)\n", pname, params); -#endif - glGetBooleanv(pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetBooleanv"); -#endif -} - -// void glGetClipPlane (GLenum plane, GLdouble *equation); -static ID_INLINE void qglGetClipPlane(GLenum plane, GLdouble *equation) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetClipPlane(plane=%lu, equation=%p)\n", plane, equation); -#endif - glGetClipPlane(plane, equation); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetClipPlane"); -#endif -} - -// void glGetDoublev (GLenum pname, GLdouble *params); -static ID_INLINE void qglGetDoublev(GLenum pname, GLdouble *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetDoublev(pname=%lu, params=%p)\n", pname, params); -#endif - glGetDoublev(pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetDoublev"); -#endif -} - -// GLenum glGetError (void); -static ID_INLINE GLenum qglGetError(void) -{ - GLenum returnValue; -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetError(void)\n"); -#endif - returnValue = glGetError(); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetError"); -#endif - return returnValue; -} - -// void glGetFloatv (GLenum pname, GLfloat *params); -static ID_INLINE void qglGetFloatv(GLenum pname, GLfloat *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetFloatv(pname=%lu, params=%p)\n", pname, params); -#endif - glGetFloatv(pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetFloatv"); -#endif -} - -// void glGetIntegerv (GLenum pname, GLint *params); -static ID_INLINE void qglGetIntegerv(GLenum pname, GLint *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetIntegerv(pname=%lu, params=%p)\n", pname, params); -#endif - glGetIntegerv(pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetIntegerv"); -#endif -} - -// void glGetLightfv (GLenum light, GLenum pname, GLfloat *params); -static ID_INLINE void qglGetLightfv(GLenum light, GLenum pname, GLfloat *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetLightfv(light=%lu, pname=%lu, params=%p)\n", light, pname, params); -#endif - glGetLightfv(light, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetLightfv"); -#endif -} - -// void glGetLightiv (GLenum light, GLenum pname, GLint *params); -static ID_INLINE void qglGetLightiv(GLenum light, GLenum pname, GLint *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetLightiv(light=%lu, pname=%lu, params=%p)\n", light, pname, params); -#endif - glGetLightiv(light, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetLightiv"); -#endif -} - -// void glGetMapdv (GLenum target, GLenum query, GLdouble *v); -static ID_INLINE void qglGetMapdv(GLenum target, GLenum query, GLdouble *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetMapdv(target=%lu, query=%lu, v=%p)\n", target, query, v); -#endif - glGetMapdv(target, query, v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetMapdv"); -#endif -} - -// void glGetMapfv (GLenum target, GLenum query, GLfloat *v); -static ID_INLINE void qglGetMapfv(GLenum target, GLenum query, GLfloat *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetMapfv(target=%lu, query=%lu, v=%p)\n", target, query, v); -#endif - glGetMapfv(target, query, v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetMapfv"); -#endif -} - -// void glGetMapiv (GLenum target, GLenum query, GLint *v); -static ID_INLINE void qglGetMapiv(GLenum target, GLenum query, GLint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetMapiv(target=%lu, query=%lu, v=%p)\n", target, query, v); -#endif - glGetMapiv(target, query, v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetMapiv"); -#endif -} - -// void glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params); -static ID_INLINE void qglGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetMaterialfv(face=%lu, pname=%lu, params=%p)\n", face, pname, params); -#endif - glGetMaterialfv(face, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetMaterialfv"); -#endif -} - -// void glGetMaterialiv (GLenum face, GLenum pname, GLint *params); -static ID_INLINE void qglGetMaterialiv(GLenum face, GLenum pname, GLint *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetMaterialiv(face=%lu, pname=%lu, params=%p)\n", face, pname, params); -#endif - glGetMaterialiv(face, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetMaterialiv"); -#endif -} - -// void glGetPixelMapfv (GLenum map, GLfloat *values); -static ID_INLINE void qglGetPixelMapfv(GLenum map, GLfloat *values) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetPixelMapfv(map=%lu, values=%p)\n", map, values); -#endif - glGetPixelMapfv(map, values); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetPixelMapfv"); -#endif -} - -// void glGetPixelMapuiv (GLenum map, GLuint *values); -static ID_INLINE void qglGetPixelMapuiv(GLenum map, GLuint *values) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetPixelMapuiv(map=%lu, values=%p)\n", map, values); -#endif - glGetPixelMapuiv(map, values); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetPixelMapuiv"); -#endif -} - -// void glGetPixelMapusv (GLenum map, GLushort *values); -static ID_INLINE void qglGetPixelMapusv(GLenum map, GLushort *values) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetPixelMapusv(map=%lu, values=%p)\n", map, values); -#endif - glGetPixelMapusv(map, values); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetPixelMapusv"); -#endif -} - -// void glGetPointerv (GLenum pname, GLvoid* *params); -static ID_INLINE void qglGetPointerv(GLenum pname, GLvoid* *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetPointerv(pname=%lu, params=%p)\n", pname, params); -#endif - glGetPointerv(pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetPointerv"); -#endif -} - -// void glGetPolygonStipple (GLubyte *mask); -static ID_INLINE void qglGetPolygonStipple(GLubyte *mask) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetPolygonStipple(mask=%p)\n", mask); -#endif - glGetPolygonStipple(mask); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetPolygonStipple"); -#endif -} - -// const GLubyte * glGetString (GLenum name); -static ID_INLINE const GLubyte * qglGetString(GLenum name) -{ - const GLubyte * returnValue; -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetString(name=%lu)\n", name); -#endif - returnValue = glGetString(name); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetString"); -#endif - return returnValue; -} - -// void glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params); -static ID_INLINE void qglGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetTexEnvfv(target=%lu, pname=%lu, params=%p)\n", target, pname, params); -#endif - glGetTexEnvfv(target, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetTexEnvfv"); -#endif -} - -// void glGetTexEnviv (GLenum target, GLenum pname, GLint *params); -static ID_INLINE void qglGetTexEnviv(GLenum target, GLenum pname, GLint *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetTexEnviv(target=%lu, pname=%lu, params=%p)\n", target, pname, params); -#endif - glGetTexEnviv(target, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetTexEnviv"); -#endif -} - -// void glGetTexGendv (GLenum coord, GLenum pname, GLdouble *params); -static ID_INLINE void qglGetTexGendv(GLenum coord, GLenum pname, GLdouble *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetTexGendv(coord=%lu, pname=%lu, params=%p)\n", coord, pname, params); -#endif - glGetTexGendv(coord, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetTexGendv"); -#endif -} - -// void glGetTexGenfv (GLenum coord, GLenum pname, GLfloat *params); -static ID_INLINE void qglGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetTexGenfv(coord=%lu, pname=%lu, params=%p)\n", coord, pname, params); -#endif - glGetTexGenfv(coord, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetTexGenfv"); -#endif -} - -// void glGetTexGeniv (GLenum coord, GLenum pname, GLint *params); -static ID_INLINE void qglGetTexGeniv(GLenum coord, GLenum pname, GLint *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetTexGeniv(coord=%lu, pname=%lu, params=%p)\n", coord, pname, params); -#endif - glGetTexGeniv(coord, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetTexGeniv"); -#endif -} - -// void glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); -static ID_INLINE void qglGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetTexImage(target=%lu, level=%ld, format=%lu, type=%lu, pixels=%p)\n", target, level, format, type, pixels); -#endif - glGetTexImage(target, level, format, type, pixels); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetTexImage"); -#endif -} - -// void glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params); -static ID_INLINE void qglGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetTexLevelParameterfv(target=%lu, level=%ld, pname=%lu, params=%p)\n", target, level, pname, params); -#endif - glGetTexLevelParameterfv(target, level, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetTexLevelParameterfv"); -#endif -} - -// void glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params); -static ID_INLINE void qglGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetTexLevelParameteriv(target=%lu, level=%ld, pname=%lu, params=%p)\n", target, level, pname, params); -#endif - glGetTexLevelParameteriv(target, level, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetTexLevelParameteriv"); -#endif -} - -// void glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); -static ID_INLINE void qglGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetTexParameterfv(target=%lu, pname=%lu, params=%p)\n", target, pname, params); -#endif - glGetTexParameterfv(target, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetTexParameterfv"); -#endif -} - -// void glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); -static ID_INLINE void qglGetTexParameteriv(GLenum target, GLenum pname, GLint *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glGetTexParameteriv(target=%lu, pname=%lu, params=%p)\n", target, pname, params); -#endif - glGetTexParameteriv(target, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glGetTexParameteriv"); -#endif -} - -// void glHint (GLenum target, GLenum mode); -static ID_INLINE void qglHint(GLenum target, GLenum mode) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glHint(target=%lu, mode=%lu)\n", target, mode); -#endif - glHint(target, mode); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glHint"); -#endif -} - -// void glIndexMask (GLuint mask); -static ID_INLINE void qglIndexMask(GLuint mask) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIndexMask(mask=%lu)\n", mask); -#endif - glIndexMask(mask); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIndexMask"); -#endif -} - -// void glIndexPointer (GLenum type, GLsizei stride, const GLvoid *pointer); -static ID_INLINE void qglIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIndexPointer(type=%lu, stride=%ld, pointer=%p)\n", type, stride, pointer); -#endif - glIndexPointer(type, stride, pointer); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIndexPointer"); -#endif -} - -// void glIndexd (GLdouble c); -static ID_INLINE void qglIndexd(GLdouble c) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIndexd(c=%f)\n", c); -#endif - glIndexd(c); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIndexd"); -#endif -} - -// void glIndexdv (const GLdouble *c); -static ID_INLINE void qglIndexdv(const GLdouble *c) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIndexdv(c=%p)\n", c); -#endif - glIndexdv(c); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIndexdv"); -#endif -} - -// void glIndexf (GLfloat c); -static ID_INLINE void qglIndexf(GLfloat c) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIndexf(c=%f)\n", c); -#endif - glIndexf(c); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIndexf"); -#endif -} - -// void glIndexfv (const GLfloat *c); -static ID_INLINE void qglIndexfv(const GLfloat *c) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIndexfv(c=%p)\n", c); -#endif - glIndexfv(c); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIndexfv"); -#endif -} - -// void glIndexi (GLint c); -static ID_INLINE void qglIndexi(GLint c) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIndexi(c=%ld)\n", c); -#endif - glIndexi(c); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIndexi"); -#endif -} - -// void glIndexiv (const GLint *c); -static ID_INLINE void qglIndexiv(const GLint *c) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIndexiv(c=%p)\n", c); -#endif - glIndexiv(c); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIndexiv"); -#endif -} - -// void glIndexs (GLshort c); -static ID_INLINE void qglIndexs(GLshort c) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIndexs(c=%d)\n", c); -#endif - glIndexs(c); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIndexs"); -#endif -} - -// void glIndexsv (const GLshort *c); -static ID_INLINE void qglIndexsv(const GLshort *c) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIndexsv(c=%p)\n", c); -#endif - glIndexsv(c); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIndexsv"); -#endif -} - -// void glIndexub (GLubyte c); -static ID_INLINE void qglIndexub(GLubyte c) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIndexub(c=%u)\n", c); -#endif - glIndexub(c); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIndexub"); -#endif -} - -// void glIndexubv (const GLubyte *c); -static ID_INLINE void qglIndexubv(const GLubyte *c) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIndexubv(c=%p)\n", c); -#endif - glIndexubv(c); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIndexubv"); -#endif -} - -// void glInitNames (void); -static ID_INLINE void qglInitNames(void) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glInitNames(void)\n"); -#endif - glInitNames(); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glInitNames"); -#endif -} - -// void glInterleavedArrays (GLenum format, GLsizei stride, const GLvoid *pointer); -static ID_INLINE void qglInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glInterleavedArrays(format=%lu, stride=%ld, pointer=%p)\n", format, stride, pointer); -#endif - glInterleavedArrays(format, stride, pointer); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glInterleavedArrays"); -#endif -} - -// GLboolean glIsEnabled (GLenum cap); -static ID_INLINE GLboolean qglIsEnabled(GLenum cap) -{ - GLboolean returnValue; -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIsEnabled(cap=%lu)\n", cap); -#endif - returnValue = glIsEnabled(cap); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIsEnabled"); -#endif - return returnValue; -} - -// GLboolean glIsList (GLuint list); -static ID_INLINE GLboolean qglIsList(GLuint list) -{ - GLboolean returnValue; -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIsList(list=%lu)\n", list); -#endif - returnValue = glIsList(list); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIsList"); -#endif - return returnValue; -} - -// GLboolean glIsTexture (GLuint texture); -static ID_INLINE GLboolean qglIsTexture(GLuint texture) -{ - GLboolean returnValue; -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glIsTexture(texture=%lu)\n", texture); -#endif - returnValue = glIsTexture(texture); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glIsTexture"); -#endif - return returnValue; -} - -// void glLightModelf (GLenum pname, GLfloat param); -static ID_INLINE void qglLightModelf(GLenum pname, GLfloat param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLightModelf(pname=%lu, param=%f)\n", pname, param); -#endif - glLightModelf(pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLightModelf"); -#endif -} - -// void glLightModelfv (GLenum pname, const GLfloat *params); -static ID_INLINE void qglLightModelfv(GLenum pname, const GLfloat *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLightModelfv(pname=%lu, params=%p)\n", pname, params); -#endif - glLightModelfv(pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLightModelfv"); -#endif -} - -// void glLightModeli (GLenum pname, GLint param); -static ID_INLINE void qglLightModeli(GLenum pname, GLint param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLightModeli(pname=%lu, param=%ld)\n", pname, param); -#endif - glLightModeli(pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLightModeli"); -#endif -} - -// void glLightModeliv (GLenum pname, const GLint *params); -static ID_INLINE void qglLightModeliv(GLenum pname, const GLint *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLightModeliv(pname=%lu, params=%p)\n", pname, params); -#endif - glLightModeliv(pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLightModeliv"); -#endif -} - -// void glLightf (GLenum light, GLenum pname, GLfloat param); -static ID_INLINE void qglLightf(GLenum light, GLenum pname, GLfloat param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLightf(light=%lu, pname=%lu, param=%f)\n", light, pname, param); -#endif - glLightf(light, pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLightf"); -#endif -} - -// void glLightfv (GLenum light, GLenum pname, const GLfloat *params); -static ID_INLINE void qglLightfv(GLenum light, GLenum pname, const GLfloat *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLightfv(light=%lu, pname=%lu, params=%p)\n", light, pname, params); -#endif - glLightfv(light, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLightfv"); -#endif -} - -// void glLighti (GLenum light, GLenum pname, GLint param); -static ID_INLINE void qglLighti(GLenum light, GLenum pname, GLint param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLighti(light=%lu, pname=%lu, param=%ld)\n", light, pname, param); -#endif - glLighti(light, pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLighti"); -#endif -} - -// void glLightiv (GLenum light, GLenum pname, const GLint *params); -static ID_INLINE void qglLightiv(GLenum light, GLenum pname, const GLint *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLightiv(light=%lu, pname=%lu, params=%p)\n", light, pname, params); -#endif - glLightiv(light, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLightiv"); -#endif -} - -// void glLineStipple (GLint factor, GLushort pattern); -static ID_INLINE void qglLineStipple(GLint factor, GLushort pattern) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLineStipple(factor=%ld, pattern=%u)\n", factor, pattern); -#endif - glLineStipple(factor, pattern); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLineStipple"); -#endif -} - -// void glLineWidth (GLfloat width); -static ID_INLINE void qglLineWidth(GLfloat width) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLineWidth(width=%f)\n", width); -#endif - glLineWidth(width); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLineWidth"); -#endif -} - -// void glListBase (GLuint base); -static ID_INLINE void qglListBase(GLuint base) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glListBase(base=%lu)\n", base); -#endif - glListBase(base); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glListBase"); -#endif -} - -// void glLoadIdentity (void); -static ID_INLINE void qglLoadIdentity(void) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLoadIdentity(void)\n"); -#endif - glLoadIdentity(); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLoadIdentity"); -#endif -} - -// void glLoadMatrixd (const GLdouble *m); -static ID_INLINE void qglLoadMatrixd(const GLdouble *m) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLoadMatrixd(m=%p)\n", m); -#endif - glLoadMatrixd(m); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLoadMatrixd"); -#endif -} - -// void glLoadMatrixf (const GLfloat *m); -static ID_INLINE void qglLoadMatrixf(const GLfloat *m) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLoadMatrixf(m=%p)\n", m); -#endif - glLoadMatrixf(m); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLoadMatrixf"); -#endif -} - -// void glLoadName (GLuint name); -static ID_INLINE void qglLoadName(GLuint name) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLoadName(name=%lu)\n", name); -#endif - glLoadName(name); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLoadName"); -#endif -} - -// void glLogicOp (GLenum opcode); -static ID_INLINE void qglLogicOp(GLenum opcode) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glLogicOp(opcode=%lu)\n", opcode); -#endif - glLogicOp(opcode); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glLogicOp"); -#endif -} - -// void glMap1d (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); -static ID_INLINE void qglMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMap1d(target=%lu, u1=%f, u2=%f, stride=%ld, order=%ld, points=%p)\n", target, u1, u2, stride, order, points); -#endif - glMap1d(target, u1, u2, stride, order, points); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMap1d"); -#endif -} - -// void glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); -static ID_INLINE void qglMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMap1f(target=%lu, u1=%f, u2=%f, stride=%ld, order=%ld, points=%p)\n", target, u1, u2, stride, order, points); -#endif - glMap1f(target, u1, u2, stride, order, points); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMap1f"); -#endif -} - -// void glMap2d (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); -static ID_INLINE void qglMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMap2d(target=%lu, u1=%f, u2=%f, ustride=%ld, uorder=%ld, v1=%f, v2=%f, vstride=%ld, vorder=%ld, points=%p)\n", target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); -#endif - glMap2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMap2d"); -#endif -} - -// void glMap2f (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); -static ID_INLINE void qglMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMap2f(target=%lu, u1=%f, u2=%f, ustride=%ld, uorder=%ld, v1=%f, v2=%f, vstride=%ld, vorder=%ld, points=%p)\n", target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); -#endif - glMap2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMap2f"); -#endif -} - -// void glMapGrid1d (GLint un, GLdouble u1, GLdouble u2); -static ID_INLINE void qglMapGrid1d(GLint un, GLdouble u1, GLdouble u2) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMapGrid1d(un=%ld, u1=%f, u2=%f)\n", un, u1, u2); -#endif - glMapGrid1d(un, u1, u2); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMapGrid1d"); -#endif -} - -// void glMapGrid1f (GLint un, GLfloat u1, GLfloat u2); -static ID_INLINE void qglMapGrid1f(GLint un, GLfloat u1, GLfloat u2) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMapGrid1f(un=%ld, u1=%f, u2=%f)\n", un, u1, u2); -#endif - glMapGrid1f(un, u1, u2); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMapGrid1f"); -#endif -} - -// void glMapGrid2d (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); -static ID_INLINE void qglMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMapGrid2d(un=%ld, u1=%f, u2=%f, vn=%ld, v1=%f, v2=%f)\n", un, u1, u2, vn, v1, v2); -#endif - glMapGrid2d(un, u1, u2, vn, v1, v2); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMapGrid2d"); -#endif -} - -// void glMapGrid2f (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); -static ID_INLINE void qglMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMapGrid2f(un=%ld, u1=%f, u2=%f, vn=%ld, v1=%f, v2=%f)\n", un, u1, u2, vn, v1, v2); -#endif - glMapGrid2f(un, u1, u2, vn, v1, v2); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMapGrid2f"); -#endif -} - -// void glMaterialf (GLenum face, GLenum pname, GLfloat param); -static ID_INLINE void qglMaterialf(GLenum face, GLenum pname, GLfloat param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMaterialf(face=%lu, pname=%lu, param=%f)\n", face, pname, param); -#endif - glMaterialf(face, pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMaterialf"); -#endif -} - -// void glMaterialfv (GLenum face, GLenum pname, const GLfloat *params); -static ID_INLINE void qglMaterialfv(GLenum face, GLenum pname, const GLfloat *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMaterialfv(face=%lu, pname=%lu, params=%p)\n", face, pname, params); -#endif - glMaterialfv(face, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMaterialfv"); -#endif -} - -// void glMateriali (GLenum face, GLenum pname, GLint param); -static ID_INLINE void qglMateriali(GLenum face, GLenum pname, GLint param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMateriali(face=%lu, pname=%lu, param=%ld)\n", face, pname, param); -#endif - glMateriali(face, pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMateriali"); -#endif -} - -// void glMaterialiv (GLenum face, GLenum pname, const GLint *params); -static ID_INLINE void qglMaterialiv(GLenum face, GLenum pname, const GLint *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMaterialiv(face=%lu, pname=%lu, params=%p)\n", face, pname, params); -#endif - glMaterialiv(face, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMaterialiv"); -#endif -} - -// void glMatrixMode (GLenum mode); -static ID_INLINE void qglMatrixMode(GLenum mode) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMatrixMode(mode=%lu)\n", mode); -#endif - glMatrixMode(mode); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMatrixMode"); -#endif -} - -// void glMultMatrixd (const GLdouble *m); -static ID_INLINE void qglMultMatrixd(const GLdouble *m) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMultMatrixd(m=%p)\n", m); -#endif - glMultMatrixd(m); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMultMatrixd"); -#endif -} - -// void glMultMatrixf (const GLfloat *m); -static ID_INLINE void qglMultMatrixf(const GLfloat *m) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glMultMatrixf(m=%p)\n", m); -#endif - glMultMatrixf(m); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glMultMatrixf"); -#endif -} - -// void glNewList (GLuint list, GLenum mode); -static ID_INLINE void qglNewList(GLuint list, GLenum mode) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glNewList(list=%lu, mode=%lu)\n", list, mode); -#endif - glNewList(list, mode); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glNewList"); -#endif -} - -// void glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz); -static ID_INLINE void qglNormal3b(GLbyte nx, GLbyte ny, GLbyte nz) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glNormal3b(nx=%d, ny=%d, nz=%d)\n", nx, ny, nz); -#endif - glNormal3b(nx, ny, nz); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glNormal3b"); -#endif -} - -// void glNormal3bv (const GLbyte *v); -static ID_INLINE void qglNormal3bv(const GLbyte *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glNormal3bv(v=%p)\n", v); -#endif - glNormal3bv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glNormal3bv"); -#endif -} - -// void glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz); -static ID_INLINE void qglNormal3d(GLdouble nx, GLdouble ny, GLdouble nz) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glNormal3d(nx=%f, ny=%f, nz=%f)\n", nx, ny, nz); -#endif - glNormal3d(nx, ny, nz); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glNormal3d"); -#endif -} - -// void glNormal3dv (const GLdouble *v); -static ID_INLINE void qglNormal3dv(const GLdouble *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glNormal3dv(v=%p)\n", v); -#endif - glNormal3dv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glNormal3dv"); -#endif -} - -// void glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz); -static ID_INLINE void qglNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glNormal3f(nx=%f, ny=%f, nz=%f)\n", nx, ny, nz); -#endif - glNormal3f(nx, ny, nz); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glNormal3f"); -#endif -} - -// void glNormal3fv (const GLfloat *v); -static ID_INLINE void qglNormal3fv(const GLfloat *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glNormal3fv(v=%p)\n", v); -#endif - glNormal3fv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glNormal3fv"); -#endif -} - -// void glNormal3i (GLint nx, GLint ny, GLint nz); -static ID_INLINE void qglNormal3i(GLint nx, GLint ny, GLint nz) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glNormal3i(nx=%ld, ny=%ld, nz=%ld)\n", nx, ny, nz); -#endif - glNormal3i(nx, ny, nz); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glNormal3i"); -#endif -} - -// void glNormal3iv (const GLint *v); -static ID_INLINE void qglNormal3iv(const GLint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glNormal3iv(v=%p)\n", v); -#endif - glNormal3iv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glNormal3iv"); -#endif -} - -// void glNormal3s (GLshort nx, GLshort ny, GLshort nz); -static ID_INLINE void qglNormal3s(GLshort nx, GLshort ny, GLshort nz) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glNormal3s(nx=%d, ny=%d, nz=%d)\n", nx, ny, nz); -#endif - glNormal3s(nx, ny, nz); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glNormal3s"); -#endif -} - -// void glNormal3sv (const GLshort *v); -static ID_INLINE void qglNormal3sv(const GLshort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glNormal3sv(v=%p)\n", v); -#endif - glNormal3sv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glNormal3sv"); -#endif -} - -// void glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer); -static ID_INLINE void qglNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glNormalPointer(type=%lu, stride=%ld, pointer=%p)\n", type, stride, pointer); -#endif - glNormalPointer(type, stride, pointer); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glNormalPointer"); -#endif -} - -// void glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); -static ID_INLINE void qglOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glOrtho(left=%f, right=%f, bottom=%f, top=%f, zNear=%f, zFar=%f)\n", left, right, bottom, top, zNear, zFar); -#endif - glOrtho(left, right, bottom, top, zNear, zFar); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glOrtho"); -#endif -} - -// void glPassThrough (GLfloat token); -static ID_INLINE void qglPassThrough(GLfloat token) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPassThrough(token=%f)\n", token); -#endif - glPassThrough(token); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPassThrough"); -#endif -} - -// void glPixelMapfv (GLenum map, GLsizei mapsize, const GLfloat *values); -static ID_INLINE void qglPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPixelMapfv(map=%lu, mapsize=%ld, values=%p)\n", map, mapsize, values); -#endif - glPixelMapfv(map, mapsize, values); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPixelMapfv"); -#endif -} - -// void glPixelMapuiv (GLenum map, GLsizei mapsize, const GLuint *values); -static ID_INLINE void qglPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPixelMapuiv(map=%lu, mapsize=%ld, values=%p)\n", map, mapsize, values); -#endif - glPixelMapuiv(map, mapsize, values); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPixelMapuiv"); -#endif -} - -// void glPixelMapusv (GLenum map, GLsizei mapsize, const GLushort *values); -static ID_INLINE void qglPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPixelMapusv(map=%lu, mapsize=%ld, values=%p)\n", map, mapsize, values); -#endif - glPixelMapusv(map, mapsize, values); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPixelMapusv"); -#endif -} - -// void glPixelStoref (GLenum pname, GLfloat param); -static ID_INLINE void qglPixelStoref(GLenum pname, GLfloat param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPixelStoref(pname=%lu, param=%f)\n", pname, param); -#endif - glPixelStoref(pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPixelStoref"); -#endif -} - -// void glPixelStorei (GLenum pname, GLint param); -static ID_INLINE void qglPixelStorei(GLenum pname, GLint param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPixelStorei(pname=%lu, param=%ld)\n", pname, param); -#endif - glPixelStorei(pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPixelStorei"); -#endif -} - -// void glPixelTransferf (GLenum pname, GLfloat param); -static ID_INLINE void qglPixelTransferf(GLenum pname, GLfloat param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPixelTransferf(pname=%lu, param=%f)\n", pname, param); -#endif - glPixelTransferf(pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPixelTransferf"); -#endif -} - -// void glPixelTransferi (GLenum pname, GLint param); -static ID_INLINE void qglPixelTransferi(GLenum pname, GLint param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPixelTransferi(pname=%lu, param=%ld)\n", pname, param); -#endif - glPixelTransferi(pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPixelTransferi"); -#endif -} - -// void glPixelZoom (GLfloat xfactor, GLfloat yfactor); -static ID_INLINE void qglPixelZoom(GLfloat xfactor, GLfloat yfactor) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPixelZoom(xfactor=%f, yfactor=%f)\n", xfactor, yfactor); -#endif - glPixelZoom(xfactor, yfactor); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPixelZoom"); -#endif -} - -// void glPointSize (GLfloat size); -static ID_INLINE void qglPointSize(GLfloat size) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPointSize(size=%f)\n", size); -#endif - glPointSize(size); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPointSize"); -#endif -} - -// void glPolygonMode (GLenum face, GLenum mode); -static ID_INLINE void qglPolygonMode(GLenum face, GLenum mode) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPolygonMode(face=%lu, mode=%lu)\n", face, mode); -#endif - glPolygonMode(face, mode); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPolygonMode"); -#endif -} - -// void glPolygonOffset (GLfloat factor, GLfloat units); -static ID_INLINE void qglPolygonOffset(GLfloat factor, GLfloat units) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPolygonOffset(factor=%f, units=%f)\n", factor, units); -#endif - glPolygonOffset(factor, units); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPolygonOffset"); -#endif -} - -// void glPolygonStipple (const GLubyte *mask); -static ID_INLINE void qglPolygonStipple(const GLubyte *mask) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPolygonStipple(mask=%p)\n", mask); -#endif - glPolygonStipple(mask); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPolygonStipple"); -#endif -} - -// void glPopAttrib (void); -static ID_INLINE void qglPopAttrib(void) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPopAttrib(void)\n"); -#endif - glPopAttrib(); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPopAttrib"); -#endif -} - -// void glPopClientAttrib (void); -static ID_INLINE void qglPopClientAttrib(void) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPopClientAttrib(void)\n"); -#endif - glPopClientAttrib(); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPopClientAttrib"); -#endif -} - -// void glPopMatrix (void); -static ID_INLINE void qglPopMatrix(void) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPopMatrix(void)\n"); -#endif - glPopMatrix(); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPopMatrix"); -#endif -} - -// void glPopName (void); -static ID_INLINE void qglPopName(void) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPopName(void)\n"); -#endif - glPopName(); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPopName"); -#endif -} - -// void glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities); -static ID_INLINE void qglPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPrioritizeTextures(n=%ld, textures=%p, priorities=%p)\n", n, textures, priorities); -#endif - glPrioritizeTextures(n, textures, priorities); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPrioritizeTextures"); -#endif -} - -// void glPushAttrib (GLbitfield mask); -static ID_INLINE void qglPushAttrib(GLbitfield mask) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPushAttrib(mask=%lu)\n", mask); -#endif - glPushAttrib(mask); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPushAttrib"); -#endif -} - -// void glPushClientAttrib (GLbitfield mask); -static ID_INLINE void qglPushClientAttrib(GLbitfield mask) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPushClientAttrib(mask=%lu)\n", mask); -#endif - glPushClientAttrib(mask); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPushClientAttrib"); -#endif -} - -// void glPushMatrix (void); -static ID_INLINE void qglPushMatrix(void) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPushMatrix(void)\n"); -#endif - glPushMatrix(); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPushMatrix"); -#endif -} - -// void glPushName (GLuint name); -static ID_INLINE void qglPushName(GLuint name) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glPushName(name=%lu)\n", name); -#endif - glPushName(name); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glPushName"); -#endif -} - -// void glRasterPos2d (GLdouble x, GLdouble y); -static ID_INLINE void qglRasterPos2d(GLdouble x, GLdouble y) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos2d(x=%f, y=%f)\n", x, y); -#endif - glRasterPos2d(x, y); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos2d"); -#endif -} - -// void glRasterPos2dv (const GLdouble *v); -static ID_INLINE void qglRasterPos2dv(const GLdouble *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos2dv(v=%p)\n", v); -#endif - glRasterPos2dv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos2dv"); -#endif -} - -// void glRasterPos2f (GLfloat x, GLfloat y); -static ID_INLINE void qglRasterPos2f(GLfloat x, GLfloat y) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos2f(x=%f, y=%f)\n", x, y); -#endif - glRasterPos2f(x, y); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos2f"); -#endif -} - -// void glRasterPos2fv (const GLfloat *v); -static ID_INLINE void qglRasterPos2fv(const GLfloat *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos2fv(v=%p)\n", v); -#endif - glRasterPos2fv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos2fv"); -#endif -} - -// void glRasterPos2i (GLint x, GLint y); -static ID_INLINE void qglRasterPos2i(GLint x, GLint y) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos2i(x=%ld, y=%ld)\n", x, y); -#endif - glRasterPos2i(x, y); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos2i"); -#endif -} - -// void glRasterPos2iv (const GLint *v); -static ID_INLINE void qglRasterPos2iv(const GLint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos2iv(v=%p)\n", v); -#endif - glRasterPos2iv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos2iv"); -#endif -} - -// void glRasterPos2s (GLshort x, GLshort y); -static ID_INLINE void qglRasterPos2s(GLshort x, GLshort y) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos2s(x=%d, y=%d)\n", x, y); -#endif - glRasterPos2s(x, y); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos2s"); -#endif -} - -// void glRasterPos2sv (const GLshort *v); -static ID_INLINE void qglRasterPos2sv(const GLshort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos2sv(v=%p)\n", v); -#endif - glRasterPos2sv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos2sv"); -#endif -} - -// void glRasterPos3d (GLdouble x, GLdouble y, GLdouble z); -static ID_INLINE void qglRasterPos3d(GLdouble x, GLdouble y, GLdouble z) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos3d(x=%f, y=%f, z=%f)\n", x, y, z); -#endif - glRasterPos3d(x, y, z); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos3d"); -#endif -} - -// void glRasterPos3dv (const GLdouble *v); -static ID_INLINE void qglRasterPos3dv(const GLdouble *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos3dv(v=%p)\n", v); -#endif - glRasterPos3dv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos3dv"); -#endif -} - -// void glRasterPos3f (GLfloat x, GLfloat y, GLfloat z); -static ID_INLINE void qglRasterPos3f(GLfloat x, GLfloat y, GLfloat z) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos3f(x=%f, y=%f, z=%f)\n", x, y, z); -#endif - glRasterPos3f(x, y, z); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos3f"); -#endif -} - -// void glRasterPos3fv (const GLfloat *v); -static ID_INLINE void qglRasterPos3fv(const GLfloat *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos3fv(v=%p)\n", v); -#endif - glRasterPos3fv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos3fv"); -#endif -} - -// void glRasterPos3i (GLint x, GLint y, GLint z); -static ID_INLINE void qglRasterPos3i(GLint x, GLint y, GLint z) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos3i(x=%ld, y=%ld, z=%ld)\n", x, y, z); -#endif - glRasterPos3i(x, y, z); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos3i"); -#endif -} - -// void glRasterPos3iv (const GLint *v); -static ID_INLINE void qglRasterPos3iv(const GLint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos3iv(v=%p)\n", v); -#endif - glRasterPos3iv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos3iv"); -#endif -} - -// void glRasterPos3s (GLshort x, GLshort y, GLshort z); -static ID_INLINE void qglRasterPos3s(GLshort x, GLshort y, GLshort z) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos3s(x=%d, y=%d, z=%d)\n", x, y, z); -#endif - glRasterPos3s(x, y, z); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos3s"); -#endif -} - -// void glRasterPos3sv (const GLshort *v); -static ID_INLINE void qglRasterPos3sv(const GLshort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos3sv(v=%p)\n", v); -#endif - glRasterPos3sv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos3sv"); -#endif -} - -// void glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -static ID_INLINE void qglRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos4d(x=%f, y=%f, z=%f, w=%f)\n", x, y, z, w); -#endif - glRasterPos4d(x, y, z, w); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos4d"); -#endif -} - -// void glRasterPos4dv (const GLdouble *v); -static ID_INLINE void qglRasterPos4dv(const GLdouble *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos4dv(v=%p)\n", v); -#endif - glRasterPos4dv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos4dv"); -#endif -} - -// void glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -static ID_INLINE void qglRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos4f(x=%f, y=%f, z=%f, w=%f)\n", x, y, z, w); -#endif - glRasterPos4f(x, y, z, w); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos4f"); -#endif -} - -// void glRasterPos4fv (const GLfloat *v); -static ID_INLINE void qglRasterPos4fv(const GLfloat *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos4fv(v=%p)\n", v); -#endif - glRasterPos4fv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos4fv"); -#endif -} - -// void glRasterPos4i (GLint x, GLint y, GLint z, GLint w); -static ID_INLINE void qglRasterPos4i(GLint x, GLint y, GLint z, GLint w) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos4i(x=%ld, y=%ld, z=%ld, w=%ld)\n", x, y, z, w); -#endif - glRasterPos4i(x, y, z, w); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos4i"); -#endif -} - -// void glRasterPos4iv (const GLint *v); -static ID_INLINE void qglRasterPos4iv(const GLint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos4iv(v=%p)\n", v); -#endif - glRasterPos4iv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos4iv"); -#endif -} - -// void glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w); -static ID_INLINE void qglRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos4s(x=%d, y=%d, z=%d, w=%d)\n", x, y, z, w); -#endif - glRasterPos4s(x, y, z, w); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos4s"); -#endif -} - -// void glRasterPos4sv (const GLshort *v); -static ID_INLINE void qglRasterPos4sv(const GLshort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRasterPos4sv(v=%p)\n", v); -#endif - glRasterPos4sv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRasterPos4sv"); -#endif -} - -// void glReadBuffer (GLenum mode); -static ID_INLINE void qglReadBuffer(GLenum mode) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glReadBuffer(mode=%lu)\n", mode); -#endif - glReadBuffer(mode); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glReadBuffer"); -#endif -} - -// void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); -static ID_INLINE void qglReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glReadPixels(x=%ld, y=%ld, width=%ld, height=%ld, format=%lu, type=%lu, pixels=%p)\n", x, y, width, height, format, type, pixels); -#endif - glReadPixels(x, y, width, height, format, type, pixels); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glReadPixels"); -#endif -} - -// void glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); -static ID_INLINE void qglRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRectd(x1=%f, y1=%f, x2=%f, y2=%f)\n", x1, y1, x2, y2); -#endif - glRectd(x1, y1, x2, y2); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRectd"); -#endif -} - -// void glRectdv (const GLdouble *v1, const GLdouble *v2); -static ID_INLINE void qglRectdv(const GLdouble *v1, const GLdouble *v2) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRectdv(v1=%p, v2=%p)\n", v1, v2); -#endif - glRectdv(v1, v2); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRectdv"); -#endif -} - -// void glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); -static ID_INLINE void qglRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRectf(x1=%f, y1=%f, x2=%f, y2=%f)\n", x1, y1, x2, y2); -#endif - glRectf(x1, y1, x2, y2); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRectf"); -#endif -} - -// void glRectfv (const GLfloat *v1, const GLfloat *v2); -static ID_INLINE void qglRectfv(const GLfloat *v1, const GLfloat *v2) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRectfv(v1=%p, v2=%p)\n", v1, v2); -#endif - glRectfv(v1, v2); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRectfv"); -#endif -} - -// void glRecti (GLint x1, GLint y1, GLint x2, GLint y2); -static ID_INLINE void qglRecti(GLint x1, GLint y1, GLint x2, GLint y2) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRecti(x1=%ld, y1=%ld, x2=%ld, y2=%ld)\n", x1, y1, x2, y2); -#endif - glRecti(x1, y1, x2, y2); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRecti"); -#endif -} - -// void glRectiv (const GLint *v1, const GLint *v2); -static ID_INLINE void qglRectiv(const GLint *v1, const GLint *v2) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRectiv(v1=%p, v2=%p)\n", v1, v2); -#endif - glRectiv(v1, v2); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRectiv"); -#endif -} - -// void glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2); -static ID_INLINE void qglRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRects(x1=%d, y1=%d, x2=%d, y2=%d)\n", x1, y1, x2, y2); -#endif - glRects(x1, y1, x2, y2); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRects"); -#endif -} - -// void glRectsv (const GLshort *v1, const GLshort *v2); -static ID_INLINE void qglRectsv(const GLshort *v1, const GLshort *v2) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRectsv(v1=%p, v2=%p)\n", v1, v2); -#endif - glRectsv(v1, v2); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRectsv"); -#endif -} - -// GLint glRenderMode (GLenum mode); -static ID_INLINE GLint qglRenderMode(GLenum mode) -{ - GLint returnValue; -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRenderMode(mode=%lu)\n", mode); -#endif - returnValue = glRenderMode(mode); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRenderMode"); -#endif - return returnValue; -} - -// void glRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z); -static ID_INLINE void qglRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRotated(angle=%f, x=%f, y=%f, z=%f)\n", angle, x, y, z); -#endif - glRotated(angle, x, y, z); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRotated"); -#endif -} - -// void glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -static ID_INLINE void qglRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glRotatef(angle=%f, x=%f, y=%f, z=%f)\n", angle, x, y, z); -#endif - glRotatef(angle, x, y, z); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glRotatef"); -#endif -} - -// void glScaled (GLdouble x, GLdouble y, GLdouble z); -static ID_INLINE void qglScaled(GLdouble x, GLdouble y, GLdouble z) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glScaled(x=%f, y=%f, z=%f)\n", x, y, z); -#endif - glScaled(x, y, z); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glScaled"); -#endif -} - -// void glScalef (GLfloat x, GLfloat y, GLfloat z); -static ID_INLINE void qglScalef(GLfloat x, GLfloat y, GLfloat z) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glScalef(x=%f, y=%f, z=%f)\n", x, y, z); -#endif - glScalef(x, y, z); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glScalef"); -#endif -} - -// void glScissor (GLint x, GLint y, GLsizei width, GLsizei height); -static ID_INLINE void qglScissor(GLint x, GLint y, GLsizei width, GLsizei height) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glScissor(x=%ld, y=%ld, width=%ld, height=%ld)\n", x, y, width, height); -#endif - glScissor(x, y, width, height); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glScissor"); -#endif -} - -// void glSelectBuffer (GLsizei size, GLuint *buffer); -static ID_INLINE void qglSelectBuffer(GLsizei size, GLuint *buffer) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glSelectBuffer(size=%ld, buffer=%p)\n", size, buffer); -#endif - glSelectBuffer(size, buffer); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glSelectBuffer"); -#endif -} - -// void glShadeModel (GLenum mode); -static ID_INLINE void qglShadeModel(GLenum mode) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glShadeModel(mode=%lu)\n", mode); -#endif - glShadeModel(mode); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glShadeModel"); -#endif -} - -// void glStencilFunc (GLenum func, GLint ref, GLuint mask); -static ID_INLINE void qglStencilFunc(GLenum func, GLint ref, GLuint mask) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glStencilFunc(func=%lu, ref=%ld, mask=%lu)\n", func, ref, mask); -#endif - glStencilFunc(func, ref, mask); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glStencilFunc"); -#endif -} - -// void glStencilMask (GLuint mask); -static ID_INLINE void qglStencilMask(GLuint mask) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glStencilMask(mask=%lu)\n", mask); -#endif - glStencilMask(mask); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glStencilMask"); -#endif -} - -// void glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); -static ID_INLINE void qglStencilOp(GLenum fail, GLenum zfail, GLenum zpass) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glStencilOp(fail=%lu, zfail=%lu, zpass=%lu)\n", fail, zfail, zpass); -#endif - glStencilOp(fail, zfail, zpass); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glStencilOp"); -#endif -} - -// void glTexCoord1d (GLdouble s); -static ID_INLINE void qglTexCoord1d(GLdouble s) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord1d(s=%f)\n", s); -#endif - glTexCoord1d(s); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord1d"); -#endif -} - -// void glTexCoord1dv (const GLdouble *v); -static ID_INLINE void qglTexCoord1dv(const GLdouble *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord1dv(v=%p)\n", v); -#endif - glTexCoord1dv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord1dv"); -#endif -} - -// void glTexCoord1f (GLfloat s); -static ID_INLINE void qglTexCoord1f(GLfloat s) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord1f(s=%f)\n", s); -#endif - glTexCoord1f(s); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord1f"); -#endif -} - -// void glTexCoord1fv (const GLfloat *v); -static ID_INLINE void qglTexCoord1fv(const GLfloat *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord1fv(v=%p)\n", v); -#endif - glTexCoord1fv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord1fv"); -#endif -} - -// void glTexCoord1i (GLint s); -static ID_INLINE void qglTexCoord1i(GLint s) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord1i(s=%ld)\n", s); -#endif - glTexCoord1i(s); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord1i"); -#endif -} - -// void glTexCoord1iv (const GLint *v); -static ID_INLINE void qglTexCoord1iv(const GLint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord1iv(v=%p)\n", v); -#endif - glTexCoord1iv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord1iv"); -#endif -} - -// void glTexCoord1s (GLshort s); -static ID_INLINE void qglTexCoord1s(GLshort s) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord1s(s=%d)\n", s); -#endif - glTexCoord1s(s); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord1s"); -#endif -} - -// void glTexCoord1sv (const GLshort *v); -static ID_INLINE void qglTexCoord1sv(const GLshort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord1sv(v=%p)\n", v); -#endif - glTexCoord1sv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord1sv"); -#endif -} - -// void glTexCoord2d (GLdouble s, GLdouble t); -static ID_INLINE void qglTexCoord2d(GLdouble s, GLdouble t) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord2d(s=%f, t=%f)\n", s, t); -#endif - glTexCoord2d(s, t); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord2d"); -#endif -} - -// void glTexCoord2dv (const GLdouble *v); -static ID_INLINE void qglTexCoord2dv(const GLdouble *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord2dv(v=%p)\n", v); -#endif - glTexCoord2dv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord2dv"); -#endif -} - -// void glTexCoord2f (GLfloat s, GLfloat t); -static ID_INLINE void qglTexCoord2f(GLfloat s, GLfloat t) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord2f(s=%f, t=%f)\n", s, t); -#endif - glTexCoord2f(s, t); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord2f"); -#endif -} - -// void glTexCoord2fv (const GLfloat *v); -static ID_INLINE void qglTexCoord2fv(const GLfloat *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord2fv(v=%p)\n", v); -#endif - glTexCoord2fv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord2fv"); -#endif -} - -// void glTexCoord2i (GLint s, GLint t); -static ID_INLINE void qglTexCoord2i(GLint s, GLint t) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord2i(s=%ld, t=%ld)\n", s, t); -#endif - glTexCoord2i(s, t); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord2i"); -#endif -} - -// void glTexCoord2iv (const GLint *v); -static ID_INLINE void qglTexCoord2iv(const GLint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord2iv(v=%p)\n", v); -#endif - glTexCoord2iv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord2iv"); -#endif -} - -// void glTexCoord2s (GLshort s, GLshort t); -static ID_INLINE void qglTexCoord2s(GLshort s, GLshort t) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord2s(s=%d, t=%d)\n", s, t); -#endif - glTexCoord2s(s, t); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord2s"); -#endif -} - -// void glTexCoord2sv (const GLshort *v); -static ID_INLINE void qglTexCoord2sv(const GLshort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord2sv(v=%p)\n", v); -#endif - glTexCoord2sv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord2sv"); -#endif -} - -// void glTexCoord3d (GLdouble s, GLdouble t, GLdouble r); -static ID_INLINE void qglTexCoord3d(GLdouble s, GLdouble t, GLdouble r) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord3d(s=%f, t=%f, r=%f)\n", s, t, r); -#endif - glTexCoord3d(s, t, r); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord3d"); -#endif -} - -// void glTexCoord3dv (const GLdouble *v); -static ID_INLINE void qglTexCoord3dv(const GLdouble *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord3dv(v=%p)\n", v); -#endif - glTexCoord3dv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord3dv"); -#endif -} - -// void glTexCoord3f (GLfloat s, GLfloat t, GLfloat r); -static ID_INLINE void qglTexCoord3f(GLfloat s, GLfloat t, GLfloat r) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord3f(s=%f, t=%f, r=%f)\n", s, t, r); -#endif - glTexCoord3f(s, t, r); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord3f"); -#endif -} - -// void glTexCoord3fv (const GLfloat *v); -static ID_INLINE void qglTexCoord3fv(const GLfloat *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord3fv(v=%p)\n", v); -#endif - glTexCoord3fv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord3fv"); -#endif -} - -// void glTexCoord3i (GLint s, GLint t, GLint r); -static ID_INLINE void qglTexCoord3i(GLint s, GLint t, GLint r) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord3i(s=%ld, t=%ld, r=%ld)\n", s, t, r); -#endif - glTexCoord3i(s, t, r); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord3i"); -#endif -} - -// void glTexCoord3iv (const GLint *v); -static ID_INLINE void qglTexCoord3iv(const GLint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord3iv(v=%p)\n", v); -#endif - glTexCoord3iv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord3iv"); -#endif -} - -// void glTexCoord3s (GLshort s, GLshort t, GLshort r); -static ID_INLINE void qglTexCoord3s(GLshort s, GLshort t, GLshort r) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord3s(s=%d, t=%d, r=%d)\n", s, t, r); -#endif - glTexCoord3s(s, t, r); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord3s"); -#endif -} - -// void glTexCoord3sv (const GLshort *v); -static ID_INLINE void qglTexCoord3sv(const GLshort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord3sv(v=%p)\n", v); -#endif - glTexCoord3sv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord3sv"); -#endif -} - -// void glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q); -static ID_INLINE void qglTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord4d(s=%f, t=%f, r=%f, q=%f)\n", s, t, r, q); -#endif - glTexCoord4d(s, t, r, q); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord4d"); -#endif -} - -// void glTexCoord4dv (const GLdouble *v); -static ID_INLINE void qglTexCoord4dv(const GLdouble *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord4dv(v=%p)\n", v); -#endif - glTexCoord4dv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord4dv"); -#endif -} - -// void glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q); -static ID_INLINE void qglTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord4f(s=%f, t=%f, r=%f, q=%f)\n", s, t, r, q); -#endif - glTexCoord4f(s, t, r, q); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord4f"); -#endif -} - -// void glTexCoord4fv (const GLfloat *v); -static ID_INLINE void qglTexCoord4fv(const GLfloat *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord4fv(v=%p)\n", v); -#endif - glTexCoord4fv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord4fv"); -#endif -} - -// void glTexCoord4i (GLint s, GLint t, GLint r, GLint q); -static ID_INLINE void qglTexCoord4i(GLint s, GLint t, GLint r, GLint q) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord4i(s=%ld, t=%ld, r=%ld, q=%ld)\n", s, t, r, q); -#endif - glTexCoord4i(s, t, r, q); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord4i"); -#endif -} - -// void glTexCoord4iv (const GLint *v); -static ID_INLINE void qglTexCoord4iv(const GLint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord4iv(v=%p)\n", v); -#endif - glTexCoord4iv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord4iv"); -#endif -} - -// void glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q); -static ID_INLINE void qglTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord4s(s=%d, t=%d, r=%d, q=%d)\n", s, t, r, q); -#endif - glTexCoord4s(s, t, r, q); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord4s"); -#endif -} - -// void glTexCoord4sv (const GLshort *v); -static ID_INLINE void qglTexCoord4sv(const GLshort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoord4sv(v=%p)\n", v); -#endif - glTexCoord4sv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoord4sv"); -#endif -} - -// void glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -static ID_INLINE void qglTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexCoordPointer(size=%ld, type=%lu, stride=%ld, pointer=%p)\n", size, type, stride, pointer); -#endif - glTexCoordPointer(size, type, stride, pointer); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexCoordPointer"); -#endif -} - -// void glTexEnvf (GLenum target, GLenum pname, GLfloat param); -static ID_INLINE void qglTexEnvf(GLenum target, GLenum pname, GLfloat param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexEnvf(target=%lu, pname=%lu, param=%f)\n", target, pname, param); -#endif - glTexEnvf(target, pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexEnvf"); -#endif -} - -// void glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params); -static ID_INLINE void qglTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexEnvfv(target=%lu, pname=%lu, params=%p)\n", target, pname, params); -#endif - glTexEnvfv(target, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexEnvfv"); -#endif -} - -// void glTexEnvi (GLenum target, GLenum pname, GLint param); -static ID_INLINE void qglTexEnvi(GLenum target, GLenum pname, GLint param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexEnvi(target=%lu, pname=%lu, param=%ld)\n", target, pname, param); -#endif - glTexEnvi(target, pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexEnvi"); -#endif -} - -// void glTexEnviv (GLenum target, GLenum pname, const GLint *params); -static ID_INLINE void qglTexEnviv(GLenum target, GLenum pname, const GLint *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexEnviv(target=%lu, pname=%lu, params=%p)\n", target, pname, params); -#endif - glTexEnviv(target, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexEnviv"); -#endif -} - -// void glTexGend (GLenum coord, GLenum pname, GLdouble param); -static ID_INLINE void qglTexGend(GLenum coord, GLenum pname, GLdouble param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexGend(coord=%lu, pname=%lu, param=%f)\n", coord, pname, param); -#endif - glTexGend(coord, pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexGend"); -#endif -} - -// void glTexGendv (GLenum coord, GLenum pname, const GLdouble *params); -static ID_INLINE void qglTexGendv(GLenum coord, GLenum pname, const GLdouble *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexGendv(coord=%lu, pname=%lu, params=%p)\n", coord, pname, params); -#endif - glTexGendv(coord, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexGendv"); -#endif -} - -// void glTexGenf (GLenum coord, GLenum pname, GLfloat param); -static ID_INLINE void qglTexGenf(GLenum coord, GLenum pname, GLfloat param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexGenf(coord=%lu, pname=%lu, param=%f)\n", coord, pname, param); -#endif - glTexGenf(coord, pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexGenf"); -#endif -} - -// void glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params); -static ID_INLINE void qglTexGenfv(GLenum coord, GLenum pname, const GLfloat *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexGenfv(coord=%lu, pname=%lu, params=%p)\n", coord, pname, params); -#endif - glTexGenfv(coord, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexGenfv"); -#endif -} - -// void glTexGeni (GLenum coord, GLenum pname, GLint param); -static ID_INLINE void qglTexGeni(GLenum coord, GLenum pname, GLint param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexGeni(coord=%lu, pname=%lu, param=%ld)\n", coord, pname, param); -#endif - glTexGeni(coord, pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexGeni"); -#endif -} - -// void glTexGeniv (GLenum coord, GLenum pname, const GLint *params); -static ID_INLINE void qglTexGeniv(GLenum coord, GLenum pname, const GLint *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexGeniv(coord=%lu, pname=%lu, params=%p)\n", coord, pname, params); -#endif - glTexGeniv(coord, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexGeniv"); -#endif -} - -// void glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -static ID_INLINE void qglTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexImage1D(target=%lu, level=%ld, internalformat=%ld, width=%ld, border=%ld, format=%lu, type=%lu, pixels=%p)\n", target, level, internalformat, width, border, format, type, pixels); -#endif - glTexImage1D(target, level, internalformat, width, border, format, type, pixels); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexImage1D"); -#endif -} - -// void glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -static ID_INLINE void qglTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexImage2D(target=%lu, level=%ld, internalformat=%ld, width=%ld, height=%ld, border=%ld, format=%lu, type=%lu, pixels=%p)\n", target, level, internalformat, width, height, border, format, type, pixels); -#endif - glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexImage2D"); -#endif -} - -// void glTexParameterf (GLenum target, GLenum pname, GLfloat param); -static ID_INLINE void qglTexParameterf(GLenum target, GLenum pname, GLfloat param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexParameterf(target=%lu, pname=%lu, param=%f)\n", target, pname, param); -#endif - glTexParameterf(target, pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexParameterf"); -#endif -} - -// void glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); -static ID_INLINE void qglTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexParameterfv(target=%lu, pname=%lu, params=%p)\n", target, pname, params); -#endif - glTexParameterfv(target, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexParameterfv"); -#endif -} - -// void glTexParameteri (GLenum target, GLenum pname, GLint param); -static ID_INLINE void qglTexParameteri(GLenum target, GLenum pname, GLint param) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexParameteri(target=%lu, pname=%lu, param=%ld)\n", target, pname, param); -#endif - glTexParameteri(target, pname, param); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexParameteri"); -#endif -} - -// void glTexParameteriv (GLenum target, GLenum pname, const GLint *params); -static ID_INLINE void qglTexParameteriv(GLenum target, GLenum pname, const GLint *params) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexParameteriv(target=%lu, pname=%lu, params=%p)\n", target, pname, params); -#endif - glTexParameteriv(target, pname, params); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexParameteriv"); -#endif -} - -// void glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -static ID_INLINE void qglTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexSubImage1D(target=%lu, level=%ld, xoffset=%ld, width=%ld, format=%lu, type=%lu, pixels=%p)\n", target, level, xoffset, width, format, type, pixels); -#endif - glTexSubImage1D(target, level, xoffset, width, format, type, pixels); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexSubImage1D"); -#endif -} - -// void glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -static ID_INLINE void qglTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTexSubImage2D(target=%lu, level=%ld, xoffset=%ld, yoffset=%ld, width=%ld, height=%ld, format=%lu, type=%lu, pixels=%p)\n", target, level, xoffset, yoffset, width, height, format, type, pixels); -#endif - glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTexSubImage2D"); -#endif -} - -// void glTranslated (GLdouble x, GLdouble y, GLdouble z); -static ID_INLINE void qglTranslated(GLdouble x, GLdouble y, GLdouble z) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTranslated(x=%f, y=%f, z=%f)\n", x, y, z); -#endif - glTranslated(x, y, z); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTranslated"); -#endif -} - -// void glTranslatef (GLfloat x, GLfloat y, GLfloat z); -static ID_INLINE void qglTranslatef(GLfloat x, GLfloat y, GLfloat z) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glTranslatef(x=%f, y=%f, z=%f)\n", x, y, z); -#endif - glTranslatef(x, y, z); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glTranslatef"); -#endif -} - -// void glVertex2d (GLdouble x, GLdouble y); -static ID_INLINE void qglVertex2d(GLdouble x, GLdouble y) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex2d(x=%f, y=%f)\n", x, y); -#endif - glVertex2d(x, y); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex2d"); -#endif -} - -// void glVertex2dv (const GLdouble *v); -static ID_INLINE void qglVertex2dv(const GLdouble *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex2dv(v=%p)\n", v); -#endif - glVertex2dv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex2dv"); -#endif -} - -// void glVertex2f (GLfloat x, GLfloat y); -static ID_INLINE void qglVertex2f(GLfloat x, GLfloat y) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex2f(x=%f, y=%f)\n", x, y); -#endif - glVertex2f(x, y); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex2f"); -#endif -} - -// void glVertex2fv (const GLfloat *v); -static ID_INLINE void qglVertex2fv(const GLfloat *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex2fv(v=%p)\n", v); -#endif - glVertex2fv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex2fv"); -#endif -} - -// void glVertex2i (GLint x, GLint y); -static ID_INLINE void qglVertex2i(GLint x, GLint y) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex2i(x=%ld, y=%ld)\n", x, y); -#endif - glVertex2i(x, y); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex2i"); -#endif -} - -// void glVertex2iv (const GLint *v); -static ID_INLINE void qglVertex2iv(const GLint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex2iv(v=%p)\n", v); -#endif - glVertex2iv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex2iv"); -#endif -} - -// void glVertex2s (GLshort x, GLshort y); -static ID_INLINE void qglVertex2s(GLshort x, GLshort y) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex2s(x=%d, y=%d)\n", x, y); -#endif - glVertex2s(x, y); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex2s"); -#endif -} - -// void glVertex2sv (const GLshort *v); -static ID_INLINE void qglVertex2sv(const GLshort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex2sv(v=%p)\n", v); -#endif - glVertex2sv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex2sv"); -#endif -} - -// void glVertex3d (GLdouble x, GLdouble y, GLdouble z); -static ID_INLINE void qglVertex3d(GLdouble x, GLdouble y, GLdouble z) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex3d(x=%f, y=%f, z=%f)\n", x, y, z); -#endif - glVertex3d(x, y, z); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex3d"); -#endif -} - -// void glVertex3dv (const GLdouble *v); -static ID_INLINE void qglVertex3dv(const GLdouble *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex3dv(v=%p)\n", v); -#endif - glVertex3dv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex3dv"); -#endif -} - -// void glVertex3f (GLfloat x, GLfloat y, GLfloat z); -static ID_INLINE void qglVertex3f(GLfloat x, GLfloat y, GLfloat z) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex3f(x=%f, y=%f, z=%f)\n", x, y, z); -#endif - glVertex3f(x, y, z); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex3f"); -#endif -} - -// void glVertex3fv (const GLfloat *v); -static ID_INLINE void qglVertex3fv(const GLfloat *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex3fv(v=%p)\n", v); -#endif - glVertex3fv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex3fv"); -#endif -} - -// void glVertex3i (GLint x, GLint y, GLint z); -static ID_INLINE void qglVertex3i(GLint x, GLint y, GLint z) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex3i(x=%ld, y=%ld, z=%ld)\n", x, y, z); -#endif - glVertex3i(x, y, z); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex3i"); -#endif -} - -// void glVertex3iv (const GLint *v); -static ID_INLINE void qglVertex3iv(const GLint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex3iv(v=%p)\n", v); -#endif - glVertex3iv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex3iv"); -#endif -} - -// void glVertex3s (GLshort x, GLshort y, GLshort z); -static ID_INLINE void qglVertex3s(GLshort x, GLshort y, GLshort z) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex3s(x=%d, y=%d, z=%d)\n", x, y, z); -#endif - glVertex3s(x, y, z); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex3s"); -#endif -} - -// void glVertex3sv (const GLshort *v); -static ID_INLINE void qglVertex3sv(const GLshort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex3sv(v=%p)\n", v); -#endif - glVertex3sv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex3sv"); -#endif -} - -// void glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -static ID_INLINE void qglVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex4d(x=%f, y=%f, z=%f, w=%f)\n", x, y, z, w); -#endif - glVertex4d(x, y, z, w); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex4d"); -#endif -} - -// void glVertex4dv (const GLdouble *v); -static ID_INLINE void qglVertex4dv(const GLdouble *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex4dv(v=%p)\n", v); -#endif - glVertex4dv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex4dv"); -#endif -} - -// void glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -static ID_INLINE void qglVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex4f(x=%f, y=%f, z=%f, w=%f)\n", x, y, z, w); -#endif - glVertex4f(x, y, z, w); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex4f"); -#endif -} - -// void glVertex4fv (const GLfloat *v); -static ID_INLINE void qglVertex4fv(const GLfloat *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex4fv(v=%p)\n", v); -#endif - glVertex4fv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex4fv"); -#endif -} - -// void glVertex4i (GLint x, GLint y, GLint z, GLint w); -static ID_INLINE void qglVertex4i(GLint x, GLint y, GLint z, GLint w) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex4i(x=%ld, y=%ld, z=%ld, w=%ld)\n", x, y, z, w); -#endif - glVertex4i(x, y, z, w); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex4i"); -#endif -} - -// void glVertex4iv (const GLint *v); -static ID_INLINE void qglVertex4iv(const GLint *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex4iv(v=%p)\n", v); -#endif - glVertex4iv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex4iv"); -#endif -} - -// void glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w); -static ID_INLINE void qglVertex4s(GLshort x, GLshort y, GLshort z, GLshort w) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex4s(x=%d, y=%d, z=%d, w=%d)\n", x, y, z, w); -#endif - glVertex4s(x, y, z, w); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex4s"); -#endif -} - -// void glVertex4sv (const GLshort *v); -static ID_INLINE void qglVertex4sv(const GLshort *v) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertex4sv(v=%p)\n", v); -#endif - glVertex4sv(v); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertex4sv"); -#endif -} - -// void glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -static ID_INLINE void qglVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glVertexPointer(size=%ld, type=%lu, stride=%ld, pointer=%p)\n", size, type, stride, pointer); -#endif - glVertexPointer(size, type, stride, pointer); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glVertexPointer"); -#endif -} - -// void glViewport (GLint x, GLint y, GLsizei width, GLsizei height); -static ID_INLINE void qglViewport(GLint x, GLint y, GLsizei width, GLsizei height) -{ -#if !defined(NDEBUG) && defined(QGL_LOG_GL_CALLS) - if (QGLLogGLCalls) - fprintf(QGLDebugFile(), "glViewport(x=%ld, y=%ld, width=%ld, height=%ld)\n", x, y, width, height); -#endif - glViewport(x, y, width, height); -#if !defined(NDEBUG) && defined(QGL_CHECK_GL_ERRORS) - if (!QGLBeginStarted) - QGLCheckError("glViewport"); -#endif -} - -// Prevent calls to the 'normal' GL functions -#define glAccum CALL_THE_QGL_VERSION_OF_glAccum -#define glAlphaFunc CALL_THE_QGL_VERSION_OF_glAlphaFunc -#define glAreTexturesResident CALL_THE_QGL_VERSION_OF_glAreTexturesResident -#define glArrayElement CALL_THE_QGL_VERSION_OF_glArrayElement -#define glBegin CALL_THE_QGL_VERSION_OF_glBegin -#define glBindTexture CALL_THE_QGL_VERSION_OF_glBindTexture -#define glBitmap CALL_THE_QGL_VERSION_OF_glBitmap -#define glBlendFunc CALL_THE_QGL_VERSION_OF_glBlendFunc -#define glCallList CALL_THE_QGL_VERSION_OF_glCallList -#define glCallLists CALL_THE_QGL_VERSION_OF_glCallLists -#define glClear CALL_THE_QGL_VERSION_OF_glClear -#define glClearAccum CALL_THE_QGL_VERSION_OF_glClearAccum -#define glClearColor CALL_THE_QGL_VERSION_OF_glClearColor -#define glClearDepth CALL_THE_QGL_VERSION_OF_glClearDepth -#define glClearIndex CALL_THE_QGL_VERSION_OF_glClearIndex -#define glClearStencil CALL_THE_QGL_VERSION_OF_glClearStencil -#define glClipPlane CALL_THE_QGL_VERSION_OF_glClipPlane -#define glColor3b CALL_THE_QGL_VERSION_OF_glColor3b -#define glColor3bv CALL_THE_QGL_VERSION_OF_glColor3bv -#define glColor3d CALL_THE_QGL_VERSION_OF_glColor3d -#define glColor3dv CALL_THE_QGL_VERSION_OF_glColor3dv -#define glColor3f CALL_THE_QGL_VERSION_OF_glColor3f -#define glColor3fv CALL_THE_QGL_VERSION_OF_glColor3fv -#define glColor3i CALL_THE_QGL_VERSION_OF_glColor3i -#define glColor3iv CALL_THE_QGL_VERSION_OF_glColor3iv -#define glColor3s CALL_THE_QGL_VERSION_OF_glColor3s -#define glColor3sv CALL_THE_QGL_VERSION_OF_glColor3sv -#define glColor3ub CALL_THE_QGL_VERSION_OF_glColor3ub -#define glColor3ubv CALL_THE_QGL_VERSION_OF_glColor3ubv -#define glColor3ui CALL_THE_QGL_VERSION_OF_glColor3ui -#define glColor3uiv CALL_THE_QGL_VERSION_OF_glColor3uiv -#define glColor3us CALL_THE_QGL_VERSION_OF_glColor3us -#define glColor3usv CALL_THE_QGL_VERSION_OF_glColor3usv -#define glColor4b CALL_THE_QGL_VERSION_OF_glColor4b -#define glColor4bv CALL_THE_QGL_VERSION_OF_glColor4bv -#define glColor4d CALL_THE_QGL_VERSION_OF_glColor4d -#define glColor4dv CALL_THE_QGL_VERSION_OF_glColor4dv -#define glColor4f CALL_THE_QGL_VERSION_OF_glColor4f -#define glColor4fv CALL_THE_QGL_VERSION_OF_glColor4fv -#define glColor4i CALL_THE_QGL_VERSION_OF_glColor4i -#define glColor4iv CALL_THE_QGL_VERSION_OF_glColor4iv -#define glColor4s CALL_THE_QGL_VERSION_OF_glColor4s -#define glColor4sv CALL_THE_QGL_VERSION_OF_glColor4sv -#define glColor4ub CALL_THE_QGL_VERSION_OF_glColor4ub -#define glColor4ubv CALL_THE_QGL_VERSION_OF_glColor4ubv -#define glColor4ui CALL_THE_QGL_VERSION_OF_glColor4ui -#define glColor4uiv CALL_THE_QGL_VERSION_OF_glColor4uiv -#define glColor4us CALL_THE_QGL_VERSION_OF_glColor4us -#define glColor4usv CALL_THE_QGL_VERSION_OF_glColor4usv -#define glColorMask CALL_THE_QGL_VERSION_OF_glColorMask -#define glColorMaterial CALL_THE_QGL_VERSION_OF_glColorMaterial -#define glColorPointer CALL_THE_QGL_VERSION_OF_glColorPointer -#define glCopyPixels CALL_THE_QGL_VERSION_OF_glCopyPixels -#define glCopyTexImage1D CALL_THE_QGL_VERSION_OF_glCopyTexImage1D -#define glCopyTexImage2D CALL_THE_QGL_VERSION_OF_glCopyTexImage2D -#define glCopyTexSubImage1D CALL_THE_QGL_VERSION_OF_glCopyTexSubImage1D -#define glCopyTexSubImage2D CALL_THE_QGL_VERSION_OF_glCopyTexSubImage2D -#define glCullFace CALL_THE_QGL_VERSION_OF_glCullFace -#define glDeleteLists CALL_THE_QGL_VERSION_OF_glDeleteLists -#define glDeleteTextures CALL_THE_QGL_VERSION_OF_glDeleteTextures -#define glDepthFunc CALL_THE_QGL_VERSION_OF_glDepthFunc -#define glDepthMask CALL_THE_QGL_VERSION_OF_glDepthMask -#define glDepthRange CALL_THE_QGL_VERSION_OF_glDepthRange -#define glDisable CALL_THE_QGL_VERSION_OF_glDisable -#define glDisableClientState CALL_THE_QGL_VERSION_OF_glDisableClientState -#define glDrawArrays CALL_THE_QGL_VERSION_OF_glDrawArrays -#define glDrawBuffer CALL_THE_QGL_VERSION_OF_glDrawBuffer -#define glDrawElements CALL_THE_QGL_VERSION_OF_glDrawElements -#define glDrawPixels CALL_THE_QGL_VERSION_OF_glDrawPixels -#define glEdgeFlag CALL_THE_QGL_VERSION_OF_glEdgeFlag -#define glEdgeFlagPointer CALL_THE_QGL_VERSION_OF_glEdgeFlagPointer -#define glEdgeFlagv CALL_THE_QGL_VERSION_OF_glEdgeFlagv -#define glEnable CALL_THE_QGL_VERSION_OF_glEnable -#define glEnableClientState CALL_THE_QGL_VERSION_OF_glEnableClientState -#define glEnd CALL_THE_QGL_VERSION_OF_glEnd -#define glEndList CALL_THE_QGL_VERSION_OF_glEndList -#define glEvalCoord1d CALL_THE_QGL_VERSION_OF_glEvalCoord1d -#define glEvalCoord1dv CALL_THE_QGL_VERSION_OF_glEvalCoord1dv -#define glEvalCoord1f CALL_THE_QGL_VERSION_OF_glEvalCoord1f -#define glEvalCoord1fv CALL_THE_QGL_VERSION_OF_glEvalCoord1fv -#define glEvalCoord2d CALL_THE_QGL_VERSION_OF_glEvalCoord2d -#define glEvalCoord2dv CALL_THE_QGL_VERSION_OF_glEvalCoord2dv -#define glEvalCoord2f CALL_THE_QGL_VERSION_OF_glEvalCoord2f -#define glEvalCoord2fv CALL_THE_QGL_VERSION_OF_glEvalCoord2fv -#define glEvalMesh1 CALL_THE_QGL_VERSION_OF_glEvalMesh1 -#define glEvalMesh2 CALL_THE_QGL_VERSION_OF_glEvalMesh2 -#define glEvalPoint1 CALL_THE_QGL_VERSION_OF_glEvalPoint1 -#define glEvalPoint2 CALL_THE_QGL_VERSION_OF_glEvalPoint2 -#define glFeedbackBuffer CALL_THE_QGL_VERSION_OF_glFeedbackBuffer -#define glFinish CALL_THE_QGL_VERSION_OF_glFinish -#define glFlush CALL_THE_QGL_VERSION_OF_glFlush -#define glFogf CALL_THE_QGL_VERSION_OF_glFogf -#define glFogfv CALL_THE_QGL_VERSION_OF_glFogfv -#define glFogi CALL_THE_QGL_VERSION_OF_glFogi -#define glFogiv CALL_THE_QGL_VERSION_OF_glFogiv -#define glFrontFace CALL_THE_QGL_VERSION_OF_glFrontFace -#define glFrustum CALL_THE_QGL_VERSION_OF_glFrustum -#define glGenLists CALL_THE_QGL_VERSION_OF_glGenLists -#define glGenTextures CALL_THE_QGL_VERSION_OF_glGenTextures -#define glGetBooleanv CALL_THE_QGL_VERSION_OF_glGetBooleanv -#define glGetClipPlane CALL_THE_QGL_VERSION_OF_glGetClipPlane -#define glGetDoublev CALL_THE_QGL_VERSION_OF_glGetDoublev -#define glGetError CALL_THE_QGL_VERSION_OF_glGetError -#define glGetFloatv CALL_THE_QGL_VERSION_OF_glGetFloatv -#define glGetIntegerv CALL_THE_QGL_VERSION_OF_glGetIntegerv -#define glGetLightfv CALL_THE_QGL_VERSION_OF_glGetLightfv -#define glGetLightiv CALL_THE_QGL_VERSION_OF_glGetLightiv -#define glGetMapdv CALL_THE_QGL_VERSION_OF_glGetMapdv -#define glGetMapfv CALL_THE_QGL_VERSION_OF_glGetMapfv -#define glGetMapiv CALL_THE_QGL_VERSION_OF_glGetMapiv -#define glGetMaterialfv CALL_THE_QGL_VERSION_OF_glGetMaterialfv -#define glGetMaterialiv CALL_THE_QGL_VERSION_OF_glGetMaterialiv -#define glGetPixelMapfv CALL_THE_QGL_VERSION_OF_glGetPixelMapfv -#define glGetPixelMapuiv CALL_THE_QGL_VERSION_OF_glGetPixelMapuiv -#define glGetPixelMapusv CALL_THE_QGL_VERSION_OF_glGetPixelMapusv -#define glGetPointerv CALL_THE_QGL_VERSION_OF_glGetPointerv -#define glGetPolygonStipple CALL_THE_QGL_VERSION_OF_glGetPolygonStipple -#define glGetString CALL_THE_QGL_VERSION_OF_glGetString -#define glGetTexEnvfv CALL_THE_QGL_VERSION_OF_glGetTexEnvfv -#define glGetTexEnviv CALL_THE_QGL_VERSION_OF_glGetTexEnviv -#define glGetTexGendv CALL_THE_QGL_VERSION_OF_glGetTexGendv -#define glGetTexGenfv CALL_THE_QGL_VERSION_OF_glGetTexGenfv -#define glGetTexGeniv CALL_THE_QGL_VERSION_OF_glGetTexGeniv -#define glGetTexImage CALL_THE_QGL_VERSION_OF_glGetTexImage -#define glGetTexLevelParameterfv CALL_THE_QGL_VERSION_OF_glGetTexLevelParameterfv -#define glGetTexLevelParameteriv CALL_THE_QGL_VERSION_OF_glGetTexLevelParameteriv -#define glGetTexParameterfv CALL_THE_QGL_VERSION_OF_glGetTexParameterfv -#define glGetTexParameteriv CALL_THE_QGL_VERSION_OF_glGetTexParameteriv -#define glHint CALL_THE_QGL_VERSION_OF_glHint -#define glIndexMask CALL_THE_QGL_VERSION_OF_glIndexMask -#define glIndexPointer CALL_THE_QGL_VERSION_OF_glIndexPointer -#define glIndexd CALL_THE_QGL_VERSION_OF_glIndexd -#define glIndexdv CALL_THE_QGL_VERSION_OF_glIndexdv -#define glIndexf CALL_THE_QGL_VERSION_OF_glIndexf -#define glIndexfv CALL_THE_QGL_VERSION_OF_glIndexfv -#define glIndexi CALL_THE_QGL_VERSION_OF_glIndexi -#define glIndexiv CALL_THE_QGL_VERSION_OF_glIndexiv -#define glIndexs CALL_THE_QGL_VERSION_OF_glIndexs -#define glIndexsv CALL_THE_QGL_VERSION_OF_glIndexsv -#define glIndexub CALL_THE_QGL_VERSION_OF_glIndexub -#define glIndexubv CALL_THE_QGL_VERSION_OF_glIndexubv -#define glInitNames CALL_THE_QGL_VERSION_OF_glInitNames -#define glInterleavedArrays CALL_THE_QGL_VERSION_OF_glInterleavedArrays -#define glIsEnabled CALL_THE_QGL_VERSION_OF_glIsEnabled -#define glIsList CALL_THE_QGL_VERSION_OF_glIsList -#define glIsTexture CALL_THE_QGL_VERSION_OF_glIsTexture -#define glLightModelf CALL_THE_QGL_VERSION_OF_glLightModelf -#define glLightModelfv CALL_THE_QGL_VERSION_OF_glLightModelfv -#define glLightModeli CALL_THE_QGL_VERSION_OF_glLightModeli -#define glLightModeliv CALL_THE_QGL_VERSION_OF_glLightModeliv -#define glLightf CALL_THE_QGL_VERSION_OF_glLightf -#define glLightfv CALL_THE_QGL_VERSION_OF_glLightfv -#define glLighti CALL_THE_QGL_VERSION_OF_glLighti -#define glLightiv CALL_THE_QGL_VERSION_OF_glLightiv -#define glLineStipple CALL_THE_QGL_VERSION_OF_glLineStipple -#define glLineWidth CALL_THE_QGL_VERSION_OF_glLineWidth -#define glListBase CALL_THE_QGL_VERSION_OF_glListBase -#define glLoadIdentity CALL_THE_QGL_VERSION_OF_glLoadIdentity -#define glLoadMatrixd CALL_THE_QGL_VERSION_OF_glLoadMatrixd -#define glLoadMatrixf CALL_THE_QGL_VERSION_OF_glLoadMatrixf -#define glLoadName CALL_THE_QGL_VERSION_OF_glLoadName -#define glLogicOp CALL_THE_QGL_VERSION_OF_glLogicOp -#define glMap1d CALL_THE_QGL_VERSION_OF_glMap1d -#define glMap1f CALL_THE_QGL_VERSION_OF_glMap1f -#define glMap2d CALL_THE_QGL_VERSION_OF_glMap2d -#define glMap2f CALL_THE_QGL_VERSION_OF_glMap2f -#define glMapGrid1d CALL_THE_QGL_VERSION_OF_glMapGrid1d -#define glMapGrid1f CALL_THE_QGL_VERSION_OF_glMapGrid1f -#define glMapGrid2d CALL_THE_QGL_VERSION_OF_glMapGrid2d -#define glMapGrid2f CALL_THE_QGL_VERSION_OF_glMapGrid2f -#define glMaterialf CALL_THE_QGL_VERSION_OF_glMaterialf -#define glMaterialfv CALL_THE_QGL_VERSION_OF_glMaterialfv -#define glMateriali CALL_THE_QGL_VERSION_OF_glMateriali -#define glMaterialiv CALL_THE_QGL_VERSION_OF_glMaterialiv -#define glMatrixMode CALL_THE_QGL_VERSION_OF_glMatrixMode -#define glMultMatrixd CALL_THE_QGL_VERSION_OF_glMultMatrixd -#define glMultMatrixf CALL_THE_QGL_VERSION_OF_glMultMatrixf -#define glNewList CALL_THE_QGL_VERSION_OF_glNewList -#define glNormal3b CALL_THE_QGL_VERSION_OF_glNormal3b -#define glNormal3bv CALL_THE_QGL_VERSION_OF_glNormal3bv -#define glNormal3d CALL_THE_QGL_VERSION_OF_glNormal3d -#define glNormal3dv CALL_THE_QGL_VERSION_OF_glNormal3dv -#define glNormal3f CALL_THE_QGL_VERSION_OF_glNormal3f -#define glNormal3fv CALL_THE_QGL_VERSION_OF_glNormal3fv -#define glNormal3i CALL_THE_QGL_VERSION_OF_glNormal3i -#define glNormal3iv CALL_THE_QGL_VERSION_OF_glNormal3iv -#define glNormal3s CALL_THE_QGL_VERSION_OF_glNormal3s -#define glNormal3sv CALL_THE_QGL_VERSION_OF_glNormal3sv -#define glNormalPointer CALL_THE_QGL_VERSION_OF_glNormalPointer -#define glOrtho CALL_THE_QGL_VERSION_OF_glOrtho -#define glPassThrough CALL_THE_QGL_VERSION_OF_glPassThrough -#define glPixelMapfv CALL_THE_QGL_VERSION_OF_glPixelMapfv -#define glPixelMapuiv CALL_THE_QGL_VERSION_OF_glPixelMapuiv -#define glPixelMapusv CALL_THE_QGL_VERSION_OF_glPixelMapusv -#define glPixelStoref CALL_THE_QGL_VERSION_OF_glPixelStoref -#define glPixelStorei CALL_THE_QGL_VERSION_OF_glPixelStorei -#define glPixelTransferf CALL_THE_QGL_VERSION_OF_glPixelTransferf -#define glPixelTransferi CALL_THE_QGL_VERSION_OF_glPixelTransferi -#define glPixelZoom CALL_THE_QGL_VERSION_OF_glPixelZoom -#define glPointSize CALL_THE_QGL_VERSION_OF_glPointSize -#define glPolygonMode CALL_THE_QGL_VERSION_OF_glPolygonMode -#define glPolygonOffset CALL_THE_QGL_VERSION_OF_glPolygonOffset -#define glPolygonStipple CALL_THE_QGL_VERSION_OF_glPolygonStipple -#define glPopAttrib CALL_THE_QGL_VERSION_OF_glPopAttrib -#define glPopClientAttrib CALL_THE_QGL_VERSION_OF_glPopClientAttrib -#define glPopMatrix CALL_THE_QGL_VERSION_OF_glPopMatrix -#define glPopName CALL_THE_QGL_VERSION_OF_glPopName -#define glPrioritizeTextures CALL_THE_QGL_VERSION_OF_glPrioritizeTextures -#define glPushAttrib CALL_THE_QGL_VERSION_OF_glPushAttrib -#define glPushClientAttrib CALL_THE_QGL_VERSION_OF_glPushClientAttrib -#define glPushMatrix CALL_THE_QGL_VERSION_OF_glPushMatrix -#define glPushName CALL_THE_QGL_VERSION_OF_glPushName -#define glRasterPos2d CALL_THE_QGL_VERSION_OF_glRasterPos2d -#define glRasterPos2dv CALL_THE_QGL_VERSION_OF_glRasterPos2dv -#define glRasterPos2f CALL_THE_QGL_VERSION_OF_glRasterPos2f -#define glRasterPos2fv CALL_THE_QGL_VERSION_OF_glRasterPos2fv -#define glRasterPos2i CALL_THE_QGL_VERSION_OF_glRasterPos2i -#define glRasterPos2iv CALL_THE_QGL_VERSION_OF_glRasterPos2iv -#define glRasterPos2s CALL_THE_QGL_VERSION_OF_glRasterPos2s -#define glRasterPos2sv CALL_THE_QGL_VERSION_OF_glRasterPos2sv -#define glRasterPos3d CALL_THE_QGL_VERSION_OF_glRasterPos3d -#define glRasterPos3dv CALL_THE_QGL_VERSION_OF_glRasterPos3dv -#define glRasterPos3f CALL_THE_QGL_VERSION_OF_glRasterPos3f -#define glRasterPos3fv CALL_THE_QGL_VERSION_OF_glRasterPos3fv -#define glRasterPos3i CALL_THE_QGL_VERSION_OF_glRasterPos3i -#define glRasterPos3iv CALL_THE_QGL_VERSION_OF_glRasterPos3iv -#define glRasterPos3s CALL_THE_QGL_VERSION_OF_glRasterPos3s -#define glRasterPos3sv CALL_THE_QGL_VERSION_OF_glRasterPos3sv -#define glRasterPos4d CALL_THE_QGL_VERSION_OF_glRasterPos4d -#define glRasterPos4dv CALL_THE_QGL_VERSION_OF_glRasterPos4dv -#define glRasterPos4f CALL_THE_QGL_VERSION_OF_glRasterPos4f -#define glRasterPos4fv CALL_THE_QGL_VERSION_OF_glRasterPos4fv -#define glRasterPos4i CALL_THE_QGL_VERSION_OF_glRasterPos4i -#define glRasterPos4iv CALL_THE_QGL_VERSION_OF_glRasterPos4iv -#define glRasterPos4s CALL_THE_QGL_VERSION_OF_glRasterPos4s -#define glRasterPos4sv CALL_THE_QGL_VERSION_OF_glRasterPos4sv -#define glReadBuffer CALL_THE_QGL_VERSION_OF_glReadBuffer -#define glReadPixels CALL_THE_QGL_VERSION_OF_glReadPixels -#define glRectd CALL_THE_QGL_VERSION_OF_glRectd -#define glRectdv CALL_THE_QGL_VERSION_OF_glRectdv -#define glRectf CALL_THE_QGL_VERSION_OF_glRectf -#define glRectfv CALL_THE_QGL_VERSION_OF_glRectfv -#define glRecti CALL_THE_QGL_VERSION_OF_glRecti -#define glRectiv CALL_THE_QGL_VERSION_OF_glRectiv -#define glRects CALL_THE_QGL_VERSION_OF_glRects -#define glRectsv CALL_THE_QGL_VERSION_OF_glRectsv -#define glRenderMode CALL_THE_QGL_VERSION_OF_glRenderMode -#define glRotated CALL_THE_QGL_VERSION_OF_glRotated -#define glRotatef CALL_THE_QGL_VERSION_OF_glRotatef -#define glScaled CALL_THE_QGL_VERSION_OF_glScaled -#define glScalef CALL_THE_QGL_VERSION_OF_glScalef -#define glScissor CALL_THE_QGL_VERSION_OF_glScissor -#define glSelectBuffer CALL_THE_QGL_VERSION_OF_glSelectBuffer -#define glShadeModel CALL_THE_QGL_VERSION_OF_glShadeModel -#define glStencilFunc CALL_THE_QGL_VERSION_OF_glStencilFunc -#define glStencilMask CALL_THE_QGL_VERSION_OF_glStencilMask -#define glStencilOp CALL_THE_QGL_VERSION_OF_glStencilOp -#define glTexCoord1d CALL_THE_QGL_VERSION_OF_glTexCoord1d -#define glTexCoord1dv CALL_THE_QGL_VERSION_OF_glTexCoord1dv -#define glTexCoord1f CALL_THE_QGL_VERSION_OF_glTexCoord1f -#define glTexCoord1fv CALL_THE_QGL_VERSION_OF_glTexCoord1fv -#define glTexCoord1i CALL_THE_QGL_VERSION_OF_glTexCoord1i -#define glTexCoord1iv CALL_THE_QGL_VERSION_OF_glTexCoord1iv -#define glTexCoord1s CALL_THE_QGL_VERSION_OF_glTexCoord1s -#define glTexCoord1sv CALL_THE_QGL_VERSION_OF_glTexCoord1sv -#define glTexCoord2d CALL_THE_QGL_VERSION_OF_glTexCoord2d -#define glTexCoord2dv CALL_THE_QGL_VERSION_OF_glTexCoord2dv -#define glTexCoord2f CALL_THE_QGL_VERSION_OF_glTexCoord2f -#define glTexCoord2fv CALL_THE_QGL_VERSION_OF_glTexCoord2fv -#define glTexCoord2i CALL_THE_QGL_VERSION_OF_glTexCoord2i -#define glTexCoord2iv CALL_THE_QGL_VERSION_OF_glTexCoord2iv -#define glTexCoord2s CALL_THE_QGL_VERSION_OF_glTexCoord2s -#define glTexCoord2sv CALL_THE_QGL_VERSION_OF_glTexCoord2sv -#define glTexCoord3d CALL_THE_QGL_VERSION_OF_glTexCoord3d -#define glTexCoord3dv CALL_THE_QGL_VERSION_OF_glTexCoord3dv -#define glTexCoord3f CALL_THE_QGL_VERSION_OF_glTexCoord3f -#define glTexCoord3fv CALL_THE_QGL_VERSION_OF_glTexCoord3fv -#define glTexCoord3i CALL_THE_QGL_VERSION_OF_glTexCoord3i -#define glTexCoord3iv CALL_THE_QGL_VERSION_OF_glTexCoord3iv -#define glTexCoord3s CALL_THE_QGL_VERSION_OF_glTexCoord3s -#define glTexCoord3sv CALL_THE_QGL_VERSION_OF_glTexCoord3sv -#define glTexCoord4d CALL_THE_QGL_VERSION_OF_glTexCoord4d -#define glTexCoord4dv CALL_THE_QGL_VERSION_OF_glTexCoord4dv -#define glTexCoord4f CALL_THE_QGL_VERSION_OF_glTexCoord4f -#define glTexCoord4fv CALL_THE_QGL_VERSION_OF_glTexCoord4fv -#define glTexCoord4i CALL_THE_QGL_VERSION_OF_glTexCoord4i -#define glTexCoord4iv CALL_THE_QGL_VERSION_OF_glTexCoord4iv -#define glTexCoord4s CALL_THE_QGL_VERSION_OF_glTexCoord4s -#define glTexCoord4sv CALL_THE_QGL_VERSION_OF_glTexCoord4sv -#define glTexCoordPointer CALL_THE_QGL_VERSION_OF_glTexCoordPointer -#define glTexEnvf CALL_THE_QGL_VERSION_OF_glTexEnvf -#define glTexEnvfv CALL_THE_QGL_VERSION_OF_glTexEnvfv -#define glTexEnvi CALL_THE_QGL_VERSION_OF_glTexEnvi -#define glTexEnviv CALL_THE_QGL_VERSION_OF_glTexEnviv -#define glTexGend CALL_THE_QGL_VERSION_OF_glTexGend -#define glTexGendv CALL_THE_QGL_VERSION_OF_glTexGendv -#define glTexGenf CALL_THE_QGL_VERSION_OF_glTexGenf -#define glTexGenfv CALL_THE_QGL_VERSION_OF_glTexGenfv -#define glTexGeni CALL_THE_QGL_VERSION_OF_glTexGeni -#define glTexGeniv CALL_THE_QGL_VERSION_OF_glTexGeniv -#define glTexImage1D CALL_THE_QGL_VERSION_OF_glTexImage1D -#define glTexImage2D CALL_THE_QGL_VERSION_OF_glTexImage2D -#define glTexParameterf CALL_THE_QGL_VERSION_OF_glTexParameterf -#define glTexParameterfv CALL_THE_QGL_VERSION_OF_glTexParameterfv -#define glTexParameteri CALL_THE_QGL_VERSION_OF_glTexParameteri -#define glTexParameteriv CALL_THE_QGL_VERSION_OF_glTexParameteriv -#define glTexSubImage1D CALL_THE_QGL_VERSION_OF_glTexSubImage1D -#define glTexSubImage2D CALL_THE_QGL_VERSION_OF_glTexSubImage2D -#define glTranslated CALL_THE_QGL_VERSION_OF_glTranslated -#define glTranslatef CALL_THE_QGL_VERSION_OF_glTranslatef -#define glVertex2d CALL_THE_QGL_VERSION_OF_glVertex2d -#define glVertex2dv CALL_THE_QGL_VERSION_OF_glVertex2dv -#define glVertex2f CALL_THE_QGL_VERSION_OF_glVertex2f -#define glVertex2fv CALL_THE_QGL_VERSION_OF_glVertex2fv -#define glVertex2i CALL_THE_QGL_VERSION_OF_glVertex2i -#define glVertex2iv CALL_THE_QGL_VERSION_OF_glVertex2iv -#define glVertex2s CALL_THE_QGL_VERSION_OF_glVertex2s -#define glVertex2sv CALL_THE_QGL_VERSION_OF_glVertex2sv -#define glVertex3d CALL_THE_QGL_VERSION_OF_glVertex3d -#define glVertex3dv CALL_THE_QGL_VERSION_OF_glVertex3dv -#define glVertex3f CALL_THE_QGL_VERSION_OF_glVertex3f -#define glVertex3fv CALL_THE_QGL_VERSION_OF_glVertex3fv -#define glVertex3i CALL_THE_QGL_VERSION_OF_glVertex3i -#define glVertex3iv CALL_THE_QGL_VERSION_OF_glVertex3iv -#define glVertex3s CALL_THE_QGL_VERSION_OF_glVertex3s -#define glVertex3sv CALL_THE_QGL_VERSION_OF_glVertex3sv -#define glVertex4d CALL_THE_QGL_VERSION_OF_glVertex4d -#define glVertex4dv CALL_THE_QGL_VERSION_OF_glVertex4dv -#define glVertex4f CALL_THE_QGL_VERSION_OF_glVertex4f -#define glVertex4fv CALL_THE_QGL_VERSION_OF_glVertex4fv -#define glVertex4i CALL_THE_QGL_VERSION_OF_glVertex4i -#define glVertex4iv CALL_THE_QGL_VERSION_OF_glVertex4iv -#define glVertex4s CALL_THE_QGL_VERSION_OF_glVertex4s -#define glVertex4sv CALL_THE_QGL_VERSION_OF_glVertex4sv -#define glVertexPointer CALL_THE_QGL_VERSION_OF_glVertexPointer -#define glViewport CALL_THE_QGL_VERSION_OF_glViewport diff --git a/code/macosx/macosx_sndcore.m b/code/macosx/macosx_sndcore.m deleted file mode 100644 index 669af1da..00000000 --- a/code/macosx/macosx_sndcore.m +++ /dev/null @@ -1,325 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ - -// mac_snddma.c -// all other sound mixing is portable - -#include "../client/snd_local.h" - -#include -#include -#include - -// For 'ri' -#include "../renderer/tr_local.h" - -#import -#import - -static unsigned int submissionChunk; -static unsigned int maxMixedSamples; -static short *s_mixedSamples; -static int s_chunkCount; // number of chunks submitted -static qboolean s_isRunning; - -static AudioDeviceID outputDeviceID; -static AudioStreamBasicDescription outputStreamBasicDescription; - -/* -=============== -audioDeviceIOProc -=============== -*/ - -OSStatus audioDeviceIOProc(AudioDeviceID inDevice, - const AudioTimeStamp *inNow, - const AudioBufferList *inInputData, - const AudioTimeStamp *inInputTime, - AudioBufferList *outOutputData, - const AudioTimeStamp *inOutputTime, - void *inClientData) -{ - int offset; - short *samples; - unsigned int sampleIndex; - float *outBuffer; - float scale, temp; - - offset = ( s_chunkCount * submissionChunk ) % maxMixedSamples; - samples = s_mixedSamples + offset; - - assert(outOutputData->mNumberBuffers == 1); - assert(outOutputData->mBuffers[0].mNumberChannels == 2); - //assert(outOutputData->mBuffers[0].mDataByteSize == (dma.submission_chunk * sizeof(float))); - - outBuffer = (float *)outOutputData->mBuffers[0].mData; - - // If we have run out of samples, return silence - if (s_chunkCount * submissionChunk > dma.channels * s_paintedtime) { - memset(outBuffer, 0, sizeof(*outBuffer) * dma.submission_chunk); - } else { - scale = (1.0f / SHRT_MAX); - if (outputStreamBasicDescription.mSampleRate == 44100 && dma.speed == 22050) { - for (sampleIndex = 0; sampleIndex < dma.submission_chunk; sampleIndex+=2) { - // Convert the samples from shorts to floats. Scale the floats to be [-1..1]. - temp = samples[sampleIndex + 0] * scale; - outBuffer[(sampleIndex<<1)+0] = temp; - outBuffer[(sampleIndex<<1)+2] = temp; - - temp = samples[sampleIndex + 1] * scale; - outBuffer[(sampleIndex<<1)+1] = temp; - outBuffer[(sampleIndex<<1)+3] = temp; - } - } else if (outputStreamBasicDescription.mSampleRate == 44100 && dma.speed == 11025) { - for (sampleIndex = 0; sampleIndex < dma.submission_chunk; sampleIndex+=4) { - // Convert the samples from shorts to floats. Scale the floats to be [-1..1]. - temp = samples[sampleIndex + 0] * scale; - outBuffer[(sampleIndex<<1)+0] = temp; - outBuffer[(sampleIndex<<1)+2] = temp; - outBuffer[(sampleIndex<<1)+4] = temp; - outBuffer[(sampleIndex<<1)+6] = temp; - - temp = samples[sampleIndex + 1] * scale; - outBuffer[(sampleIndex<<1)+1] = temp; - outBuffer[(sampleIndex<<1)+3] = temp; - outBuffer[(sampleIndex<<1)+5] = temp; - outBuffer[(sampleIndex<<1)+7] = temp; - } - } else { - for (sampleIndex = 0; sampleIndex < dma.submission_chunk; sampleIndex++) { - // Convert the samples from shorts to floats. Scale the floats to be [-1..1]. - outBuffer[sampleIndex] = samples[sampleIndex] * scale; - } - } - } - - s_chunkCount++; // this is the next buffer we will submit - return 0; -} - - -/* -=============== -S_MakeTestPattern -=============== -*/ -void S_MakeTestPattern( void ) { - int i; - float v; - int sample; - - for ( i = 0 ; i < dma.samples / 2 ; i ++ ) { - v = sin( M_PI * 2 * i / 64 ); - sample = v * 0x4000; - ((short *)dma.buffer)[i*2] = sample; - ((short *)dma.buffer)[i*2+1] = sample; - } -} - -/* -=============== -SNDDMA_Init -=============== -*/ -qboolean SNDDMA_Init(void) -{ - cvar_t *bufferSize; - cvar_t *chunkSize; - OSStatus status; - UInt32 propertySize, bufferByteCount; - - if (s_isRunning) - return qtrue; - - chunkSize = ri.Cvar_Get( "s_chunksize", "2048", CVAR_ARCHIVE ); - bufferSize = ri.Cvar_Get( "s_buffersize", "16384", CVAR_ARCHIVE ); - Com_Printf(" Chunk size = %d\n", chunkSize->integer); - Com_Printf("Buffer size = %d\n", bufferSize->integer); - - if (!chunkSize->integer) - ri.Error(ERR_FATAL, "s_chunksize must be non-zero\n"); - if (!bufferSize->integer) - ri.Error(ERR_FATAL, "s_buffersize must be non-zero\n"); - if (chunkSize->integer >= bufferSize->integer) - ri.Error(ERR_FATAL, "s_chunksize must be less than s_buffersize\n"); - if (bufferSize->integer % chunkSize->integer) - ri.Error(ERR_FATAL, "s_buffersize must be an even multiple of s_chunksize\n"); - - // Get the output device - propertySize = sizeof(outputDeviceID); - status = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &propertySize, &outputDeviceID); - if (status) { - Com_Printf("AudioHardwareGetProperty returned %d\n", status); - return qfalse; - } - - if (outputDeviceID == kAudioDeviceUnknown) { - Com_Printf("AudioHardwareGetProperty: outputDeviceID is kAudioDeviceUnknown\n"); - return qfalse; - } - - // Configure the output device - propertySize = sizeof(bufferByteCount); - bufferByteCount = chunkSize->integer * sizeof(float); - status = AudioDeviceSetProperty(outputDeviceID, NULL, 0, NO, kAudioDevicePropertyBufferSize, propertySize, &bufferByteCount); - if (status) { - Com_Printf("AudioDeviceSetProperty: returned %d when setting kAudioDevicePropertyBufferSize to %d\n", status, chunkSize->integer); - return qfalse; - } - - propertySize = sizeof(bufferByteCount); - status = AudioDeviceGetProperty(outputDeviceID, 0, NO, kAudioDevicePropertyBufferSize, &propertySize, &bufferByteCount); - if (status) { - Com_Printf("AudioDeviceGetProperty: returned %d when setting kAudioDevicePropertyBufferSize\n", status); - return qfalse; - } - - // Print out the device status - propertySize = sizeof(outputStreamBasicDescription); - status = AudioDeviceGetProperty(outputDeviceID, 0, NO, kAudioDevicePropertyStreamFormat, &propertySize, &outputStreamBasicDescription); - if (status) { - Com_Printf("AudioDeviceGetProperty: returned %d when getting kAudioDevicePropertyStreamFormat\n", status); - return qfalse; - } - - Com_Printf("Hardware format:\n"); - Com_Printf(" %f mSampleRate\n", outputStreamBasicDescription.mSampleRate); - Com_Printf(" %c%c%c%c mFormatID\n", - (outputStreamBasicDescription.mFormatID & 0xff000000) >> 24, - (outputStreamBasicDescription.mFormatID & 0x00ff0000) >> 16, - (outputStreamBasicDescription.mFormatID & 0x0000ff00) >> 8, - (outputStreamBasicDescription.mFormatID & 0x000000ff) >> 0); - Com_Printf(" %5d mBytesPerPacket\n", outputStreamBasicDescription.mBytesPerPacket); - Com_Printf(" %5d mFramesPerPacket\n", outputStreamBasicDescription.mFramesPerPacket); - Com_Printf(" %5d mBytesPerFrame\n", outputStreamBasicDescription.mBytesPerFrame); - Com_Printf(" %5d mChannelsPerFrame\n", outputStreamBasicDescription.mChannelsPerFrame); - Com_Printf(" %5d mBitsPerChannel\n", outputStreamBasicDescription.mBitsPerChannel); - - if(outputStreamBasicDescription.mFormatID != kAudioFormatLinearPCM) { - Com_Printf("Default Audio Device doesn't support Linear PCM!"); - return qfalse; - } - - // Start sound running - status = AudioDeviceAddIOProc(outputDeviceID, audioDeviceIOProc, NULL); - if (status) { - Com_Printf("AudioDeviceAddIOProc: returned %d\n", status); - return qfalse; - } - - submissionChunk = chunkSize->integer; - if (outputStreamBasicDescription.mSampleRate == 44100) { - submissionChunk = chunkSize->integer/2; - } - maxMixedSamples = bufferSize->integer; - s_mixedSamples = calloc(1, sizeof(*s_mixedSamples) * maxMixedSamples); - Com_Printf("Chunk Count = %d\n", (maxMixedSamples / submissionChunk)); - - // Tell the main app what we expect from it - dma.samples = maxMixedSamples; - dma.submission_chunk = submissionChunk; - dma.samplebits = 16; - dma.buffer = (byte *)s_mixedSamples; - dma.channels = outputStreamBasicDescription.mChannelsPerFrame; - dma.speed = 22050; //(unsigned long)outputStreamBasicDescription.mSampleRate; - - // We haven't enqueued anything yet - s_chunkCount = 0; - - status = AudioDeviceStart(outputDeviceID, audioDeviceIOProc); - if (status) { - Com_Printf("AudioDeviceStart: returned %d\n", status); - return qfalse; - } - - s_isRunning = qtrue; - - return qtrue; -} - -/* -=============== -SNDDMA_GetBufferDuration -=============== -*/ -float SNDDMA_GetBufferDuration(void) -{ - return (float)dma.samples / (float)(dma.channels * dma.speed); -} - -/* -=============== -SNDDMA_GetDMAPos -=============== -*/ -int SNDDMA_GetDMAPos(void) -{ - return s_chunkCount * dma.submission_chunk; -} - -/* -=============== -SNDDMA_Shutdown -=============== -*/ -void SNDDMA_Shutdown(void) -{ - OSStatus status; - - if (!s_isRunning) - return; - - status = AudioDeviceStop(outputDeviceID, audioDeviceIOProc); - if (status) { - Com_Printf("AudioDeviceStop: returned %d\n", status); - return; - } - - s_isRunning = qfalse; - - status = AudioDeviceRemoveIOProc(outputDeviceID, audioDeviceIOProc); - if (status) { - Com_Printf("AudioDeviceRemoveIOProc: returned %d\n", status); - return; - } - - free(s_mixedSamples); - s_mixedSamples = NULL; - dma.samples = NULL; -} - -/* -=============== -SNDDMA_BeginPainting -=============== -*/ -void SNDDMA_BeginPainting(void) { -} - -/* -=============== -SNDDMA_Submit -=============== -*/ -void SNDDMA_Submit(void) { -} - diff --git a/code/macosx/macosx_snddma.m b/code/macosx/macosx_snddma.m deleted file mode 100644 index 5d1c7057..00000000 --- a/code/macosx/macosx_snddma.m +++ /dev/null @@ -1,205 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ - -// mac_snddma.c -// all other sound mixing is portable - -#include "../client/snd_local.h" -#include - -// For 'ri' -#include "../renderer/tr_local.h" - -#import - -// TJW - Different versions of SoundManager have different DMA buffer sizes. On MacOS X DP2, -// the buffer size is 8K. On MacOS 9 it is much smaller. The SoundManager guy at Apple says -// that the size of the buffer will be decreasing for final release to help get rid of latency. -//#define MAX_MIXED_SAMPLES (0x8000 * 64) -//#define SUBMISSION_CHUNK (0x100 * 64) - -// Original MacOS 9 sizes -//#define MAX_MIXED_SAMPLES 0x8000 -//#define SUBMISSION_CHUNK 0x100 - - -static unsigned int submissionChunk; -static unsigned int maxMixedSamples; - -static short *s_mixedSamples; -static int s_chunkCount; // number of chunks submitted -static SndChannel *s_sndChan; -static ExtSoundHeader s_sndHeader; - -/* -=============== -S_Callback -=============== -*/ -void S_Callback( SndChannel *sc, SndCommand *cmd ) -{ - SndCommand mySndCmd; - SndCommand mySndCmd2; - int offset; - - offset = ( s_chunkCount * submissionChunk ) & (maxMixedSamples-1); - - // queue up another sound buffer - memset( &s_sndHeader, 0, sizeof( s_sndHeader ) ); - s_sndHeader.samplePtr = (void *)(s_mixedSamples + offset); - s_sndHeader.numChannels = 2; - s_sndHeader.sampleRate = rate22khz; - s_sndHeader.loopStart = 0; - s_sndHeader.loopEnd = 0; - s_sndHeader.encode = extSH; - s_sndHeader.baseFrequency = 1; - s_sndHeader.numFrames = submissionChunk / 2; - s_sndHeader.markerChunk = NULL; - s_sndHeader.instrumentChunks = NULL; - s_sndHeader.AESRecording = NULL; - s_sndHeader.sampleSize = 16; - - mySndCmd.cmd = bufferCmd; - mySndCmd.param1 = 0; - mySndCmd.param2 = (int)&s_sndHeader; - SndDoCommand( sc, &mySndCmd, true ); - - // and another callback - mySndCmd2.cmd = callBackCmd; - mySndCmd2.param1 = 0; - mySndCmd2.param2 = 0; - SndDoCommand( sc, &mySndCmd2, true ); - - s_chunkCount++; // this is the next buffer we will submit -} - -/* -=============== -S_MakeTestPattern -=============== -*/ -void S_MakeTestPattern( void ) { - int i; - float v; - int sample; - - for ( i = 0 ; i < dma.samples / 2 ; i ++ ) { - v = sin( M_PI * 2 * i / 64 ); - sample = v * 0x4000; - ((short *)dma.buffer)[i*2] = sample; - ((short *)dma.buffer)[i*2+1] = sample; - } -} - -/* -=============== -SNDDMA_Init -=============== -*/ -qboolean SNDDMA_Init(void) -{ - int err; - cvar_t *bufferSize; - cvar_t *chunkSize; - - chunkSize = ri.Cvar_Get( "s_chunksize", "8192", CVAR_ARCHIVE ); - bufferSize = ri.Cvar_Get( "s_buffersize", "65536", CVAR_ARCHIVE ); - - if (!chunkSize->integer) { - ri.Error(ERR_FATAL, "snd_chunkSize must be non-zero\n"); - } - - if (!bufferSize->integer) { - ri.Error(ERR_FATAL, "snd_bufferSize must be non-zero\n"); - } - - if (chunkSize->integer >= bufferSize->integer) { - ri.Error(ERR_FATAL, "snd_chunkSize must be less than snd_bufferSize\n"); - } - - if (bufferSize->integer % chunkSize->integer) { - ri.Error(ERR_FATAL, "snd_bufferSize must be an even multiple of snd_chunkSize\n"); - } - - // create a sound channel - s_sndChan = NULL; - err = SndNewChannel( &s_sndChan, sampledSynth, initStereo, NewSndCallBackProc(S_Callback) ); - if ( err ) { - return false; - } - - submissionChunk = chunkSize->integer; - maxMixedSamples = bufferSize->integer; - - s_mixedSamples = NSZoneMalloc(NULL, sizeof(*s_mixedSamples) * maxMixedSamples); - - dma.channels = 2; - dma.samples = maxMixedSamples; - dma.submission_chunk = submissionChunk; - dma.samplebits = 16; - dma.speed = 22050; - dma.buffer = (byte *)s_mixedSamples; - - // que up the first submission-chunk sized buffer - s_chunkCount = 0; - - S_Callback( s_sndChan, NULL ); - - return qtrue; -} - -/* -=============== -SNDDMA_GetDMAPos -=============== -*/ -int SNDDMA_GetDMAPos(void) { - return s_chunkCount * submissionChunk; -} - -/* -=============== -SNDDMA_Shutdown -=============== -*/ -void SNDDMA_Shutdown(void) { - if ( s_sndChan ) { - SndDisposeChannel( s_sndChan, true ); - s_sndChan = NULL; - } -} - -/* -=============== -SNDDMA_BeginPainting -=============== -*/ -void SNDDMA_BeginPainting(void) { -} - -/* -=============== -SNDDMA_Submit -=============== -*/ -void SNDDMA_Submit(void) { -} diff --git a/code/macosx/macosx_sys.m b/code/macosx/macosx_sys.m deleted file mode 100644 index 21effd08..00000000 --- a/code/macosx/macosx_sys.m +++ /dev/null @@ -1,537 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -#import "../client/client.h" -#import "macosx_local.h" - -#import "dlfcn.h" -#import "Q3Controller.h" - -#import -#import -#import -#import -#import - -#import -#import -#import -#import -#import - -#ifdef OMNI_TIMER -#import "macosx_timers.h" -#endif - -qboolean stdin_active = qfalse; - -//=========================================================================== - -int main(int argc, const char *argv[]) { -#ifdef DEDICATED - Q3Controller *controller; - - stdin_active = qtrue; - controller = [[Q3Controller alloc] init]; - [controller quakeMain]; - return 0; -#else - return NSApplicationMain(argc, argv); -#endif -} - -//=========================================================================== - -/* -================= -Sys_UnloadDll - -================= -*/ -void Sys_UnloadDll( void *dllHandle ) { - if ( !dllHandle ) { - return; - } - dlclose( dllHandle ); -} - -/* -================= -Sys_LoadDll - -Used to load a development dll instead of a virtual machine -================= -*/ -extern char *FS_BuildOSPath( const char *base, const char *game, const char *qpath ); - -void * QDECL Sys_LoadDll( const char *name, char *fqpath , long (QDECL **entryPoint)(long, ...), - long (QDECL *systemcalls)(long, ...) ) { - void *libHandle; - void (*dllEntry)( long (*syscallptr)(long, ...) ); - NSString *libraryPath; - const char *path; - - // TTimo - // I don't understand the search strategy here. How can the Quake3 bundle know about the location - // of the other bundles? is that configured somewhere in XCode? - /* - bundlePath = [[NSBundle mainBundle] pathForResource: [NSString stringWithCString: name] ofType: @"bundle"]; - libraryPath = [NSString stringWithFormat: @"%@/Contents/MacOS/%s", bundlePath, name]; - */ - libraryPath = [NSString stringWithFormat: @"%s.bundle/Contents/MacOS/%s", name, name]; - if (!libraryPath) - return NULL; - - path = [libraryPath cString]; - Com_Printf("Loading '%s'.\n", path); - libHandle = dlopen( [libraryPath cString], RTLD_LAZY ); - if (!libHandle) { - libHandle = dlopen( name, RTLD_LAZY ); - if (!libHandle) { - Com_Printf("Error loading dll: %s\n", dlerror()); - return NULL; - } - } - - dllEntry = dlsym( libHandle, "_dllEntry" ); - if (!dllEntry) { - Com_Printf("Error loading dll: No dllEntry symbol.\n"); - dlclose(libHandle); - return NULL; - } - - *entryPoint = dlsym( libHandle, "_vmMain" ); - if (!*entryPoint) { - Com_Printf("Error loading dll: No vmMain symbol.\n"); - dlclose(libHandle); - return NULL; - } - - dllEntry(systemcalls); - return libHandle; -} - -//=========================================================================== - -char *Sys_GetClipboardData(void) // FIXME -{ - NSPasteboard *pasteboard; - NSArray *pasteboardTypes; - - pasteboard = [NSPasteboard generalPasteboard]; - pasteboardTypes = [pasteboard types]; - if ([pasteboardTypes containsObject:NSStringPboardType]) { - NSString *clipboardString; - - clipboardString = [pasteboard stringForType:NSStringPboardType]; - if (clipboardString && [clipboardString length] > 0) { - return strdup([clipboardString cString]); - } - } - return NULL; -} - -char *Sys_GetWholeClipboard ( void ) -{ - return NULL; -} - -void Sys_SetClipboard (const char *contents) -{ -} - - -/* -================== -Sys_FunctionCheckSum -================== -*/ -int Sys_FunctionCheckSum(void *f1) { - return 0; -} - -/* -================== -Sys_MonkeyShouldBeSpanked -================== -*/ -int Sys_MonkeyShouldBeSpanked( void ) { - return 0; -} - -//=========================================================================== - -void Sys_BeginProfiling(void) -{ -} - -void Sys_EndProfiling(void) -{ -} - -//=========================================================================== - -/* -================ -Sys_Init - -The cvar and file system has been setup, so configurations are loaded -================ -*/ -void Sys_Init(void) -{ -#ifdef OMNI_TIMER - InitializeTimers(); - OTStackPushRoot(rootNode); -#endif - - NET_Init(); - Sys_InitInput(); -} - -/* -================= -Sys_Shutdown -================= -*/ -void Sys_Shutdown(void) -{ - Com_Printf( "----- Sys_Shutdown -----\n" ); - Sys_EndProfiling(); - Sys_ShutdownInput(); - Com_Printf( "------------------------\n" ); -} - -void Sys_Error(const char *error, ...) -{ - va_list argptr; - NSString *formattedString; - - Sys_Shutdown(); - - va_start(argptr,error); - formattedString = [[NSString alloc] initWithFormat:[NSString stringWithCString:error] arguments:argptr]; - va_end(argptr); - - NSLog(@"Sys_Error: %@", formattedString); - NSRunAlertPanel(@"Quake 3 Error", formattedString, nil, nil, nil); - - Sys_Quit(); -} - -void Sys_Quit(void) -{ - Sys_Shutdown(); - [NSApp terminate:nil]; -} - -/* -================ -Sys_Print - -This is called for all console output, even if the game is running -full screen and the dedicated console window is hidden. -================ -*/ - -char *ansiColors[8] = - { "\033[30m" , /* ANSI Black */ - "\033[31m" , /* ANSI Red */ - "\033[32m" , /* ANSI Green */ - "\033[33m" , /* ANSI Yellow */ - "\033[34m" , /* ANSI Blue */ - "\033[36m" , /* ANSI Cyan */ - "\033[35m" , /* ANSI Magenta */ - "\033[37m" }; /* ANSI White */ - -void Sys_Print(const char *text) -{ -#if 0 - /* Okay, this is a stupid hack, but what the hell, I was bored. ;) */ - const char *scan = text; - int index; - - /* Make sure terminal mode is reset at the start of the line... */ - fputs("\033[0m", stdout); - - while(*scan) { - /* See if we have a color control code. If so, snarf the character, - print what we have so far, print the ANSI Terminal color code, - skip over the color control code and continue */ - if(Q_IsColorString(scan)) { - index = ColorIndex(scan[1]); - - /* Flush current message */ - if(scan != text) { - fwrite(text, scan - text, 1, stdout); - } - - /* Write ANSI color code */ - fputs(ansiColors[index], stdout); - - /* Reset search */ - text = scan+2; - scan = text; - continue; - } - scan++; - } - - /* Flush whatever's left */ - fputs(text, stdout); - - /* Make sure terminal mode is reset at the end of the line too... */ - fputs("\033[0m", stdout); - -#else - fputs(text, stdout); -#endif -} - - - -/* -================ -Sys_CheckCD - -Return true if the proper CD is in the drive -================ -*/ - -qboolean Sys_ObjectIsCDRomDevice(io_object_t object) -{ - CFStringRef value; - kern_return_t krc; - CFMutableDictionaryRef properties; - qboolean isCDROM = qfalse; - io_iterator_t parentIterator; - io_object_t parent; - - krc = IORegistryEntryCreateCFProperties(object, &properties, kCFAllocatorDefault, (IOOptionBits)0); - if (krc != KERN_SUCCESS) { - fprintf(stderr, "IORegistryEntryCreateCFProperties returned 0x%08x -- %s\n", krc, mach_error_string(krc)); - return qfalse; - } - - //NSLog(@"properties = %@", properties); - - // See if this is a CD-ROM - value = CFDictionaryGetValue(properties, CFSTR(kIOCDMediaTypeKey)); - if (value && CFStringCompare(value, CFSTR("CD-ROM"), 0) == kCFCompareEqualTo) - isCDROM = qtrue; - CFRelease(properties); - - // If it isn't check each of its parents. It seems that the parent enumerator only returns the immediate parent. Maybe the plural indicates that an object can have multiple direct parents. So, we'll call ourselves recursively for each parent. - if (!isCDROM) { - krc = IORegistryEntryGetParentIterator(object, kIOServicePlane, &parentIterator); - if (krc != KERN_SUCCESS) { - fprintf(stderr, "IOServiceGetMatchingServices returned 0x%08x -- %s\n", - krc, mach_error_string(krc)); - } else { - while (!isCDROM && (parent = IOIteratorNext(parentIterator))) { - if (Sys_ObjectIsCDRomDevice(parent)) - isCDROM = qtrue; - IOObjectRelease(parent); - } - - IOObjectRelease(parentIterator); - } - } - - //NSLog(@"Sys_ObjectIsCDRomDevice -> %d", isCDROM); - return isCDROM; -} - -qboolean Sys_IsCDROMDevice(const char *deviceName) -{ - kern_return_t krc; - io_iterator_t deviceIterator; - mach_port_t masterPort; - io_object_t object; - qboolean isCDROM = qfalse; - - krc = IOMasterPort(bootstrap_port, &masterPort); - if (krc != KERN_SUCCESS) { - fprintf(stderr, "IOMasterPort returned 0x%08x -- %s\n", krc, mach_error_string(krc)); - return qfalse; - } - - // Get an iterator for this BSD device. If it is a CD, it will likely only be one partition of the larger CD-ROM device. - krc = IOServiceGetMatchingServices(masterPort, - IOBSDNameMatching(masterPort, 0, deviceName), - &deviceIterator); - if (krc != KERN_SUCCESS) { - fprintf(stderr, "IOServiceGetMatchingServices returned 0x%08x -- %s\n", - krc, mach_error_string(krc)); - return qfalse; - } - - while (!isCDROM && (object = IOIteratorNext(deviceIterator))) { - if (Sys_ObjectIsCDRomDevice(object)) { - isCDROM = qtrue; - } - IOObjectRelease(object); - } - - IOObjectRelease(deviceIterator); - - //NSLog(@"Sys_IsCDROMDevice -> %d", isCDROM); - return isCDROM; -} - -qboolean Sys_CheckCD( void ) -{ - // DO NOT just return success here if we have a library directory. - // Actually look for the CD. - - // We'll look through the actual mount points rather than just looking - // for a particular directory since (a) the mount point may change - // between OS version (/foo in Public Beta, /Volumes/foo after Public Beta) - // and (b) this way someone can't just create a directory and warez the files. - - unsigned int mountCount; - struct statfs *mounts; - - mountCount = getmntinfo(&mounts, MNT_NOWAIT); - if (mountCount <= 0) { - perror("getmntinfo"); -#if 1 // Q3:TA doesn't need a CD, but we still need to locate it to allow for partial installs - return qtrue; -#else - return qfalse; -#endif - } - - while (mountCount--) { - const char *lastComponent; - - if ((mounts[mountCount].f_flags & MNT_RDONLY) != MNT_RDONLY) { - // Should have been a read only CD... this isn't it - continue; - } - - if ((mounts[mountCount].f_flags & MNT_LOCAL) != MNT_LOCAL) { - // Should have been a local filesystem - continue; - } - - lastComponent = strrchr(mounts[mountCount].f_mntonname, '/'); - if (!lastComponent) { - // No slash in the mount point! How is that possible? - continue; - } - - // Skip the slash and look for the game name - lastComponent++; - if ((strcasecmp(lastComponent, "Quake3") != 0)) { - continue; - } - - -#if 0 - fprintf(stderr, "f_bsize: %d\n", mounts[mountCount].f_bsize); - fprintf(stderr, "f_blocks: %d\n", mounts[mountCount].f_blocks); - fprintf(stderr, "type: %d\n", mounts[mountCount].f_type); - fprintf(stderr, "flags: %d\n", mounts[mountCount].f_flags); - fprintf(stderr, "fstype: %s\n", mounts[mountCount].f_fstypename); - fprintf(stderr, "f_mntonname: %s\n", mounts[mountCount].f_mntonname); - fprintf(stderr, "f_mntfromname: %s\n", mounts[mountCount].f_mntfromname); - fprintf(stderr, "\n\n"); -#endif - - lastComponent = strrchr(mounts[mountCount].f_mntfromname, '/'); - if (!lastComponent) { - // No slash in the device name! How is that possible? - continue; - } - lastComponent++; - if (!Sys_IsCDROMDevice(lastComponent)) - continue; - - // This looks good - Sys_SetDefaultCDPath(mounts[mountCount].f_mntonname); - return qtrue; - } - -#if 1 // Q3:TA doesn't need a CD, but we still need to locate it to allow for partial installs - return qtrue; -#else - return qfalse; -#endif -} - - -//=================================================================== - -void Sys_BeginStreamedFile( fileHandle_t f, int readAhead ) { -} - -void Sys_EndStreamedFile( fileHandle_t f ) { -} - -int Sys_StreamedRead( void *buffer, int size, int count, fileHandle_t f ) { - return FS_Read( buffer, size * count, f ); -} - -void Sys_StreamSeek( fileHandle_t f, int offset, int origin ) { - FS_Seek( f, offset, origin ); -} - - -void OutputDebugString(char * s) -{ -#ifdef DEBUG - fprintf(stderr, "%s", s); -#endif -} - -/* -================== -Sys_LowPhysicalMemory() -================== -*/ -#define MEM_THRESHOLD 96*1024*1024 - -qboolean Sys_LowPhysicalMemory() -{ - return NSRealMemoryAvailable() <= MEM_THRESHOLD; -} - -static unsigned int _Sys_ProcessorCount = 0; - -unsigned int Sys_ProcessorCount() -{ - if (!_Sys_ProcessorCount) { - int name[] = {CTL_HW, HW_NCPU}; - size_t size; - - size = sizeof(_Sys_ProcessorCount); - if (sysctl(name, 2, &_Sys_ProcessorCount, &size, NULL, 0) < 0) { - perror("sysctl"); - _Sys_ProcessorCount = 1; - } else { - Com_Printf("System processor count is %d\n", _Sys_ProcessorCount); - } - } - - return _Sys_ProcessorCount; -} - diff --git a/code/macosx/macosx_timers.h b/code/macosx/macosx_timers.h deleted file mode 100644 index f2bf6cfb..00000000 --- a/code/macosx/macosx_timers.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -#ifdef OMNI_TIMER - -#import - -#define OTSTART(node) OTStackPush(node) -#define OTSTOP(node) OTStackPop() - -extern OTStackNode *rootNode; -extern OTStackNode *markFragmentsNode1; -extern OTStackNode *markFragmentsNode2; -extern OTStackNode *markFragmentsGrid; -extern OTStackNode *markFragmentsNode4; -extern OTStackNode *addMarkFragmentsNode; -extern OTStackNode *chopPolyNode; -extern OTStackNode *boxTraceNode; -extern OTStackNode *boxOnPlaneSideNode; -extern OTStackNode *recursiveWorldNode; -extern OTStackNode *surfaceAnimNode; -extern OTStackNode *surfaceFaceNode; -extern OTStackNode *surfaceMeshNode; -extern OTStackNode *surfaceEndNode; -extern OTStackNode *shadowEndNode; -extern OTStackNode *stageIteratorGenericNode; -extern OTStackNode *computeColorAndTexNode; -extern OTStackNode *mp3DecodeNode; - -extern void InitializeTimers(); - -#else - -#define OTSTART(node) -#define OTSTOP(node) - -#endif - diff --git a/code/macosx/macosx_timers.m b/code/macosx/macosx_timers.m deleted file mode 100644 index 47ba235f..00000000 --- a/code/macosx/macosx_timers.m +++ /dev/null @@ -1,75 +0,0 @@ -/* -=========================================================================== -Copyright (C) 1999-2005 Id Software, Inc. - -This file is part of Quake III Arena source code. - -Quake III Arena source code 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. - -Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -=========================================================================== -*/ -#ifdef OMNI_TIMER - -#import "macosx_timers.h" - -#import -#import - -OTStackNode *rootNode; -OTStackNode *markFragmentsNode1; -OTStackNode *markFragmentsNode2; -OTStackNode *markFragmentsGrid; -OTStackNode *markFragmentsNode4; -OTStackNode *addMarkFragmentsNode; -OTStackNode *chopPolyNode; -OTStackNode *boxTraceNode; -OTStackNode *boxOnPlaneSideNode; -OTStackNode *recursiveWorldNode; -OTStackNode *surfaceAnimNode; -OTStackNode *surfaceFaceNode; -OTStackNode *surfaceMeshNode; -OTStackNode *surfaceEndNode; -OTStackNode *shadowEndNode; -OTStackNode *stageIteratorGenericNode; -OTStackNode *computeColorAndTexNode; -OTStackNode *mp3DecodeNode; - -void InitializeTimers() -{ - const char *env; - - OTSetup(); - - rootNode = OTStackNodeCreate("root"); - markFragmentsNode1 = OTStackNodeCreate("R_MarkFragments 1"); - markFragmentsNode2 = OTStackNodeCreate("R_MarkFragments 2"); - markFragmentsGrid = OTStackNodeCreate("R_MarkFragmentsGrid"); - markFragmentsNode4 = OTStackNodeCreate("R_MarkFragments 4"); - addMarkFragmentsNode = OTStackNodeCreate("R_AddMarkFragments"); - chopPolyNode = OTStackNodeCreate("R_ChopPolyBehindPlane"); - boxTraceNode = OTStackNodeCreate("CM_BoxTrace"); - boxOnPlaneSideNode = OTStackNodeCreate("BoxOnPlaneSide"); - recursiveWorldNode = OTStackNodeCreate("R_RecursiveWorldNode"); - surfaceAnimNode = OTStackNodeCreate("RB_SurfaceAnim"); - surfaceFaceNode = OTStackNodeCreate("RB_SurfaceFace"); - surfaceMeshNode = OTStackNodeCreate("RB_SurfaceMesh"); - surfaceEndNode = OTStackNodeCreate("RB_EndSurface"); - shadowEndNode = OTStackNodeCreate("RB_ShadowTessEnd"); - stageIteratorGenericNode = OTStackNodeCreate("RB_StageIteratorGeneric"); - computeColorAndTexNode = OTStackNodeCreate("ComputeColors & ComputeTexCoords"); - mp3DecodeNode = OTStackNodeCreate("MP3Stream_Decode"); -} - -#endif // OMNI_TIMER - diff --git a/code/macosx/timedemo.zsh b/code/macosx/timedemo.zsh deleted file mode 100644 index 14e834ae..00000000 --- a/code/macosx/timedemo.zsh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/zsh - -buildRoot=./build -executable=$buildRoot/Quake3.app/Contents/MacOS/Quake3 -ls -l $executable - -flags="$flags +set timedemo 1" -flags="$flags +set s_initsound 0" -flags="$flags +set vm_cgame 1" -flags="$flags +set vm_game 1" -flags="$flags +set r_texturebits 16" -flags="$flags +set r_depthbits 16" -flags="$flags +set r_colorbits 16" -flags="$flags +set stencilbits 8" - -flags="$flags +set r_appleTransformHint 1" - -echo flags=$flags - -function demo { - echo Demo $* - $executable $flags +demo $* |& egrep "(seconds|VM)" -} - -demo foo - diff --git a/code/qcommon/common.c b/code/qcommon/common.c index 5676daaf..690d5bd3 100644 --- a/code/qcommon/common.c +++ b/code/qcommon/common.c @@ -66,6 +66,7 @@ cvar_t *com_fixedtime; cvar_t *com_dropsim; // 0.0 to 1.0, simulated packet drops cvar_t *com_journal; cvar_t *com_maxfps; +cvar_t *com_altivec; cvar_t *com_timedemo; cvar_t *com_sv_running; cvar_t *com_cl_running; @@ -2425,6 +2426,7 @@ void Com_Init( char *commandLine ) { // // init commands and vars // + com_altivec = Cvar_Get ("com_altivec", "1", CVAR_ARCHIVE); com_maxfps = Cvar_Get ("com_maxfps", "85", CVAR_ARCHIVE); com_blood = Cvar_Get ("com_blood", "1", CVAR_ARCHIVE); @@ -2507,7 +2509,12 @@ void Com_Init( char *commandLine ) { Cvar_Set("ui_singlePlayerActive", "0"); com_fullyInitialized = qtrue; - Com_Printf ("--- Common Initialization Complete ---\n"); + + #if idppc_altivec + Com_Printf ("Altivec support is %s\n", com_altivec->integer ? "enabled" : "disabled"); + #endif + + Com_Printf ("--- Common Initialization Complete ---\n"); } //================================================================== diff --git a/code/qcommon/q_platform.h b/code/qcommon/q_platform.h index 870a4cc5..f68676f3 100644 --- a/code/qcommon/q_platform.h +++ b/code/qcommon/q_platform.h @@ -51,6 +51,12 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define idppc_altivec 0 #endif +#if (MACOS_X) // Apple's GCC does this differently than the FSF. + #define VECCONST_UINT8(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) (vector unsigned char) (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) +#else + #define VECCONST_UINT8(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) (vector unsigned char) {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p} +#endif + #endif #ifndef __ASM_I386__ // don't include the C bits if included from qasm.h diff --git a/code/qcommon/vm_ppc_new.c b/code/qcommon/vm_ppc_new.c index 955b136a..17cc4050 100644 --- a/code/qcommon/vm_ppc_new.c +++ b/code/qcommon/vm_ppc_new.c @@ -1820,7 +1820,7 @@ asm ( #if defined(MACOS_X) && defined(__OPTIMIZE__) // On Mac OS X, gcc doesn't push a frame when we are optimized, so trying to tear it down results in grave disorder. -#warning Mac OS X optimization on, not popping GCC AsmCall frame +//#warning Mac OS X optimization on, not popping GCC AsmCall frame #else // Mac OS X Server and unoptimized compiles include a GCC AsmCall frame asm ( diff --git a/code/renderer/qgl.h b/code/renderer/qgl.h index 1db2dace..c1a2b1d8 100644 --- a/code/renderer/qgl.h +++ b/code/renderer/qgl.h @@ -46,7 +46,22 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #elif defined(MACOS_X) -#include "macosx_glimp.h" +#include +#include +#include +#ifndef GL_EXT_abgr +#include +#endif + +// This can be defined to use the CGLMacro.h support which avoids looking up +// the current context. +//#define USE_CGLMACROS + +#ifdef USE_CGLMACROS +#include "macosx_local.h" +#define cgl_ctx glw_state._cgl_ctx +#include +#endif #elif defined( __linux__ ) || defined(__FreeBSD__) @@ -164,7 +179,7 @@ extern void ( APIENTRY * qglUnlockArraysEXT) (void); #include "qgl_linked.h" -#elif defined(MACOS_X) +#elif (defined(MACOS_X) && !defined(USE_SDL_VIDEO)) // This includes #ifdefs for optional logging and GL error checking after every GL call as well as #defines to prevent incorrect usage of the non-'qgl' versions of the GL API. #include "macosx_qgl.h" diff --git a/code/renderer/tr_curve.c b/code/renderer/tr_curve.c index d57c99fc..7eb1b4c5 100644 --- a/code/renderer/tr_curve.c +++ b/code/renderer/tr_curve.c @@ -113,7 +113,7 @@ static void MakeMeshNormals( int width, int height, drawVert_t ctrl[MAX_GRID_SIZ int i, j, k, dist; vec3_t normal; vec3_t sum; - int count; + int count = 0; vec3_t base; vec3_t delta; int x, y; diff --git a/code/renderer/tr_init.c b/code/renderer/tr_init.c index 9f376e51..c8a28048 100644 --- a/code/renderer/tr_init.c +++ b/code/renderer/tr_init.c @@ -150,12 +150,15 @@ int max_polys; cvar_t *r_maxpolyverts; int max_polyverts; +/* !!! FIXME: Why are these here?! */ +#if 0 void ( APIENTRY * qglMultiTexCoord2fARB )( GLenum texture, GLfloat s, GLfloat t ); void ( APIENTRY * qglActiveTextureARB )( GLenum texture ); void ( APIENTRY * qglClientActiveTextureARB )( GLenum texture ); void ( APIENTRY * qglLockArraysEXT)( GLint, GLint); void ( APIENTRY * qglUnlockArraysEXT) ( void ); +#endif static void AssertCvarRange( cvar_t *cv, float minVal, float maxVal, qboolean shouldBeIntegral ) { diff --git a/code/renderer/tr_shade.c b/code/renderer/tr_shade.c index 838e25d7..043bd909 100644 --- a/code/renderer/tr_shade.c +++ b/code/renderer/tr_shade.c @@ -402,9 +402,9 @@ ProjectDlightTexture Perform dynamic lighting with another rendering pass =================== */ -static void ProjectDlightTexture( void ) { - int i, l; #if idppc_altivec +static void ProjectDlightTexture_altivec( void ) { + int i, l; vec_t origin0, origin1, origin2; float texCoords0, texCoords1; vector float floatColorVec0, floatColorVec1; @@ -412,13 +412,10 @@ static void ProjectDlightTexture( void ) { vector short colorShort; vector signed int colorInt; vector unsigned char floatColorVecPerm, modulatePerm, colorChar; - vector unsigned char vSel = (vector unsigned char){0x00, 0x00, 0x00, 0xff, - 0x00, 0x00, 0x00, 0xff, - 0x00, 0x00, 0x00, 0xff, - 0x00, 0x00, 0x00, 0xff}; -#else - vec3_t origin; -#endif + vector unsigned char vSel = VECCONST_UINT8(0x00, 0x00, 0x00, 0xff, + 0x00, 0x00, 0x00, 0xff, + 0x00, 0x00, 0x00, 0xff, + 0x00, 0x00, 0x00, 0xff); float *texCoords; byte *colors; byte clipBits[SHADER_MAX_VERTEXES]; @@ -429,20 +426,18 @@ static void ProjectDlightTexture( void ) { float scale; float radius; vec3_t floatColor; - float modulate; + float modulate = 0.0f; if ( !backEnd.refdef.num_dlights ) { return; } -#if idppc_altivec - // There has to be a better way to do this so that floatColor + // There has to be a better way to do this so that floatColor // and/or modulate are already 16-byte aligned. floatColorVecPerm = vec_lvsl(0,(float *)floatColor); modulatePerm = vec_lvsl(0,(float *)&modulate); modulatePerm = (vector unsigned char)vec_splat((vector unsigned int)modulatePerm,0); zero = (vector float)vec_splat_s8(0); -#endif for ( l = 0 ; l < backEnd.refdef.num_dlights ; l++ ) { dlight_t *dl; @@ -454,27 +449,20 @@ static void ProjectDlightTexture( void ) { colors = colorArray[0]; dl = &backEnd.refdef.dlights[l]; -#if idppc_altivec origin0 = dl->transformed[0]; origin1 = dl->transformed[1]; origin2 = dl->transformed[2]; -#else - VectorCopy( dl->transformed, origin ); -#endif radius = dl->radius; scale = 1.0f / radius; floatColor[0] = dl->color[0] * 255.0f; floatColor[1] = dl->color[1] * 255.0f; floatColor[2] = dl->color[2] * 255.0f; -#if idppc_altivec floatColorVec0 = vec_ld(0, floatColor); floatColorVec1 = vec_ld(11, floatColor); floatColorVec0 = vec_perm(floatColorVec0,floatColorVec0,floatColorVecPerm); -#endif for ( i = 0 ; i < tess.numVertexes ; i++, texCoords += 2, colors += 4 ) { int clip = 0; -#if idppc_altivec #define DIST0 dist0 #define DIST1 dist1 #define DIST2 dist2 @@ -485,16 +473,6 @@ static void ProjectDlightTexture( void ) { dist0 = origin0 - tess.xyz[i][0]; dist1 = origin1 - tess.xyz[i][1]; dist2 = origin2 - tess.xyz[i][2]; -#else -#define DIST0 dist[0] -#define DIST1 dist[1] -#define DIST2 dist[2] -#define TEXCOORDS0 texCoords[0] -#define TEXCOORDS1 texCoords[1] - vec3_t dist; - - VectorSubtract( origin, tess.xyz[i], dist ); -#endif backEnd.pc.c_dlightVertexes++; @@ -539,7 +517,6 @@ static void ProjectDlightTexture( void ) { } clipBits[i] = clip; -#if idppc_altivec modulateVec = vec_ld(0,(float *)&modulate); modulateVec = vec_perm(modulateVec,modulateVec,modulatePerm); colorVec = vec_madd(floatColorVec0,modulateVec,zero); @@ -548,12 +525,6 @@ static void ProjectDlightTexture( void ) { colorChar = vec_packsu(colorShort,colorShort); // RGBxRGBxRGBxRGBx colorChar = vec_sel(colorChar,vSel,vSel); // RGBARGBARGBARGBA replace alpha with 255 vec_ste((vector unsigned int)colorChar,0,(unsigned int *)colors); // store color -#else - colors[0] = myftol(floatColor[0] * modulate); - colors[1] = myftol(floatColor[1] * modulate); - colors[2] = myftol(floatColor[2] * modulate); - colors[3] = 255; -#endif } #undef DIST0 #undef DIST1 @@ -602,6 +573,162 @@ static void ProjectDlightTexture( void ) { backEnd.pc.c_dlightIndexes += numIndexes; } } +#endif + + +static void ProjectDlightTexture_scalar( void ) { + int i, l; + vec3_t origin; + float *texCoords; + byte *colors; + byte clipBits[SHADER_MAX_VERTEXES]; + float texCoordsArray[SHADER_MAX_VERTEXES][2]; + byte colorArray[SHADER_MAX_VERTEXES][4]; + unsigned hitIndexes[SHADER_MAX_INDEXES]; + int numIndexes; + float scale; + float radius; + vec3_t floatColor; + float modulate = 0.0f; + + if ( !backEnd.refdef.num_dlights ) { + return; + } + + for ( l = 0 ; l < backEnd.refdef.num_dlights ; l++ ) { + dlight_t *dl; + + if ( !( tess.dlightBits & ( 1 << l ) ) ) { + continue; // this surface definately doesn't have any of this light + } + texCoords = texCoordsArray[0]; + colors = colorArray[0]; + + dl = &backEnd.refdef.dlights[l]; + VectorCopy( dl->transformed, origin ); + radius = dl->radius; + scale = 1.0f / radius; + + floatColor[0] = dl->color[0] * 255.0f; + floatColor[1] = dl->color[1] * 255.0f; + floatColor[2] = dl->color[2] * 255.0f; + for ( i = 0 ; i < tess.numVertexes ; i++, texCoords += 2, colors += 4 ) { + int clip = 0; +#define DIST0 dist[0] +#define DIST1 dist[1] +#define DIST2 dist[2] +#define TEXCOORDS0 texCoords[0] +#define TEXCOORDS1 texCoords[1] + vec3_t dist; + + VectorSubtract( origin, tess.xyz[i], dist ); + + backEnd.pc.c_dlightVertexes++; + + TEXCOORDS0 = 0.5f + DIST0 * scale; + TEXCOORDS1 = 0.5f + DIST1 * scale; + + if( !r_dlightBacks->integer && + // dist . tess.normal[i] + ( DIST0 * tess.normal[i][0] + + DIST1 * tess.normal[i][1] + + DIST2 * tess.normal[i][2] ) < 0.0f ) { + clip = 63; + } else { + if ( TEXCOORDS0 < 0.0f ) { + clip |= 1; + } else if ( TEXCOORDS0 > 1.0f ) { + clip |= 2; + } + if ( TEXCOORDS1 < 0.0f ) { + clip |= 4; + } else if ( TEXCOORDS1 > 1.0f ) { + clip |= 8; + } + texCoords[0] = TEXCOORDS0; + texCoords[1] = TEXCOORDS1; + + // modulate the strength based on the height and color + if ( DIST2 > radius ) { + clip |= 16; + modulate = 0.0f; + } else if ( DIST2 < -radius ) { + clip |= 32; + modulate = 0.0f; + } else { + DIST2 = Q_fabs(DIST2); + if ( DIST2 < radius * 0.5f ) { + modulate = 1.0f; + } else { + modulate = 2.0f * (radius - DIST2) * scale; + } + } + } + clipBits[i] = clip; + colors[0] = myftol(floatColor[0] * modulate); + colors[1] = myftol(floatColor[1] * modulate); + colors[2] = myftol(floatColor[2] * modulate); + colors[3] = 255; + } +#undef DIST0 +#undef DIST1 +#undef DIST2 +#undef TEXCOORDS0 +#undef TEXCOORDS1 + + // build a list of triangles that need light + numIndexes = 0; + for ( i = 0 ; i < tess.numIndexes ; i += 3 ) { + int a, b, c; + + a = tess.indexes[i]; + b = tess.indexes[i+1]; + c = tess.indexes[i+2]; + if ( clipBits[a] & clipBits[b] & clipBits[c] ) { + continue; // not lighted + } + hitIndexes[numIndexes] = a; + hitIndexes[numIndexes+1] = b; + hitIndexes[numIndexes+2] = c; + numIndexes += 3; + } + + if ( !numIndexes ) { + continue; + } + + qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); + qglTexCoordPointer( 2, GL_FLOAT, 0, texCoordsArray[0] ); + + qglEnableClientState( GL_COLOR_ARRAY ); + qglColorPointer( 4, GL_UNSIGNED_BYTE, 0, colorArray ); + + GL_Bind( tr.dlightImage ); + // include GLS_DEPTHFUNC_EQUAL so alpha tested surfaces don't add light + // where they aren't rendered + if ( dl->additive ) { + GL_State( GLS_SRCBLEND_ONE | GLS_DSTBLEND_ONE | GLS_DEPTHFUNC_EQUAL ); + } + else { + GL_State( GLS_SRCBLEND_DST_COLOR | GLS_DSTBLEND_ONE | GLS_DEPTHFUNC_EQUAL ); + } + R_DrawElements( numIndexes, hitIndexes ); + backEnd.pc.c_totalIndexes += numIndexes; + backEnd.pc.c_dlightIndexes += numIndexes; + } +} + +static void ProjectDlightTexture( void ) { + #if idppc_altivec + extern cvar_t *com_altivec; + if (com_altivec->integer) { + // must be in a seperate function or G3 systems will crash. + ProjectDlightTexture_altivec(); + return; + } + #endif + ProjectDlightTexture_scalar(); +} /* diff --git a/code/renderer/tr_shade_calc.c b/code/renderer/tr_shade_calc.c index 27bb89ae..9e0c06a4 100644 --- a/code/renderer/tr_shade_calc.c +++ b/code/renderer/tr_shade_calc.c @@ -1097,22 +1097,19 @@ void RB_CalcSpecularAlpha( unsigned char *alphas ) { ** ** The basic vertex lighting calc */ -void RB_CalcDiffuseColor( unsigned char *colors ) +#if idppc_altivec +static void RB_CalcDiffuseColor_altivec( unsigned char *colors ) { - int i, j; + int i; float *v, *normal; - float incoming; trRefEntity_t *ent; int ambientLightInt; - vec3_t ambientLight; vec3_t lightDir; - vec3_t directedLight; int numVertexes; -#if idppc_altivec - vector unsigned char vSel = (vector unsigned char){0x00, 0x00, 0x00, 0xff, - 0x00, 0x00, 0x00, 0xff, - 0x00, 0x00, 0x00, 0xff, - 0x00, 0x00, 0x00, 0xff}; + vector unsigned char vSel = VECCONST_UINT8(0x00, 0x00, 0x00, 0xff, + 0x00, 0x00, 0x00, 0xff, + 0x00, 0x00, 0x00, 0xff, + 0x00, 0x00, 0x00, 0xff); vector float ambientLightVec; vector float directedLightVec; vector float lightDirVec; @@ -1122,10 +1119,8 @@ void RB_CalcDiffuseColor( unsigned char *colors ) vector signed int jVecInt; vector signed short jVecShort; vector unsigned char jVecChar, normalPerm; -#endif ent = backEnd.currentEntity; ambientLightInt = ent->ambientLightInt; -#if idppc_altivec // A lot of this could be simplified if we made sure // entities light info was 16-byte aligned. jVecChar = vec_lvsl(0, ent->ambientLight); @@ -1145,21 +1140,13 @@ void RB_CalcDiffuseColor( unsigned char *colors ) zero = (vector float)vec_splat_s8(0); VectorCopy( ent->lightDir, lightDir ); -#else - VectorCopy( ent->ambientLight, ambientLight ); - VectorCopy( ent->directedLight, directedLight ); - VectorCopy( ent->lightDir, lightDir ); -#endif v = tess.xyz[0]; normal = tess.normal[0]; -#if idppc_altivec normalPerm = vec_lvsl(0,normal); -#endif numVertexes = tess.numVertexes; for (i = 0 ; i < numVertexes ; i++, v += 4, normal += 4) { -#if idppc_altivec normalVec0 = vec_ld(0,(vector float *)normal); normalVec1 = vec_ld(11,(vector float *)normal); normalVec0 = vec_perm(normalVec0,normalVec1,normalPerm); @@ -1177,7 +1164,32 @@ void RB_CalcDiffuseColor( unsigned char *colors ) jVecChar = vec_packsu(jVecShort,jVecShort); // RGBxRGBxRGBxRGBx jVecChar = vec_sel(jVecChar,vSel,vSel); // RGBARGBARGBARGBA replace alpha with 255 vec_ste((vector unsigned int)jVecChar,0,(unsigned int *)&colors[i*4]); // store color -#else + } +} +#endif + +static void RB_CalcDiffuseColor_scalar( unsigned char *colors ) +{ + int i, j; + float *v, *normal; + float incoming; + trRefEntity_t *ent; + int ambientLightInt; + vec3_t ambientLight; + vec3_t lightDir; + vec3_t directedLight; + int numVertexes; + ent = backEnd.currentEntity; + ambientLightInt = ent->ambientLightInt; + VectorCopy( ent->ambientLight, ambientLight ); + VectorCopy( ent->directedLight, directedLight ); + VectorCopy( ent->lightDir, lightDir ); + + v = tess.xyz[0]; + normal = tess.normal[0]; + + numVertexes = tess.numVertexes; + for (i = 0 ; i < numVertexes ; i++, v += 4, normal += 4) { incoming = DotProduct (normal, lightDir); if ( incoming <= 0 ) { *(int *)&colors[i*4] = ambientLightInt; @@ -1202,7 +1214,19 @@ void RB_CalcDiffuseColor( unsigned char *colors ) colors[i*4+2] = j; colors[i*4+3] = 255; -#endif } } +void RB_CalcDiffuseColor( unsigned char *colors ) +{ + #if idppc_altivec + extern cvar_t *com_altivec; + if (com_altivec->integer) { + // must be in a seperate function or G3 systems will crash. + RB_CalcDiffuseColor_altivec( colors ); + return; + } + #endif + RB_CalcDiffuseColor_scalar( colors ); +} + diff --git a/code/renderer/tr_surface.c b/code/renderer/tr_surface.c index 66d5b93e..b5cb0c07 100644 --- a/code/renderer/tr_surface.c +++ b/code/renderer/tr_surface.c @@ -610,7 +610,8 @@ static void VectorArrayNormalize(vec4_t *normals, unsigned int count) /* ** LerpMeshVertexes */ -static void LerpMeshVertexes (md3Surface_t *surf, float backlerp) +#if idppc_altivec +static void LerpMeshVertexes_altivec(md3Surface_t *surf, float backlerp) { short *oldXyz, *newXyz, *oldNormals, *newNormals; float *outXyz, *outNormal; @@ -633,7 +634,6 @@ static void LerpMeshVertexes (md3Surface_t *surf, float backlerp) numVerts = surf->numVerts; if ( backlerp == 0 ) { -#if idppc_altivec vector signed short newNormalsVec0; vector signed short newNormalsVec1; vector signed int newNormalsIntVec; @@ -687,34 +687,6 @@ static void LerpMeshVertexes (md3Surface_t *surf, float backlerp) vec_ste(newNormalsFloatVec,4,outXyz); vec_ste(newNormalsFloatVec,8,outXyz); } - -#else - // - // just copy the vertexes - // - for (vertNum=0 ; vertNum < numVerts ; vertNum++, - newXyz += 4, newNormals += 4, - outXyz += 4, outNormal += 4) - { - - outXyz[0] = newXyz[0] * newXyzScale; - outXyz[1] = newXyz[1] * newXyzScale; - outXyz[2] = newXyz[2] * newXyzScale; - - lat = ( newNormals[0] >> 8 ) & 0xff; - lng = ( newNormals[0] & 0xff ); - lat *= (FUNCTABLE_SIZE/256); - lng *= (FUNCTABLE_SIZE/256); - - // decode X as cos( lat ) * sin( long ) - // decode Y as sin( lat ) * sin( long ) - // decode Z as cos( long ) - - outNormal[0] = tr.sinTable[(lat+(FUNCTABLE_SIZE/4))&FUNCTABLE_MASK] * tr.sinTable[lng]; - outNormal[1] = tr.sinTable[lat] * tr.sinTable[lng]; - outNormal[2] = tr.sinTable[(lng+(FUNCTABLE_SIZE/4))&FUNCTABLE_MASK]; - } -#endif } else { // // interpolate and copy the vertex and normal @@ -764,6 +736,132 @@ static void LerpMeshVertexes (md3Surface_t *surf, float backlerp) VectorArrayNormalize((vec4_t *)tess.normal[tess.numVertexes], numVerts); } } +#endif + +static void LerpMeshVertexes_scalar(md3Surface_t *surf, float backlerp) +{ + short *oldXyz, *newXyz, *oldNormals, *newNormals; + float *outXyz, *outNormal; + float oldXyzScale, newXyzScale; + float oldNormalScale, newNormalScale; + int vertNum; + unsigned lat, lng; + int numVerts; + + outXyz = tess.xyz[tess.numVertexes]; + outNormal = tess.normal[tess.numVertexes]; + + newXyz = (short *)((byte *)surf + surf->ofsXyzNormals) + + (backEnd.currentEntity->e.frame * surf->numVerts * 4); + newNormals = newXyz + 3; + + newXyzScale = MD3_XYZ_SCALE * (1.0 - backlerp); + newNormalScale = 1.0 - backlerp; + + numVerts = surf->numVerts; + + if ( backlerp == 0 ) { + // + // just copy the vertexes + // + for (vertNum=0 ; vertNum < numVerts ; vertNum++, + newXyz += 4, newNormals += 4, + outXyz += 4, outNormal += 4) + { + + outXyz[0] = newXyz[0] * newXyzScale; + outXyz[1] = newXyz[1] * newXyzScale; + outXyz[2] = newXyz[2] * newXyzScale; + + lat = ( newNormals[0] >> 8 ) & 0xff; + lng = ( newNormals[0] & 0xff ); + lat *= (FUNCTABLE_SIZE/256); + lng *= (FUNCTABLE_SIZE/256); + + // decode X as cos( lat ) * sin( long ) + // decode Y as sin( lat ) * sin( long ) + // decode Z as cos( long ) + + outNormal[0] = tr.sinTable[(lat+(FUNCTABLE_SIZE/4))&FUNCTABLE_MASK] * tr.sinTable[lng]; + outNormal[1] = tr.sinTable[lat] * tr.sinTable[lng]; + outNormal[2] = tr.sinTable[(lng+(FUNCTABLE_SIZE/4))&FUNCTABLE_MASK]; + } + } else { + // + // interpolate and copy the vertex and normal + // + oldXyz = (short *)((byte *)surf + surf->ofsXyzNormals) + + (backEnd.currentEntity->e.oldframe * surf->numVerts * 4); + oldNormals = oldXyz + 3; + + oldXyzScale = MD3_XYZ_SCALE * backlerp; + oldNormalScale = backlerp; + + for (vertNum=0 ; vertNum < numVerts ; vertNum++, + oldXyz += 4, newXyz += 4, oldNormals += 4, newNormals += 4, + outXyz += 4, outNormal += 4) + { + vec3_t uncompressedOldNormal, uncompressedNewNormal; + + // interpolate the xyz + outXyz[0] = oldXyz[0] * oldXyzScale + newXyz[0] * newXyzScale; + outXyz[1] = oldXyz[1] * oldXyzScale + newXyz[1] * newXyzScale; + outXyz[2] = oldXyz[2] * oldXyzScale + newXyz[2] * newXyzScale; + + // FIXME: interpolate lat/long instead? + lat = ( newNormals[0] >> 8 ) & 0xff; + lng = ( newNormals[0] & 0xff ); + lat *= 4; + lng *= 4; + uncompressedNewNormal[0] = tr.sinTable[(lat+(FUNCTABLE_SIZE/4))&FUNCTABLE_MASK] * tr.sinTable[lng]; + uncompressedNewNormal[1] = tr.sinTable[lat] * tr.sinTable[lng]; + uncompressedNewNormal[2] = tr.sinTable[(lng+(FUNCTABLE_SIZE/4))&FUNCTABLE_MASK]; + + lat = ( oldNormals[0] >> 8 ) & 0xff; + lng = ( oldNormals[0] & 0xff ); + lat *= 4; + lng *= 4; + + uncompressedOldNormal[0] = tr.sinTable[(lat+(FUNCTABLE_SIZE/4))&FUNCTABLE_MASK] * tr.sinTable[lng]; + uncompressedOldNormal[1] = tr.sinTable[lat] * tr.sinTable[lng]; + uncompressedOldNormal[2] = tr.sinTable[(lng+(FUNCTABLE_SIZE/4))&FUNCTABLE_MASK]; + + outNormal[0] = uncompressedOldNormal[0] * oldNormalScale + uncompressedNewNormal[0] * newNormalScale; + outNormal[1] = uncompressedOldNormal[1] * oldNormalScale + uncompressedNewNormal[1] * newNormalScale; + outNormal[2] = uncompressedOldNormal[2] * oldNormalScale + uncompressedNewNormal[2] * newNormalScale; + +// VectorNormalize (outNormal); + } + VectorArrayNormalize((vec4_t *)tess.normal[tess.numVertexes], numVerts); + } +} + +static void LerpMeshVertexes(md3Surface_t *surf, float backlerp) +{ + #if idppc_altivec + + // !!! FIXME: figure out what's broken and remove this. + #ifndef NDEBUG + static int already_complained = 0; + if (!already_complained) + { + already_complained = 1; + Com_Printf("WARNING! FIXME! Altivec mesh lerping broken in debug builds!\n"); + } + #else + extern cvar_t *com_altivec; + if (com_altivec->integer) { + // must be in a seperate function or G3 systems will crash. + LerpMeshVertexes_altivec( surf, backlerp ); + return; + } + #endif + + #endif // idppc_altivec + + LerpMeshVertexes_scalar( surf, backlerp ); +} + /* ============= diff --git a/code/renderer/tr_types.h b/code/renderer/tr_types.h index 8c16113d..12b526e2 100644 --- a/code/renderer/tr_types.h +++ b/code/renderer/tr_types.h @@ -218,6 +218,11 @@ typedef struct { #define _3DFX_DRIVER_NAME "3dfxvgl" #define OPENGL_DRIVER_NAME "opengl32" +#elif defined(MACOS_X) + +#define _3DFX_DRIVER_NAME "libMesaVoodooGL.dylib" +#define OPENGL_DRIVER_NAME "/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib" + #else #define _3DFX_DRIVER_NAME "libMesaVoodooGL.so" diff --git a/code/tools/asm/Makefile b/code/tools/asm/Makefile index 852afa69..0d64f14d 100644 --- a/code/tools/asm/Makefile +++ b/code/tools/asm/Makefile @@ -16,6 +16,19 @@ endif CC=gcc Q3ASM_CFLAGS=-O2 -Wall -Werror -fno-strict-aliasing +ifeq ($(PLATFORM),darwin) + LCC_CFLAGS += -DMACOS_X=1 +endif + +ifndef USE_CCACHE + USE_CCACHE=0 +endif + +ifeq ($(USE_CCACHE),1) + CC := ccache $(CC) + CXX := ccache $(CXX) +endif + default: q3asm q3asm: q3asm.c cmdlib.c diff --git a/code/tools/lcc/Makefile b/code/tools/lcc/Makefile index 1a96e9c3..86eec1a7 100644 --- a/code/tools/lcc/Makefile +++ b/code/tools/lcc/Makefile @@ -22,6 +22,19 @@ RMDIR=rmdir BUILDDIR=build BD=$(BUILDDIR)/ +ifeq ($(PLATFORM),darwin) + LCC_CFLAGS += -DMACOS_X=1 +endif + +ifndef USE_CCACHE + USE_CCACHE=0 +endif + +ifeq ($(USE_CCACHE),1) + CC := ccache $(CC) + CXX := ccache $(CXX) +endif + ifeq ($(PLATFORM),SunOS) INSTALL=ginstall else diff --git a/code/unix/Makefile b/code/unix/Makefile index 461c47bf..b4bfd152 100644 --- a/code/unix/Makefile +++ b/code/unix/Makefile @@ -13,7 +13,17 @@ PLATFORM=$(shell uname|sed -e s/_.*//|tr A-Z a-z) PLATFORM_RELEASE=$(shell uname -r) -ARCH:=$(shell uname -m | sed -e s/i.86/i386/) + +# Apple does some things a little differently... +ifeq ($(PLATFORM),darwin) + ARCH:= $(shell uname -p | sed -e s/i.86/i386/) +else + ARCH:=$(shell uname -m | sed -e s/i.86/i386/) +endif + +ifeq ($(ARCH),powerpc) + ARCH:=ppc +endif ############################################################################# # @@ -43,6 +53,11 @@ ifndef DXSDK_DIR DXSDK_DIR=C:/DXSDK endif +ifndef USE_CCACHE +USE_CCACHE=1 +endif +export USE_CCACHE + ifndef USE_SDL USE_SDL=1 endif @@ -121,7 +136,10 @@ ifeq ($(PLATFORM),linux) endif endif - BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes + BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes -pipe + + # Always include debug symbols...you can strip the binary later... + BASE_CFLAGS += -gfull ifeq ($(USE_OPENAL),1) BASE_CFLAGS += -DUSE_OPENAL=1 @@ -153,6 +171,7 @@ ifeq ($(PLATFORM),linux) HAVE_VM_COMPILED=true else ifeq ($(ARCH),ppc) + BASE_CFLAGS += -maltivec ifneq ($(VM_PPC),) HAVE_VM_COMPILED=true endif @@ -181,8 +200,10 @@ ifeq ($(PLATFORM),linux) CLIENT_LDFLAGS=-L/usr/X11R6/$(LIB) -lX11 -lXext -lXxf86dga -lXxf86vm endif - ifneq ($(USE_OPENAL_DLOPEN),1) - CLIENT_LDFLAGS += -lopenal + ifeq ($(USE_OPENAL),1) + ifneq ($(USE_OPENAL_DLOPEN),1) + CLIENT_LDFLAGS += -lopenal + endif endif ifeq ($(ARCH),i386) @@ -216,6 +237,106 @@ ifeq ($(PLATFORM),linux) else # ifeq Linux +############################################################################# +# SETUP AND BUILD -- MAC OS X +############################################################################# + +ifeq ($(PLATFORM),darwin) + GLIBC= + CC=gcc + CXX=g++ + + VM_PPC=vm_ppc_new + + BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes + BASE_CFLAGS += -DMACOS_X=1 -fno-common -pipe + + # Always include debug symbols...you can strip the binary later... + BASE_CFLAGS += -gfull + + ifeq ($(USE_OPENAL),1) + BASE_CFLAGS += -DUSE_OPENAL=1 + ifeq ($(USE_OPENAL_DLOPEN),1) + BASE_CFLAGS += -DUSE_OPENAL_DLOPEN=1 + endif + endif + + ifeq ($(USE_SDL),1) + BASE_CFLAGS += -DUSE_SDL_VIDEO=1 -DUSE_SDL_SOUND=1 -D_THREAD_SAFE=1 -I../SDL12/include + GL_CFLAGS = + endif + + OPTIMIZE = -O3 -ffast-math -fomit-frame-pointer -falign-loops=16 + + ifeq ($(ARCH),ppc) + BASE_CFLAGS += -faltivec + ifneq ($(VM_PPC),) + HAVE_VM_COMPILED=true + endif + endif + + ifeq ($(ARCH),i386) + # !!! FIXME: x86-specific flags here... + endif + + ifneq ($(HAVE_VM_COMPILED),true) + BASE_CFLAGS += -DNO_VM_COMPILED + endif + + DEBUG_CFLAGS = $(BASE_CFLAGS) -g -O0 + + RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE) + + SHLIBEXT=dylib + SHLIBCFLAGS=-fPIC -fno-common + SHLIBLDFLAGS=-dynamiclib $(LDFLAGS) + + NOTSHLIBCFLAGS=-mdynamic-no-pic + + #THREAD_LDFLAGS=-lpthread + #LDFLAGS=-ldl -lm + LDFLAGS += -framework Carbon + + ifeq ($(USE_SDL),1) + # We copy sdlmain before ranlib'ing it so that subversion doesn't think + # the file has been modified by each build. + LIBSDLMAIN=$(B)/libSDLmain.a + LIBSDLMAINSRC=../libs/macosx/libSDLmain.a + CLIENT_LDFLAGS=-framework Cocoa -framework OpenGL ../libs/macosx/libSDL-1.2.0.dylib + else + # !!! FIXME: frameworks: OpenGL, Carbon, etc... + #CLIENT_LDFLAGS=-L/usr/X11R6/$(LIB) -lX11 -lXext -lXxf86dga -lXxf86vm + endif + + # -framework OpenAL requires 10.4 or later...for builds shipping to the + # public, you'll want to use USE_OPENAL_DLOPEN and ship your own OpenAL + # library (http://openal.org/ or http://icculus.org/al_osx/) + ifeq ($(USE_OPENAL),1) + ifneq ($(USE_OPENAL_DLOPEN),1) + CLIENT_LDFLAGS += -framework OpenAL + endif + endif + + TARGETS=\ + $(B)/$(PLATFORM)quake3 \ + $(B)/$(PLATFORM)q3ded \ + $(B)/baseq3/cgame$(ARCH).$(SHLIBEXT) \ + $(B)/baseq3/qagame$(ARCH).$(SHLIBEXT) \ + $(B)/baseq3/ui$(ARCH).$(SHLIBEXT) \ + $(B)/missionpack/cgame$(ARCH).$(SHLIBEXT) \ + $(B)/missionpack/qagame$(ARCH).$(SHLIBEXT) \ + $(B)/missionpack/ui$(ARCH).$(SHLIBEXT) \ + $(B)/baseq3/vm/cgame.qvm \ + $(B)/baseq3/vm/qagame.qvm \ + $(B)/baseq3/vm/ui.qvm \ + $(B)/missionpack/vm/qagame.qvm \ + $(B)/missionpack/vm/cgame.qvm \ + $(B)/missionpack/vm/ui.qvm +# $(B)/$(PLATFORM)quake3-smp \ + +else # ifeq darwin + + ############################################################################# # SETUP AND BUILD -- MINGW32 ############################################################################# @@ -494,7 +615,6 @@ else # ifeq SunOS ############################################################################# # SETUP AND BUILD -- GENERIC ############################################################################# - CC=cc BASE_CFLAGS=-DNO_VM_COMPILED DEBUG_CFLAGS=$(BASE_CFLAGS) -g @@ -508,11 +628,17 @@ else # ifeq SunOS $(B)/$(PLATFORM)q3ded endif #Linux +endif #darwin endif #mingw32 endif #FreeBSD endif #IRIX endif #SunOS +ifeq ($(USE_CCACHE),1) + CC := ccache $(CC) + CXX := ccache $(CXX) +endif + ifneq ($(BUILD_SERVER),1) TARGETS := $(subst $(B)/$(PLATFORM)q3ded,,$(TARGETS)) endif @@ -541,15 +667,15 @@ ifeq ($(GENERATE_DEPENDENCIES),1) endif endif -DO_CC=$(CC) $(CFLAGS) -o $@ -c $< -DO_CXX=$(CXX) $(CFLAGS) -o $@ -c $< -DO_SMP_CC=$(CC) $(CFLAGS) -DSMP -o $@ -c $< -DO_BOT_CC=$(CC) $(CFLAGS) -DBOTLIB -o $@ -c $< # $(SHLIBCFLAGS) # bk001212 -DO_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) -o $@ -c $< +DO_CC=$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) -o $@ -c $< +DO_CXX=$(CXX) $(NOTSHLIBCFLAGS) $(CFLAGS) -o $@ -c $< +DO_SMP_CC=$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) -DSMP -o $@ -c $< +DO_BOT_CC=$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) -DBOTLIB -o $@ -c $< # $(SHLIBCFLAGS) # bk001212 +DO_DEBUG_CC=$(CC) $(NOTSHLIBCFLAGS) $(DEBUG_CFLAGS) -o $@ -c $< DO_SHLIB_CC=$(CC) $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $< DO_SHLIB_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) $(SHLIBCFLAGS) -o $@ -c $< DO_AS=$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $< -DO_DED_CC=$(CC) -DDEDICATED $(CFLAGS) -o $@ -c $< +DO_DED_CC=$(CC) $(NOTSHLIBCFLAGS) -DDEDICATED $(CFLAGS) -o $@ -c $< DO_WINDRES=$(WINDRES) -i $< -o $@ ############################################################################# @@ -864,6 +990,33 @@ else Q3POBJ_SMP += $(B)/client/ftola.o $(B)/client/snapvectora.o endif endif #Linux-axp + +else +ifeq ($(PLATFORM),darwin) + Q3POBJ=\ + $(B)/client/unix_main.o \ + $(B)/client/unix_net.o \ + $(B)/client/unix_shared.o \ + $(B)/client/linux_signals.o \ + $(B)/client/linux_common.o \ + $(B)/client/linux_qgl.o \ + $(B)/client/linux_glimp.o \ + $(B)/client/sdl_glimp.o \ + $(B)/client/linux_joystick.o \ + $(B)/client/linux_snd.o \ + $(B)/client/sdl_snd.o \ + + ifeq ($(ARCH),i386) + I386OBJS := \ + $(B)/client/ftola.o \ + $(B)/client/snapvectora.o \ + $(B)/client/snd_mixa.o \ + $(B)/client/matha.o \ + + Q3POBJ += $(I386OBJS) + Q3POBJ_SMP += $(I386OBJS) + endif + else ifeq ($(PLATFORM),SunOS) Q3POBJ=\ @@ -895,16 +1048,25 @@ ifeq ($(PLATFORM),SunOS) endif #SunOS endif #Linux +endif #darwin endif #mingw32 endif #IRIX endif #FreeBSD -$(B)/$(PLATFORM)quake3$(BINEXT): $(Q3OBJ) $(Q3POBJ) - $(CC) -o $@ $(Q3OBJ) $(Q3POBJ) $(CLIENT_LDFLAGS) $(LDFLAGS) +$(B)/$(PLATFORM)quake3$(BINEXT): $(Q3OBJ) $(Q3POBJ) $(LIBSDLMAIN) + $(CC) -o $@ $(Q3OBJ) $(Q3POBJ) $(CLIENT_LDFLAGS) $(LDFLAGS) $(LIBSDLMAIN) -$(B)/$(PLATFORM)quake3-smp$(BINEXT): $(Q3OBJ) $(Q3POBJ_SMP) +$(B)/$(PLATFORM)quake3-smp$(BINEXT): $(Q3OBJ) $(Q3POBJ_SMP) $(LIBSDLMAIN) $(CC) -o $@ $(Q3OBJ) $(Q3POBJ_SMP) $(CLIENT_LDFLAGS) \ - $(THREAD_LDFLAGS) $(LDFLAGS) + $(THREAD_LDFLAGS) $(LDFLAGS) $(LIBSDLMAIN) + +ifneq ($(strip $(LIBSDLMAIN)),) +ifneq ($(strip $(LIBSDLMAINSRC)),) +$(LIBSDLMAIN) : $(LIBSDLMAINSRC) + cp $< $@ + ranlib $@ +endif +endif $(B)/client/cl_cgame.o : $(CDIR)/cl_cgame.c; $(DO_CC) $(B)/client/cl_cin.o : $(CDIR)/cl_cin.c; $(DO_CC) diff --git a/code/unix/linux_glimp.c b/code/unix/linux_glimp.c index 3c35c741..a72c50a7 100644 --- a/code/unix/linux_glimp.c +++ b/code/unix/linux_glimp.c @@ -1265,7 +1265,9 @@ static void GLW_InitExtensions( void ) if ( qglActiveTextureARB ) { - qglGetIntegerv( GL_MAX_ACTIVE_TEXTURES_ARB, &glConfig.maxActiveTextures ); + GLint glint = 0; + qglGetIntegerv( GL_MAX_ACTIVE_TEXTURES_ARB, &glint ); + glConfig.maxActiveTextures = (int) glint; if ( glConfig.maxActiveTextures > 1 ) { diff --git a/code/unix/linux_qgl.c b/code/unix/linux_qgl.c index efb54db5..3a21e58b 100644 --- a/code/unix/linux_qgl.c +++ b/code/unix/linux_qgl.c @@ -45,8 +45,12 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA //#endif //#include // bk010216 - FIXME: all of the above redundant? renderer/qgl.h +#if defined(USE_SDL_VIDEO) +#include "SDL.h" +#include "SDL_loadso.h" +#else #include - +#endif // bk001129 - from cvs1.17 (mkv) #if defined(__FX__) @@ -60,12 +64,14 @@ void (*qfxMesaSwapBuffers)(void); #endif //GLX Functions +#if !defined(USE_SDL_VIDEO) XVisualInfo * (*qglXChooseVisual)( Display *dpy, int screen, int *attribList ); GLXContext (*qglXCreateContext)( Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct ); void (*qglXDestroyContext)( Display *dpy, GLXContext ctx ); Bool (*qglXMakeCurrent)( Display *dpy, GLXDrawable drawable, GLXContext ctx); void (*qglXCopyContext)( Display *dpy, GLXContext src, GLXContext dst, GLuint mask ); void (*qglXSwapBuffers)( Display *dpy, GLXDrawable drawable ); +#endif void ( APIENTRY * qglAccum )(GLenum op, GLfloat value); void ( APIENTRY * qglAlphaFunc )(GLenum func, GLclampf ref); @@ -408,7 +414,7 @@ void ( APIENTRY * qglMultiTexCoord2fARB )( GLenum texture, GLfloat s, GLfloat t void ( APIENTRY * qglActiveTextureARB )( GLenum texture ); void ( APIENTRY * qglClientActiveTextureARB )( GLenum texture ); -void ( APIENTRY * qglLockArraysEXT)( int, int); +void ( APIENTRY * qglLockArraysEXT)( GLint, GLint); void ( APIENTRY * qglUnlockArraysEXT) ( void ); void ( APIENTRY * qglPointParameterfEXT)( GLenum param, GLfloat value ); @@ -763,7 +769,7 @@ static void APIENTRY logAccum(GLenum op, GLfloat value) static void APIENTRY logAlphaFunc(GLenum func, GLclampf ref) { - fprintf( glw_state.log_fp, "glAlphaFunc( 0x%x, %f )\n", func, ref ); + fprintf( glw_state.log_fp, "glAlphaFunc( 0x%x, %f )\n", (unsigned int) func, ref ); dllAlphaFunc( func, ref ); } @@ -781,13 +787,13 @@ static void APIENTRY logArrayElement(GLint i) static void APIENTRY logBegin(GLenum mode) { - fprintf( glw_state.log_fp, "glBegin( 0x%x )\n", mode ); + fprintf( glw_state.log_fp, "glBegin( 0x%x )\n", (unsigned int) mode ); dllBegin( mode ); } static void APIENTRY logBindTexture(GLenum target, GLuint texture) { - fprintf( glw_state.log_fp, "glBindTexture( 0x%x, %u )\n", target, texture ); + fprintf( glw_state.log_fp, "glBindTexture( 0x%x, %u )\n", (unsigned int) target, (unsigned int) texture ); dllBindTexture( target, texture ); } @@ -799,13 +805,13 @@ static void APIENTRY logBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLf static void APIENTRY logBlendFunc(GLenum sfactor, GLenum dfactor) { - fprintf( glw_state.log_fp, "glBlendFunc( 0x%x, 0x%x )\n", sfactor, dfactor ); + fprintf( glw_state.log_fp, "glBlendFunc( 0x%x, 0x%x )\n", (unsigned int) sfactor, (unsigned int) dfactor ); dllBlendFunc( sfactor, dfactor ); } static void APIENTRY logCallList(GLuint list) { - fprintf( glw_state.log_fp, "glCallList( %u )\n", list ); + fprintf( glw_state.log_fp, "glCallList( %u )\n", (unsigned int) list ); dllCallList( list ); } @@ -1122,7 +1128,7 @@ static void APIENTRY logDepthRange(GLclampd zNear, GLclampd zFar) static void APIENTRY logDisable(GLenum cap) { - fprintf( glw_state.log_fp, "glDisable( 0x%x )\n", cap ); + fprintf( glw_state.log_fp, "glDisable( 0x%x )\n", (unsigned int) cap ); dllDisable( cap ); } @@ -1176,7 +1182,7 @@ static void APIENTRY logEdgeFlagv(const GLboolean *flag) static void APIENTRY logEnable(GLenum cap) { - fprintf( glw_state.log_fp, "glEnable( 0x%x )\n", cap ); + fprintf( glw_state.log_fp, "glEnable( 0x%x )\n", (unsigned int) cap ); dllEnable( cap ); } @@ -1504,7 +1510,7 @@ static void APIENTRY logGetTexParameteriv(GLenum target, GLenum pname, GLint *pa static void APIENTRY logHint(GLenum target, GLenum mode) { - fprintf( glw_state.log_fp, "glHint( 0x%x, 0x%x )\n", target, mode ); + fprintf( glw_state.log_fp, "glHint( 0x%x, 0x%x )\n", (unsigned int) target, (unsigned int) mode ); dllHint( target, mode ); } @@ -1923,7 +1929,7 @@ static void APIENTRY logPointSize(GLfloat size) static void APIENTRY logPolygonMode(GLenum face, GLenum mode) { - fprintf( glw_state.log_fp, "glPolygonMode( 0x%x, 0x%x )\n", face, mode ); + fprintf( glw_state.log_fp, "glPolygonMode( 0x%x, 0x%x )\n", (unsigned int) face, (unsigned int) mode ); dllPolygonMode( face, mode ); } @@ -2403,7 +2409,7 @@ static void APIENTRY logTexCoordPointer(GLint size, GLenum type, GLsizei stride, static void APIENTRY logTexEnvf(GLenum target, GLenum pname, GLfloat param) { - fprintf( glw_state.log_fp, "glTexEnvf( 0x%x, 0x%x, %f )\n", target, pname, param ); + fprintf( glw_state.log_fp, "glTexEnvf( 0x%x, 0x%x, %f )\n", (unsigned int) target, (unsigned int) pname, param ); dllTexEnvf( target, pname, param ); } @@ -2415,7 +2421,7 @@ static void APIENTRY logTexEnvfv(GLenum target, GLenum pname, const GLfloat *par static void APIENTRY logTexEnvi(GLenum target, GLenum pname, GLint param) { - fprintf( glw_state.log_fp, "glTexEnvi( 0x%x, 0x%x, 0x%x )\n", target, pname, param ); + fprintf( glw_state.log_fp, "glTexEnvi( 0x%x, 0x%x, 0x%x )\n", (unsigned int) target, (unsigned int) pname, (unsigned int) param ); dllTexEnvi( target, pname, param ); } static void APIENTRY logTexEnviv(GLenum target, GLenum pname, const GLint *params) @@ -2469,7 +2475,7 @@ static void APIENTRY logTexImage2D(GLenum target, GLint level, GLint internalfor static void APIENTRY logTexParameterf(GLenum target, GLenum pname, GLfloat param) { - fprintf( glw_state.log_fp, "glTexParameterf( 0x%x, 0x%x, %f )\n", target, pname, param ); + fprintf( glw_state.log_fp, "glTexParameterf( 0x%x, 0x%x, %f )\n", (unsigned int) target, (unsigned int) pname, param ); dllTexParameterf( target, pname, param ); } @@ -2480,7 +2486,7 @@ static void APIENTRY logTexParameterfv(GLenum target, GLenum pname, const GLfloa } static void APIENTRY logTexParameteri(GLenum target, GLenum pname, GLint param) { - fprintf( glw_state.log_fp, "glTexParameteri( 0x%x, 0x%x, 0x%x )\n", target, pname, param ); + fprintf( glw_state.log_fp, "glTexParameteri( 0x%x, 0x%x, 0x%x )\n", (unsigned int) target, (unsigned int) pname, (unsigned int) param ); dllTexParameteri( target, pname, param ); } static void APIENTRY logTexParameteriv(GLenum target, GLenum pname, const GLint *params) @@ -2669,12 +2675,14 @@ void QGL_Shutdown( void ) if( r_GLlibCoolDownMsec->integer ) usleep( r_GLlibCoolDownMsec->integer * 1000 ); + #if USE_SDL_VIDEO + SDL_QuitSubSystem(SDL_INIT_VIDEO); + #else dlclose ( glw_state.OpenGLLib ); + #endif glw_state.OpenGLLib = NULL; } - glw_state.OpenGLLib = NULL; - qglAccum = NULL; qglAlphaFunc = NULL; qglAreTexturesResident = NULL; @@ -3022,15 +3030,22 @@ void QGL_Shutdown( void ) qfxMesaSwapBuffers = NULL; #endif +#if !defined(USE_SDL_VIDEO) qglXChooseVisual = NULL; qglXCreateContext = NULL; qglXDestroyContext = NULL; qglXMakeCurrent = NULL; qglXCopyContext = NULL; qglXSwapBuffers = NULL; +#endif } +#if USE_SDL_VIDEO +#define GPA( a ) SDL_GL_GetProcAddress( a ) +qboolean GLimp_sdl_init_video(void); +#else #define GPA( a ) dlsym( glw_state.OpenGLLib, a ) +#endif void *qwglGetProcAddress(char *symbol) { @@ -3039,6 +3054,8 @@ void *qwglGetProcAddress(char *symbol) return NULL; } +char *do_dlerror(void); + /* ** QGL_Init ** @@ -3052,23 +3069,39 @@ void *qwglGetProcAddress(char *symbol) qboolean QGL_Init( const char *dllname ) { - if ( ( glw_state.OpenGLLib = dlopen( dllname, RTLD_LAZY|RTLD_GLOBAL ) ) == 0 ) + if (glw_state.OpenGLLib == 0) + { + #if USE_SDL_VIDEO + if (GLimp_sdl_init_video() == qfalse) + return qfalse; + glw_state.OpenGLLib = (void*) ((SDL_GL_LoadLibrary(dllname) == -1) ? 0 : 1); + #else + glw_state.OpenGLLib = dlopen( dllname, RTLD_LAZY|RTLD_GLOBAL ); + #endif + } + + if (glw_state.OpenGLLib == 0) { char fn[1024]; // FILE *fp; // bk001204 - unused // if we are not setuid, try current directory - if (1) { + if (dllname != NULL) { getcwd(fn, sizeof(fn)); Q_strcat(fn, sizeof(fn), "/"); Q_strcat(fn, sizeof(fn), dllname); - if ( ( glw_state.OpenGLLib = dlopen( fn, RTLD_LAZY ) ) == 0 ) { - ri.Printf(PRINT_ALL, "QGL_Init: Can't load %s from /etc/ld.so.conf or current dir: %s\n", dllname, dlerror()); + #if USE_SDL_VIDEO + glw_state.OpenGLLib = (void*) ((SDL_GL_LoadLibrary(fn) == -1) ? 0 : 1); + #else + glw_state.OpenGLLib = dlopen( fn, RTLD_LAZY ); + #endif + if ( glw_state.OpenGLLib == 0 ) { + ri.Printf(PRINT_ALL, "QGL_Init: Can't load %s from /etc/ld.so.conf or current dir: %s\n", dllname, do_dlerror()); return qfalse; } } else { - ri.Printf(PRINT_ALL, "QGL_Init: Can't load %s from /etc/ld.so.conf: %s\n", dllname, dlerror()); + ri.Printf(PRINT_ALL, "QGL_Init: Can't load %s from /etc/ld.so.conf: %s\n", dllname, do_dlerror()); return qfalse; } } @@ -3418,12 +3451,14 @@ qboolean QGL_Init( const char *dllname ) qfxMesaSwapBuffers = GPA("fxMesaSwapBuffers"); #endif +#if !defined(USE_SDL_VIDEO) qglXChooseVisual = GPA("glXChooseVisual"); qglXCreateContext = GPA("glXCreateContext"); qglXDestroyContext = GPA("glXDestroyContext"); qglXMakeCurrent = GPA("glXMakeCurrent"); qglXCopyContext = GPA("glXCopyContext"); qglXSwapBuffers = GPA("glXSwapBuffers"); +#endif qglLockArraysEXT = NULL; qglUnlockArraysEXT = NULL; diff --git a/code/unix/sdl_glimp.c b/code/unix/sdl_glimp.c index 595fdebf..339dd79f 100644 --- a/code/unix/sdl_glimp.c +++ b/code/unix/sdl_glimp.c @@ -6,7 +6,7 @@ * * I wrote such a beast originally for Loki's port of Heavy Metal: FAKK2, * and then wrote it again for the Linux client of Medal of Honor: Allied - * Assault. Third times a charm, so I'm rewriting this once more for the + * Assault. Third time's a charm, so I'm rewriting this once more for the * GPL release of Quake 3. * * Written by Ryan C. Gordon (icculus@icculus.org). Please refer to @@ -107,6 +107,23 @@ cvar_t *joy_threshold = NULL; cvar_t *r_allowSoftwareGL; // don't abort out if the pixelformat claims software cvar_t *r_previousglDriver; +qboolean GLimp_sdl_init_video(void) +{ + if (!SDL_WasInit(SDL_INIT_VIDEO)) + { + ri.Printf( PRINT_ALL, "Calling SDL_Init(SDL_INIT_VIDEO)...\n"); + if (SDL_Init(SDL_INIT_VIDEO) == -1) + { + ri.Printf( PRINT_ALL, "SDL_Init(SDL_INIT_VIDEO) failed: %s\n", SDL_GetError()); + return qfalse; + } + ri.Printf( PRINT_ALL, "SDL_Init(SDL_INIT_VIDEO) passed.\n"); + } + + return qtrue; +} + + /* * Find the first occurrence of find in s. */ @@ -217,8 +234,12 @@ static const char *XLateKey(SDL_keysym *keysym, int *key) default: break; } - if (keysym->unicode <= 255 && keysym->unicode >= 20) // maps to ASCII? + if (*key == K_BACKSPACE) + buf[0] = 8; + else { + if (keysym->unicode <= 255 && keysym->unicode >= 20) // maps to ASCII? + { char ch = (char) keysym->unicode; if (ch == '~') *key = '~'; // console HACK @@ -231,17 +252,25 @@ static const char *XLateKey(SDL_keysym *keysym, int *key) // ch = ch - 'A' + 'a'; buf[0] = ch; - } - else if(keysym->unicode == 8) // ctrl-h + } + else if(keysym->unicode == 8) // ctrl-h buf[0] = 8; + } return buf; } static void install_grabs(void) { - SDL_ShowCursor(0); SDL_WM_GrabInput(SDL_GRAB_ON); + SDL_ShowCursor(0); + + // This is a bug in the current SDL/macosx...have to toggle it a few + // times to get the cursor to hide. + #if defined(MACOS_X) + SDL_ShowCursor(1); + SDL_ShowCursor(0); + #endif } static void uninstall_grabs(void) @@ -417,7 +446,6 @@ void GLimp_SetGamma( unsigned char red[256], unsigned char green[256], unsigned void GLimp_Shutdown( void ) { IN_Shutdown(); - SDL_QuitSubSystem(SDL_INIT_VIDEO); screen = NULL; memset( &glConfig, 0, sizeof( glConfig ) ); @@ -448,16 +476,8 @@ static qboolean GLW_StartDriverAndSetMode( const char *drivername, { rserr_t err; - if (!SDL_WasInit(SDL_INIT_VIDEO)) - { - ri.Printf( PRINT_ALL, "Calling SDL_Init(SDL_INIT_VIDEO)...\n"); - if (SDL_Init(SDL_INIT_VIDEO) == -1) - { - ri.Printf( PRINT_ALL, "SDL_Init(SDL_INIT_VIDEO) failed: %s\n", SDL_GetError()); - return qfalse; - } - ri.Printf( PRINT_ALL, "SDL_Init(SDL_INIT_VIDEO) passed.\n"); - } + if (GLimp_sdl_init_video() == qfalse) + return qfalse; // don't ever bother going into fullscreen with a voodoo card #if 1 // JDC: I reenabled this @@ -714,17 +734,17 @@ static void GLW_InitExtensions( void ) qglClientActiveTextureARB = NULL; if ( Q_stristr( glConfig.extensions_string, "GL_ARB_multitexture" ) ) { - // !!! FIXME: Use SDL_GL_GetProcAddress instead? if ( r_ext_multitexture->value ) { - qglMultiTexCoord2fARB = ( PFNGLMULTITEXCOORD2FARBPROC ) dlsym( glw_state.OpenGLLib, "glMultiTexCoord2fARB" ); - qglActiveTextureARB = ( PFNGLACTIVETEXTUREARBPROC ) dlsym( glw_state.OpenGLLib, "glActiveTextureARB" ); - qglClientActiveTextureARB = ( PFNGLCLIENTACTIVETEXTUREARBPROC ) dlsym( glw_state.OpenGLLib, "glClientActiveTextureARB" ); + qglMultiTexCoord2fARB = ( PFNGLMULTITEXCOORD2FARBPROC ) SDL_GL_GetProcAddress( "glMultiTexCoord2fARB" ); + qglActiveTextureARB = ( PFNGLACTIVETEXTUREARBPROC ) SDL_GL_GetProcAddress( "glActiveTextureARB" ); + qglClientActiveTextureARB = ( PFNGLCLIENTACTIVETEXTUREARBPROC ) SDL_GL_GetProcAddress( "glClientActiveTextureARB" ); if ( qglActiveTextureARB ) { - qglGetIntegerv( GL_MAX_ACTIVE_TEXTURES_ARB, &glConfig.maxActiveTextures ); - + GLint glint = 0; + qglGetIntegerv( GL_MAX_ACTIVE_TEXTURES_ARB, &glint ); + glConfig.maxActiveTextures = (int) glint; if ( glConfig.maxActiveTextures > 1 ) { ri.Printf( PRINT_ALL, "...using GL_ARB_multitexture\n" ); @@ -751,8 +771,8 @@ static void GLW_InitExtensions( void ) if ( r_ext_compiled_vertex_array->value ) { ri.Printf( PRINT_ALL, "...using GL_EXT_compiled_vertex_array\n" ); - qglLockArraysEXT = ( void ( APIENTRY * )( int, int ) ) dlsym( glw_state.OpenGLLib, "glLockArraysEXT" ); - qglUnlockArraysEXT = ( void ( APIENTRY * )( void ) ) dlsym( glw_state.OpenGLLib, "glUnlockArraysEXT" ); + qglLockArraysEXT = ( void ( APIENTRY * )( GLint, GLint ) ) SDL_GL_GetProcAddress( "glLockArraysEXT" ); + qglUnlockArraysEXT = ( void ( APIENTRY * )( void ) ) SDL_GL_GetProcAddress( "glUnlockArraysEXT" ); if (!qglLockArraysEXT || !qglUnlockArraysEXT) { ri.Error (ERR_FATAL, "bad getprocaddress"); @@ -783,7 +803,7 @@ static qboolean GLW_LoadOpenGL( const char *name ) { qboolean fullscreen; - ri.Printf( PRINT_ALL, "...loading %s: ", name ); + ri.Printf( PRINT_ALL, "...loading %s:\n", name ); // disable the 3Dfx splash screen and set gamma // we do this all the time, but it shouldn't hurt anything diff --git a/code/unix/sdl_snd.c b/code/unix/sdl_snd.c index ac4a614d..20d4bfd5 100644 --- a/code/unix/sdl_snd.c +++ b/code/unix/sdl_snd.c @@ -81,6 +81,10 @@ https://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=371 and use my own copy instead of the glibc crap =============== */ + +#ifdef Snd_Memset +#undef Snd_Memset +#endif void Snd_Memset (void* dest, const int val, const size_t count) { int *pDest; diff --git a/code/unix/unix_glw.h b/code/unix/unix_glw.h index 1e88c13d..1d815880 100644 --- a/code/unix/unix_glw.h +++ b/code/unix/unix_glw.h @@ -19,7 +19,7 @@ along with Quake III Arena source code; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA =========================================================================== */ -#if !( defined __linux__ || defined __FreeBSD__ || defined __sun) +#if !( defined __linux__ || defined __FreeBSD__ || defined __sun || defined MACOS_X ) #error You should include this file only on Linux/FreeBSD/Solaris platforms #endif diff --git a/code/unix/unix_main.c b/code/unix/unix_main.c index 050029e4..82c9a428 100644 --- a/code/unix/unix_main.c +++ b/code/unix/unix_main.c @@ -41,7 +41,17 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #ifdef __linux__ // rb010123 #include #endif + +#if (defined(DEDICATED) && defined(USE_SDL_VIDEO)) +#undef USE_SDL_VIDEO +#endif + +#if USE_SDL_VIDEO +#include "SDL.h" +#include "SDL_loadso.h" +#else #include +#endif #ifdef __linux__ #include // bk001213 - force dumps on divide by zero @@ -60,8 +70,11 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "linux_local.h" // bk001204 -// Structure containing functions exported from refresh DLL -refexport_t re; +#if idppc_altivec + #ifdef MACOS_X + #include + #endif +#endif unsigned sys_frame_time; @@ -349,8 +362,33 @@ void Sys_Quit (void) { Sys_Exit(0); } +static void Sys_DetectAltivec(void) +{ + extern cvar_t *com_altivec; + + // Only detect if user hasn't forcibly disabled it. + if (com_altivec->integer) { + #if idppc_altivec + #if MACOS_X + { + long feat = 0; + OSErr err = Gestalt(gestaltPowerPCProcessorFeatures, &feat); + if ((err==noErr) && ((1 << gestaltPowerPCHasVectorInstructions) & feat)) + com_altivec->integer = 1; + } + #else // !!! FIXME: PowerPC Linux, etc: how to detect? + com_altivec->integer = 1; + #endif + #else + com_altivec->integer = 0; // not an Altivec system, so never use it. + #endif + } +} + void Sys_Init(void) { + Sys_DetectAltivec(); + Cmd_AddCommand ("in_restart", Sys_In_Restart_f); Cvar_Set( "arch", OS_STRING " " ARCH_STRING ); @@ -643,6 +681,16 @@ char *Sys_ConsoleInput(void) /*****************************************************************************/ +char *do_dlerror(void) +{ +#if USE_SDL_VIDEO + return SDL_GetError(); +#else + return dlerror(); +#endif +} + + /* ================= Sys_UnloadDll @@ -651,16 +699,23 @@ Sys_UnloadDll */ void Sys_UnloadDll( void *dllHandle ) { // bk001206 - verbose error reporting - const char* err; // rb010123 - now const if ( !dllHandle ) { Com_Printf("Sys_UnloadDll(NULL)\n"); return; } + + #if USE_SDL_VIDEO + SDL_UnloadObject(dllHandle); + #else dlclose( dllHandle ); - err = dlerror(); - if ( err != NULL ) - Com_Printf ( "Sys_UnloadGame failed on dlclose: \"%s\"!\n", err ); + { + const char* err; // rb010123 - now const + err = dlerror(); + if ( err != NULL ) + Com_Printf ( "Sys_UnloadGame failed on dlclose: \"%s\"!\n", err ); + } + #endif } @@ -689,10 +744,15 @@ static void* try_dlopen(const char* base, const char* gamedir, const char* fname fn = FS_BuildOSPath( base, gamedir, fname ); Com_Printf( "Sys_LoadDll(%s)... \n", fn ); + + #if USE_SDL_VIDEO + libHandle = SDL_LoadObject(fn); + #else libHandle = dlopen( fn, Q_RTLD ); + #endif if(!libHandle) { - Com_Printf( "Sys_LoadDll(%s) failed:\n\"%s\"\n", fn, dlerror() ); + Com_Printf( "Sys_LoadDll(%s) failed:\n\"%s\"\n", fn, do_dlerror() ); return NULL; } @@ -751,20 +811,31 @@ void *Sys_LoadDll( const char *name, char *fqpath , return NULL; } - dllEntry = dlsym( libHandle, "dllEntry" ); +#if USE_SDL_VIDEO + dllEntry = SDL_LoadFunction( libHandle, "dllEntry" ); + *entryPoint = SDL_LoadFunction( libHandle, "vmMain" ); +#else + dllEntry = dlsym( libHandle, "dllEntry" ); *entryPoint = dlsym( libHandle, "vmMain" ); +#endif + if ( !*entryPoint || !dllEntry ) { - err = dlerror(); + err = do_dlerror(); #ifndef NDEBUG // bk001206 - in debug abort on failure Com_Error ( ERR_FATAL, "Sys_LoadDll(%s) failed dlsym(vmMain):\n\"%s\" !\n", name, err ); #else Com_Printf ( "Sys_LoadDll(%s) failed dlsym(vmMain):\n\"%s\" !\n", name, err ); #endif + #if USE_SDL_VIDEO + SDL_UnloadObject(libHandle); + #else dlclose( libHandle ); - err = dlerror(); + err = do_dlerror(); if ( err != NULL ) Com_Printf ( "Sys_LoadDll(%s) failed dlcose:\n\"%s\"\n", name, err ); + #endif + return NULL; } Com_Printf ( "Sys_LoadDll(%s) found **vmMain** at %p \n", name, *entryPoint ); // bk001212 @@ -1322,4 +1393,7 @@ int main ( int argc, char* argv[] ) #endif Com_Frame (); } + + return 0; } +