Morph-SynRJ
changeset 0:22de913c2d84 tip
morph-synrj intro
line diff
1.1 Binary file EviL-Kudo10.xm has changed
2.1 Binary file EviL-Kudo16.xm has changed
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/GL/GLwDrawA.h Tue Nov 27 15:23:52 2007 +0100 3.3 @@ -0,0 +1,226 @@ 3.4 +/* 3.5 +** License Applicability. Except to the extent portions of this file are 3.6 +** made subject to an alternative license as permitted in the SGI Free 3.7 +** Software License B, Version 1.1 (the "License"), the contents of this 3.8 +** file are subject only to the provisions of the License. You may not use 3.9 +** this file except in compliance with the License. You may obtain a copy 3.10 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 3.11 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: 3.12 +** 3.13 +** http://oss.sgi.com/projects/FreeB 3.14 +** 3.15 +** Note that, as provided in the License, the Software is distributed on an 3.16 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS 3.17 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND 3.18 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A 3.19 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 3.20 +** 3.21 +** Original Code. The Original Code is: OpenGL Sample Implementation, 3.22 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, 3.23 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. 3.24 +** Copyright in any portions created by third parties is as indicated 3.25 +** elsewhere herein. All Rights Reserved. 3.26 +** 3.27 +** Additional Notice Provisions: The application programming interfaces 3.28 +** established by SGI in conjunction with the Original Code are The 3.29 +** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released 3.30 +** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version 3.31 +** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X 3.32 +** Window System(R) (Version 1.3), released October 19, 1998. This software 3.33 +** was created using the OpenGL(R) version 1.2.1 Sample Implementation 3.34 +** published by SGI, but has not been independently verified as being 3.35 +** compliant with the OpenGL(R) version 1.2.1 Specification. 3.36 +** 3.37 +*/ 3.38 + 3.39 +/* 3.40 +** This file has been slightly modified from the original by Carlos A. M. dos 3.41 +** Santos <casantos@cpmet.ufpel.tche.br> for integration into XFree86 source 3.42 +** tree and for generating both Motif(TM) 1.2 and 2.x versions of the widgets 3.43 +** in the same library. 3.44 +*/ 3.45 +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glw/GLwDrawA.h,v 1.4 2002/05/31 16:36:50 dawes Exp $ */ 3.46 + 3.47 +#ifndef _GLwDrawA_h 3.48 +#define _GLwDrawA_h 3.49 + 3.50 +#ifdef __GLX_MOTIF 3.51 +# ifndef __GLX_INCLUDE_XM_H /* Defined during library compilation */ 3.52 +# include <Xm/Xm.h> /* We need to know about XmVERSION early */ 3.53 +# endif 3.54 +#endif 3.55 + 3.56 +#include <GL/glx.h> 3.57 +#include <GL/gl.h> 3.58 + 3.59 +/**************************************************************** 3.60 + * 3.61 + * GLwDrawingArea widgets 3.62 + * 3.63 + ****************************************************************/ 3.64 + 3.65 +/* Resources: 3.66 + 3.67 + Name Class RepType Default Value 3.68 + ---- ----- ------- ------------- 3.69 + attribList AttribList int * NULL 3.70 + visualInfo VisualInfo VisualInfo NULL 3.71 + installColormap InstallColormap Boolean TRUE 3.72 + allocateBackground AllocateColors Boolean FALSE 3.73 + allocateOtherColors AllocateColors Boolean FALSE 3.74 + installBackground InstallBackground Boolean TRUE 3.75 + exposeCallback Callback Pointer NULL 3.76 + ginitCallback Callback Pointer NULL 3.77 + inputCallback Callback Pointer NULL 3.78 + resizeCallback Callback Pointer NULL 3.79 + 3.80 +*** The following resources all correspond to the GLX configuration 3.81 +*** attributes and are used to create the attribList if it is NULL 3.82 + bufferSize BufferSize int 0 3.83 + level Level int 0 3.84 + rgba Rgba Boolean FALSE 3.85 + doublebuffer Doublebuffer Boolean FALSE 3.86 + stereo Stereo Boolean FALSE 3.87 + auxBuffers AuxBuffers int 0 3.88 + redSize ColorSize int 1 3.89 + greenSize ColorSize int 1 3.90 + blueSize ColorSize int 1 3.91 + alphaSize AlphaSize int 0 3.92 + depthSize DepthSize int 0 3.93 + stencilSize StencilSize int 0 3.94 + accumRedSize AccumColorSize int 0 3.95 + accumGreenSize AccumColorSize int 0 3.96 + accumBlueSize AccumColorSize int 0 3.97 + accumAlphaSize AccumAlphaSize int 0 3.98 +*/ 3.99 + 3.100 +#define GLwNattribList "attribList" 3.101 +#define GLwCAttribList "AttribList" 3.102 +#define GLwNvisualInfo "visualInfo" 3.103 +#define GLwCVisualInfo "VisualInfo" 3.104 +#define GLwRVisualInfo "VisualInfo" 3.105 + 3.106 +#define GLwNinstallColormap "installColormap" 3.107 +#define GLwCInstallColormap "InstallColormap" 3.108 +#define GLwNallocateBackground "allocateBackground" 3.109 +#define GLwNallocateOtherColors "allocateOtherColors" 3.110 +#define GLwCAllocateColors "AllocateColors" 3.111 +#define GLwNinstallBackground "installBackground" 3.112 +#define GLwCInstallBackground "InstallBackground" 3.113 + 3.114 +#define GLwCCallback "Callback" 3.115 +#define GLwNexposeCallback "exposeCallback" 3.116 +#define GLwNginitCallback "ginitCallback" 3.117 +#define GLwNresizeCallback "resizeCallback" 3.118 +#define GLwNinputCallback "inputCallback" 3.119 + 3.120 +#define GLwNbufferSize "bufferSize" 3.121 +#define GLwCBufferSize "BufferSize" 3.122 +#define GLwNlevel "level" 3.123 +#define GLwCLevel "Level" 3.124 +#define GLwNrgba "rgba" 3.125 +#define GLwCRgba "Rgba" 3.126 +#define GLwNdoublebuffer "doublebuffer" 3.127 +#define GLwCDoublebuffer "Doublebuffer" 3.128 +#define GLwNstereo "stereo" 3.129 +#define GLwCStereo "Stereo" 3.130 +#define GLwNauxBuffers "auxBuffers" 3.131 +#define GLwCAuxBuffers "AuxBuffers" 3.132 +#define GLwNredSize "redSize" 3.133 +#define GLwNgreenSize "greenSize" 3.134 +#define GLwNblueSize "blueSize" 3.135 +#define GLwCColorSize "ColorSize" 3.136 +#define GLwNalphaSize "alphaSize" 3.137 +#define GLwCAlphaSize "AlphaSize" 3.138 +#define GLwNdepthSize "depthSize" 3.139 +#define GLwCDepthSize "DepthSize" 3.140 +#define GLwNstencilSize "stencilSize" 3.141 +#define GLwCStencilSize "StencilSize" 3.142 +#define GLwNaccumRedSize "accumRedSize" 3.143 +#define GLwNaccumGreenSize "accumGreenSize" 3.144 +#define GLwNaccumBlueSize "accumBlueSize" 3.145 +#define GLwCAccumColorSize "AccumColorSize" 3.146 +#define GLwNaccumAlphaSize "accumAlphaSize" 3.147 +#define GLwCAccumAlphaSize "AccumAlphaSize" 3.148 + 3.149 +#ifdef __GLX_MOTIF 3.150 + 3.151 +#if XmVERSION == 1 3.152 +/* 3.153 +# define _GLwMDrawingAreaClassRec _GLwM1DrawingAreaClassRec 3.154 +# define _GLwMDrawingAreaRec _GLwM1DrawingAreaRec 3.155 +*/ 3.156 +# define glwMDrawingAreaWidgetClass glwM1DrawingAreaWidgetClass 3.157 +# define glwMDrawingAreaClassRec glwM1DrawingAreaClassRec 3.158 +# define GLwCreateMDrawingArea GLwCreateM1DrawingArea 3.159 +#elif XmVERSION == 2 3.160 +/* 3.161 +# define _GLwMDrawingAreaClassRec _GLwM2DrawingAreaClassRec 3.162 +# define _GLwMDrawingAreaRec _GLwM2DrawingAreaRec 3.163 +*/ 3.164 +# define glwMDrawingAreaWidgetClass glwM2DrawingAreaWidgetClass 3.165 +# define glwMDrawingAreaClassRec glwM2DrawingAreaClassRec 3.166 +# define GLwCreateMDrawingArea GLwCreateM2DrawingArea 3.167 +#else 3.168 +#error "Sorry, unknown Motif version." 3.169 +#endif /* XmVERSION */ 3.170 + 3.171 +typedef struct _GLwMDrawingAreaClassRec *GLwMDrawingAreaWidgetClass; 3.172 +typedef struct _GLwMDrawingAreaRec *GLwMDrawingAreaWidget; 3.173 + 3.174 +extern WidgetClass glwMDrawingAreaWidgetClass; 3.175 + 3.176 +#else /* not __GLX_MOTIF */ 3.177 + 3.178 +typedef struct _GLwDrawingAreaClassRec *GLwDrawingAreaWidgetClass; 3.179 +typedef struct _GLwDrawingAreaRec *GLwDrawingAreaWidget; 3.180 + 3.181 +extern WidgetClass glwDrawingAreaWidgetClass; 3.182 + 3.183 +#endif /* __GLX_MOTIF */ 3.184 + 3.185 +/* Callback reasons */ 3.186 +#ifdef __GLX_MOTIF 3.187 +#define GLwCR_EXPOSE XmCR_EXPOSE 3.188 +#define GLwCR_RESIZE XmCR_RESIZE 3.189 +#define GLwCR_INPUT XmCR_INPUT 3.190 +#else /* not __GLX_MOTIF */ 3.191 +/* The same values as Motif, but don't use Motif constants */ 3.192 +#define GLwCR_EXPOSE 38 3.193 +#define GLwCR_RESIZE 39 3.194 +#define GLwCR_INPUT 40 3.195 +#endif /* __GLX_MOTIF */ 3.196 + 3.197 +#define GLwCR_GINIT 32135 /* Arbitrary number that should neverr clash*/ 3.198 + 3.199 +typedef struct 3.200 +{ 3.201 + int reason; 3.202 + XEvent *event; 3.203 + Dimension width, height; /* for resize callback */ 3.204 +} GLwDrawingAreaCallbackStruct; 3.205 + 3.206 +#if defined(__cplusplus) || defined(c_plusplus) 3.207 +extern "C" { 3.208 +#endif 3.209 + 3.210 +/* front ends to glXMakeCurrent and glXSwapBuffers */ 3.211 +extern void GLwDrawingAreaMakeCurrent (Widget w, GLXContext ctx); 3.212 +extern void GLwDrawingAreaSwapBuffers (Widget w); 3.213 + 3.214 +#ifdef __GLX_MOTIF 3.215 +#ifdef _NO_PROTO 3.216 +extern Widget GLwCreateMDrawingArea (); 3.217 +#else /* _NO_PROTO */ 3.218 + 3.219 +extern Widget GLwCreateMDrawingArea (Widget parent, char *name, 3.220 + ArgList arglist, Cardinal argcount); 3.221 +#endif /* _NO_PROTO */ 3.222 + 3.223 +#endif /* __GLX_MOTIF */ 3.224 + 3.225 +#if defined(__cplusplus) || defined(c_plusplus) 3.226 +} 3.227 +#endif 3.228 + 3.229 +#endif /* _GLwDrawA_h */
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/GL/GLwDrawAP.h Tue Nov 27 15:23:52 2007 +0100 4.3 @@ -0,0 +1,127 @@ 4.4 +/* 4.5 +** License Applicability. Except to the extent portions of this file are 4.6 +** made subject to an alternative license as permitted in the SGI Free 4.7 +** Software License B, Version 1.1 (the "License"), the contents of this 4.8 +** file are subject only to the provisions of the License. You may not use 4.9 +** this file except in compliance with the License. You may obtain a copy 4.10 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 4.11 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: 4.12 +** 4.13 +** http://oss.sgi.com/projects/FreeB 4.14 +** 4.15 +** Note that, as provided in the License, the Software is distributed on an 4.16 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS 4.17 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND 4.18 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A 4.19 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 4.20 +** 4.21 +** Original Code. The Original Code is: OpenGL Sample Implementation, 4.22 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, 4.23 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. 4.24 +** Copyright in any portions created by third parties is as indicated 4.25 +** elsewhere herein. All Rights Reserved. 4.26 +** 4.27 +** Additional Notice Provisions: The application programming interfaces 4.28 +** established by SGI in conjunction with the Original Code are The 4.29 +** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released 4.30 +** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version 4.31 +** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X 4.32 +** Window System(R) (Version 1.3), released October 19, 1998. This software 4.33 +** was created using the OpenGL(R) version 1.2.1 Sample Implementation 4.34 +** published by SGI, but has not been independently verified as being 4.35 +** compliant with the OpenGL(R) version 1.2.1 Specification. 4.36 +** 4.37 +*/ 4.38 + 4.39 +/* 4.40 +** This file has been slightly modified from the original by Carlos A. M. dos 4.41 +** Santos <casantos@cpmet.ufpel.tche.br> for integration into XFree86 source 4.42 +** tree and for generating both Motif(TM) 1.2 and 2.x versions of the widgets 4.43 +** in the same library. 4.44 +*/ 4.45 +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glw/GLwDrawAP.h,v 1.3 2001/05/02 13:37:45 dawes Exp $ */ 4.46 + 4.47 +#ifndef _GLwDrawAP_h 4.48 +#define _GLwDrawAP_h 4.49 + 4.50 +#ifdef __GLX_MOTIF 4.51 +# ifndef __GLX_INCLUDE_PRIMITIVE_P_H /* Used during library compilation */ 4.52 +# include <Xm/PrimitiveP.h> 4.53 +# endif 4.54 +# include <GL/GLwMDrawA.h> /* includes IntrinsicP.h */ 4.55 +#else 4.56 +# include <X11/IntrinsicP.h> 4.57 +# include <GL/GLwDrawA.h> 4.58 +#endif 4.59 + 4.60 +typedef struct _GLwDrawingAreaClassPart 4.61 +{ 4.62 + char* extension; 4.63 +} GLwDrawingAreaClassPart; 4.64 + 4.65 +#ifdef __GLX_MOTIF 4.66 +typedef struct _GLwMDrawingAreaClassRec { 4.67 + CoreClassPart core_class; 4.68 + XmPrimitiveClassPart primitive_class; 4.69 + GLwDrawingAreaClassPart glwDrawingArea_class; 4.70 +} GLwMDrawingAreaClassRec; 4.71 + 4.72 +extern GLwMDrawingAreaClassRec glwMDrawingAreaClassRec; 4.73 + 4.74 +#else /* not __GLX_MOTIF */ 4.75 + 4.76 +typedef struct _GLwDrawingAreaClassRec { 4.77 + CoreClassPart core_class; 4.78 + GLwDrawingAreaClassPart glwDrawingArea_class; 4.79 +} GLwDrawingAreaClassRec; 4.80 + 4.81 +extern GLwDrawingAreaClassRec glwDrawingAreaClassRec; 4.82 +#endif /* __GLX_MOTIF */ 4.83 + 4.84 +typedef struct { 4.85 + /* resources */ 4.86 + int * attribList; 4.87 + XVisualInfo * visualInfo; 4.88 + Boolean myList; /* TRUE if we malloced the attribList*/ 4.89 + Boolean myVisual; /* TRUE if we created the visualInfo*/ 4.90 + Boolean installColormap; 4.91 + Boolean allocateBackground; 4.92 + Boolean allocateOisuormap; 4.93 + B6ca/f stae*/ 4.94 + i 4.95 + ifo*r EalInfo;,oun; 4.96 + )kiutypedef sfo*r EalInfo;,oun; 4.97 + )kiutypeinpuuormap; 4.98 + B6c /sverifiefo * vi** systdationf wand newfo * vi** ssRec; 4.99 +#endi bufferS if;c; 4.100 +#endi lle I Boolean alrgba Boolean aldoateebuffer Boolean al Noreo;c; 4.101 +#endi auxBuffers;c; 4.102 +#endi redS if;c; 4.103 +#endi gandnS if;c; 4.104 +#endi blueS if;c; 4.105 +#endi alphaS if;c; 4.106 +#endi .1 thS if;c; 4.107 +#endi NoncilS if;c; 4.108 +#endi accumRedS if;c; 4.109 +#endi accumGandnS if;c; 4.110 +#endi accumBlueS if;c; 4.111 +#endi accumAlphaS if;ct core_class; 4.112 + DrawingAreaClassPart 4.113 +{ 4.114 + char* extension; 4.115 +} GLwDrawingA 4.116 +#else /* not _MOTIF */ 4.117 +f struct _GLwMDrareaClassRec { 4.118 +ef struct _GLwDrawinClassRec { 4.119 + Coreprimitive_class; 4.120 + gAreaClRec; 4.121 + 4.122 +extern GLwMDrawingAraClassRec glwMDrawingAreaClass 4.123 +#else /* not _MOTIF */ 4.124 +f struuct _GLwDrawinClassRec { 4.125 + Coreprimitie_class; 4.126 + gAreaClassRec; 4.127 + 4.128 +extern GLwDrawiClassRec; 4.129 + 4.130 +itie_cl2 1Draw 4.131 \ No newline at end of file
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 5.2 +++ b/GL/GLwMDrawA.h Tue Nov 27 15:23:52 2007 +0100 5.3 @@ -0,0 +1,47 @@ 5.4 +/* 5.5 +** License Applicability. Except to the extent portions of this file are 5.6 +** made subject to an alternative license as permitted in the SGI Free 5.7 +** Software License B, Version 1.1 (the "License"), the contents of this 5.8 +** file are subject only to the provisions of the License. You may not use 5.9 +** this file except in compliance with the License. You may obtain a copy 5.10 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 5.11 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: 5.12 +** 5.13 +** http://oss.sgi.com/projects/FreeB 5.14 +** 5.15 +** Note that, as provided in the License, the Software is distributed on an 5.16 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS 5.17 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND 5.18 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A 5.19 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 5.20 +** 5.21 +** Original Code. The Original Code is: OpenGL Sample Implementation, 5.22 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, 5.23 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. 5.24 +** Copyright in any portions created by third parties is as indicated 5.25 +** elsewhere herein. All Rights Reserved. 5.26 +** 5.27 +** Additional Notice Provisions: The application programming interfaces 5.28 +** established by SGI in conjunction with the Original Code are The 5.29 +** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released 5.30 +** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version 5.31 +** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X 5.32 +** Window System(R) (Version 1.3), released October 19, 1998. This software 5.33 +** was created using the OpenGL(R) version 1.2.1 Sample Implementation 5.34 +** published by SGI, but has not been independently verified as being 5.35 +** compliant with the OpenGL(R) version 1.2.1 Specification. 5.36 +** 5.37 +*/ 5.38 + 5.39 +/* 5.40 +** This file has been slightly modified from the original by Carlos A. M. dos 5.41 +** Santos <casantos@cpmet.ufpel.tche.br> for integration into XFree86 source 5.42 +** tree and for generating both Motif(TM) 1.2 and 2.x versions of the widgets 5.43 +** in the same library. 5.44 +*/ 5.45 +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glw/GLwMDrawA.h,v 1.3 2001/05/02 13:37:45 dawes Exp $ */ 5.46 + 5.47 +#ifndef __GLX_MOTIF 5.48 +#define __GLX_MOTIF 1 5.49 +#endif 5.50 +#include <GL/GLwDrawA.h>
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 6.2 +++ b/GL/GLwMDrawAP.h Tue Nov 27 15:23:52 2007 +0100 6.3 @@ -0,0 +1,47 @@ 6.4 +/* 6.5 +** License Applicability. Except to the extent portions of this file are 6.6 +** made subject to an alternative license as permitted in the SGI Free 6.7 +** Software License B, Version 1.1 (the "License"), the contents of this 6.8 +** file are subject only to the provisions of the License. You may not use 6.9 +** this file except in compliance with the License. You may obtain a copy 6.10 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 6.11 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: 6.12 +** 6.13 +** http://oss.sgi.com/projects/FreeB 6.14 +** 6.15 +** Note that, as provided in the License, the Software is distributed on an 6.16 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS 6.17 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND 6.18 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A 6.19 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 6.20 +** 6.21 +** Original Code. The Original Code is: OpenGL Sample Implementation, 6.22 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, 6.23 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. 6.24 +** Copyright in any portions created by third parties is as indicated 6.25 +** elsewhere herein. All Rights Reserved. 6.26 +** 6.27 +** Additional Notice Provisions: The application programming interfaces 6.28 +** established by SGI in conjunction with the Original Code are The 6.29 +** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released 6.30 +** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version 6.31 +** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X 6.32 +** Window System(R) (Version 1.3), released October 19, 1998. This software 6.33 +** was created using the OpenGL(R) version 1.2.1 Sample Implementation 6.34 +** published by SGI, but has not been independently verified as being 6.35 +** compliant with the OpenGL(R) version 1.2.1 Specification. 6.36 +** 6.37 +*/ 6.38 + 6.39 +/* 6.40 +** This file has been slightly modified from the original by Carlos A. M. dos 6.41 +** Santos <casantos@cpmet.ufpel.tche.br> for integration into XFree86 source 6.42 +** tree and for generating both Motif(TM) 1.2 and 2.x versions of the widgets 6.43 +** in the same library. 6.44 +*/ 6.45 +/* $XFree86: xc/extras/ogl-sample/main/gfx/lib/glw/GLwMDrawAP.h,v 1.3 2001/05/02 13:37:45 dawes Exp $ */ 6.46 + 6.47 +#ifndef __GLX_MOTIF 6.48 +#define __GLX_MOTIF 1 6.49 +#endif 6.50 +#include <GL/GLwDrawAP.h>
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 7.2 +++ b/GL/gl.h Tue Nov 27 15:23:52 2007 +0100 7.3 @@ -0,0 +1,3284 @@ 7.4 +#ifndef __gl_h_ 7.5 +#define __gl_h_ 7.6 + 7.7 +#ifdef __cplusplus 7.8 +extern "C" { 7.9 +#endif 7.10 + 7.11 +/* 7.12 +** Copyright 1998-2002, NVIDIA Corporation. 7.13 +** All Rights Reserved. 7.14 +** 7.15 +** THE INFORMATION CONTAINED HEREIN IS PROPRIETARY AND CONFIDENTIAL TO 7.16 +** NVIDIA, CORPORATION. USE, REPRODUCTION OR DISCLOSURE TO ANY THIRD PARTY 7.17 +** IS SUBJECT TO WRITTEN PRE-APPROVAL BY NVIDIA, CORPORATION. 7.18 +** 7.19 +** 7.20 +** Copyright 1992-1999, Silicon Graphics, Inc. 7.21 +** All Rights Reserved. 7.22 +** 7.23 +** Portions of this file are UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon 7.24 +** Graphics, Inc.; the contents of this file may not be disclosed to third 7.25 +** parties, copied or duplicated in any form, in whole or in part, without 7.26 +** the prior written permission of Silicon Graphics, Inc. 7.27 +** 7.28 +** RESTRICTED RIGHTS LEGEND: 7.29 +** Use, duplication or disclosure by the Government is subject to 7.30 +** restrictions as set forth in subdivision (c)(1)(ii) of the Rights in 7.31 +** Technical Data and Computer Software clause at DFARS 252.227-7013, 7.32 +** and/or in similar or successor clauses in the FAR, DOD or NASA FAR 7.33 +** Supplement. Unpublished - rights reserved under the Copyright Laws of 7.34 +** the United States. 7.35 +*/ 7.36 + 7.37 +#ifndef GLAPI 7.38 +# ifdef _WIN32 7.39 +# define GLAPI __stdcall 7.40 +# else 7.41 +# define GLAPI 7.42 +# endif 7.43 +# define __DEFINED_GLAPI 7.44 +#endif 7.45 + 7.46 +typedef unsigned int GLenum; 7.47 +typedef unsigned char GLboolean; 7.48 +typedef unsigned int GLbitfield; 7.49 +typedef signed char GLbyte; 7.50 +typedef short GLshort; 7.51 +typedef int GLint; 7.52 +typedef int GLsizei; 7.53 +typedef unsigned char GLubyte; 7.54 +typedef unsigned short GLushort; 7.55 +typedef unsigned int GLuint; 7.56 +typedef unsigned short GLhalf; 7.57 +typedef float GLfloat; 7.58 +typedef float GLclampf; 7.59 +typedef double GLdouble; 7.60 +typedef double GLclampd; 7.61 +typedef void GLvoid; 7.62 + 7.63 +#if defined(_WIN64) 7.64 + typedef __int64 GLintptrARB; 7.65 + typedef __int64 GLsizeiptrARB; 7.66 +#elif defined(__ia64__) || defined(__x86_64__) 7.67 + typedef long int GLintptrARB; 7.68 + typedef long int GLsizeiptrARB; 7.69 +#else 7.70 + typedef int GLintptrARB; 7.71 + typedef int GLsizeiptrARB; 7.72 +#endif 7.73 + 7.74 +/*************************************************************/ 7.75 + 7.76 +/* Version */ 7.77 +#define GL_VERSION_1_1 1 7.78 +#define GL_VERSION_1_2 1 7.79 +#define GL_VERSION_1_3 1 7.80 +#define GL_VERSION_1_4 1 7.81 + 7.82 +/* Extensions */ 7.83 +#define GL_ARB_depth_texture 1 7.84 +#define GL_ARB_fragment_program 1 7.85 +#define GL_ARB_imaging 1 7.86 +#define GL_ARB_multisample 1 7.87 +#define GL_ARB_multitexture 1 7.88 +#define GL_ARB_point_parameters 1 7.89 +#define GL_ARB_shadow 1 7.90 +#define GL_ARB_shadow_ambient 1 7.91 +#define GL_ARB_texture_border_clamp 1 7.92 +#define GL_ARB_texture_compression 1 7.93 +#define GL_ARB_texture_cube_map 1 7.94 +#define GL_ARB_texture_env_add 1 7.95 +#define GL_ARB_texture_env_combine 1 7.96 +#define GL_ARB_texture_env_dot3 1 7.97 +#define GL_ARB_texture_mirrored_repeat 1 7.98 +#define GL_ARB_transpose_matrix 1 7.99 +#define GL_ARB_vertex_buffer_object 1 7.100 +#define GL_ARB_vertex_program 1 7.101 +#define GL_ARB_window_pos 1 7.102 +#define GL_Autodesk_valid_back_buffer_hint 1 7.103 +#define GL_EXT_abgr 1 7.104 +#define GL_EXT_bgra 1 7.105 +#define GL_EXT_blend_color 1 7.106 +#define GL_EXT_blend_func_separate 1 7.107 +#define GL_EXT_blend_minmax 1 7.108 +#define GL_EXT_blend_subtract 1 7.109 +#define GL_EXT_clip_volume_hint 1 7.110 +#define GL_EXT_compiled_vertex_array 1 7.111 +#define GL_EXT_color_table 1 7.112 +#define GL_EXT_depth_bounds_test 1 7.113 +#define GL_EXT_draw_range_elements 1 7.114 +#define GL_EXT_fog_coord 1 7.115 +#define GL_EXT_multi_draw_arrays 1 7.116 +#define GL_EXT_packed_pixels 1 7.117 +#define GL_EXT_paletted_texture 1 7.118 +#define GL_EXT_point_parameters 1 7.119 +#define GL_EXT_rescale_normal 1 7.120 +#define GL_EXT_secondary_color 1 7.121 +#define GL_EXT_separate_specular_color 1 7.122 +#define GL_EXT_shadow_funcs 1 7.123 +#define GL_EXT_shared_texture_palette 1 7.124 +#define GL_EXT_stencil_two_side 1 7.125 +#define GL_EXT_stencil_wrap 1 7.126 +#define GL_EXT_texture3D 1 7.127 +#define GL_EXT_texture_compression_s3tc 1 7.128 +#define GL_EXT_texture_cube_map 1 7.129 +#define GL_EXT_texture_edge_clamp 1 7.130 +#define GL_EXT_texture_env_add 1 7.131 +#define GL_EXT_texture_env_combine 1 7.132 +#define GL_EXT_texture_env_dot3 1 7.133 +#define GL_EXT_texture_filter_anisotropic 1 7.134 +#define GL_EXT_texture_lod_bias 1 7.135 +#define GL_EXT_texture_object 1 7.136 +#define GL_EXT_vertex_array 1 7.137 +#define GL_EXT_vertex_weighting 1 7.138 +#define GL_HP_occlusion_test 1 7.139 +#define GL_IBM_texture_mirrored_repeat 1 7.140 +#define GL_NV_blend_square 1 7.141 +#define GL_NV_copy_depth_to_color 1 7.142 +#define GL_NV_depth_clamp 1 7.143 +#define GL_NV_draw_mesh 1 7.144 +#define GL_NV_extended_combiner_program 1 7.145 +#define GL_NV_fence 1 7.146 +#define GL_NV_float_buffer 1 7.147 +#define GL_NV_flush_hold 1 7.148 +#define GL_NV_fog_distance 1 7.149 +#define GL_NV_fragment_program 1 7.150 +#define GL_NV_half_float 1 7.151 +#define GL_NV_light_max_exponent 1 7.152 +#define GL_NV_mac_get_proc_address 1 7.153 +#define GL_NV_multisample_filter_hint 1 7.154 +#define GL_NV_occlusion_query 1 7.155 +#define GL_NV_packed_depth_stencil 1 7.156 +#define GL_NV_pixel_data_range 1 7.157 +#define GL_NV_point_sprite 1 7.158 +#define GL_NV_primitive_restart 1 7.159 +#define GL_NV_register_combiners 1 7.160 +#define GL_NV_register_combiners2 1 7.161 +#define GL_NV_set_window_stereomode 1 7.162 +#define GL_NV_texgen_reflection 1 7.163 +#define GL_NV_texture_compression_vtc 1 7.164 +#define GL_NV_texture_env_combine4 1 7.165 +#define GL_NV_texture_expand_normal 1 7.166 +#define GL_NV_texture_rectangle 1 7.167 +#define GL_NV_texture_shader 1 7.168 +#define GL_NV_texture_shader2 1 7.169 +#define GL_NV_texture_shader3 1 7.170 +#define GL_NV_vertex_array_range 1 7.171 +#define GL_NV_vertex_array_range2 1 7.172 +#define GL_NV_vertex_program 1 7.173 +#define GL_NV_vertex_program1_1 1 7.174 +#define GL_NV_vertex_program2 1 7.175 +#define GL_S3_s3tc 1 7.176 +#define GL_SGIS_generate_mipmap 1 7.177 +#define GL_SGIS_multitexture 1 7.178 +#define GL_SGIS_texture_lod 1 7.179 +#define GL_SGIX_depth_texture 1 7.180 +#define GL_SGIX_shadow 1 7.181 +#define GL_APPLE_transform_hint 1 7.182 +#define GL_WIN_swap_hint 1 7.183 +#define GL_NVX_ycrcb 1 7.184 + 7.185 +/* AttribMask */ 7.186 +#define GL_CURRENT_BIT 0x00000001 7.187 +#define GL_POINT_BIT 0x00000002 7.188 +#define GL_LINE_BIT 0x00000004 7.189 +#define GL_POLYGON_BIT 0x00000008 7.190 +#define GL_POLYGON_STIPPLE_BIT 0x00000010 7.191 +#define GL_PIXEL_MODE_BIT 0x00000020 7.192 +#define GL_LIGHTING_BIT 0x00000040 7.193 +#define GL_FOG_BIT 0x00000080 7.194 +#define GL_DEPTH_BUFFER_BIT 0x00000100 7.195 +#define GL_ACCUM_BUFFER_BIT 0x00000200 7.196 +#define GL_STENCIL_BUFFER_BIT 0x00000400 7.197 +#define GL_VIEWPORT_BIT 0x00000800 7.198 +#define GL_TRANSFORM_BIT 0x00001000 7.199 +#define GL_ENABLE_BIT 0x00002000 7.200 +#define GL_COLOR_BUFFER_BIT 0x00004000 7.201 +#define GL_HINT_BIT 0x00008000 7.202 +#define GL_EVAL_BIT 0x00010000 7.203 +#define GL_LIST_BIT 0x00020000 7.204 +#define GL_TEXTURE_BIT 0x00040000 7.205 +#define GL_SCISSOR_BIT 0x00080000 7.206 +#define GL_ALL_ATTRIB_BITS 0xFFFFFFFF 7.207 + 7.208 +/* ClearBufferMask */ 7.209 +/* GL_COLOR_BUFFER_BIT */ 7.210 +/* GL_ACCUM_BUFFER_BIT */ 7.211 +/* GL_STENCIL_BUFFER_BIT */ 7.212 +/* GL_DEPTH_BUFFER_BIT */ 7.213 + 7.214 +/* ClientAttribMask */ 7.215 +#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 7.216 +#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 7.217 +#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF 7.218 + 7.219 +/* Boolean */ 7.220 +#define GL_FALSE 0 7.221 +#define GL_TRUE 1 7.222 + 7.223 +/* BeginMode */ 7.224 +#define GL_POINTS 0x0000 7.225 +#define GL_LINES 0x0001 7.226 +#define GL_LINE_LOOP 0x0002 7.227 +#define GL_LINE_STRIP 0x0003 7.228 +#define GL_TRIANGLES 0x0004 7.229 +#define GL_TRIANGLE_STRIP 0x0005 7.230 +#define GL_TRIANGLE_FAN 0x0006 7.231 +#define GL_QUADS 0x0007 7.232 +#define GL_QUAD_STRIP 0x0008 7.233 +#define GL_POLYGON 0x0009 7.234 + 7.235 +/* AccumOp */ 7.236 +#define GL_ACCUM 0x0100 7.237 +#define GL_LOAD 0x0101 7.238 +#define GL_RETURN 0x0102 7.239 +#define GL_MULT 0x0103 7.240 +#define GL_ADD 0x0104 7.241 + 7.242 +/* AlphaFunction */ 7.243 +#define GL_NEVER 0x0200 7.244 +#define GL_LESS 0x0201 7.245 +#define GL_EQUAL 0x0202 7.246 +#define GL_LEQUAL 0x0203 7.247 +#define GL_GREATER 0x0204 7.248 +#define GL_NOTEQUAL 0x0205 7.249 +#define GL_GEQUAL 0x0206 7.250 +#define GL_ALWAYS 0x0207 7.251 + 7.252 +/* BlendingFactorDest */ 7.253 +#define GL_ZERO 0 7.254 +#define GL_ONE 1 7.255 +#define GL_SRC_COLOR 0x0300 7.256 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 7.257 +#define GL_SRC_ALPHA 0x0302 7.258 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 7.259 +#define GL_DST_ALPHA 0x0304 7.260 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 7.261 + 7.262 +/* BlendingFactorSrc */ 7.263 +/* GL_ZERO */ 7.264 +/* GL_ONE */ 7.265 +#define GL_DST_COLOR 0x0306 7.266 +#define GL_ONE_MINUS_DST_COLOR 0x0307 7.267 +#define GL_SRC_ALPHA_SATURATE 0x0308 7.268 +/* GL_SRC_ALPHA */ 7.269 +/* GL_ONE_MINUS_SRC_ALPHA */ 7.270 +/* GL_DST_ALPHA */ 7.271 +/* GL_ONE_MINUS_DST_ALPHA */ 7.272 + 7.273 +/* ColorMaterialFace */ 7.274 +/* GL_FRONT */ 7.275 +/* GL_BACK */ 7.276 +/* GL_FRONT_AND_BACK */ 7.277 + 7.278 +/* ColorMaterialParameter */ 7.279 +/* GL_AMBIENT */ 7.280 +/* GL_DIFFUSE */ 7.281 +/* GL_SPECULAR */ 7.282 +/* GL_EMISSION */ 7.283 +/* GL_AMBIENT_AND_DIFFUSE */ 7.284 + 7.285 +/* ColorPointerType */ 7.286 +/* GL_BYTE */ 7.287 +/* GL_UNSIGNED_BYTE */ 7.288 +/* GL_SHORT */ 7.289 +/* GL_UNSIGNED_SHORT */ 7.290 +/* GL_INT */ 7.291 +/* GL_UNSIGNED_INT */ 7.292 +/* GL_FLOAT */ 7.293 +/* GL_DOUBLE */ 7.294 + 7.295 +/* CullFaceMode */ 7.296 +/* GL_FRONT */ 7.297 +/* GL_BACK */ 7.298 +/* GL_FRONT_AND_BACK */ 7.299 + 7.300 +/* DepthFunction */ 7.301 +/* GL_NEVER */ 7.302 +/* GL_LESS */ 7.303 +/* GL_EQUAL */ 7.304 +/* GL_LEQUAL */ 7.305 +/* GL_GREATER */ 7.306 +/* GL_NOTEQUAL */ 7.307 +/* GL_GEQUAL */ 7.308 +/* GL_ALWAYS */ 7.309 + 7.310 +/* DrawBufferMode */ 7.311 +#define GL_NONE 0 7.312 +#define GL_FRONT_LEFT 0x0400 7.313 +#define GL_FRONT_RIGHT 0x0401 7.314 +#define GL_BACK_LEFT 0x0402 7.315 +#define GL_BACK_RIGHT 0x0403 7.316 +#define GL_FRONT 0x0404 7.317 +#define GL_BACK 0x0405 7.318 +#define GL_LEFT 0x0406 7.319 +#define GL_RIGHT 0x0407 7.320 +#define GL_FRONT_AND_BACK 0x0408 7.321 +#define GL_AUX0 0x0409 7.322 +#define GL_AUX1 0x040A 7.323 +#define GL_AUX2 0x040B 7.324 +#define GL_AUX3 0x040C 7.325 + 7.326 +/* EnableCap */ 7.327 +/* GL_FOG */ 7.328 +/* GL_LIGHTING */ 7.329 +/* GL_TEXTURE_1D */ 7.330 +/* GL_TEXTURE_2D */ 7.331 +/* GL_LINE_STIPPLE */ 7.332 +/* GL_POLYGON_STIPPLE */ 7.333 +/* GL_CULL_FACE */ 7.334 +/* GL_ALPHA_TEST */ 7.335 +/* GL_BLEND */ 7.336 +/* GL_INDEX_LOGIC_OP */ 7.337 +/* GL_COLOR_LOGIC_OP */ 7.338 +/* GL_DITHER */ 7.339 +/* GL_STENCIL_TEST */ 7.340 +/* GL_DEPTH_TEST */ 7.341 +/* GL_CLIP_PLANE0 */ 7.342 +/* GL_CLIP_PLANE1 */ 7.343 +/* GL_CLIP_PLANE2 */ 7.344 +/* GL_CLIP_PLANE3 */ 7.345 +/* GL_CLIP_PLANE4 */ 7.346 +/* GL_CLIP_PLANE5 */ 7.347 +/* GL_LIGHT0 */ 7.348 +/* GL_LIGHT1 */ 7.349 +/* GL_LIGHT2 */ 7.350 +/* GL_LIGHT3 */ 7.351 +/* GL_LIGHT4 */ 7.352 +/* GL_LIGHT5 */ 7.353 +/* GL_LIGHT6 */ 7.354 +/* GL_LIGHT7 */ 7.355 +/* GL_TEXTURE_GEN_S */ 7.356 +/* GL_TEXTURE_GEN_T */ 7.357 +/* GL_TEXTURE_GEN_R */ 7.358 +/* GL_TEXTURE_GEN_Q */ 7.359 +/* GL_MAP1_VERTEX_3 */ 7.360 +/* GL_MAP1_VERTEX_4 */ 7.361 +/* GL_MAP1_COLOR_4 */ 7.362 +/* GL_MAP1_INDEX */ 7.363 +/* GL_MAP1_NORMAL */ 7.364 +/* GL_MAP1_TEXTURE_COORD_1 */ 7.365 +/* GL_MAP1_TEXTURE_COORD_2 */ 7.366 +/* GL_MAP1_TEXTURE_COORD_3 */ 7.367 +/* GL_MAP1_TEXTURE_COORD_4 */ 7.368 +/* GL_MAP2_VERTEX_3 */ 7.369 +/* GL_MAP2_VERTEX_4 */ 7.370 +/* GL_MAP2_COLOR_4 */ 7.371 +/* GL_MAP2_INDEX */ 7.372 +/* GL_MAP2_NORMAL */ 7.373 +/* GL_MAP2_TEXTURE_COORD_1 */ 7.374 +/* GL_MAP2_TEXTURE_COORD_2 */ 7.375 +/* GL_MAP2_TEXTURE_COORD_3 */ 7.376 +/* GL_MAP2_TEXTURE_COORD_4 */ 7.377 +/* GL_POINT_SMOOTH */ 7.378 +/* GL_LINE_SMOOTH */ 7.379 +/* GL_POLYGON_SMOOTH */ 7.380 +/* GL_SCISSOR_TEST */ 7.381 +/* GL_COLOR_MATERIAL */ 7.382 +/* GL_NORMALIZE */ 7.383 +/* GL_AUTO_NORMAL */ 7.384 +/* GL_POLYGON_OFFSET_POINT */ 7.385 +/* GL_POLYGON_OFFSET_LINE */ 7.386 +/* GL_POLYGON_OFFSET_FILL */ 7.387 +/* GL_VERTEX_ARRAY */ 7.388 +/* GL_NORMAL_ARRAY */ 7.389 +/* GL_COLOR_ARRAY */ 7.390 +/* GL_INDEX_ARRAY */ 7.391 +/* GL_TEXTURE_COORD_ARRAY */ 7.392 +/* GL_EDGE_FLAG_ARRAY */ 7.393 + 7.394 +/* ErrorCode */ 7.395 +#define GL_NO_ERROR 0 7.396 +#define GL_INVALID_ENUM 0x0500 7.397 +#define GL_INVALID_VALUE 0x0501 7.398 +#define GL_INVALID_OPERATION 0x0502 7.399 +#define GL_STACK_OVERFLOW 0x0503 7.400 +#define GL_STACK_UNDERFLOW 0x0504 7.401 +#define GL_OUT_OF_MEMORY 0x0505 7.402 +#define GL_TABLE_TOO_LARGE 0x8031 7.403 + 7.404 +/* FeedbackType */ 7.405 +#define GL_2D 0x0600 7.406 +#define GL_3D 0x0601 7.407 +#define GL_3D_COLOR 0x0602 7.408 +#define GL_3D_COLOR_TEXTURE 0x0603 7.409 +#define GL_4D_COLOR_TEXTURE 0x0604 7.410 + 7.411 +/* FeedBackToken */ 7.412 +#define GL_PASS_THROUGH_TOKEN 0x0700 7.413 +#define GL_POINT_TOKEN 0x0701 7.414 +#define GL_LINE_TOKEN 0x0702 7.415 +#define GL_POLYGON_TOKEN 0x0703 7.416 +#define GL_BITMAP_TOKEN 0x0704 7.417 +#define GL_DRAW_PIXEL_TOKEN 0x0705 7.418 +#define GL_COPY_PIXEL_TOKEN 0x0706 7.419 +#define GL_LINE_RESET_TOKEN 0x0707 7.420 + 7.421 +/* FogMode */ 7.422 +/* GL_LINEAR */ 7.423 +#define GL_EXP 0x0800 7.424 +#define GL_EXP2 0x0801 7.425 + 7.426 +/* FogParameter */ 7.427 +/* GL_FOG_COLOR */ 7.428 +/* GL_FOG_DENSITY */ 7.429 +/* GL_FOG_END */ 7.430 +/* GL_FOG_INDEX */ 7.431 +/* GL_FOG_MODE */ 7.432 +/* GL_FOG_START */ 7.433 + 7.434 +/* FrontFaceDirection */ 7.435 +#define GL_CW 0x0900 7.436 +#define GL_CCW 0x0901 7.437 + 7.438 +/* GetColorTableParameterPNameEXT */ 7.439 +/* GL_COLOR_TABLE_FORMAT_EXT */ 7.440 +/* GL_COLOR_TABLE_WIDTH_EXT */ 7.441 +/* GL_COLOR_TABLE_RED_SIZE_EXT */ 7.442 +/* GL_COLOR_TABLE_GREEN_SIZE_EXT */ 7.443 +/* GL_COLOR_TABLE_BLUE_SIZE_EXT */ 7.444 +/* GL_COLOR_TABLE_ALPHA_SIZE_EXT */ 7.445 +/* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */ 7.446 +/* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */ 7.447 + 7.448 +/* GetMapQuery */ 7.449 +#define GL_COEFF 0x0A00 7.450 +#define GL_ORDER 0x0A01 7.451 +#define GL_DOMAIN 0x0A02 7.452 + 7.453 +/* GetPixelMap */ 7.454 +#define GL_PIXEL_MAP_I_TO_I 0x0C70 7.455 +#define GL_PIXEL_MAP_S_TO_S 0x0C71 7.456 +#define GL_PIXEL_MAP_I_TO_R 0x0C72 7.457 +#define GL_PIXEL_MAP_I_TO_G 0x0C73 7.458 +#define GL_PIXEL_MAP_I_TO_B 0x0C74 7.459 +#define GL_PIXEL_MAP_I_TO_A 0x0C75 7.460 +#define GL_PIXEL_MAP_R_TO_R 0x0C76 7.461 +#define GL_PIXEL_MAP_G_TO_G 0x0C77 7.462 +#define GL_PIXEL_MAP_B_TO_B 0x0C78 7.463 +#define GL_PIXEL_MAP_A_TO_A 0x0C79 7.464 + 7.465 +/* GetPointervPName */ 7.466 +#define GL_VERTEX_ARRAY_POINTER 0x808E 7.467 +#define GL_NORMAL_ARRAY_POINTER 0x808F 7.468 +#define GL_COLOR_ARRAY_POINTER 0x8090 7.469 +#define GL_INDEX_ARRAY_POINTER 0x8091 7.470 +#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 7.471 +#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 7.472 + 7.473 +/* GetPName */ 7.474 +#define GL_CURRENT_COLOR 0x0B00 7.475 +#define GL_CURRENT_INDEX 0x0B01 7.476 +#define GL_CURRENT_NORMAL 0x0B02 7.477 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 7.478 +#define GL_CURRENT_RASTER_COLOR 0x0B04 7.479 +#define GL_CURRENT_RASTER_INDEX 0x0B05 7.480 +#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 7.481 +#define GL_CURRENT_RASTER_POSITION 0x0B07 7.482 +#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 7.483 +#define GL_CURRENT_RASTER_DISTANCE 0x0B09 7.484 +#define GL_POINT_SMOOTH 0x0B10 7.485 +#define GL_POINT_SIZE 0x0B11 7.486 +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 7.487 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 7.488 +#define GL_POINT_SIZE_RANGE GL_SMOOTH_POINT_SIZE_RANGE 7.489 +#define GL_POINT_SIZE_GRANULARITY GL_SMOOTH_POINT_SIZE_GRANULARITY 7.490 +#define GL_LINE_SMOOTH 0x0B20 7.491 +#define GL_LINE_WIDTH 0x0B21 7.492 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 7.493 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 7.494 +#define GL_LINE_WIDTH_RANGE GL_SMOOTH_LINE_WIDTH_RANGE 7.495 +#define GL_LINE_WIDTH_GRANULARITY GL_SMOOTH_LINE_WIDTH_GRANULARITY 7.496 +#define GL_LINE_STIPPLE 0x0B24 7.497 +#define GL_LINE_STIPPLE_PATTERN 0x0B25 7.498 +#define GL_LINE_STIPPLE_REPEAT 0x0B26 7.499 +#define GL_LIST_MODE 0x0B30 7.500 +#define GL_MAX_LIST_NESTING 0x0B31 7.501 +#define GL_LIST_BASE 0x0B32 7.502 +#define GL_LIST_INDEX 0x0B33 7.503 +#define GL_POLYGON_MODE 0x0B40 7.504 +#define GL_POLYGON_SMOOTH 0x0B41 7.505 +#define GL_POLYGON_STIPPLE 0x0B42 7.506 +#define GL_EDGE_FLAG 0x0B43 7.507 +#define GL_CULL_FACE 0x0B44 7.508 +#define GL_CULL_FACE_MODE 0x0B45 7.509 +#define GL_FRONT_FACE 0x0B46 7.510 +#define GL_LIGHTING 0x0B50 7.511 +#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 7.512 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 7.513 +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 7.514 +#define GL_SHADE_MODEL 0x0B54 7.515 +#define GL_COLOR_MATERIAL_FACE 0x0B55 7.516 +#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 7.517 +#define GL_COLOR_MATERIAL 0x0B57 7.518 +#define GL_FOG 0x0B60 7.519 +#define GL_FOG_INDEX 0x0B61 7.520 +#define GL_FOG_DENSITY 0x0B62 7.521 +#define GL_FOG_START 0x0B63 7.522 +#define GL_FOG_END 0x0B64 7.523 +#define GL_FOG_MODE 0x0B65 7.524 +#define GL_FOG_COLOR 0x0B66 7.525 +#define GL_DEPTH_RANGE 0x0B70 7.526 +#define GL_DEPTH_TEST 0x0B71 7.527 +#define GL_DEPTH_WRITEMASK 0x0B72 7.528 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 7.529 +#define GL_DEPTH_FUNC 0x0B74 7.530 +#define GL_ACCUM_CLEAR_VALUE 0x0B80 7.531 +#define GL_STENCIL_TEST 0x0B90 7.532 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 7.533 +#define GL_STENCIL_FUNC 0x0B92 7.534 +#define GL_STENCIL_VALUE_MASK 0x0B93 7.535 +#define GL_STENCIL_FAIL 0x0B94 7.536 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 7.537 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 7.538 +#define GL_STENCIL_REF 0x0B97 7.539 +#define GL_STENCIL_WRITEMASK 0x0B98 7.540 +#define GL_MATRIX_MODE 0x0BA0 7.541 +#define GL_NORMALIZE 0x0BA1 7.542 +#define GL_VIEWPORT 0x0BA2 7.543 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 7.544 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 7.545 +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 7.546 +#define GL_MODELVIEW_MATRIX 0x0BA6 7.547 +#define GL_PROJECTION_MATRIX 0x0BA7 7.548 +#define GL_TEXTURE_MATRIX 0x0BA8 7.549 +#define GL_ATTRIB_STACK_DEPTH 0x0BB0 7.550 +#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 7.551 +#define GL_ALPHA_TEST 0x0BC0 7.552 +#define GL_ALPHA_TEST_FUNC 0x0BC1 7.553 +#define GL_ALPHA_TEST_REF 0x0BC2 7.554 +#define GL_DITHER 0x0BD0 7.555 +#define GL_BLEND_DST 0x0BE0 7.556 +#define GL_BLEND_SRC 0x0BE1 7.557 +#define GL_BLEND 0x0BE2 7.558 +#define GL_LOGIC_OP_MODE 0x0BF0 7.559 +#define GL_INDEX_LOGIC_OP 0x0BF1 7.560 +#define GL_LOGIC_OP GL_INDEX_LOGIC_OP 7.561 +#define GL_COLOR_LOGIC_OP 0x0BF2 7.562 +#define GL_AUX_BUFFERS 0x0C00 7.563 +#define GL_DRAW_BUFFER 0x0C01 7.564 +#define GL_READ_BUFFER 0x0C02 7.565 +#define GL_SCISSOR_BOX 0x0C10 7.566 +#define GL_SCISSOR_TEST 0x0C11 7.567 +#define GL_INDEX_CLEAR_VALUE 0x0C20 7.568 +#define GL_INDEX_WRITEMASK 0x0C21 7.569 +#define GL_COLOR_CLEAR_VALUE 0x0C22 7.570 +#define GL_COLOR_WRITEMASK 0x0C23 7.571 +#define GL_INDEX_MODE 0x0C30 7.572 +#define GL_RGBA_MODE 0x0C31 7.573 +#define GL_DOUBLEBUFFER 0x0C32 7.574 +#define GL_STEREO 0x0C33 7.575 +#define GL_RENDER_MODE 0x0C40 7.576 +#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 7.577 +#define GL_POINT_SMOOTH_HINT 0x0C51 7.578 +#define GL_LINE_SMOOTH_HINT 0x0C52 7.579 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 7.580 +#define GL_FOG_HINT 0x0C54 7.581 +#define GL_TEXTURE_GEN_S 0x0C60 7.582 +#define GL_TEXTURE_GEN_T 0x0C61 7.583 +#define GL_TEXTURE_GEN_R 0x0C62 7.584 +#define GL_TEXTURE_GEN_Q 0x0C63 7.585 +#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 7.586 +#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 7.587 +#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 7.588 +#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 7.589 +#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 7.590 +#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 7.591 +#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 7.592 +#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 7.593 +#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 7.594 +#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 7.595 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 7.596 +#define GL_UNPACK_LSB_FIRST 0x0CF1 7.597 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 7.598 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 7.599 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 7.600 +#define GL_UNPACK_ALIGNMENT 0x0CF5 7.601 +#define GL_PACK_SWAP_BYTES 0x0D00 7.602 +#define GL_PACK_LSB_FIRST 0x0D01 7.603 +#define GL_PACK_ROW_LENGTH 0x0D02 7.604 +#define GL_PACK_SKIP_ROWS 0x0D03 7.605 +#define GL_PACK_SKIP_PIXELS 0x0D04 7.606 +#define GL_PACK_ALIGNMENT 0x0D05 7.607 +#define GL_MAP_COLOR 0x0D10 7.608 +#define GL_MAP_STENCIL 0x0D11 7.609 +#define GL_INDEX_SHIFT 0x0D12 7.610 +#define GL_INDEX_OFFSET 0x0D13 7.611 +#define GL_RED_SCALE 0x0D14 7.612 +#define GL_RED_BIAS 0x0D15 7.613 +#define GL_ZOOM_X 0x0D16 7.614 +#define GL_ZOOM_Y 0x0D17 7.615 +#define GL_GREEN_SCALE 0x0D18 7.616 +#define GL_GREEN_BIAS 0x0D19 7.617 +#define GL_BLUE_SCALE 0x0D1A 7.618 +#define GL_BLUE_BIAS 0x0D1B 7.619 +#define GL_ALPHA_SCALE 0x0D1C 7.620 +#define GL_ALPHA_BIAS 0x0D1D 7.621 +#define GL_DEPTH_SCALE 0x0D1E 7.622 +#define GL_DEPTH_BIAS 0x0D1F 7.623 +#define GL_MAX_EVAL_ORDER 0x0D30 7.624 +#define GL_MAX_LIGHTS 0x0D31 7.625 +#define GL_MAX_CLIP_PLANES 0x0D32 7.626 +#define GL_MAX_TEXTURE_SIZE 0x0D33 7.627 +#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 7.628 +#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 7.629 +#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 7.630 +#define GL_MAX_NAME_STACK_DEPTH 0x0D37 7.631 +#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 7.632 +#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 7.633 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A 7.634 +#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B 7.635 +#define GL_SUBPIXEL_BITS 0x0D50 7.636 +#define GL_INDEX_BITS 0x0D51 7.637 +#define GL_RED_BITS 0x0D52 7.638 +#define GL_GREEN_BITS 0x0D53 7.639 +#define GL_BLUE_BITS 0x0D54 7.640 +#define GL_ALPHA_BITS 0x0D55 7.641 +#define GL_DEPTH_BITS 0x0D56 7.642 +#define GL_STENCIL_BITS 0x0D57 7.643 +#define GL_ACCUM_RED_BITS 0x0D58 7.644 +#define GL_ACCUM_GREEN_BITS 0x0D59 7.645 +#define GL_ACCUM_BLUE_BITS 0x0D5A 7.646 +#define GL_ACCUM_ALPHA_BITS 0x0D5B 7.647 +#define GL_NAME_STACK_DEPTH 0x0D70 7.648 +#define GL_AUTO_NORMAL 0x0D80 7.649 +#define GL_MAP1_COLOR_4 0x0D90 7.650 +#define GL_MAP1_INDEX 0x0D91 7.651 +#define GL_MAP1_NORMAL 0x0D92 7.652 +#define GL_MAP1_TEXTURE_COORD_1 0x0D93 7.653 +#define GL_MAP1_TEXTURE_COORD_2 0x0D94 7.654 +#define GL_MAP1_TEXTURE_COORD_3 0x0D95 7.655 +#define GL_MAP1_TEXTURE_COORD_4 0x0D96 7.656 +#define GL_MAP1_VERTEX_3 0x0D97 7.657 +#define GL_MAP1_VERTEX_4 0x0D98 7.658 +#define GL_MAP2_COLOR_4 0x0DB0 7.659 +#define GL_MAP2_INDEX 0x0DB1 7.660 +#define GL_MAP2_NORMAL 0x0DB2 7.661 +#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 7.662 +#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 7.663 +#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 7.664 +#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 7.665 +#define GL_MAP2_VERTEX_3 0x0DB7 7.666 +#define GL_MAP2_VERTEX_4 0x0DB8 7.667 +#define GL_MAP1_GRID_DOMAIN 0x0DD0 7.668 +#define GL_MAP1_GRID_SEGMENTS 0x0DD1 7.669 +#define GL_MAP2_GRID_DOMAIN 0x0DD2 7.670 +#define GL_MAP2_GRID_SEGMENTS 0x0DD3 7.671 +#define GL_TEXTURE_1D 0x0DE0 7.672 +#define GL_TEXTURE_2D 0x0DE1 7.673 +#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 7.674 +#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 7.675 +#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 7.676 +#define GL_SELECTION_BUFFER_POINTER 0x0DF3 7.677 +#define GL_SELECTION_BUFFER_SIZE 0x0DF4 7.678 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 7.679 +#define GL_POLYGON_OFFSET_POINT 0x2A01 7.680 +#define GL_POLYGON_OFFSET_LINE 0x2A02 7.681 +#define GL_POLYGON_OFFSET_FILL 0x8037 7.682 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 7.683 +#define GL_TEXTURE_BINDING_1D 0x8068 7.684 +#define GL_TEXTURE_BINDING_2D 0x8069 7.685 +#define GL_TEXTURE_BINDING_3D 0x806A 7.686 +#define GL_VERTEX_ARRAY 0x8074 7.687 +#define GL_NORMAL_ARRAY 0x8075 7.688 +#define GL_COLOR_ARRAY 0x8076 7.689 +#define GL_INDEX_ARRAY 0x8077 7.690 +#define GL_TEXTURE_COORD_ARRAY 0x8078 7.691 +#define GL_EDGE_FLAG_ARRAY 0x8079 7.692 +#define GL_VERTEX_ARRAY_SIZE 0x807A 7.693 +#define GL_VERTEX_ARRAY_TYPE 0x807B 7.694 +#define GL_VERTEX_ARRAY_STRIDE 0x807C 7.695 +#define GL_NORMAL_ARRAY_TYPE 0x807E 7.696 +#define GL_NORMAL_ARRAY_STRIDE 0x807F 7.697 +#define GL_COLOR_ARRAY_SIZE 0x8081 7.698 +#define GL_COLOR_ARRAY_TYPE 0x8082 7.699 +#define GL_COLOR_ARRAY_STRIDE 0x8083 7.700 +#define GL_INDEX_ARRAY_TYPE 0x8085 7.701 +#define GL_INDEX_ARRAY_STRIDE 0x8086 7.702 +#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 7.703 +#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 7.704 +#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A 7.705 +#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C 7.706 +/* GL_VERTEX_ARRAY_COUNT_EXT */ 7.707 +/* GL_NORMAL_ARRAY_COUNT_EXT */ 7.708 +/* GL_COLOR_ARRAY_COUNT_EXT */ 7.709 +/* GL_INDEX_ARRAY_COUNT_EXT */ 7.710 +/* GL_TEXTURE_COORD_ARRAY_COUNT_EXT */ 7.711 +/* GL_EDGE_FLAG_ARRAY_COUNT_EXT */ 7.712 +/* GL_ARRAY_ELEMENT_LOCK_COUNT_EXT */ 7.713 +/* GL_ARRAY_ELEMENT_LOCK_FIRST_EXT */ 7.714 + 7.715 +/* GetTextureParameter */ 7.716 +/* GL_TEXTURE_MAG_FILTER */ 7.717 +/* GL_TEXTURE_MIN_FILTER */ 7.718 +/* GL_TEXTURE_WRAP_S */ 7.719 +/* GL_TEXTURE_WRAP_T */ 7.720 +#define GL_TEXTURE_WIDTH 0x1000 7.721 +#define GL_TEXTURE_HEIGHT 0x1001 7.722 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 7.723 +#define GL_TEXTURE_COMPONENTS GL_TEXTURE_INTERNAL_FORMAT 7.724 +#define GL_TEXTURE_BORDER_COLOR 0x1004 7.725 +#define GL_TEXTURE_BORDER 0x1005 7.726 +#define GL_TEXTURE_RED_SIZE 0x805C 7.727 +#define GL_TEXTURE_GREEN_SIZE 0x805D 7.728 +#define GL_TEXTURE_BLUE_SIZE 0x805E 7.729 +#define GL_TEXTURE_ALPHA_SIZE 0x805F 7.730 +#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 7.731 +#define GL_TEXTURE_INTENSITY_SIZE 0x8061 7.732 +#define GL_TEXTURE_PRIORITY 0x8066 7.733 +#define GL_TEXTURE_RESIDENT 0x8067 7.734 + 7.735 +/* HintMode */ 7.736 +#define GL_DONT_CARE 0x1100 7.737 +#define GL_FASTEST 0x1101 7.738 +#define GL_NICEST 0x1102 7.739 + 7.740 +/* HintTarget */ 7.741 +/* GL_PERSPECTIVE_CORRECTION_HINT */ 7.742 +/* GL_POINT_SMOOTH_HINT */ 7.743 +/* GL_LINE_SMOOTH_HINT */ 7.744 +/* GL_POLYGON_SMOOTH_HINT */ 7.745 +/* GL_FOG_HINT */ 7.746 + 7.747 +/* IndexMaterialParameterSGI */ 7.748 +/* GL_INDEX_OFFSET */ 7.749 + 7.750 +/* IndexPointerType */ 7.751 +/* GL_SHORT */ 7.752 +/* GL_INT */ 7.753 +/* GL_FLOAT */ 7.754 +/* GL_DOUBLE */ 7.755 + 7.756 +/* IndexFunctionSGI */ 7.757 +/* GL_NEVER */ 7.758 +/* GL_LESS */ 7.759 +/* GL_EQUAL */ 7.760 +/* GL_LEQUAL */ 7.761 +/* GL_GREATER */ 7.762 +/* GL_NOTEQUAL */ 7.763 +/* GL_GEQUAL */ 7.764 +/* GL_ALWAYS */ 7.765 + 7.766 +/* LightModelParameter */ 7.767 +/* GL_LIGHT_MODEL_AMBIENT */ 7.768 +/* GL_LIGHT_MODEL_LOCAL_VIEWER */ 7.769 +/* GL_LIGHT_MODEL_TWO_SIDE */ 7.770 + 7.771 +/* LightParameter */ 7.772 +#define GL_AMBIENT 0x1200 7.773 +#define GL_DIFFUSE 0x1201 7.774 +#define GL_SPECULAR 0x1202 7.775 +#define GL_POSITION 0x1203 7.776 +#define GL_SPOT_DIRECTION 0x1204 7.777 +#define GL_SPOT_EXPONENT 0x1205 7.778 +#define GL_SPOT_CUTOFF 0x1206 7.779 +#define GL_CONSTANT_ATTENUATION 0x1207 7.780 +#define GL_LINEAR_ATTENUATION 0x1208 7.781 +#define GL_QUADRATIC_ATTENUATION 0x1209 7.782 + 7.783 +/* ListMode */ 7.784 +#define GL_COMPILE 0x1300 7.785 +#define GL_COMPILE_AND_EXECUTE 0x1301 7.786 + 7.787 +/* DataType */ 7.788 +#define GL_BYTE 0x1400 7.789 +#define GL_UNSIGNED_BYTE 0x1401 7.790 +#define GL_SHORT 0x1402 7.791 +#define GL_UNSIGNED_SHORT 0x1403 7.792 +#define GL_INT 0x1404 7.793 +#define GL_UNSIGNED_INT 0x1405 7.794 +#define GL_FLOAT 0x1406 7.795 +#define GL_2_BYTES 0x1407 7.796 +#define GL_3_BYTES 0x1408 7.797 +#define GL_4_BYTES 0x1409 7.798 +#define GL_DOUBLE 0x140A 7.799 +#define GL_DOUBLE_EXT 0x140A 7.800 + 7.801 +/* ListNameType */ 7.802 +/* GL_BYTE */ 7.803 +/* GL_UNSIGNED_BYTE */ 7.804 +/* GL_SHORT */ 7.805 +/* GL_UNSIGNED_SHORT */ 7.806 +/* GL_INT */ 7.807 +/* GL_UNSIGNED_INT */ 7.808 +/* GL_FLOAT */ 7.809 +/* GL_2_BYTES */ 7.810 +/* GL_3_BYTES */ 7.811 +/* GL_4_BYTES */ 7.812 + 7.813 +/* LogicOp */ 7.814 +#define GL_CLEAR 0x1500 7.815 +#define GL_AND 0x1501 7.816 +#define GL_AND_REVERSE 0x1502 7.817 +#define GL_COPY 0x1503 7.818 +#define GL_AND_INVERTED 0x1504 7.819 +#define GL_NOOP 0x1505 7.820 +#define GL_XOR 0x1506 7.821 +#define GL_OR 0x1507 7.822 +#define GL_NOR 0x1508 7.823 +#define GL_EQUIV 0x1509 7.824 +#define GL_INVERT 0x150A 7.825 +#define GL_OR_REVERSE 0x150B 7.826 +#define GL_COPY_INVERTED 0x150C 7.827 +#define GL_OR_INVERTED 0x150D 7.828 +#define GL_NAND 0x150E 7.829 +#define GL_SET 0x150F 7.830 + 7.831 +/* MapTarget */ 7.832 +/* GL_MAP1_COLOR_4 */ 7.833 +/* GL_MAP1_INDEX */ 7.834 +/* GL_MAP1_NORMAL */ 7.835 +/* GL_MAP1_TEXTURE_COORD_1 */ 7.836 +/* GL_MAP1_TEXTURE_COORD_2 */ 7.837 +/* GL_MAP1_TEXTURE_COORD_3 */ 7.838 +/* GL_MAP1_TEXTURE_COORD_4 */ 7.839 +/* GL_MAP1_VERTEX_3 */ 7.840 +/* GL_MAP1_VERTEX_4 */ 7.841 +/* GL_MAP2_COLOR_4 */ 7.842 +/* GL_MAP2_INDEX */ 7.843 +/* GL_MAP2_NORMAL */ 7.844 +/* GL_MAP2_TEXTURE_COORD_1 */ 7.845 +/* GL_MAP2_TEXTURE_COORD_2 */ 7.846 +/* GL_MAP2_TEXTURE_COORD_3 */ 7.847 +/* GL_MAP2_TEXTURE_COORD_4 */ 7.848 +/* GL_MAP2_VERTEX_3 */ 7.849 +/* GL_MAP2_VERTEX_4 */ 7.850 + 7.851 +/* MaterialFace */ 7.852 +/* GL_FRONT */ 7.853 +/* GL_BACK */ 7.854 +/* GL_FRONT_AND_BACK */ 7.855 + 7.856 +/* MaterialParameter */ 7.857 +#define GL_EMISSION 0x1600 7.858 +#define GL_SHININESS 0x1601 7.859 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 7.860 +#define GL_COLOR_INDEXES 0x1603 7.861 +/* GL_AMBIENT */ 7.862 +/* GL_DIFFUSE */ 7.863 +/* GL_SPECULAR */ 7.864 + 7.865 +/* MatrixMode */ 7.866 +#define GL_MODELVIEW 0x1700 7.867 +#define GL_PROJECTION 0x1701 7.868 +#define GL_TEXTURE 0x1702 7.869 + 7.870 +/* MeshMode1 */ 7.871 +/* GL_POINT */ 7.872 +/* GL_LINE */ 7.873 + 7.874 +/* MeshMode2 */ 7.875 +/* GL_POINT */ 7.876 +/* GL_LINE */ 7.877 +/* GL_FILL */ 7.878 + 7.879 +/* NormalPointerType */ 7.880 +/* GL_BYTE */ 7.881 +/* GL_SHORT */ 7.882 +/* GL_INT */ 7.883 +/* GL_FLOAT */ 7.884 +/* GL_DOUBLE */ 7.885 + 7.886 +/* PixelCopyType */ 7.887 +#define GL_COLOR 0x1800 7.888 +#define GL_DEPTH 0x1801 7.889 +#define GL_STENCIL 0x1802 7.890 + 7.891 +/* PixelFormat */ 7.892 +#define GL_COLOR_INDEX 0x1900 7.893 +#define GL_STENCIL_INDEX 0x1901 7.894 +#define GL_DEPTH_COMPONENT 0x1902 7.895 +#define GL_RED 0x1903 7.896 +#define GL_GREEN 0x1904 7.897 +#define GL_BLUE 0x1905 7.898 +#define GL_ALPHA 0x1906 7.899 +#define GL_RGB 0x1907 7.900 +#define GL_RGBA 0x1908 7.901 +#define GL_LUMINANCE 0x1909 7.902 +#define GL_LUMINANCE_ALPHA 0x190A 7.903 +/* GL_ABGR_EXT */ 7.904 +/* GL_BGR_EXT */ 7.905 +/* GL_BGRA_EXT */ 7.906 + 7.907 +/* PixelMap */ 7.908 +/* GL_PIXEL_MAP_I_TO_I */ 7.909 +/* GL_PIXEL_MAP_S_TO_S */ 7.910 +/* GL_PIXEL_MAP_I_TO_R */ 7.911 +/* GL_PIXEL_MAP_I_TO_G */ 7.912 +/* GL_PIXEL_MAP_I_TO_B */ 7.913 +/* GL_PIXEL_MAP_I_TO_A */ 7.914 +/* GL_PIXEL_MAP_R_TO_R */ 7.915 +/* GL_PIXEL_MAP_G_TO_G */ 7.916 +/* GL_PIXEL_MAP_B_TO_B */ 7.917 +/* GL_PIXEL_MAP_A_TO_A */ 7.918 + 7.919 +/* PixelStoreParameter */ 7.920 +/* GL_UNPACK_SWAP_BYTES */ 7.921 +/* GL_UNPACK_LSB_FIRST */ 7.922 +/* GL_UNPACK_ROW_LENGTH */ 7.923 +/* GL_UNPACK_SKIP_ROWS */ 7.924 +/* GL_UNPACK_SKIP_PIXELS */ 7.925 +/* GL_UNPACK_ALIGNMENT */ 7.926 +/* GL_PACK_SWAP_BYTES */ 7.927 +/* GL_PACK_LSB_FIRST */ 7.928 +/* GL_PACK_ROW_LENGTH */ 7.929 +/* GL_PACK_SKIP_ROWS */ 7.930 +/* GL_PACK_SKIP_PIXELS */ 7.931 +/* GL_PACK_ALIGNMENT */ 7.932 + 7.933 +/* PixelTransferParameter */ 7.934 +/* GL_MAP_COLOR */ 7.935 +/* GL_MAP_STENCIL */ 7.936 +/* GL_INDEX_SHIFT */ 7.937 +/* GL_INDEX_OFFSET */ 7.938 +/* GL_RED_SCALE */ 7.939 +/* GL_RED_BIAS */ 7.940 +/* GL_GREEN_SCALE */ 7.941 +/* GL_GREEN_BIAS */ 7.942 +/* GL_BLUE_SCALE */ 7.943 +/* GL_BLUE_BIAS */ 7.944 +/* GL_ALPHA_SCALE */ 7.945 +/* GL_ALPHA_BIAS */ 7.946 +/* GL_DEPTH_SCALE */ 7.947 +/* GL_DEPTH_BIAS */ 7.948 + 7.949 +/* PixelType */ 7.950 +#define GL_BITMAP 0x1A00 7.951 +/* GL_BYTE */ 7.952 +/* GL_UNSIGNED_BYTE */ 7.953 +/* GL_SHORT */ 7.954 +/* GL_UNSIGNED_SHORT */ 7.955 +/* GL_INT */ 7.956 +/* GL_UNSIGNED_INT */ 7.957 +/* GL_FLOAT */ 7.958 +/* GL_UNSIGNED_BYTE_3_3_2_EXT */ 7.959 +/* GL_UNSIGNED_SHORT_4_4_4_4_EXT */ 7.960 +/* GL_UNSIGNED_SHORT_5_5_5_1_EXT */ 7.961 +/* GL_UNSIGNED_INT_8_8_8_8_EXT */ 7.962 +/* GL_UNSIGNED_INT_10_10_10_2_EXT */ 7.963 + 7.964 +/* PolygonMode */ 7.965 +#define GL_POINT 0x1B00 7.966 +#define GL_LINE 0x1B01 7.967 +#define GL_FILL 0x1B02 7.968 + 7.969 +/* ReadBufferMode */ 7.970 +/* GL_FRONT_LEFT */ 7.971 +/* GL_FRONT_RIGHT */ 7.972 +/* GL_BACK_LEFT */ 7.973 +/* GL_BACK_RIGHT */ 7.974 +/* GL_FRONT */ 7.975 +/* GL_BACK */ 7.976 +/* GL_LEFT */ 7.977 +/* GL_RIGHT */ 7.978 +/* GL_AUX0 */ 7.979 +/* GL_AUX1 */ 7.980 +/* GL_AUX2 */ 7.981 +/* GL_AUX3 */ 7.982 + 7.983 +/* RenderingMode */ 7.984 +#define GL_RENDER 0x1C00 7.985 +#define GL_FEEDBACK 0x1C01 7.986 +#define GL_SELECT 0x1C02 7.987 + 7.988 +/* ShadingModel */ 7.989 +#define GL_FLAT 0x1D00 7.990 +#define GL_SMOOTH 0x1D01 7.991 + 7.992 +/* StencilFunction */ 7.993 +/* GL_NEVER */ 7.994 +/* GL_LESS */ 7.995 +/* GL_EQUAL */ 7.996 +/* GL_LEQUAL */ 7.997 +/* GL_GREATER */ 7.998 +/* GL_NOTEQUAL */ 7.999 +/* GL_GEQUAL */ 7.1000 +/* GL_ALWAYS */ 7.1001 + 7.1002 +/* StencilOp */ 7.1003 +/* GL_ZERO */ 7.1004 +#define GL_KEEP 0x1E00 7.1005 +#define GL_REPLACE 0x1E01 7.1006 +#define GL_INCR 0x1E02 7.1007 +#define GL_DECR 0x1E03 7.1008 +/* GL_INVERT */ 7.1009 + 7.1010 +/* StringName */ 7.1011 +#define GL_VENDOR 0x1F00 7.1012 +#define GL_RENDERER 0x1F01 7.1013 +#define GL_VERSION 0x1F02 7.1014 +#define GL_EXTENSIONS 0x1F03 7.1015 + 7.1016 +/* TexCoordPointerType */ 7.1017 +/* GL_SHORT */ 7.1018 +/* GL_INT */ 7.1019 +/* GL_FLOAT */ 7.1020 +/* GL_DOUBLE */ 7.1021 + 7.1022 +/* TextureCoordName */ 7.1023 +#define GL_S 0x2000 7.1024 +#define GL_T 0x2001 7.1025 +#define GL_R 0x2002 7.1026 +#define GL_Q 0x2003 7.1027 + 7.1028 +/* TextureEnvMode */ 7.1029 +#define GL_MODULATE 0x2100 7.1030 +#define GL_DECAL 0x2101 7.1031 +/* GL_BLEND */ 7.1032 +/* GL_REPLACE */ 7.1033 +/* GL_ADD */ 7.1034 + 7.1035 +/* TextureEnvParameter */ 7.1036 +#define GL_TEXTURE_ENV_MODE 0x2200 7.1037 +#define GL_TEXTURE_ENV_COLOR 0x2201 7.1038 + 7.1039 +/* TextureEnvTarget */ 7.1040 +#define GL_TEXTURE_ENV 0x2300 7.1041 + 7.1042 +/* TextureGenMode */ 7.1043 +#define GL_EYE_LINEAR 0x2400 7.1044 +#define GL_OBJECT_LINEAR 0x2401 7.1045 +#define GL_SPHERE_MAP 0x2402 7.1046 + 7.1047 +/* TextureGenParameter */ 7.1048 +#define GL_TEXTURE_GEN_MODE 0x2500 7.1049 +#define GL_OBJECT_PLANE 0x2501 7.1050 +#define GL_EYE_PLANE 0x2502 7.1051 + 7.1052 +/* TextureMagFilter */ 7.1053 +#define GL_NEAREST 0x2600 7.1054 +#define GL_LINEAR 0x2601 7.1055 + 7.1056 +/* TextureMinFilter */ 7.1057 +/* GL_NEAREST */ 7.1058 +/* GL_LINEAR */ 7.1059 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 7.1060 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 7.1061 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 7.1062 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 7.1063 + 7.1064 +/* TextureParameterName */ 7.1065 +#define GL_TEXTURE_MAG_FILTER 0x2800 7.1066 +#define GL_TEXTURE_MIN_FILTER 0x2801 7.1067 +#define GL_TEXTURE_WRAP_S 0x2802 7.1068 +#define GL_TEXTURE_WRAP_T 0x2803 7.1069 +/* GL_TEXTURE_BORDER_COLOR */ 7.1070 +/* GL_TEXTURE_PRIORITY */ 7.1071 + 7.1072 +/* TextureTarget */ 7.1073 +/* GL_TEXTURE_1D */ 7.1074 +/* GL_TEXTURE_2D */ 7.1075 +#define GL_PROXY_TEXTURE_1D 0x8063 7.1076 +#define GL_PROXY_TEXTURE_2D 0x8064 7.1077 + 7.1078 +/* TextureWrapMode */ 7.1079 +#define GL_CLAMP 0x2900 7.1080 +#define GL_REPEAT 0x2901 7.1081 + 7.1082 +/* PixelInternalFormat */ 7.1083 +#define GL_R3_G3_B2 0x2A10 7.1084 +#define GL_ALPHA4 0x803B 7.1085 +#define GL_ALPHA8 0x803C 7.1086 +#define GL_ALPHA12 0x803D 7.1087 +#define GL_ALPHA16 0x803E 7.1088 +#define GL_LUMINANCE4 0x803F 7.1089 +#define GL_LUMINANCE8 0x8040 7.1090 +#define GL_LUMINANCE12 0x8041 7.1091 +#define GL_LUMINANCE16 0x8042 7.1092 +#define GL_LUMINANCE4_ALPHA4 0x8043 7.1093 +#define GL_LUMINANCE6_ALPHA2 0x8044 7.1094 +#define GL_LUMINANCE8_ALPHA8 0x8045 7.1095 +#define GL_LUMINANCE12_ALPHA4 0x8046 7.1096 +#define GL_LUMINANCE12_ALPHA12 0x8047 7.1097 +#define GL_LUMINANCE16_ALPHA16 0x8048 7.1098 +#define GL_INTENSITY 0x8049 7.1099 +#define GL_INTENSITY4 0x804A 7.1100 +#define GL_INTENSITY8 0x804B 7.1101 +#define GL_INTENSITY12 0x804C 7.1102 +#define GL_INTENSITY16 0x804D 7.1103 +#define GL_RGB4 0x804F 7.1104 +#define GL_RGB5 0x8050 7.1105 +#define GL_RGB8 0x8051 7.1106 +#define GL_RGB10 0x8052 7.1107 +#define GL_RGB12 0x8053 7.1108 +#define GL_RGB16 0x8054 7.1109 +#define GL_RGBA2 0x8055 7.1110 +#define GL_RGBA4 0x8056 7.1111 +#define GL_RGB5_A1 0x8057 7.1112 +#define GL_RGBA8 0x8058 7.1113 +#define GL_RGB10_A2 0x8059 7.1114 +#define GL_RGBA12 0x805A 7.1115 +#define GL_RGBA16 0x805B 7.1116 +/* GL_COLOR_INDEX1_EXT */ 7.1117 +/* GL_COLOR_INDEX2_EXT */ 7.1118 +/* GL_COLOR_INDEX4_EXT */ 7.1119 +/* GL_COLOR_INDEX8_EXT */ 7.1120 +/* GL_COLOR_INDEX12_EXT */ 7.1121 +/* GL_COLOR_INDEX16_EXT */ 7.1122 + 7.1123 +/* InterleavedArrayFormat */ 7.1124 +#define GL_V2F 0x2A20 7.1125 +#define GL_V3F 0x2A21 7.1126 +#define GL_C4UB_V2F 0x2A22 7.1127 +#define GL_C4UB_V3F 0x2A23 7.1128 +#define GL_C3F_V3F 0x2A24 7.1129 +#define GL_N3F_V3F 0x2A25 7.1130 +#define GL_C4F_N3F_V3F 0x2A26 7.1131 +#define GL_T2F_V3F 0x2A27 7.1132 +#define GL_T4F_V4F 0x2A28 7.1133 +#define GL_T2F_C4UB_V3F 0x2A29 7.1134 +#define GL_T2F_C3F_V3F 0x2A2A 7.1135 +#define GL_T2F_N3F_V3F 0x2A2B 7.1136 +#define GL_T2F_C4F_N3F_V3F 0x2A2C 7.1137 +#define GL_T4F_C4F_N3F_V4F 0x2A2D 7.1138 + 7.1139 +/* VertexPointerType */ 7.1140 +/* GL_SHORT */ 7.1141 +/* GL_INT */ 7.1142 +/* GL_FLOAT */ 7.1143 +/* GL_DOUBLE */ 7.1144 + 7.1145 +/* ClipPlaneName */ 7.1146 +#define GL_CLIP_PLANE0 0x3000 7.1147 +#define GL_CLIP_PLANE1 0x3001 7.1148 +#define GL_CLIP_PLANE2 0x3002 7.1149 +#define GL_CLIP_PLANE3 0x3003 7.1150 +#define GL_CLIP_PLANE4 0x3004 7.1151 +#define GL_CLIP_PLANE5 0x3005 7.1152 + 7.1153 +/* LightName */ 7.1154 +#define GL_LIGHT0 0x4000 7.1155 +#define GL_LIGHT1 0x4001 7.1156 +#define GL_LIGHT2 0x4002 7.1157 +#define GL_LIGHT3 0x4003 7.1158 +#define GL_LIGHT4 0x4004 7.1159 +#define GL_LIGHT5 0x4005 7.1160 +#define GL_LIGHT6 0x4006 7.1161 +#define GL_LIGHT7 0x4007 7.1162 + 7.1163 +/* EXT_abgr */ 7.1164 +#define GL_ABGR_EXT 0x8000 7.1165 + 7.1166 +/* EXT_blend_color */ 7.1167 +#define GL_CONSTANT_COLOR_EXT 0x8001 7.1168 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 7.1169 +#define GL_CONSTANT_ALPHA_EXT 0x8003 7.1170 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 7.1171 +#define GL_BLEND_COLOR_EXT 0x8005 7.1172 + 7.1173 +/* EXT_blend_minmax */ 7.1174 +#define GL_FUNC_ADD_EXT 0x8006 7.1175 +#define GL_MIN_EXT 0x8007 7.1176 +#define GL_MAX_EXT 0x8008 7.1177 +#define GL_BLEND_EQUATION_EXT 0x8009 7.1178 + 7.1179 +/* EXT_blend_subtract */ 7.1180 +#define GL_FUNC_SUBTRACT_EXT 0x800A 7.1181 +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B 7.1182 + 7.1183 +/* EXT_packed_pixels */ 7.1184 +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 7.1185 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 7.1186 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 7.1187 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 7.1188 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 7.1189 + 7.1190 +/* OpenGL12 */ 7.1191 +#define GL_PACK_SKIP_IMAGES 0x806B 7.1192 +#define GL_PACK_IMAGE_HEIGHT 0x806C 7.1193 +#define GL_UNPACK_SKIP_IMAGES 0x806D 7.1194 +#define GL_UNPACK_IMAGE_HEIGHT 0x806E 7.1195 +#define GL_TEXTURE_3D 0x806F 7.1196 +#define GL_PROXY_TEXTURE_3D 0x8070 7.1197 +#define GL_TEXTURE_DEPTH 0x8071 7.1198 +#define GL_TEXTURE_WRAP_R 0x8072 7.1199 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 7.1200 +#define GL_BGR 0x80E0 7.1201 +#define GL_BGRA 0x80E1 7.1202 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 7.1203 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 7.1204 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 7.1205 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 7.1206 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 7.1207 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 7.1208 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 7.1209 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 7.1210 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 7.1211 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 7.1212 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 7.1213 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 7.1214 +#define GL_RESCALE_NORMAL 0x803A 7.1215 +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 7.1216 +#define GL_SINGLE_COLOR 0x81F9 7.1217 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA 7.1218 +#define GL_CLAMP_TO_EDGE 0x812F 7.1219 +#define GL_TEXTURE_MIN_LOD 0x813A 7.1220 +#define GL_TEXTURE_MAX_LOD 0x813B 7.1221 +#define GL_TEXTURE_BASE_LEVEL 0x813C 7.1222 +#define GL_TEXTURE_MAX_LEVEL 0x813D 7.1223 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 7.1224 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 7.1225 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D 7.1226 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E 7.1227 + 7.1228 +/* ARB_imaging */ 7.1229 +#define GL_CONSTANT_COLOR 0x8001 7.1230 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 7.1231 +#define GL_CONSTANT_ALPHA 0x8003 7.1232 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 7.1233 +#define GL_BLEND_COLOR 0x8005 7.1234 +#define GL_FUNC_ADD 0x8006 7.1235 +#define GL_MIN 0x8007 7.1236 +#define GL_MAX 0x8008 7.1237 +#define GL_BLEND_EQUATION 0x8009 7.1238 +#define GL_FUNC_SUBTRACT 0x800A 7.1239 +#define GL_FUNC_REVERSE_SUBTRACT 0x800B 7.1240 +#define GL_COLOR_MATRIX 0x80B1 7.1241 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 7.1242 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 7.1243 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 7.1244 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 7.1245 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 7.1246 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 7.1247 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 7.1248 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 7.1249 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA 7.1250 +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB 7.1251 +#define GL_COLOR_TABLE 0x80D0 7.1252 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 7.1253 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 7.1254 +#define GL_PROXY_COLOR_TABLE 0x80D3 7.1255 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 7.1256 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 7.1257 +#define GL_COLOR_TABLE_SCALE 0x80D6 7.1258 +#define GL_COLOR_TABLE_BIAS 0x80D7 7.1259 +#define GL_COLOR_TABLE_FORMAT 0x80D8 7.1260 +#define GL_COLOR_TABLE_WIDTH 0x80D9 7.1261 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA 7.1262 +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB 7.1263 +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC 7.1264 +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD 7.1265 +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE 7.1266 +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF 7.1267 +#define GL_CONVOLUTION_1D 0x8010 7.1268 +#define GL_CONVOLUTION_2D 0x8011 7.1269 +#define GL_SEPARABLE_2D 0x8012 7.1270 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 7.1271 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 7.1272 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 7.1273 +#define GL_REDUCE 0x8016 7.1274 +#define GL_CONVOLUTION_FORMAT 0x8017 7.1275 +#define GL_CONVOLUTION_WIDTH 0x8018 7.1276 +#define GL_CONVOLUTION_HEIGHT 0x8019 7.1277 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A 7.1278 +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B 7.1279 +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C 7.1280 +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D 7.1281 +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E 7.1282 +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F 7.1283 +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 7.1284 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 7.1285 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 7.1286 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 7.1287 +#define GL_IGNORE_BORDER 0x8150 7.1288 +#define GL_CONSTANT_BORDER 0x8151 7.1289 +#define GL_REPLICATE_BORDER 0x8153 7.1290 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 7.1291 +#define GL_HISTOGRAM 0x8024 7.1292 +#define GL_PROXY_HISTOGRAM 0x8025 7.1293 +#define GL_HISTOGRAM_WIDTH 0x8026 7.1294 +#define GL_HISTOGRAM_FORMAT 0x8027 7.1295 +#define GL_HISTOGRAM_RED_SIZE 0x8028 7.1296 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 7.1297 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A 7.1298 +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B 7.1299 +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C 7.1300 +#define GL_HISTOGRAM_SINK 0x802D 7.1301 +#define GL_MINMAX 0x802E 7.1302 +#define GL_MINMAX_FORMAT 0x802F 7.1303 +#define GL_MINMAX_SINK 0x8030 7.1304 + 7.1305 +/* OpenGL13 */ 7.1306 +#define GL_ACTIVE_TEXTURE 0x84E0 7.1307 +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 7.1308 +#define GL_MAX_TEXTURE_UNITS 0x84E2 7.1309 +#define GL_TEXTURE0 0x84C0 7.1310 +#define GL_TEXTURE1 0x84C1 7.1311 +#define GL_TEXTURE2 0x84C2 7.1312 +#define GL_TEXTURE3 0x84C3 7.1313 +#define GL_TEXTURE4 0x84C4 7.1314 +#define GL_TEXTURE5 0x84C5 7.1315 +#define GL_TEXTURE6 0x84C6 7.1316 +#define GL_TEXTURE7 0x84C7 7.1317 +#define GL_TEXTURE8 0x84C8 7.1318 +#define GL_TEXTURE9 0x84C9 7.1319 +#define GL_TEXTURE10 0x84CA 7.1320 +#define GL_TEXTURE11 0x84CB 7.1321 +#define GL_TEXTURE12 0x84CC 7.1322 +#define GL_TEXTURE13 0x84CD 7.1323 +#define GL_TEXTURE14 0x84CE 7.1324 +#define GL_TEXTURE15 0x84CF 7.1325 +#define GL_TEXTURE16 0x84D0 7.1326 +#define GL_TEXTURE17 0x84D1 7.1327 +#define GL_TEXTURE18 0x84D2 7.1328 +#define GL_TEXTURE19 0x84D3 7.1329 +#define GL_TEXTURE20 0x84D4 7.1330 +#define GL_TEXTURE21 0x84D5 7.1331 +#define GL_TEXTURE22 0x84D6 7.1332 +#define GL_TEXTURE23 0x84D7 7.1333 +#define GL_TEXTURE24 0x84D8 7.1334 +#define GL_TEXTURE25 0x84D9 7.1335 +#define GL_TEXTURE26 0x84DA 7.1336 +#define GL_TEXTURE27 0x84DB 7.1337 +#define GL_TEXTURE28 0x84DC 7.1338 +#define GL_TEXTURE29 0x84DD 7.1339 +#define GL_TEXTURE30 0x84DE 7.1340 +#define GL_TEXTURE31 0x84DF 7.1341 +#define GL_NORMAL_MAP 0x8511 7.1342 +#define GL_REFLECTION_MAP 0x8512 7.1343 +#define GL_TEXTURE_CUBE_MAP 0x8513 7.1344 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 7.1345 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 7.1346 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 7.1347 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 7.1348 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 7.1349 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 7.1350 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A 7.1351 +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B 7.1352 +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C 7.1353 +#define GL_COMBINE 0x8570 7.1354 +#define GL_COMBINE_RGB 0x8571 7.1355 +#define GL_COMBINE_ALPHA 0x8572 7.1356 +#define GL_RGB_SCALE 0x8573 7.1357 +#define GL_ADD_SIGNED 0x8574 7.1358 +#define GL_INTERPOLATE 0x8575 7.1359 +#define GL_CONSTANT 0x8576 7.1360 +#define GL_PRIMARY_COLOR 0x8577 7.1361 +#define GL_PREVIOUS 0x8578 7.1362 +#define GL_SOURCE0_RGB 0x8580 7.1363 +#define GL_SOURCE1_RGB 0x8581 7.1364 +#define GL_SOURCE2_RGB 0x8582 7.1365 +#define GL_SOURCE0_ALPHA 0x8588 7.1366 +#define GL_SOURCE1_ALPHA 0x8589 7.1367 +#define GL_SOURCE2_ALPHA 0x858A 7.1368 +#define GL_OPERAND0_RGB 0x8590 7.1369 +#define GL_OPERAND1_RGB 0x8591 7.1370 +#define GL_OPERAND2_RGB 0x8592 7.1371 +#define GL_OPERAND0_ALPHA 0x8598 7.1372 +#define GL_OPERAND1_ALPHA 0x8599 7.1373 +#define GL_OPERAND2_ALPHA 0x859A 7.1374 +#define GL_SUBTRACT 0x84E7 7.1375 +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 7.1376 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 7.1377 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 7.1378 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 7.1379 +#define GL_COMPRESSED_ALPHA 0x84E9 7.1380 +#define GL_COMPRESSED_LUMINANCE 0x84EA 7.1381 +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB 7.1382 +#define GL_COMPRESSED_INTENSITY 0x84EC 7.1383 +#define GL_COMPRESSED_RGB 0x84ED 7.1384 +#define GL_COMPRESSED_RGBA 0x84EE 7.1385 +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF 7.1386 +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 7.1387 +#define GL_TEXTURE_COMPRESSED 0x86A1 7.1388 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 7.1389 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 7.1390 +#define GL_DOT3_RGB 0x86AE 7.1391 +#define GL_DOT3_RGBA 0x86AF 7.1392 +#define GL_CLAMP_TO_BORDER 0x812D 7.1393 +#define GL_MULTISAMPLE 0x809D 7.1394 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E 7.1395 +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F 7.1396 +#define GL_SAMPLE_COVERAGE 0x80A0 7.1397 +#define GL_SAMPLE_BUFFERS 0x80A8 7.1398 +#define GL_SAMPLES 0x80A9 7.1399 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA 7.1400 +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB 7.1401 +#define GL_MULTISAMPLE_BIT 0x20000000 7.1402 + 7.1403 +/* EXT_vertex_array */ 7.1404 +#define GL_VERTEX_ARRAY_EXT 0x8074 7.1405 +#define GL_NORMAL_ARRAY_EXT 0x8075 7.1406 +#define GL_COLOR_ARRAY_EXT 0x8076 7.1407 +#define GL_INDEX_ARRAY_EXT 0x8077 7.1408 +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 7.1409 +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 7.1410 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A 7.1411 +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B 7.1412 +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C 7.1413 +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D 7.1414 +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E 7.1415 +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F 7.1416 +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 7.1417 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 7.1418 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 7.1419 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 7.1420 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 7.1421 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 7.1422 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 7.1423 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 7.1424 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 7.1425 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 7.1426 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A 7.1427 +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B 7.1428 +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C 7.1429 +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D 7.1430 +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E 7.1431 +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F 7.1432 +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 7.1433 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 7.1434 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 7.1435 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 7.1436 + 7.1437 +/* EXT_texture3D */ 7.1438 +#define GL_PACK_SKIP_IMAGES 0x806B 7.1439 +#define GL_PACK_SKIP_IMAGES_EXT 0x806B 7.1440 +#define GL_PACK_IMAGE_HEIGHT 0x806C 7.1441 +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C 7.1442 +#define GL_UNPACK_SKIP_IMAGES 0x806D 7.1443 +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D 7.1444 +#define GL_UNPACK_IMAGE_HEIGHT 0x806E 7.1445 +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E 7.1446 +#define GL_TEXTURE_3D 0x806F 7.1447 +#define GL_TEXTURE_3D_EXT 0x806F 7.1448 +#define GL_PROXY_TEXTURE_3D 0x8070 7.1449 +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 7.1450 +#define GL_TEXTURE_DEPTH 0x8071 7.1451 +#define GL_TEXTURE_DEPTH_EXT 0x8071 7.1452 +#define GL_TEXTURE_WRAP_R 0x8072 7.1453 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 7.1454 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 7.1455 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 7.1456 + 7.1457 +/* EXT_color_table */ 7.1458 +#define GL_TABLE_TOO_LARGE_EXT 0x8031 7.1459 +#define GL_COLOR_TABLE_FORMAT_EXT 0x80D8 7.1460 +#define GL_COLOR_TABLE_WIDTH_EXT 0x80D9 7.1461 +#define GL_COLOR_TABLE_RED_SIZE_EXT 0x80DA 7.1462 +#define GL_COLOR_TABLE_GREEN_SIZE_EXT 0x80DB 7.1463 +#define GL_COLOR_TABLE_BLUE_SIZE_EXT 0x80DC 7.1464 +#define GL_COLOR_TABLE_ALPHA_SIZE_EXT 0x80DD 7.1465 +#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE 7.1466 +#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF 7.1467 + 7.1468 +/* EXT_bgra */ 7.1469 +#define GL_BGR_EXT 0x80E0 7.1470 +#define GL_BGRA_EXT 0x80E1 7.1471 + 7.1472 +/* SGIS_texture_lod */ 7.1473 +#define GL_TEXTURE_MIN_LOD_SGIS 0x813A 7.1474 +#define GL_TEXTURE_MAX_LOD_SGIS 0x813B 7.1475 +#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C 7.1476 +#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D 7.1477 + 7.1478 +/* EXT_paletted_texture */ 7.1479 +#define GL_COLOR_INDEX1_EXT 0x80E2 7.1480 +#define GL_COLOR_INDEX2_EXT 0x80E3 7.1481 +#define GL_COLOR_INDEX4_EXT 0x80E4 7.1482 +#define GL_COLOR_INDEX8_EXT 0x80E5 7.1483 +#define GL_COLOR_INDEX12_EXT 0x80E6 7.1484 +#define GL_COLOR_INDEX16_EXT 0x80E7 7.1485 +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED 7.1486 + 7.1487 +/* EXT_clip_volume_hint */ 7.1488 +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 7.1489 + 7.1490 +/* EXT_point_parameters */ 7.1491 +#define GL_POINT_SIZE_MIN_EXT 0x8126 7.1492 +#define GL_POINT_SIZE_MAX_EXT 0x8127 7.1493 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 7.1494 +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 7.1495 + 7.1496 +/* EXT_compiled_vertex_array */ 7.1497 +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 7.1498 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 7.1499 + 7.1500 +/* EXT_shared_texture_palette */ 7.1501 +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB 7.1502 + 7.1503 +/* SGIS_multitexture */ 7.1504 +#define GL_SELECTED_TEXTURE_SGIS 0x835C 7.1505 +#define GL_MAX_TEXTURES_SGIS 0x835D 7.1506 +#define GL_TEXTURE0_SGIS 0x835E 7.1507 +#define GL_TEXTURE1_SGIS 0x835F 7.1508 +#define GL_TEXTURE2_SGIS 0x8360 7.1509 +#define GL_TEXTURE3_SGIS 0x8361 7.1510 + 7.1511 +/* ARB_multitexture */ 7.1512 +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 7.1513 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 7.1514 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 7.1515 +#define GL_TEXTURE0_ARB 0x84C0 7.1516 +#define GL_TEXTURE1_ARB 0x84C1 7.1517 +#define GL_TEXTURE2_ARB 0x84C2 7.1518 +#define GL_TEXTURE3_ARB 0x84C3 7.1519 +#define GL_TEXTURE4_ARB 0x84C4 7.1520 +#define GL_TEXTURE5_ARB 0x84C5 7.1521 +#define GL_TEXTURE6_ARB 0x84C6 7.1522 +#define GL_TEXTURE7_ARB 0x84C7 7.1523 +#define GL_TEXTURE8_ARB 0x84C8 7.1524 +#define GL_TEXTURE9_ARB 0x84C9 7.1525 +#define GL_TEXTURE10_ARB 0x84CA 7.1526 +#define GL_TEXTURE11_ARB 0x84CB 7.1527 +#define GL_TEXTURE12_ARB 0x84CC 7.1528 +#define GL_TEXTURE13_ARB 0x84CD 7.1529 +#define GL_TEXTURE14_ARB 0x84CE 7.1530 +#define GL_TEXTURE15_ARB 0x84CF 7.1531 +#define GL_TEXTURE16_ARB 0x84D0 7.1532 +#define GL_TEXTURE17_ARB 0x84D1 7.1533 +#define GL_TEXTURE18_ARB 0x84D2 7.1534 +#define GL_TEXTURE19_ARB 0x84D3 7.1535 +#define GL_TEXTURE20_ARB 0x84D4 7.1536 +#define GL_TEXTURE21_ARB 0x84D5 7.1537 +#define GL_TEXTURE22_ARB 0x84D6 7.1538 +#define GL_TEXTURE23_ARB 0x84D7 7.1539 +#define GL_TEXTURE24_ARB 0x84D8 7.1540 +#define GL_TEXTURE25_ARB 0x84D9 7.1541 +#define GL_TEXTURE26_ARB 0x84DA 7.1542 +#define GL_TEXTURE27_ARB 0x84DB 7.1543 +#define GL_TEXTURE28_ARB 0x84DC 7.1544 +#define GL_TEXTURE29_ARB 0x84DD 7.1545 +#define GL_TEXTURE30_ARB 0x84DE 7.1546 +#define GL_TEXTURE31_ARB 0x84DF 7.1547 + 7.1548 +/* EXT_fog_coord */ 7.1549 +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 7.1550 +#define GL_FOG_COORDINATE_EXT 0x8451 7.1551 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 7.1552 +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 7.1553 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 7.1554 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 7.1555 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 7.1556 +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 7.1557 + 7.1558 +/* EXT_secondary_color */ 7.1559 +#define GL_COLOR_SUM_EXT 0x8458 7.1560 +#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 7.1561 +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A 7.1562 +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B 7.1563 +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C 7.1564 +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D 7.1565 +#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E 7.1566 + 7.1567 +/* EXT_separate_specular_color */ 7.1568 +#define GL_SINGLE_COLOR_EXT 0x81F9 7.1569 +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA 7.1570 +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 7.1571 + 7.1572 +/* EXT_rescale_normal */ 7.1573 +#define GL_RESCALE_NORMAL_EXT 0x803A 7.1574 + 7.1575 +/* EXT_stencil_wrap */ 7.1576 +#define GL_INCR_WRAP_EXT 0x8507 7.1577 +#define GL_DECR_WRAP_EXT 0x8508 7.1578 + 7.1579 +/* EXT_vertex_weighting */ 7.1580 +#define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX 7.1581 +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 7.1582 +#define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH 7.1583 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 7.1584 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 7.1585 +#define GL_MODELVIEW0_EXT GL_MODELVIEW 7.1586 +#define GL_MODELVIEW1_EXT 0x850A 7.1587 +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B 7.1588 +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C 7.1589 +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D 7.1590 +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E 7.1591 +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F 7.1592 +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 7.1593 + 7.1594 +/* NV_texgen_reflection */ 7.1595 +#define GL_NORMAL_MAP_NV 0x8511 7.1596 +#define GL_REFLECTION_MAP_NV 0x8512 7.1597 + 7.1598 +/* EXT_texture_cube_map */ 7.1599 +#define GL_NORMAL_MAP_EXT 0x8511 7.1600 +#define GL_REFLECTION_MAP_EXT 0x8512 7.1601 +#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 7.1602 +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 7.1603 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 7.1604 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 7.1605 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 7.1606 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 7.1607 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 7.1608 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A 7.1609 +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B 7.1610 +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C 7.1611 + 7.1612 +/* ARB_texture_cube_map */ 7.1613 +#define GL_NORMAL_MAP_ARB 0x8511 7.1614 +#define GL_REFLECTION_MAP_ARB 0x8512 7.1615 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 7.1616 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 7.1617 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 7.1618 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 7.1619 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 7.1620 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 7.1621 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 7.1622 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A 7.1623 +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B 7.1624 +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C 7.1625 + 7.1626 +/* NV_vertex_array_range */ 7.1627 +#define GL_VERTEX_ARRAY_RANGE_NV 0x851D 7.1628 +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E 7.1629 +#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F 7.1630 +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 7.1631 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 7.1632 + 7.1633 +/* NV_vertex_array_range2 */ 7.1634 +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 7.1635 + 7.1636 +/* NV_register_combiners */ 7.1637 +#define GL_REGISTER_COMBINERS_NV 0x8522 7.1638 +#define GL_COMBINER0_NV 0x8550 7.1639 +#define GL_COMBINER1_NV 0x8551 7.1640 +#define GL_COMBINER2_NV 0x8552 7.1641 +#define GL_COMBINER3_NV 0x8553 7.1642 +#define GL_COMBINER4_NV 0x8554 7.1643 +#define GL_COMBINER5_NV 0x8555 7.1644 +#define GL_COMBINER6_NV 0x8556 7.1645 +#define GL_COMBINER7_NV 0x8557 7.1646 +#define GL_VARIABLE_A_NV 0x8523 7.1647 +#define GL_VARIABLE_B_NV 0x8524 7.1648 +#define GL_VARIABLE_C_NV 0x8525 7.1649 +#define GL_VARIABLE_D_NV 0x8526 7.1650 +#define GL_VARIABLE_E_NV 0x8527 7.1651 +#define GL_VARIABLE_F_NV 0x8528 7.1652 +#define GL_VARIABLE_G_NV 0x8529 7.1653 +/* GL_ZERO */ 7.1654 +#define GL_CONSTANT_COLOR0_NV 0x852A 7.1655 +#define GL_CONSTANT_COLOR1_NV 0x852B 7.1656 +/* GL_FOG */ 7.1657 +#define GL_PRIMARY_COLOR_NV 0x852C 7.1658 +#define GL_SECONDARY_COLOR_NV 0x852D 7.1659 +#define GL_SPARE0_NV 0x852E 7.1660 +#define GL_SPARE1_NV 0x852F 7.1661 +/* GL_TEXTURE0_ARB */ 7.1662 +/* GL_TEXTURE1_ARB */ 7.1663 +#define GL_UNSIGNED_IDENTITY_NV 0x8536 7.1664 +#define GL_UNSIGNED_INVERT_NV 0x8537 7.1665 +#define GL_EXPAND_NORMAL_NV 0x8538 7.1666 +#define GL_EXPAND_NEGATE_NV 0x8539 7.1667 +#define GL_HALF_BIAS_NORMAL_NV 0x853A 7.1668 +#define GL_HALF_BIAS_NEGATE_NV 0x853B 7.1669 +#define GL_SIGNED_IDENTITY_NV 0x853C 7.1670 +#define GL_SIGNED_NEGATE_NV 0x853D 7.1671 +#define GL_E_TIMES_F_NV 0x8531 7.1672 +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 7.1673 +/* GL_NONE */ 7.1674 +#define GL_SCALE_BY_TWO_NV 0x853E 7.1675 +#define GL_SCALE_BY_FOUR_NV 0x853F 7.1676 +#define GL_SCALE_BY_ONE_HALF_NV 0x8540 7.1677 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 7.1678 +#define GL_DISCARD_NV 0x8530 7.1679 +#define GL_COMBINER_INPUT_NV 0x8542 7.1680 +#define GL_COMBINER_MAPPING_NV 0x8543 7.1681 +#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 7.1682 +#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 7.1683 +#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 7.1684 +#define GL_COMBINER_MUX_SUM_NV 0x8547 7.1685 +#define GL_COMBINER_SCALE_NV 0x8548 7.1686 +#define GL_COMBINER_BIAS_NV 0x8549 7.1687 +#define GL_COMBINER_AB_OUTPUT_NV 0x854A 7.1688 +#define GL_COMBINER_CD_OUTPUT_NV 0x854B 7.1689 +#define GL_COMBINER_SUM_OUTPUT_NV 0x854C 7.1690 +#define GL_MAX_GENERAL_COMBINERS_NV 0x854D 7.1691 +#define GL_NUM_GENERAL_COMBINERS_NV 0x854E 7.1692 +#define GL_COLOR_SUM_CLAMP_NV 0x854F 7.1693 + 7.1694 +/* NV_fog_distance */ 7.1695 +#define GL_FOG_DISTANCE_MODE_NV 0x855A 7.1696 +#define GL_EYE_RADIAL_NV 0x855B 7.1697 +/* GL_EYE_PLANE */ 7.1698 +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C 7.1699 + 7.1700 +/* NV_fragment_program */ 7.1701 +#define GL_FRAGMENT_PROGRAM_NV 0x8870 7.1702 +#define GL_MAX_TEXTURE_COORDS_NV 0x8871 7.1703 +#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 7.1704 +#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 7.1705 +#define GL_PROGRAM_ERROR_STRING_NV 0x8874 7.1706 +#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 7.1707 + 7.1708 +/* NV_light_max_exponent */ 7.1709 +#define GL_MAX_SHININESS_NV 0x8504 7.1710 +#define GL_MAX_SPOT_EXPONENT_NV 0x8505 7.1711 + 7.1712 +/* ARB_texture_env_combine */ 7.1713 +#define GL_COMBINE_ARB 0x8570 7.1714 +#define GL_COMBINE_RGB_ARB 0x8571 7.1715 +#define GL_COMBINE_ALPHA_ARB 0x8572 7.1716 +#define GL_RGB_SCALE_ARB 0x8573 7.1717 +#define GL_ADD_SIGNED_ARB 0x8574 7.1718 +#define GL_INTERPOLATE_ARB 0x8575 7.1719 +#define GL_CONSTANT_ARB 0x8576 7.1720 +#define GL_PRIMARY_COLOR_ARB 0x8577 7.1721 +#define GL_PREVIOUS_ARB 0x8578 7.1722 +#define GL_SOURCE0_RGB_ARB 0x8580 7.1723 +#define GL_SOURCE1_RGB_ARB 0x8581 7.1724 +#define GL_SOURCE2_RGB_ARB 0x8582 7.1725 +#define GL_SOURCE0_ALPHA_ARB 0x8588 7.1726 +#define GL_SOURCE1_ALPHA_ARB 0x8589 7.1727 +#define GL_SOURCE2_ALPHA_ARB 0x858A 7.1728 +#define GL_OPERAND0_RGB_ARB 0x8590 7.1729 +#define GL_OPERAND1_RGB_ARB 0x8591 7.1730 +#define GL_OPERAND2_RGB_ARB 0x8592 7.1731 +#define GL_OPERAND0_ALPHA_ARB 0x8598 7.1732 +#define GL_OPERAND1_ALPHA_ARB 0x8599 7.1733 +#define GL_OPERAND2_ALPHA_ARB 0x859A 7.1734 +#define GL_SUBTRACT_ARB 0x84E7 7.1735 + 7.1736 +/* EXT_texture_env_combine */ 7.1737 +#define GL_COMBINE_EXT 0x8570 7.1738 +#define GL_COMBINE_RGB_EXT 0x8571 7.1739 +#define GL_COMBINE_ALPHA_EXT 0x8572 7.1740 +#define GL_RGB_SCALE_EXT 0x8573 7.1741 +#define GL_ADD_SIGNED_EXT 0x8574 7.1742 +#define GL_INTERPOLATE_EXT 0x8575 7.1743 +#define GL_CONSTANT_EXT 0x8576 7.1744 +#define GL_PRIMARY_COLOR_EXT 0x8577 7.1745 +#define GL_PREVIOUS_EXT 0x8578 7.1746 +#define GL_SOURCE0_RGB_EXT 0x8580 7.1747 +#define GL_SOURCE1_RGB_EXT 0x8581 7.1748 +#define GL_SOURCE2_RGB_EXT 0x8582 7.1749 +#define GL_SOURCE0_ALPHA_EXT 0x8588 7.1750 +#define GL_SOURCE1_ALPHA_EXT 0x8589 7.1751 +#define GL_SOURCE2_ALPHA_EXT 0x858A 7.1752 +#define GL_OPERAND0_RGB_EXT 0x8590 7.1753 +#define GL_OPERAND1_RGB_EXT 0x8591 7.1754 +#define GL_OPERAND2_RGB_EXT 0x8592 7.1755 +#define GL_OPERAND0_ALPHA_EXT 0x8598 7.1756 +#define GL_OPERAND1_ALPHA_EXT 0x8599 7.1757 +#define GL_OPERAND2_ALPHA_EXT 0x859A 7.1758 + 7.1759 +/* NV_texture_env_combine4 */ 7.1760 +#define GL_COMBINE4_NV 0x8503 7.1761 +#define GL_SOURCE3_RGB_NV 0x8583 7.1762 +#define GL_SOURCE3_ALPHA_NV 0x858B 7.1763 +#define GL_OPERAND3_RGB_NV 0x8593 7.1764 +#define GL_OPERAND3_ALPHA_NV 0x859B 7.1765 + 7.1766 +/* EXT_texture_filter_anisotropic */ 7.1767 +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE 7.1768 +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF 7.1769 + 7.1770 +/* EXT_texture_lod_bias */ 7.1771 +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD 7.1772 +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 7.1773 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 7.1774 + 7.1775 +/* EXT_texture_edge_clamp */ 7.1776 +#define GL_CLAMP_TO_EDGE_EXT 0x812F 7.1777 + 7.1778 +/* S3_s3tc */ 7.1779 +#define GL_RGB_S3TC 0x83A0 7.1780 +#define GL_RGB4_S3TC 0x83A1 7.1781 +#define GL_RGBA_S3TC 0x83A2 7.1782 +#define GL_RGBA4_S3TC 0x83A3 7.1783 +#define GL_RGBA_DXT5_S3TC 0x83A4 7.1784 +#define GL_RGBA4_DXT5_S3TC 0x83A5 7.1785 + 7.1786 +/* ARB_transpose_matrix */ 7.1787 +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 7.1788 +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 7.1789 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 7.1790 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 7.1791 + 7.1792 +/* ARB_texture_compression */ 7.1793 +#define GL_COMPRESSED_ALPHA_ARB 0x84E9 7.1794 +#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA 7.1795 +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB 7.1796 +#define GL_COMPRESSED_INTENSITY_ARB 0x84EC 7.1797 +#define GL_COMPRESSED_RGB_ARB 0x84ED 7.1798 +#define GL_COMPRESSED_RGBA_ARB 0x84EE 7.1799 +#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF 7.1800 +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 7.1801 +#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 7.1802 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 7.1803 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 7.1804 + 7.1805 +/* EXT_texture_compression_s3tc */ 7.1806 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 7.1807 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 7.1808 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 7.1809 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 7.1810 + 7.1811 +/* NV_fence */ 7.1812 +#define GL_ALL_COMPLETED_NV 0x84F2 7.1813 +#define GL_FENCE_STATUS_NV 0x84F3 7.1814 +#define GL_FENCE_CONDITION_NV 0x84F4 7.1815 + 7.1816 +/* NV_mac_get_proc_address */ 7.1817 +#define GL_ALL_EXTENSIONS_NV 0x84FB 7.1818 +#define GL_MAC_GET_PROC_ADDRESS_NV 0x84FC 7.1819 + 7.1820 +/* NV_vertex_program */ 7.1821 +#define GL_VERTEX_PROGRAM_NV 0x8620 7.1822 +#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 7.1823 +#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 7.1824 +#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 7.1825 +#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 7.1826 +#define GL_CURRENT_ATTRIB_NV 0x8626 7.1827 +#define GL_PROGRAM_LENGTH_NV 0x8627 7.1828 +#define GL_PROGRAM_STRING_NV 0x8628 7.1829 +#define GL_MODELVIEW_PROJECTION_NV 0x8629 7.1830 +#define GL_IDENTITY_NV 0x862A 7.1831 +#define GL_INVERSE_NV 0x862B 7.1832 +#define GL_TRANSPOSE_NV 0x862C 7.1833 +#define GL_INVERSE_TRANSPOSE_NV 0x862D 7.1834 +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E 7.1835 +#define GL_MAX_TRACK_MATRICES_NV 0x862F 7.1836 +#define GL_MATRIX0_NV 0x8630 7.1837 +#define GL_MATRIX1_NV 0x8631 7.1838 +#define GL_MATRIX2_NV 0x8632 7.1839 +#define GL_MATRIX3_NV 0x8633 7.1840 +#define GL_MATRIX4_NV 0x8634 7.1841 +#define GL_MATRIX5_NV 0x8635 7.1842 +#define GL_MATRIX6_NV 0x8636 7.1843 +#define GL_MATRIX7_NV 0x8637 7.1844 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 7.1845 +#define GL_CURRENT_MATRIX_NV 0x8641 7.1846 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 7.1847 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 7.1848 +#define GL_PROGRAM_PARAMETER_NV 0x8644 7.1849 +#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 7.1850 +#define GL_PROGRAM_TARGET_NV 0x8646 7.1851 +#define GL_PROGRAM_RESIDENT_NV 0x8647 7.1852 +#define GL_TRACK_MATRIX_NV 0x8648 7.1853 +#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 7.1854 +#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A 7.1855 +#define GL_PROGRAM_ERROR_POSITION_NV 0x864B 7.1856 +#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 7.1857 +#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 7.1858 +#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 7.1859 +#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 7.1860 +#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 7.1861 +#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 7.1862 +#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 7.1863 +#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 7.1864 +#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 7.1865 +#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 7.1866 +#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A 7.1867 +#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B 7.1868 +#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C 7.1869 +#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D 7.1870 +#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E 7.1871 +#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F 7.1872 +#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 7.1873 +#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 7.1874 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 7.1875 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 7.1876 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 7.1877 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 7.1878 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 7.1879 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 7.1880 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 7.1881 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 7.1882 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A 7.1883 +#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B 7.1884 +#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C 7.1885 +#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D 7.1886 +#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E 7.1887 +#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F 7.1888 +#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 7.1889 +#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 7.1890 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 7.1891 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 7.1892 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 7.1893 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 7.1894 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 7.1895 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 7.1896 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 7.1897 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 7.1898 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A 7.1899 +#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B 7.1900 +#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C 7.1901 +#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D 7.1902 +#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E 7.1903 +#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F 7.1904 + 7.1905 +/* NV_texture_shader */ 7.1906 +#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C 7.1907 +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D 7.1908 +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E 7.1909 +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 7.1910 +#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA 7.1911 +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB 7.1912 +#define GL_DSDT_MAG_INTENSITY_NV 0x86DC 7.1913 +#define GL_SHADER_CONSISTENT_NV 0x86DD 7.1914 +#define GL_TEXTURE_SHADER_NV 0x86DE 7.1915 +#define GL_SHADER_OPERATION_NV 0x86DF 7.1916 +#define GL_CULL_MODES_NV 0x86E0 7.1917 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 7.1918 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 7.1919 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 7.1920 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV 7.1921 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV 7.1922 +#define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV 7.1923 +#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 7.1924 +#define GL_CONST_EYE_NV 0x86E5 7.1925 +#define GL_PASS_THROUGH_NV 0x86E6 7.1926 +#define GL_CULL_FRAGMENT_NV 0x86E7 7.1927 +#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 7.1928 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 7.1929 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA 7.1930 +#define GL_DOT_PRODUCT_NV 0x86EC 7.1931 +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED 7.1932 +#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE 7.1933 +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 7.1934 +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 7.1935 +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 7.1936 +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 7.1937 +#define GL_HILO_NV 0x86F4 7.1938 +#define GL_DSDT_NV 0x86F5 7.1939 +#define GL_DSDT_MAG_NV 0x86F6 7.1940 +#define GL_DSDT_MAG_VIB_NV 0x86F7 7.1941 +#define GL_HILO16_NV 0x86F8 7.1942 +#define GL_SIGNED_HILO_NV 0x86F9 7.1943 +#define GL_SIGNED_HILO16_NV 0x86FA 7.1944 +#define GL_SIGNED_RGBA_NV 0x86FB 7.1945 +#define GL_SIGNED_RGBA8_NV 0x86FC 7.1946 +#define GL_SIGNED_RGB_NV 0x86FE 7.1947 +#define GL_SIGNED_RGB8_NV 0x86FF 7.1948 +#define GL_SIGNED_LUMINANCE_NV 0x8701 7.1949 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 7.1950 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 7.1951 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 7.1952 +#define GL_SIGNED_ALPHA_NV 0x8705 7.1953 +#define GL_SIGNED_ALPHA8_NV 0x8706 7.1954 +#define GL_SIGNED_INTENSITY_NV 0x8707 7.1955 +#define GL_SIGNED_INTENSITY8_NV 0x8708 7.1956 +#define GL_DSDT8_NV 0x8709 7.1957 +#define GL_DSDT8_MAG8_NV 0x870A 7.1958 +#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B 7.1959 +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C 7.1960 +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D 7.1961 +#define GL_HI_SCALE_NV 0x870E 7.1962 +#define GL_LO_SCALE_NV 0x870F 7.1963 +#define GL_DS_SCALE_NV 0x8710 7.1964 +#define GL_DT_SCALE_NV 0x8711 7.1965 +#define GL_MAGNITUDE_SCALE_NV 0x8712 7.1966 +#define GL_VIBRANCE_SCALE_NV 0x8713 7.1967 +#define GL_HI_BIAS_NV 0x8714 7.1968 +#define GL_LO_BIAS_NV 0x8715 7.1969 +#define GL_DS_BIAS_NV 0x8716 7.1970 +#define GL_DT_BIAS_NV 0x8717 7.1971 +#define GL_MAGNITUDE_BIAS_NV 0x8718 7.1972 +#define GL_VIBRANCE_BIAS_NV 0x8719 7.1973 +#define GL_TEXTURE_BORDER_VALUES_NV 0x871A 7.1974 +#define GL_TEXTURE_HI_SIZE_NV 0x871B 7.1975 +#define GL_TEXTURE_LO_SIZE_NV 0x871C 7.1976 +#define GL_TEXTURE_DS_SIZE_NV 0x871D 7.1977 +#define GL_TEXTURE_DT_SIZE_NV 0x871E 7.1978 +#define GL_TEXTURE_MAG_SIZE_NV 0x871F 7.1979 + 7.1980 +/* NV_texture_shader2 */ 7.1981 +#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF 7.1982 + 7.1983 +/* NV_texture_shader3 */ 7.1984 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 7.1985 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 7.1986 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 7.1987 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 7.1988 +#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 7.1989 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 7.1990 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 7.1991 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 7.1992 +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 7.1993 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 7.1994 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A 7.1995 +#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B 7.1996 +#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C 7.1997 +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D 7.1998 +#define GL_HILO8_NV 0x885E 7.1999 +#define GL_SIGNED_HILO8_NV 0x885F 7.2000 +#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 7.2001 + 7.2002 +/* NV_register_combiners2 */ 7.2003 +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 7.2004 + 7.2005 +/* IBM_texture_mirrored_repeat */ 7.2006 +#define GL_MIRRORED_REPEAT_IBM 0x8370 7.2007 + 7.2008 +/* ARB_texture_env_dot3 */ 7.2009 +#define GL_DOT3_RGB_ARB 0x86AE 7.2010 +#define GL_DOT3_RGBA_ARB 0x86AF 7.2011 + 7.2012 +/* EXT_texture_env_dot3 */ 7.2013 +#define GL_DOT3_RGB_EXT 0x8740 7.2014 +#define GL_DOT3_RGBA_EXT 0x8741 7.2015 + 7.2016 +/* APPLE_transform_hint */ 7.2017 +#define GL_TRANSFORM_HINT_APPLE 0x85B1 7.2018 + 7.2019 +/* ARB_texture_border_clamp */ 7.2020 +#define GL_CLAMP_TO_BORDER_ARB 0x812D 7.2021 + 7.2022 +/* NV_texture_rectangle */ 7.2023 +#define GL_TEXTURE_RECTANGLE_NV 0x84F5 7.2024 +#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 7.2025 +#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 7.2026 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 7.2027 + 7.2028 +/* SGIX_shadow */ 7.2029 +#define GL_TEXTURE_COMPARE_SGIX 0x819A 7.2030 +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B 7.2031 +#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C 7.2032 +#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D 7.2033 + 7.2034 +/* SGIX_depth_texture */ 7.2035 +#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 7.2036 +#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 7.2037 +#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 7.2038 + 7.2039 +/* ARB_multisample */ 7.2040 +#define GL_MULTISAMPLE_ARB 0x809D 7.2041 +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E 7.2042 +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F 7.2043 +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 7.2044 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 7.2045 +#define GL_SAMPLES_ARB 0x80A9 7.2046 +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA 7.2047 +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB 7.2048 +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 7.2049 + 7.2050 +/* NV_multisample_filter_hint */ 7.2051 +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 7.2052 + 7.2053 +/* NV_packed_depth_stencil */ 7.2054 +#define GL_DEPTH_STENCIL_NV 0x84F9 7.2055 +#define GL_UNSIGNED_INT_24_8_NV 0x84FA 7.2056 + 7.2057 +/* EXT_draw_range_elements */ 7.2058 +#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 7.2059 +#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 7.2060 + 7.2061 +/* SGIS_generate_mipmap */ 7.2062 +#define GL_GENERATE_MIPMAP_SGIS 0x8191 7.2063 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 7.2064 + 7.2065 +/* NV_pixel_data_range */ 7.2066 +#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 7.2067 +#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 7.2068 +#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A 7.2069 +#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B 7.2070 +#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C 7.2071 +#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D 7.2072 + 7.2073 +/* NV_packed_normal */ 7.2074 +#define GL_UNSIGNED_INT_S10_S11_S11_REV_NV 0x886B 7.2075 + 7.2076 +/* NV_half_float */ 7.2077 +#define GL_HALF_FLOAT_NV 0x140B 7.2078 + 7.2079 +/* NV_copy_depth_to_color */ 7.2080 +#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E 7.2081 +#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F 7.2082 + 7.2083 +/* HP_occlusion_test */ 7.2084 +#define GL_OCCLUSION_TEST_HP 0x8165 7.2085 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 7.2086 + 7.2087 +/* NV_occlusion_query */ 7.2088 +#define GL_PIXEL_COUNTER_BITS_NV 0x8864 7.2089 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 7.2090 +#define GL_PIXEL_COUNT_NV 0x8866 7.2091 +#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 7.2092 + 7.2093 +/* NV_point_sprite */ 7.2094 +#define GL_POINT_SPRITE_NV 0x8861 7.2095 +#define GL_COORD_REPLACE_NV 0x8862 7.2096 +#define GL_POINT_SPRITE_R_MODE_NV 0x8863 7.2097 + 7.2098 +/* 3DFX_tbuffer */ 7.2099 +#define GL_TBUFFER_WRITE_MASK_3DFX 0x86D8 7.2100 + 7.2101 +/* NV_depth_clamp */ 7.2102 +#define GL_DEPTH_CLAMP_NV 0x864F 7.2103 + 7.2104 +/* NV_float_buffer */ 7.2105 +#define GL_FLOAT_R_NV 0x8880 7.2106 +#define GL_FLOAT_RG_NV 0x8881 7.2107 +#define GL_FLOAT_RGB_NV 0x8882 7.2108 +#define GL_FLOAT_RGBA_NV 0x8883 7.2109 +#define GL_FLOAT_R16_NV 0x8884 7.2110 +#define GL_FLOAT_R32_NV 0x8885 7.2111 +#define GL_FLOAT_RG16_NV 0x8886 7.2112 +#define GL_FLOAT_RG32_NV 0x8887 7.2113 +#define GL_FLOAT_RGB16_NV 0x8888 7.2114 +#define GL_FLOAT_RGB32_NV 0x8889 7.2115 +#define GL_FLOAT_RGBA16_NV 0x888A 7.2116 +#define GL_FLOAT_RGBA32_NV 0x888B 7.2117 +#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C 7.2118 +#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D 7.2119 +#define GL_FLOAT_RGBA_MODE_NV 0x888E 7.2120 + 7.2121 +/* EXT_stencil_two_side */ 7.2122 +#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 7.2123 +#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 7.2124 + 7.2125 +/* EXT_blend_func_separate */ 7.2126 +#define GL_BLEND_DST_RGB_EXT 0x80C8 7.2127 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 7.2128 +#define GL_BLEND_DST_ALPHA_EXT 0x80CA 7.2129 +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB 7.2130 + 7.2131 +/* ARB_texture_mirrored_repeat */ 7.2132 +#define GL_MIRRORED_REPEAT_ARB 0x8370 7.2133 + 7.2134 +/* ARB_depth_texture */ 7.2135 +#define GL_DEPTH_COMPONENT16_ARB 0x81A5 7.2136 +#define GL_DEPTH_COMPONENT24_ARB 0x81A6 7.2137 +#define GL_DEPTH_COMPONENT32_ARB 0x81A7 7.2138 +#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A 7.2139 +#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B 7.2140 + 7.2141 +/* ARB_shadow */ 7.2142 +#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C 7.2143 +#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D 7.2144 +#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E 7.2145 + 7.2146 +/* ARB_shadow_ambient */ 7.2147 +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF 7.2148 + 7.2149 +/* NV_force_software */ 7.2150 +#define GL_FORCE_SOFTWARE_NV 0x6007 7.2151 + 7.2152 +/* NV_flush_hold */ 7.2153 +#define GL_CURRENT_FLUSHHOLD_NVX 0x6008 7.2154 +#define GL_MAX_PENDING_FLUSHHOLD_NVX 0x6009 7.2155 + 7.2156 +/* ARB_point_parameters */ 7.2157 +#define GL_POINT_SIZE_MIN_ARB 0x8126 7.2158 +#define GL_POINT_SIZE_MAX_ARB 0x8127 7.2159 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 7.2160 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 7.2161 + 7.2162 +/* EXT_depth_bounds_test */ 7.2163 +#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 7.2164 +#define GL_DEPTH_BOUNDS_EXT 0x8891 7.2165 + 7.2166 +/* ARB_vertex_program */ 7.2167 +#define GL_VERTEX_PROGRAM_ARB 0x8620 7.2168 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 7.2169 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 7.2170 +#define GL_COLOR_SUM_ARB 0x8458 7.2171 +#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 7.2172 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 7.2173 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 7.2174 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 7.2175 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 7.2176 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A 7.2177 +#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 7.2178 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 7.2179 +#define GL_PROGRAM_LENGTH_ARB 0x8627 7.2180 +#define GL_PROGRAM_FORMAT_ARB 0x8876 7.2181 +#define GL_PROGRAM_BINDING_ARB 0x8677 7.2182 +#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 7.2183 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 7.2184 +#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 7.2185 +#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 7.2186 +#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 7.2187 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 7.2188 +#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 7.2189 +#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 7.2190 +#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 7.2191 +#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 7.2192 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA 7.2193 +#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB 7.2194 +#define GL_PROGRAM_ATTRIBS_ARB 0x88AC 7.2195 +#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD 7.2196 +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE 7.2197 +#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF 7.2198 +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 7.2199 +#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 7.2200 +#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 7.2201 +#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 7.2202 +#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 7.2203 +#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 7.2204 +#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 7.2205 +#define GL_PROGRAM_STRING_ARB 0x8628 7.2206 +#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B 7.2207 +#define GL_CURRENT_MATRIX_ARB 0x8641 7.2208 +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 7.2209 +#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 7.2210 +#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 7.2211 +#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F 7.2212 +#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E 7.2213 +#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 7.2214 +#define GL_MATRIX0_ARB 0x88C0 7.2215 +#define GL_MATRIX1_ARB 0x88C1 7.2216 +#define GL_MATRIX2_ARB 0x88C2 7.2217 +#define GL_MATRIX3_ARB 0x88C3 7.2218 +#define GL_MATRIX4_ARB 0x88C4 7.2219 +#define GL_MATRIX5_ARB 0x88C5 7.2220 +#define GL_MATRIX6_ARB 0x88C6 7.2221 +#define GL_MATRIX7_ARB 0x88C7 7.2222 +#define GL_MATRIX8_ARB 0x88C8 7.2223 +#define GL_MATRIX9_ARB 0x88C9 7.2224 +#define GL_MATRIX10_ARB 0x88CA 7.2225 +#define GL_MATRIX11_ARB 0x88CB 7.2226 +#define GL_MATRIX12_ARB 0x88CC 7.2227 +#define GL_MATRIX13_ARB 0x88CD 7.2228 +#define GL_MATRIX14_ARB 0x88CE 7.2229 +#define GL_MATRIX15_ARB 0x88CF 7.2230 +#define GL_MATRIX16_ARB 0x88D0 7.2231 +#define GL_MATRIX17_ARB 0x88D1 7.2232 +#define GL_MATRIX18_ARB 0x88D2 7.2233 +#define GL_MATRIX19_ARB 0x88D3 7.2234 +#define GL_MATRIX20_ARB 0x88D4 7.2235 +#define GL_MATRIX21_ARB 0x88D5 7.2236 +#define GL_MATRIX22_ARB 0x88D6 7.2237 +#define GL_MATRIX23_ARB 0x88D7 7.2238 +#define GL_MATRIX24_ARB 0x88D8 7.2239 +#define GL_MATRIX25_ARB 0x88D9 7.2240 +#define GL_MATRIX26_ARB 0x88DA 7.2241 +#define GL_MATRIX27_ARB 0x88DB 7.2242 +#define GL_MATRIX28_ARB 0x88DC 7.2243 +#define GL_MATRIX29_ARB 0x88DD 7.2244 +#define GL_MATRIX30_ARB 0x88DE 7.2245 +#define GL_MATRIX31_ARB 0x88DF 7.2246 + 7.2247 +/* OpenGL14 */ 7.2248 +#define GL_POINT_SIZE_MIN 0x8126 7.2249 +#define GL_POINT_SIZE_MAX 0x8127 7.2250 +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 7.2251 +#define GL_POINT_DISTANCE_ATTENUATION 0x8129 7.2252 +#define GL_FOG_COORDINATE_SOURCE 0x8450 7.2253 +#define GL_FOG_COORDINATE 0x8451 7.2254 +#define GL_FRAGMENT_DEPTH 0x8452 7.2255 +#define GL_CURRENT_FOG_COORDINATE 0x8453 7.2256 +#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 7.2257 +#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 7.2258 +#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 7.2259 +#define GL_FOG_COORDINATE_ARRAY 0x8457 7.2260 +#define GL_COLOR_SUM 0x8458 7.2261 +#define GL_CURRENT_SECONDARY_COLOR 0x8459 7.2262 +#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A 7.2263 +#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B 7.2264 +#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C 7.2265 +#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D 7.2266 +#define GL_SECONDARY_COLOR_ARRAY 0x845E 7.2267 +#define GL_INCR_WRAP 0x8507 7.2268 +#define GL_DECR_WRAP 0x8508 7.2269 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD 7.2270 +#define GL_TEXTURE_FILTER_CONTROL 0x8500 7.2271 +#define GL_TEXTURE_LOD_BIAS 0x8501 7.2272 +#define GL_GENERATE_MIPMAP 0x8191 7.2273 +#define GL_GENERATE_MIPMAP_HINT 0x8192 7.2274 +#define GL_BLEND_DST_RGB 0x80C8 7.2275 +#define GL_BLEND_SRC_RGB 0x80C9 7.2276 +#define GL_BLEND_DST_ALPHA 0x80CA 7.2277 +#define GL_BLEND_SRC_ALPHA 0x80CB 7.2278 +#define GL_MIRRORED_REPEAT 0x8370 7.2279 +#define GL_DEPTH_COMPONENT16 0x81A5 7.2280 +#define GL_DEPTH_COMPONENT24 0x81A6 7.2281 +#define GL_DEPTH_COMPONENT32 0x81A7 7.2282 +#define GL_TEXTURE_DEPTH_SIZE 0x884A 7.2283 +#define GL_DEPTH_TEXTURE_MODE 0x884B 7.2284 +#define GL_TEXTURE_COMPARE_MODE 0x884C 7.2285 +#define GL_TEXTURE_COMPARE_FUNC 0x884D 7.2286 +#define GL_COMPARE_R_TO_TEXTURE 0x884E 7.2287 + 7.2288 +/* NV_primitive_restart */ 7.2289 +#define GL_PRIMITIVE_RESTART_NV 0x8558 7.2290 +#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 7.2291 + 7.2292 +/* SGIS_texture_color_mask */ 7.2293 +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF 7.2294 + 7.2295 +/* NVX_ycrcb */ 7.2296 +#define GL_CRYCBY_422_NVX 0x600A 7.2297 +#define GL_YCRYCB_422_NVX 0x600B 7.2298 + 7.2299 +/* NV_texture_expand_normal */ 7.2300 +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F 7.2301 + 7.2302 +/* ARB_fragment_program */ 7.2303 +#define GL_FRAGMENT_PROGRAM_ARB 0x8804 7.2304 +/* GL_PROGRAM_FORMAT_ASCII_ARB */ 7.2305 +/* GL_PROGRAM_LENGTH_ARB */ 7.2306 +/* GL_PROGRAM_FORMAT_ARB */ 7.2307 +/* GL_PROGRAM_BINDING_ARB */ 7.2308 +/* GL_PROGRAM_INSTRUCTIONS_ARB */ 7.2309 +/* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ 7.2310 +/* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ 7.2311 +/* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ 7.2312 +/* GL_PROGRAM_TEMPORARIES_ARB */ 7.2313 +/* GL_MAX_PROGRAM_TEMPORARIES_ARB */ 7.2314 +/* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ 7.2315 +/* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ 7.2316 +/* GL_PROGRAM_PARAMETERS_ARB */ 7.2317 +/* GL_MAX_PROGRAM_PARAMETERS_ARB */ 7.2318 +/* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ 7.2319 +/* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ 7.2320 +/* GL_PROGRAM_ATTRIBS_ARB */ 7.2321 +/* GL_MAX_PROGRAM_ATTRIBS_ARB */ 7.2322 +/* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ 7.2323 +/* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ 7.2324 +/* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ 7.2325 +/* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ 7.2326 +/* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ 7.2327 +#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 7.2328 +#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 7.2329 +#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 7.2330 +#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 7.2331 +#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 7.2332 +#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A 7.2333 +#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B 7.2334 +#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C 7.2335 +#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D 7.2336 +#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E 7.2337 +#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F 7.2338 +#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 7.2339 +/* GL_PROGRAM_STRING_ARB */ 7.2340 +/* GL_PROGRAM_ERROR_POSITION_ARB */ 7.2341 +/* GL_CURRENT_MATRIX_ARB */ 7.2342 +/* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ 7.2343 +/* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ 7.2344 +/* GL_MAX_PROGRAM_MATRICES_ARB */ 7.2345 +/* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ 7.2346 +#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 7.2347 +#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 7.2348 +/* GL_PROGRAM_ERROR_STRING_ARB */ 7.2349 +/* GL_MATRIX0_ARB */ 7.2350 +/* GL_MATRIX1_ARB */ 7.2351 +/* GL_MATRIX2_ARB */ 7.2352 +/* GL_MATRIX3_ARB */ 7.2353 +/* GL_MATRIX4_ARB */ 7.2354 +/* GL_MATRIX5_ARB */ 7.2355 +/* GL_MATRIX6_ARB */ 7.2356 +/* GL_MATRIX7_ARB */ 7.2357 +/* GL_MATRIX8_ARB */ 7.2358 +/* GL_MATRIX9_ARB */ 7.2359 +/* GL_MATRIX10_ARB */ 7.2360 +/* GL_MATRIX11_ARB */ 7.2361 +/* GL_MATRIX12_ARB */ 7.2362 +/* GL_MATRIX13_ARB */ 7.2363 +/* GL_MATRIX14_ARB */ 7.2364 +/* GL_MATRIX15_ARB */ 7.2365 +/* GL_MATRIX16_ARB */ 7.2366 +/* GL_MATRIX17_ARB */ 7.2367 +/* GL_MATRIX18_ARB */ 7.2368 +/* GL_MATRIX19_ARB */ 7.2369 +/* GL_MATRIX20_ARB */ 7.2370 +/* GL_MATRIX21_ARB */ 7.2371 +/* GL_MATRIX22_ARB */ 7.2372 +/* GL_MATRIX23_ARB */ 7.2373 +/* GL_MATRIX24_ARB */ 7.2374 +/* GL_MATRIX25_ARB */ 7.2375 +/* GL_MATRIX26_ARB */ 7.2376 +/* GL_MATRIX27_ARB */ 7.2377 +/* GL_MATRIX28_ARB */ 7.2378 +/* GL_MATRIX29_ARB */ 7.2379 +/* GL_MATRIX30_ARB */ 7.2380 +/* GL_MATRIX31_ARB */ 7.2381 + 7.2382 +/* ARB_vertex_buffer_object */ 7.2383 +#define GL_ARRAY_BUFFER_ARB 0x8892 7.2384 +#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 7.2385 +#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 7.2386 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 7.2387 +#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 7.2388 +#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 7.2389 +#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 7.2390 +#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 7.2391 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A 7.2392 +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B 7.2393 +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C 7.2394 +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D 7.2395 +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E 7.2396 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F 7.2397 +#define GL_STREAM_DRAW_ARB 0x88E0 7.2398 +#define GL_STREAM_READ_ARB 0x88E1 7.2399 +#define GL_STREAM_COPY_ARB 0x88E2 7.2400 +#define GL_STATIC_DRAW_ARB 0x88E4 7.2401 +#define GL_STATIC_READ_ARB 0x88E5 7.2402 +#define GL_STATIC_COPY_ARB 0x88E6 7.2403 +#define GL_DYNAMIC_DRAW_ARB 0x88E8 7.2404 +#define GL_DYNAMIC_READ_ARB 0x88E9 7.2405 +#define GL_DYNAMIC_COPY_ARB 0x88EA 7.2406 +#define GL_READ_ONLY_ARB 0x88B8 7.2407 +#define GL_WRITE_ONLY_ARB 0x88B9 7.2408 +#define GL_READ_WRITE_ARB 0x88BA 7.2409 +#define GL_BUFFER_SIZE_ARB 0x8764 7.2410 +#define GL_BUFFER_USAGE_ARB 0x8765 7.2411 +#define GL_BUFFER_ACCESS_ARB 0x88BB 7.2412 +#define GL_BUFFER_MAPPED_ARB 0x88BC 7.2413 +#define GL_BUFFER_MAP_POINTER_ARB 0x88BD 7.2414 + 7.2415 +/*************************************************************/ 7.2416 + 7.2417 +void glAccum (GLenum op, GLfloat value); 7.2418 +void glActiveStencilFaceEXT (GLenum face); 7.2419 +void glActiveTexture (GLenum texture); 7.2420 +void glActiveTextureARB (GLenum texture); 7.2421 +void glAddSwapHintRectWIN (GLint x, GLint y, GLsizei width, GLsizei height); 7.2422 +void glAlphaFunc (GLenum func, GLclampf ref); 7.2423 +GLboolean glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences); 7.2424 +GLboolean glAreTexturesResident (GLsizei n, const GLuint *textures, GLboolean *residences); 7.2425 +GLboolean glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences); 7.2426 +void glArrayElement (GLint i); 7.2427 +void glArrayElementEXT (GLint i); 7.2428 +void glBegin (GLenum mode); 7.2429 +void glBeginOcclusionQueryNV (GLuint id); 7.2430 +void glBindBufferARB (GLenum target, GLuint buffer); 7.2431 +void glBindProgramARB (GLenum target, GLuint program); 7.2432 +void glBindProgramNV (GLenum target, GLuint id); 7.2433 +void glBindTexture (GLenum target, GLuint texture); 7.2434 +void glBindTextureEXT (GLenum target, GLuint texture); 7.2435 +void glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); 7.2436 +void glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); 7.2437 +void glBlendColorEXT (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); 7.2438 +void glBlendEquation (GLenum mode); 7.2439 +void glBlendEquationEXT (GLenum mode); 7.2440 +void glBlendFunc (GLenum sfactor, GLenum dfactor); 7.2441 +void glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); 7.2442 +void glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); 7.2443 +void glBufferDataARB (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); 7.2444 +void glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); 7.2445 +void glCallList (GLuint list); 7.2446 +void glCallLists (GLsizei n, GLenum type, const GLvoid *lists); 7.2447 +void glClear (GLbitfield mask); 7.2448 +void glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); 7.2449 +void glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); 7.2450 +void glClearDepth (GLclampd depth); 7.2451 +void glClearIndex (GLfloat c); 7.2452 +void glClearStencil (GLint s); 7.2453 +void glClientActiveTexture (GLenum texture); 7.2454 +void glClientActiveTextureARB (GLenum texture); 7.2455 +void glClipPlane (GLenum plane, const GLdouble *equation); 7.2456 +void glColor3b (GLbyte red, GLbyte green, GLbyte blue); 7.2457 +void glColor3bv (const GLbyte *v); 7.2458 +void glColor3d (GLdouble red, GLdouble green, GLdouble blue); 7.2459 +void glColor3dv (const GLdouble *v); 7.2460 +void glColor3f (GLfloat red, GLfloat green, GLfloat blue); 7.2461 +void glColor3fv (const GLfloat *v); 7.2462 +void glColor3hNV (GLhalf red, GLhalf green, GLhalf blue); 7.2463 +void glColor3hvNV (const GLhalf *v); 7.2464 +void glColor3i (GLint red, GLint green, GLint blue); 7.2465 +void glColor3iv (const GLint *v); 7.2466 +void glColor3s (GLshort red, GLshort green, GLshort blue); 7.2467 +void glColor3sv (const GLshort *v); 7.2468 +void glColor3ub (GLubyte red, GLubyte green, GLubyte blue); 7.2469 +void glColor3ubv (const GLubyte *v); 7.2470 +void glColor3ui (GLuint red, GLuint green, GLuint blue); 7.2471 +void glColor3uiv (const GLuint *v); 7.2472 +void glColor3us (GLushort red, GLushort green, GLushort blue); 7.2473 +void glColor3usv (const GLushort *v); 7.2474 +void glColor4b (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); 7.2475 +void glColor4bv (const GLbyte *v); 7.2476 +void glColor4d (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); 7.2477 +void glColor4dv (const GLdouble *v); 7.2478 +void glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); 7.2479 +void glColor4fv (const GLfloat *v); 7.2480 +void glColor4hNV (GLhalf red, GLhalf green, GLhalf blue, GLhalf alpha); 7.2481 +void glColor4hvNV (const GLhalf *v); 7.2482 +void glColor4i (GLint red, GLint green, GLint blue, GLint alpha); 7.2483 +void glColor4iv (const GLint *v); 7.2484 +void glColor4s (GLshort red, GLshort green, GLshort blue, GLshort alpha); 7.2485 +void glColor4sv (const GLshort *v); 7.2486 +void glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); 7.2487 +void glColor4ubv (const GLubyte *v); 7.2488 +void glColor4ui (GLuint red, GLuint green, GLuint blue, GLuint alpha); 7.2489 +void glColor4uiv (const GLuint *v); 7.2490 +void glColor4us (GLushort red, GLushort green, GLushort blue, GLushort alpha); 7.2491 +void glColor4usv (const GLushort *v); 7.2492 +void glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); 7.2493 +void glColorMaterial (GLenum face, GLenum mode); 7.2494 +void glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 7.2495 +void glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); 7.2496 +void glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); 7.2497 +void glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *table); 7.2498 +void glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); 7.2499 +void glColorTableEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); 7.2500 +void glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params); 7.2501 +void glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params); 7.2502 +void glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); 7.2503 +void glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); 7.2504 +void glCombinerParameterfNV (GLenum pname, GLfloat param); 7.2505 +void glCombinerParameterfvNV (GLenum pname, const GLfloat *params); 7.2506 +void glCombinerParameteriNV (GLenum pname, GLint param); 7.2507 +void glCombinerParameterivNV (GLenum pname, const GLint *params); 7.2508 +void glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params); 7.2509 +void glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); 7.2510 +void glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); 7.2511 +void glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); 7.2512 +void glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); 7.2513 +void glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); 7.2514 +void glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); 7.2515 +void glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); 7.2516 +void glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); 7.2517 +void glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); 7.2518 +void glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); 7.2519 +void glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); 7.2520 +void glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); 7.2521 +void glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); 7.2522 +void glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); 7.2523 +void glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params); 7.2524 +void glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params); 7.2525 +void glConvolutionParameteri (GLenum target, GLenum pname, GLint params); 7.2526 +void glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params); 7.2527 +void glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); 7.2528 +void glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); 7.2529 +void glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); 7.2530 +void glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); 7.2531 +void glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); 7.2532 +void glCopyTexImage1D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); 7.2533 +void glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); 7.2534 +void glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); 7.2535 +void glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); 7.2536 +void glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); 7.2537 +void glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); 7.2538 +void glCullFace (GLenum mode); 7.2539 +void glDeleteBuffersARB (GLsizei n, const GLuint *buffers); 7.2540 +void glDeleteFencesNV (GLsizei n, const GLuint *fences); 7.2541 +void glDeleteLists (GLuint list, GLsizei range); 7.2542 +void glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids); 7.2543 +void glDeleteProgramsARB (GLsizei n, const GLuint *programs); 7.2544 +void glDeleteProgramsNV (GLsizei n, const GLuint *programs); 7.2545 +void glDeleteTextures (GLsizei n, const GLuint *textures); 7.2546 +void glDeleteTexturesEXT (GLsizei n, const GLuint *textures); 7.2547 +void glDepthBoundsEXT (GLclampd zmin, GLclampd zmax); 7.2548 +void glDepthFunc (GLenum func); 7.2549 +void glDepthMask (GLboolean flag); 7.2550 +void glDepthRange (GLclampd zNear, GLclampd zFar); 7.2551 +void glDisable (GLenum cap); 7.2552 +void glDisableClientState (GLenum array); 7.2553 +void glDisableVertexAttribArrayARB (GLuint index); 7.2554 +void glDrawArrays (GLenum mode, GLint first, GLsizei count); 7.2555 +void glDrawArraysEXT (GLenum mode, GLint first, GLsizei count); 7.2556 +void glDrawBuffer (GLenum mode); 7.2557 +void glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); 7.2558 +void glDrawMeshNV (GLenum mode, GLsizei count, GLenum type, GLsizei stride, const GLvoid *indicesTexCoord, const GLvoid *indicesNormal, const GLvoid *indicesVertex); 7.2559 +void glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); 7.2560 +void glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); 7.2561 +void glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); 7.2562 +void glEdgeFlag (GLboolean flag); 7.2563 +void glEdgeFlagPointer (GLsizei stride, const GLboolean *pointer); 7.2564 +void glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer); 7.2565 +void glEdgeFlagv (const GLboolean *flag); 7.2566 +void glEnable (GLenum cap); 7.2567 +void glEnableClientState (GLenum array); 7.2568 +void glEnableVertexAttribArrayARB (GLuint index); 7.2569 +void glEnd (void); 7.2570 +void glEndList (void); 7.2571 +void glEndOcclusionQueryNV (void); 7.2572 +void glEvalCoord1d (GLdouble u); 7.2573 +void glEvalCoord1dv (const GLdouble *u); 7.2574 +void glEvalCoord1f (GLfloat u); 7.2575 +void glEvalCoord1fv (const GLfloat *u); 7.2576 +void glEvalCoord2d (GLdouble u, GLdouble v); 7.2577 +void glEvalCoord2dv (const GLdouble *u); 7.2578 +void glEvalCoord2f (GLfloat u, GLfloat v); 7.2579 +void glEvalCoord2fv (const GLfloat *u); 7.2580 +void glEvalMesh1 (GLenum mode, GLint i1, GLint i2); 7.2581 +void glEvalMesh2 (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); 7.2582 +void glEvalPoint1 (GLint i); 7.2583 +void glEvalPoint2 (GLint i, GLint j); 7.2584 +void glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params); 7.2585 +void glFeedbackBuffer (GLsizei size, GLenum type, GLfloat *buffer); 7.2586 +void glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); 7.2587 +void glFinish (void); 7.2588 +void glFinishFenceNV (GLuint fence); 7.2589 +void glFlush (void); 7.2590 +GLuint glFlushHold (void); 7.2591 +void glFlushPixelDataRangeNV (GLenum target); 7.2592 +void glFlushVertexArrayRangeNV (void); 7.2593 +void glFogCoordPointer (GLenum type, GLsizei stride, const GLvoid *pointer); 7.2594 +void glFogCoordPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer); 7.2595 +void glFogCoordd (GLdouble fog); 7.2596 +void glFogCoorddEXT (GLdouble fog); 7.2597 +void glFogCoorddv (const GLdouble *fog); 7.2598 +void glFogCoorddvEXT (const GLdouble *fog); 7.2599 +void glFogCoordf (GLfloat fog); 7.2600 +void glFogCoordfEXT (GLfloat fog); 7.2601 +void glFogCoordfv (const GLfloat *fog); 7.2602 +void glFogCoordfvEXT (const GLfloat *fog); 7.2603 +void glFogCoordhNV (GLhalf fog); 7.2604 +void glFogCoordhvNV (const GLhalf *fog); 7.2605 +void glFogf (GLenum pname, GLfloat param); 7.2606 +void glFogfv (GLenum pname, const GLfloat *params); 7.2607 +void glFogi (GLenum pname, GLint param); 7.2608 +void glFogiv (GLenum pname, const GLint *params); 7.2609 +void glFrontFace (GLenum mode); 7.2610 +void glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); 7.2611 +void glGenBuffersARB (GLsizei n, GLuint *buffers); 7.2612 +void glGenFencesNV (GLsizei n, GLuint *fences); 7.2613 +GLuint glGenLists (GLsizei range); 7.2614 +void glGenOcclusionQueriesNV (GLsizei n, GLuint *ids); 7.2615 +void glGenProgramsARB (GLsizei n, GLuint *programs); 7.2616 +void glGenProgramsNV (GLsizei n, GLuint *programs); 7.2617 +void glGenTextures (GLsizei n, GLuint *textures); 7.2618 +void glGenTexturesEXT (GLsizei n, GLuint *textures); 7.2619 +void glGetBooleanv (GLenum pname, GLboolean *params); 7.2620 +void glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params); 7.2621 +void glGetBufferPointervARB (GLenum target, GLenum pname, GLvoid* *params); 7.2622 +void glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); 7.2623 +void glGetClipPlane (GLenum plane, GLdouble *equation); 7.2624 +void glGetColorTable (GLenum target, GLenum format, GLenum type, GLvoid *table); 7.2625 +void glGetColorTableEXT (GLenum target, GLenum format, GLenum type, GLvoid *table); 7.2626 +void glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params); 7.2627 +void glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params); 7.2628 +void glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params); 7.2629 +void glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params); 7.2630 +void glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); 7.2631 +void glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); 7.2632 +void glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); 7.2633 +void glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params); 7.2634 +void glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params); 7.2635 +void glGetCompressedTexImage (GLenum target, GLint lod, GLvoid *img); 7.2636 +void glGetCompressedTexImageARB (GLenum target, GLint lod, GLvoid *img); 7.2637 +void glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, GLvoid *image); 7.2638 +void glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params); 7.2639 +void glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params); 7.2640 +void glGetDoublev (GLenum pname, GLdouble *params); 7.2641 +GLenum glGetError (void); 7.2642 +void glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); 7.2643 +void glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params); 7.2644 +void glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params); 7.2645 +void glGetFloatv (GLenum pname, GLfloat *params); 7.2646 +void glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); 7.2647 +void glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params); 7.2648 +void glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params); 7.2649 +void glGetIntegerv (GLenum pname, GLint *params); 7.2650 +void glGetLightfv (GLenum light, GLenum pname, GLfloat *params); 7.2651 +void glGetLightiv (GLenum light, GLenum pname, GLint *params); 7.2652 +void glGetMapdv (GLenum target, GLenum query, GLdouble *v); 7.2653 +void glGetMapfv (GLenum target, GLenum query, GLfloat *v); 7.2654 +void glGetMapiv (GLenum target, GLenum query, GLint *v); 7.2655 +void glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params); 7.2656 +void glGetMaterialiv (GLenum face, GLenum pname, GLint *params); 7.2657 +void glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); 7.2658 +void glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params); 7.2659 +void glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params); 7.2660 +void glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params); 7.2661 +void glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params); 7.2662 +void glGetPixelMapfv (GLenum map, GLfloat *values); 7.2663 +void glGetPixelMapuiv (GLenum map, GLuint *values); 7.2664 +void glGetPixelMapusv (GLenum map, GLushort *values); 7.2665 +void glGetPointerv (GLenum pname, GLvoid* *params); 7.2666 +void glGetPointervEXT (GLenum pname, GLvoid* *params); 7.2667 +void glGetPolygonStipple (GLubyte *mask); 7.2668 +void glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params); 7.2669 +void glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params); 7.2670 +void glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params); 7.2671 +void glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params); 7.2672 +void glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); 7.2673 +void glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); 7.2674 +void glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params); 7.2675 +void glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params); 7.2676 +void glGetProgramStringARB (GLenum target, GLenum pname, GLvoid *string); 7.2677 +void glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program); 7.2678 +void glGetProgramivARB (GLenum target, GLenum pname, GLint *params); 7.2679 +void glGetProgramivNV (GLuint id, GLenum pname, GLint *params); 7.2680 +void glGetSeparableFilter (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); 7.2681 +const GLubyte * glGetString (GLenum name); 7.2682 +void glGetTexEnvfv (GLenum target, GLenum pname, GLfloat *params); 7.2683 +void glGetTexEnviv (GLenum target, GLenum pname, GLint *params); 7.2684 +void glGetTexGendv (GLenum coord, GLenum pname, GLdouble *params); 7.2685 +void glGetTexGenfv (GLenum coord, GLenum pname, GLfloat *params); 7.2686 +void glGetTexGeniv (GLenum coord, GLenum pname, GLint *params); 7.2687 +void glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels); 7.2688 +void glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params); 7.2689 +void glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params); 7.2690 +void glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); 7.2691 +void glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); 7.2692 +void glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params); 7.2693 +void glGetVertexAttribPointervARB (GLuint index, GLenum pname, GLvoid* *pointer); 7.2694 +void glGetVertexAttribPointervNV (GLuint index, GLenum pname, GLvoid* *pointer); 7.2695 +void glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params); 7.2696 +void glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params); 7.2697 +void glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params); 7.2698 +void glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params); 7.2699 +void glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params); 7.2700 +void glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params); 7.2701 +void glHint (GLenum target, GLenum mode); 7.2702 +void glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); 7.2703 +void glIndexMask (GLuint mask); 7.2704 +void glIndexPointer (GLenum type, GLsizei stride, const GLvoid *pointer); 7.2705 +void glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); 7.2706 +void glIndexd (GLdouble c); 7.2707 +void glIndexdv (const GLdouble *c); 7.2708 +void glIndexf (GLfloat c); 7.2709 +void glIndexfv (const GLfloat *c); 7.2710 +void glIndexi (GLint c); 7.2711 +void glIndexiv (const GLint *c); 7.2712 +void glIndexs (GLshort c); 7.2713 +void glIndexsv (const GLshort *c); 7.2714 +void glIndexub (GLubyte c); 7.2715 +void glIndexubv (const GLubyte *c); 7.2716 +void glInitNames (void); 7.2717 +void glInterleavedArrays (GLenum format, GLsizei stride, const GLvoid *pointer); 7.2718 +GLboolean glIsBufferARB (GLuint buffer); 7.2719 +GLboolean glIsEnabled (GLenum cap); 7.2720 +GLboolean glIsFenceNV (GLuint fence); 7.2721 +GLboolean glIsList (GLuint list); 7.2722 +GLboolean glIsOcclusionQueryNV (GLuint id); 7.2723 +GLboolean glIsProgramARB (GLuint program); 7.2724 +GLboolean glIsProgramNV (GLuint id); 7.2725 +GLboolean glIsTexture (GLuint texture); 7.2726 +GLboolean glIsTextureEXT (GLuint texture); 7.2727 +void glLightModelf (GLenum pname, GLfloat param); 7.2728 +void glLightModelfv (GLenum pname, const GLfloat *params); 7.2729 +void glLightModeli (GLenum pname, GLint param); 7.2730 +void glLightModeliv (GLenum pname, const GLint *params); 7.2731 +void glLightf (GLenum light, GLenum pname, GLfloat param); 7.2732 +void glLightfv (GLenum light, GLenum pname, const GLfloat *params); 7.2733 +void glLighti (GLenum light, GLenum pname, GLint param); 7.2734 +void glLightiv (GLenum light, GLenum pname, const GLint *params); 7.2735 +void glLineStipple (GLint factor, GLushort pattern); 7.2736 +void glLineWidth (GLfloat width); 7.2737 +void glListBase (GLuint base); 7.2738 +void glLoadIdentity (void); 7.2739 +void glLoadMatrixd (const GLdouble *m); 7.2740 +void glLoadMatrixf (const GLfloat *m); 7.2741 +void glLoadName (GLuint name); 7.2742 +void glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program); 7.2743 +void glLoadTransposeMatrixd (const GLdouble *m); 7.2744 +void glLoadTransposeMatrixdARB (const GLdouble *m); 7.2745 +void glLoadTransposeMatrixf (const GLfloat *m); 7.2746 +void glLoadTransposeMatrixfARB (const GLfloat *m); 7.2747 +void glLockArraysEXT (GLint first, GLsizei count); 7.2748 +void glLogicOp (GLenum opcode); 7.2749 +void glMap1d (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); 7.2750 +void glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); 7.2751 +void glMap2d (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); 7.2752 +void glMap2f (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); 7.2753 +GLvoid* glMapBufferARB (GLenum target, GLenum access); 7.2754 +void glMapGrid1d (GLint un, GLdouble u1, GLdouble u2); 7.2755 +void glMapGrid1f (GLint un, GLfloat u1, GLfloat u2); 7.2756 +void glMapGrid2d (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); 7.2757 +void glMapGrid2f (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); 7.2758 +void glMaterialf (GLenum face, GLenum pname, GLfloat param); 7.2759 +void glMaterialfv (GLenum face, GLenum pname, const GLfloat *params); 7.2760 +void glMateriali (GLenum face, GLenum pname, GLint param); 7.2761 +void glMaterialiv (GLenum face, GLenum pname, const GLint *params); 7.2762 +void glMatrixMode (GLenum mode); 7.2763 +void glMinmax (GLenum target, GLenum internalformat, GLboolean sink); 7.2764 +void glMultMatrixd (const GLdouble *m); 7.2765 +void glMultMatrixf (const GLfloat *m); 7.2766 +void glMultTransposeMatrixd (const GLdouble *m); 7.2767 +void glMultTransposeMatrixdARB (const GLdouble *m); 7.2768 +void glMultTransposeMatrixf (const GLfloat *m); 7.2769 +void glMultTransposeMatrixfARB (const GLfloat *m); 7.2770 +void glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); 7.2771 +void glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); 7.2772 +void glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); 7.2773 +void glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); 7.2774 +void glMultiTexCoord1d (GLenum target, GLdouble s); 7.2775 +void glMultiTexCoord1dARB (GLenum target, GLdouble s); 7.2776 +void glMultiTexCoord1dSGIS (GLenum target, GLdouble s); 7.2777 +void glMultiTexCoord1dv (GLenum target, const GLdouble *v); 7.2778 +void glMultiTexCoord1dvARB (GLenum target, const GLdouble *v); 7.2779 +void glMultiTexCoord1dvSGIS (GLenum target, const GLdouble *v); 7.2780 +void glMultiTexCoord1f (GLenum target, GLfloat s); 7.2781 +void glMultiTexCoord1fARB (GLenum target, GLfloat s); 7.2782 +void glMultiTexCoord1fSGIS (GLenum target, GLfloat s); 7.2783 +void glMultiTexCoord1fv (GLenum target, const GLfloat *v); 7.2784 +void glMultiTexCoord1fvARB (GLenum target, const GLfloat *v); 7.2785 +void glMultiTexCoord1fvSGIS (GLenum target, const GLfloat *v); 7.2786 +void glMultiTexCoord1hNV (GLenum target, GLhalf s); 7.2787 +void glMultiTexCoord1hvNV (GLenum target, const GLhalf *v); 7.2788 +void glMultiTexCoord1i (GLenum target, GLint s); 7.2789 +void glMultiTexCoord1iARB (GLenum target, GLint s); 7.2790 +void glMultiTexCoord1iSGIS (GLenum target, GLint s); 7.2791 +void glMultiTexCoord1iv (GLenum target, const GLint *v); 7.2792 +void glMultiTexCoord1ivARB (GLenum target, const GLint *v); 7.2793 +void glMultiTexCoord1ivSGIS (GLenum target, const GLint *v); 7.2794 +void glMultiTexCoord1s (GLenum target, GLshort s); 7.2795 +void glMultiTexCoord1sARB (GLenum target, GLshort s); 7.2796 +void glMultiTexCoord1sSGIS (GLenum target, GLshort s); 7.2797 +void glMultiTexCoord1sv (GLenum target, const GLshort *v); 7.2798 +void glMultiTexCoord1svARB (GLenum target, const GLshort *v); 7.2799 +void glMultiTexCoord1svSGIS (GLenum target, const GLshort *v); 7.2800 +void glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t); 7.2801 +void glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t); 7.2802 +void glMultiTexCoord2dSGIS (GLenum target, GLdouble s, GLdouble t); 7.2803 +void glMultiTexCoord2dv (GLenum target, const GLdouble *v); 7.2804 +void glMultiTexCoord2dvARB (GLenum target, const GLdouble *v); 7.2805 +void glMultiTexCoord2dvSGIS (GLenum target, const GLdouble *v); 7.2806 +void glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t); 7.2807 +void glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t); 7.2808 +void glMultiTexCoord2fSGIS (GLenum target, GLfloat s, GLfloat t); 7.2809 +void glMultiTexCoord2fv (GLenum target, const GLfloat *v); 7.2810 +void glMultiTexCoord2fvARB (GLenum target, const GLfloat *v); 7.2811 +void glMultiTexCoord2fvSGIS (GLenum target, const GLfloat *v); 7.2812 +void glMultiTexCoord2hNV (GLenum target, GLhalf s, GLhalf t); 7.2813 +void glMultiTexCoord2hvNV (GLenum target, const GLhalf *v); 7.2814 +void glMultiTexCoord2i (GLenum target, GLint s, GLint t); 7.2815 +void glMultiTexCoord2iARB (GLenum target, GLint s, GLint t); 7.2816 +void glMultiTexCoord2iSGIS (GLenum target, GLint s, GLint t); 7.2817 +void glMultiTexCoord2iv (GLenum target, const GLint *v); 7.2818 +void glMultiTexCoord2ivARB (GLenum target, const GLint *v); 7.2819 +void glMultiTexCoord2ivSGIS (GLenum target, const GLint *v); 7.2820 +void glMultiTexCoord2s (GLenum target, GLshort s, GLshort t); 7.2821 +void glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t); 7.2822 +void glMultiTexCoord2sSGIS (GLenum target, GLshort s, GLshort t); 7.2823 +void glMultiTexCoord2sv (GLenum target, const GLshort *v); 7.2824 +void glMultiTexCoord2svARB (GLenum target, const GLshort *v); 7.2825 +void glMultiTexCoord2svSGIS (GLenum target, const GLshort *v); 7.2826 +void glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r); 7.2827 +void glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r); 7.2828 +void glMultiTexCoord3dSGIS (GLenum target, GLdouble s, GLdouble t, GLdouble r); 7.2829 +void glMultiTexCoord3dv (GLenum target, const GLdouble *v); 7.2830 +void glMultiTexCoord3dvARB (GLenum target, const GLdouble *v); 7.2831 +void glMultiTexCoord3dvSGIS (GLenum target, const GLdouble *v); 7.2832 +void glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r); 7.2833 +void glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r); 7.2834 +void glMultiTexCoord3fSGIS (GLenum target, GLfloat s, GLfloat t, GLfloat r); 7.2835 +void glMultiTexCoord3fv (GLenum target, const GLfloat *v); 7.2836 +void glMultiTexCoord3fvARB (GLenum target, const GLfloat *v); 7.2837 +void glMultiTexCoord3fvSGIS (GLenum target, const GLfloat *v); 7.2838 +void glMultiTexCoord3hNV (GLenum target, GLhalf s, GLhalf t, GLhalf r); 7.2839 +void glMultiTexCoord3hvNV (GLenum target, const GLhalf *v); 7.2840 +void glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r); 7.2841 +void glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r); 7.2842 +void glMultiTexCoord3iSGIS (GLenum target, GLint s, GLint t, GLint r); 7.2843 +void glMultiTexCoord3iv (GLenum target, const GLint *v); 7.2844 +void glMultiTexCoord3ivARB (GLenum target, const GLint *v); 7.2845 +void glMultiTexCoord3ivSGIS (GLenum target, const GLint *v); 7.2846 +void glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r); 7.2847 +void glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r); 7.2848 +void glMultiTexCoord3sSGIS (GLenum target, GLshort s, GLshort t, GLshort r); 7.2849 +void glMultiTexCoord3sv (GLenum target, const GLshort *v); 7.2850 +void glMultiTexCoord3svARB (GLenum target, const GLshort *v); 7.2851 +void glMultiTexCoord3svSGIS (GLenum target, const GLshort *v); 7.2852 +void glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); 7.2853 +void glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); 7.2854 +void glMultiTexCoord4dSGIS (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); 7.2855 +void glMultiTexCoord4dv (GLenum target, const GLdouble *v); 7.2856 +void glMultiTexCoord4dvARB (GLenum target, const GLdouble *v); 7.2857 +void glMultiTexCoord4dvSGIS (GLenum target, const GLdouble *v); 7.2858 +void glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); 7.2859 +void glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); 7.2860 +void glMultiTexCoord4fSGIS (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); 7.2861 +void glMultiTexCoord4fv (GLenum target, const GLfloat *v); 7.2862 +void glMultiTexCoord4fvARB (GLenum target, const GLfloat *v); 7.2863 +void glMultiTexCoord4fvSGIS (GLenum target, const GLfloat *v); 7.2864 +void glMultiTexCoord4hNV (GLenum target, GLhalf s, GLhalf t, GLhalf r, GLhalf q); 7.2865 +void glMultiTexCoord4hvNV (GLenum target, const GLhalf *v); 7.2866 +void glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q); 7.2867 +void glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q); 7.2868 +void glMultiTexCoord4iSGIS (GLenum target, GLint s, GLint t, GLint r, GLint q); 7.2869 +void glMultiTexCoord4iv (GLenum target, const GLint *v); 7.2870 +void glMultiTexCoord4ivARB (GLenum target, const GLint *v); 7.2871 +void glMultiTexCoord4ivSGIS (GLenum target, const GLint *v); 7.2872 +void glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); 7.2873 +void glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); 7.2874 +void glMultiTexCoord4sSGIS (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); 7.2875 +void glMultiTexCoord4sv (GLenum target, const GLshort *v); 7.2876 +void glMultiTexCoord4svARB (GLenum target, const GLshort *v); 7.2877 +void glMultiTexCoord4svSGIS (GLenum target, const GLshort *v); 7.2878 +void glMultiTexCoordPointerSGIS (GLenum target, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 7.2879 +void glNewList (GLuint list, GLenum mode); 7.2880 +void glNormal3b (GLbyte nx, GLbyte ny, GLbyte nz); 7.2881 +void glNormal3bv (const GLbyte *v); 7.2882 +void glNormal3d (GLdouble nx, GLdouble ny, GLdouble nz); 7.2883 +void glNormal3dv (const GLdouble *v); 7.2884 +void glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz); 7.2885 +void glNormal3fv (const GLfloat *v); 7.2886 +void glNormal3hNV (GLhalf nx, GLhalf ny, GLhalf nz); 7.2887 +void glNormal3hvNV (const GLhalf *v); 7.2888 +void glNormal3i (GLint nx, GLint ny, GLint nz); 7.2889 +void glNormal3iv (const GLint *v); 7.2890 +void glNormal3s (GLshort nx, GLshort ny, GLshort nz); 7.2891 +void glNormal3sv (const GLshort *v); 7.2892 +void glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer); 7.2893 +void glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); 7.2894 +void glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); 7.2895 +void glPassThrough (GLfloat token); 7.2896 +void glPixelDataRangeNV (GLenum target, GLsizei size, const GLvoid *pointer); 7.2897 +void glPixelMapfv (GLenum map, GLint mapsize, const GLfloat *values); 7.2898 +void glPixelMapuiv (GLenum map, GLint mapsize, const GLuint *values); 7.2899 +void glPixelMapusv (GLenum map, GLint mapsize, const GLushort *values); 7.2900 +void glPixelStoref (GLenum pname, GLfloat param); 7.2901 +void glPixelStorei (GLenum pname, GLint param); 7.2902 +void glPixelTransferf (GLenum pname, GLfloat param); 7.2903 +void glPixelTransferi (GLenum pname, GLint param); 7.2904 +void glPixelZoom (GLfloat xfactor, GLfloat yfactor); 7.2905 +void glPointParameterf (GLenum pname, GLfloat param); 7.2906 +void glPointParameterfARB (GLenum pname, GLfloat param); 7.2907 +void glPointParameterfEXT (GLenum pname, GLfloat param); 7.2908 +void glPointParameterfv (GLenum pname, const GLfloat *params); 7.2909 +void glPointParameterfvARB (GLenum pname, const GLfloat *params); 7.2910 +void glPointParameterfvEXT (GLenum pname, const GLfloat *params); 7.2911 +void glPointParameteri (GLenum pname, GLint param); 7.2912 +void glPointParameteriNV (GLenum pname, GLint param); 7.2913 +void glPointParameteriv (GLenum pname, const GLint *params); 7.2914 +void glPointParameterivNV (GLenum pname, const GLint *params); 7.2915 +void glPointSize (GLfloat size); 7.2916 +void glPolygonMode (GLenum face, GLenum mode); 7.2917 +void glPolygonOffset (GLfloat factor, GLfloat units); 7.2918 +void glPolygonStipple (const GLubyte *mask); 7.2919 +void glPopAttrib (void); 7.2920 +void glPopClientAttrib (void); 7.2921 +void glPopMatrix (void); 7.2922 +void glPopName (void); 7.2923 +void glPrimitiveRestartIndexNV (GLuint index); 7.2924 +void glPrimitiveRestartNV (void); 7.2925 +void glPrioritizeTextures (GLsizei n, const GLuint *textures, const GLclampf *priorities); 7.2926 +void glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities); 7.2927 +void glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 7.2928 +void glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params); 7.2929 +void glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 7.2930 +void glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params); 7.2931 +void glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 7.2932 +void glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params); 7.2933 +void glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 7.2934 +void glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params); 7.2935 +void glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 7.2936 +void glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); 7.2937 +void glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 7.2938 +void glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); 7.2939 +void glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 7.2940 +void glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v); 7.2941 +void glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 7.2942 +void glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v); 7.2943 +void glProgramParameters4dvNV (GLenum target, GLuint index, GLsizei count, const GLdouble *v); 7.2944 +void glProgramParameters4fvNV (GLenum target, GLuint index, GLsizei count, const GLfloat *v); 7.2945 +void glProgramStringARB (GLenum target, GLenum format, GLsizei len, const GLvoid *string); 7.2946 +void glPushAttrib (GLbitfield mask); 7.2947 +void glPushClientAttrib (GLbitfield mask); 7.2948 +void glPushMatrix (void); 7.2949 +void glPushName (GLuint name); 7.2950 +void glRasterPos2d (GLdouble x, GLdouble y); 7.2951 +void glRasterPos2dv (const GLdouble *v); 7.2952 +void glRasterPos2f (GLfloat x, GLfloat y); 7.2953 +void glRasterPos2fv (const GLfloat *v); 7.2954 +void glRasterPos2i (GLint x, GLint y); 7.2955 +void glRasterPos2iv (const GLint *v); 7.2956 +void glRasterPos2s (GLshort x, GLshort y); 7.2957 +void glRasterPos2sv (const GLshort *v); 7.2958 +void glRasterPos3d (GLdouble x, GLdouble y, GLdouble z); 7.2959 +void glRasterPos3dv (const GLdouble *v); 7.2960 +void glRasterPos3f (GLfloat x, GLfloat y, GLfloat z); 7.2961 +void glRasterPos3fv (const GLfloat *v); 7.2962 +void glRasterPos3i (GLint x, GLint y, GLint z); 7.2963 +void glRasterPos3iv (const GLint *v); 7.2964 +void glRasterPos3s (GLshort x, GLshort y, GLshort z); 7.2965 +void glRasterPos3sv (const GLshort *v); 7.2966 +void glRasterPos4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); 7.2967 +void glRasterPos4dv (const GLdouble *v); 7.2968 +void glRasterPos4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); 7.2969 +void glRasterPos4fv (const GLfloat *v); 7.2970 +void glRasterPos4i (GLint x, GLint y, GLint z, GLint w); 7.2971 +void glRasterPos4iv (const GLint *v); 7.2972 +void glRasterPos4s (GLshort x, GLshort y, GLshort z, GLshort w); 7.2973 +void glRasterPos4sv (const GLshort *v); 7.2974 +void glReadBuffer (GLenum mode); 7.2975 +void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); 7.2976 +void glRectd (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); 7.2977 +void glRectdv (const GLdouble *v1, const GLdouble *v2); 7.2978 +void glRectf (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); 7.2979 +void glRectfv (const GLfloat *v1, const GLfloat *v2); 7.2980 +void glRecti (GLint x1, GLint y1, GLint x2, GLint y2); 7.2981 +void glRectiv (const GLint *v1, const GLint *v2); 7.2982 +void glRects (GLshort x1, GLshort y1, GLshort x2, GLshort y2); 7.2983 +void glRectsv (const GLshort *v1, const GLshort *v2); 7.2984 +GLenum glReleaseFlushHold (GLuint id); 7.2985 +GLint glRenderMode (GLenum mode); 7.2986 +void glRequestResidentProgramsNV (GLsizei n, const GLuint *programs); 7.2987 +void glResetHistogram (GLenum target); 7.2988 +void glResetMinmax (GLenum target); 7.2989 +void glRotated (GLdouble angle, GLdouble x, GLdouble y, GLdouble z); 7.2990 +void glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z); 7.2991 +void glSampleCoverage (GLclampf value, GLboolean invert); 7.2992 +void glSampleCoverageARB (GLclampf value, GLboolean invert); 7.2993 +void glScaled (GLdouble x, GLdouble y, GLdouble z); 7.2994 +void glScalef (GLfloat x, GLfloat y, GLfloat z); 7.2995 +void glScissor (GLint x, GLint y, GLsizei width, GLsizei height); 7.2996 +void glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue); 7.2997 +void glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue); 7.2998 +void glSecondaryColor3bv (const GLbyte *v); 7.2999 +void glSecondaryColor3bvEXT (const GLbyte *v); 7.3000 +void glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue); 7.3001 +void glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue); 7.3002 +void glSecondaryColor3dv (const GLdouble *v); 7.3003 +void glSecondaryColor3dvEXT (const GLdouble *v); 7.3004 +void glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue); 7.3005 +void glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue); 7.3006 +void glSecondaryColor3fv (const GLfloat *v); 7.3007 +void glSecondaryColor3fvEXT (const GLfloat *v); 7.3008 +void glSecondaryColor3hNV (GLhalf red, GLhalf green, GLhalf blue); 7.3009 +void glSecondaryColor3hvNV (const GLhalf *v); 7.3010 +void glSecondaryColor3i (GLint red, GLint green, GLint blue); 7.3011 +void glSecondaryColor3iEXT (GLint red, GLint green, GLint blue); 7.3012 +void glSecondaryColor3iv (const GLint *v); 7.3013 +void glSecondaryColor3ivEXT (const GLint *v); 7.3014 +void glSecondaryColor3s (GLshort red, GLshort green, GLshort blue); 7.3015 +void glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue); 7.3016 +void glSecondaryColor3sv (const GLshort *v); 7.3017 +void glSecondaryColor3svEXT (const GLshort *v); 7.3018 +void glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue); 7.3019 +void glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue); 7.3020 +void glSecondaryColor3ubv (const GLubyte *v); 7.3021 +void glSecondaryColor3ubvEXT (const GLubyte *v); 7.3022 +void glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue); 7.3023 +void glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue); 7.3024 +void glSecondaryColor3uiv (const GLuint *v); 7.3025 +void glSecondaryColor3uivEXT (const GLuint *v); 7.3026 +void glSecondaryColor3us (GLushort red, GLushort green, GLushort blue); 7.3027 +void glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue); 7.3028 +void glSecondaryColor3usv (const GLushort *v); 7.3029 +void glSecondaryColor3usvEXT (const GLushort *v); 7.3030 +void glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 7.3031 +void glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 7.3032 +void glSelectBuffer (GLsizei size, GLuint *buffer); 7.3033 +void glSelectTextureCoordSetSGIS (GLenum target); 7.3034 +void glSelectTextureSGIS (GLenum target); 7.3035 +void glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); 7.3036 +void glSetFenceNV (GLuint fence, GLenum condition); 7.3037 +void glSetWindowStereoModeNV (GLboolean displayMode); 7.3038 +void glShadeModel (GLenum mode); 7.3039 +void glStencilFunc (GLenum func, GLint ref, GLuint mask); 7.3040 +void glStencilMask (GLuint mask); 7.3041 +void glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); 7.3042 +void glTbufferMask3DFX (GLuint mask); 7.3043 +GLboolean glTestFenceNV (GLuint fence); 7.3044 +void glTexCoord1d (GLdouble s); 7.3045 +void glTexCoord1dv (const GLdouble *v); 7.3046 +void glTexCoord1f (GLfloat s); 7.3047 +void glTexCoord1fv (const GLfloat *v); 7.3048 +void glTexCoord1hNV (GLhalf s); 7.3049 +void glTexCoord1hvNV (const GLhalf *v); 7.3050 +void glTexCoord1i (GLint s); 7.3051 +void glTexCoord1iv (const GLint *v); 7.3052 +void glTexCoord1s (GLshort s); 7.3053 +void glTexCoord1sv (const GLshort *v); 7.3054 +void glTexCoord2d (GLdouble s, GLdouble t); 7.3055 +void glTexCoord2dv (const GLdouble *v); 7.3056 +void glTexCoord2f (GLfloat s, GLfloat t); 7.3057 +void glTexCoord2fv (const GLfloat *v); 7.3058 +void glTexCoord2hNV (GLhalf s, GLhalf t); 7.3059 +void glTexCoord2hvNV (const GLhalf *v); 7.3060 +void glTexCoord2i (GLint s, GLint t); 7.3061 +void glTexCoord2iv (const GLint *v); 7.3062 +void glTexCoord2s (GLshort s, GLshort t); 7.3063 +void glTexCoord2sv (const GLshort *v); 7.3064 +void glTexCoord3d (GLdouble s, GLdouble t, GLdouble r); 7.3065 +void glTexCoord3dv (const GLdouble *v); 7.3066 +void glTexCoord3f (GLfloat s, GLfloat t, GLfloat r); 7.3067 +void glTexCoord3fv (const GLfloat *v); 7.3068 +void glTexCoord3hNV (GLhalf s, GLhalf t, GLhalf r); 7.3069 +void glTexCoord3hvNV (const GLhalf *v); 7.3070 +void glTexCoord3i (GLint s, GLint t, GLint r); 7.3071 +void glTexCoord3iv (const GLint *v); 7.3072 +void glTexCoord3s (GLshort s, GLshort t, GLshort r); 7.3073 +void glTexCoord3sv (const GLshort *v); 7.3074 +void glTexCoord4d (GLdouble s, GLdouble t, GLdouble r, GLdouble q); 7.3075 +void glTexCoord4dv (const GLdouble *v); 7.3076 +void glTexCoord4f (GLfloat s, GLfloat t, GLfloat r, GLfloat q); 7.3077 +void glTexCoord4fv (const GLfloat *v); 7.3078 +void glTexCoord4hNV (GLhalf s, GLhalf t, GLhalf r, GLhalf q); 7.3079 +void glTexCoord4hvNV (const GLhalf *v); 7.3080 +void glTexCoord4i (GLint s, GLint t, GLint r, GLint q); 7.3081 +void glTexCoord4iv (const GLint *v); 7.3082 +void glTexCoord4s (GLshort s, GLshort t, GLshort r, GLshort q); 7.3083 +void glTexCoord4sv (const GLshort *v); 7.3084 +void glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 7.3085 +void glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); 7.3086 +void glTexEnvf (GLenum target, GLenum pname, GLfloat param); 7.3087 +void glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params); 7.3088 +void glTexEnvi (GLenum target, GLenum pname, GLint param); 7.3089 +void glTexEnviv (GLenum target, GLenum pname, const GLint *params); 7.3090 +void glTexGend (GLenum coord, GLenum pname, GLdouble param); 7.3091 +void glTexGendv (GLenum coord, GLenum pname, const GLdouble *params); 7.3092 +void glTexGenf (GLenum coord, GLenum pname, GLfloat param); 7.3093 +void glTexGenfv (GLenum coord, GLenum pname, const GLfloat *params); 7.3094 +void glTexGeni (GLenum coord, GLenum pname, GLint param); 7.3095 +void glTexGeniv (GLenum coord, GLenum pname, const GLint *params); 7.3096 +void glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels); 7.3097 +void glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); 7.3098 +void glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); 7.3099 +void glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); 7.3100 +void glTexParameterf (GLenum target, GLenum pname, GLfloat param); 7.3101 +void glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); 7.3102 +void glTexParameteri (GLenum target, GLenum pname, GLint param); 7.3103 +void glTexParameteriv (GLenum target, GLenum pname, const GLint *params); 7.3104 +void glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); 7.3105 +void glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); 7.3106 +void glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); 7.3107 +void glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); 7.3108 +void glTextureColorMaskSGIS (GLboolean r, GLboolean g, GLboolean b, GLboolean a); 7.3109 +void glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform); 7.3110 +void glTranslated (GLdouble x, GLdouble y, GLdouble z); 7.3111 +void glTranslatef (GLfloat x, GLfloat y, GLfloat z); 7.3112 +void glUnlockArraysEXT (void); 7.3113 +GLboolean glUnmapBufferARB (GLenum target); 7.3114 +GLboolean glValidBackBufferHintAutodesk (GLint x, GLint y, GLsizei width, GLsizei height); 7.3115 +void glVertex2d (GLdouble x, GLdouble y); 7.3116 +void glVertex2dv (const GLdouble *v); 7.3117 +void glVertex2f (GLfloat x, GLfloat y); 7.3118 +void glVertex2fv (const GLfloat *v); 7.3119 +void glVertex2hNV (GLhalf x, GLhalf y); 7.3120 +void glVertex2hvNV (const GLhalf *v); 7.3121 +void glVertex2i (GLint x, GLint y); 7.3122 +void glVertex2iv (const GLint *v); 7.3123 +void glVertex2s (GLshort x, GLshort y); 7.3124 +void glVertex2sv (const GLshort *v); 7.3125 +void glVertex3d (GLdouble x, GLdouble y, GLdouble z); 7.3126 +void glVertex3dv (const GLdouble *v); 7.3127 +void glVertex3f (GLfloat x, GLfloat y, GLfloat z); 7.3128 +void glVertex3fv (const GLfloat *v); 7.3129 +void glVertex3hNV (GLhalf x, GLhalf y, GLhalf z); 7.3130 +void glVertex3hvNV (const GLhalf *v); 7.3131 +void glVertex3i (GLint x, GLint y, GLint z); 7.3132 +void glVertex3iv (const GLint *v); 7.3133 +void glVertex3s (GLshort x, GLshort y, GLshort z); 7.3134 +void glVertex3sv (const GLshort *v); 7.3135 +void glVertex4d (GLdouble x, GLdouble y, GLdouble z, GLdouble w); 7.3136 +void glVertex4dv (const GLdouble *v); 7.3137 +void glVertex4f (GLfloat x, GLfloat y, GLfloat z, GLfloat w); 7.3138 +void glVertex4fv (const GLfloat *v); 7.3139 +void glVertex4hNV (GLhalf x, GLhalf y, GLhalf z, GLhalf w); 7.3140 +void glVertex4hvNV (const GLhalf *v); 7.3141 +void glVertex4i (GLint x, GLint y, GLint z, GLint w); 7.3142 +void glVertex4iv (const GLint *v); 7.3143 +void glVertex4s (GLshort x, GLshort y, GLshort z, GLshort w); 7.3144 +void glVertex4sv (const GLshort *v); 7.3145 +void glVertexArrayRangeNV (GLsizei size, const GLvoid *pointer); 7.3146 +void glVertexAttrib1dARB (GLuint index, GLdouble x); 7.3147 +void glVertexAttrib1dNV (GLuint index, GLdouble x); 7.3148 +void glVertexAttrib1dvARB (GLuint index, const GLdouble *v); 7.3149 +void glVertexAttrib1dvNV (GLuint index, const GLdouble *v); 7.3150 +void glVertexAttrib1fARB (GLuint index, GLfloat x); 7.3151 +void glVertexAttrib1fNV (GLuint index, GLfloat x); 7.3152 +void glVertexAttrib1fvARB (GLuint index, const GLfloat *v); 7.3153 +void glVertexAttrib1fvNV (GLuint index, const GLfloat *v); 7.3154 +void glVertexAttrib1hNV (GLuint index, GLhalf x); 7.3155 +void glVertexAttrib1hvNV (GLuint index, const GLhalf *v); 7.3156 +void glVertexAttrib1sARB (GLuint index, GLshort x); 7.3157 +void glVertexAttrib1sNV (GLuint index, GLshort x); 7.3158 +void glVertexAttrib1svARB (GLuint index, const GLshort *v); 7.3159 +void glVertexAttrib1svNV (GLuint index, const GLshort *v); 7.3160 +void glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y); 7.3161 +void glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y); 7.3162 +void glVertexAttrib2dvARB (GLuint index, const GLdouble *v); 7.3163 +void glVertexAttrib2dvNV (GLuint index, const GLdouble *v); 7.3164 +void glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y); 7.3165 +void glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y); 7.3166 +void glVertexAttrib2fvARB (GLuint index, const GLfloat *v); 7.3167 +void glVertexAttrib2fvNV (GLuint index, const GLfloat *v); 7.3168 +void glVertexAttrib2hNV (GLuint index, GLhalf x, GLhalf y); 7.3169 +void glVertexAttrib2hvNV (GLuint index, const GLhalf *v); 7.3170 +void glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y); 7.3171 +void glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y); 7.3172 +void glVertexAttrib2svARB (GLuint index, const GLshort *v); 7.3173 +void glVertexAttrib2svNV (GLuint index, const GLshort *v); 7.3174 +void glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z); 7.3175 +void glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z); 7.3176 +void glVertexAttrib3dvARB (GLuint index, const GLdouble *v); 7.3177 +void glVertexAttrib3dvNV (GLuint index, const GLdouble *v); 7.3178 +void glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z); 7.3179 +void glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z); 7.3180 +void glVertexAttrib3fvARB (GLuint index, const GLfloat *v); 7.3181 +void glVertexAttrib3fvNV (GLuint index, const GLfloat *v); 7.3182 +void glVertexAttrib3hNV (GLuint index, GLhalf x, GLhalf y, GLhalf z); 7.3183 +void glVertexAttrib3hvNV (GLuint index, const GLhalf *v); 7.3184 +void glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z); 7.3185 +void glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z); 7.3186 +void glVertexAttrib3svARB (GLuint index, const GLshort *v); 7.3187 +void glVertexAttrib3svNV (GLuint index, const GLshort *v); 7.3188 +void glVertexAttrib4NbvARB (GLuint index, const GLbyte *v); 7.3189 +void glVertexAttrib4NivARB (GLuint index, const GLint *v); 7.3190 +void glVertexAttrib4NsvARB (GLuint index, const GLshort *v); 7.3191 +void glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); 7.3192 +void glVertexAttrib4NubvARB (GLuint index, const GLubyte *v); 7.3193 +void glVertexAttrib4NuivARB (GLuint index, const GLuint *v); 7.3194 +void glVertexAttrib4NusvARB (GLuint index, const GLushort *v); 7.3195 +void glVertexAttrib4bvARB (GLuint index, const GLbyte *v); 7.3196 +void glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 7.3197 +void glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 7.3198 +void glVertexAttrib4dvARB (GLuint index, const GLdouble *v); 7.3199 +void glVertexAttrib4dvNV (GLuint index, const GLdouble *v); 7.3200 +void glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 7.3201 +void glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 7.3202 +void glVertexAttrib4fvARB (GLuint index, const GLfloat *v); 7.3203 +void glVertexAttrib4fvNV (GLuint index, const GLfloat *v); 7.3204 +void glVertexAttrib4hNV (GLuint index, GLhalf x, GLhalf y, GLhalf z, GLhalf w); 7.3205 +void glVertexAttrib4hvNV (GLuint index, const GLhalf *v); 7.3206 +void glVertexAttrib4ivARB (GLuint index, const GLint *v); 7.3207 +void glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); 7.3208 +void glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); 7.3209 +void glVertexAttrib4svARB (GLuint index, const GLshort *v); 7.3210 +void glVertexAttrib4svNV (GLuint index, const GLshort *v); 7.3211 +void glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); 7.3212 +void glVertexAttrib4ubvARB (GLuint index, const GLubyte *v); 7.3213 +void glVertexAttrib4ubvNV (GLuint index, const GLubyte *v); 7.3214 +void glVertexAttrib4uivARB (GLuint index, const GLuint *v); 7.3215 +void glVertexAttrib4usvARB (GLuint index, const GLushort *v); 7.3216 +void glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); 7.3217 +void glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer); 7.3218 +void glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v); 7.3219 +void glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v); 7.3220 +void glVertexAttribs1hvNV (GLuint index, GLsizei count, const GLhalf *v); 7.3221 +void glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v); 7.3222 +void glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v); 7.3223 +void glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v); 7.3224 +void glVertexAttribs2hvNV (GLuint index, GLsizei count, const GLhalf *v); 7.3225 +void glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v); 7.3226 +void glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v); 7.3227 +void glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v); 7.3228 +void glVertexAttribs3hvNV (GLuint index, GLsizei count, const GLhalf *v); 7.3229 +void glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v); 7.3230 +void glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v); 7.3231 +void glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v); 7.3232 +void glVertexAttribs4hvNV (GLuint index, GLsizei count, const GLhalf *v); 7.3233 +void glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v); 7.3234 +void glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v); 7.3235 +void glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 7.3236 +void glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); 7.3237 +void glVertexWeightPointerEXT (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer); 7.3238 +void glVertexWeightfEXT (GLfloat weight); 7.3239 +void glVertexWeightfvEXT (const GLfloat *weight); 7.3240 +void glVertexWeighthNV (GLhalf weight); 7.3241 +void glVertexWeighthvNV (const GLhalf *weight); 7.3242 +void glViewport (GLint x, GLint y, GLsizei width, GLsizei height); 7.3243 +void glWindowBackBufferHintAutodesk (void); 7.3244 +void glWindowPos2d (GLdouble x, GLdouble y); 7.3245 +void glWindowPos2dARB (GLdouble x, GLdouble y); 7.3246 +void glWindowPos2dv (const GLdouble *p); 7.3247 +void glWindowPos2dvARB (const GLdouble *p); 7.3248 +void glWindowPos2f (GLfloat x, GLfloat y); 7.3249 +void glWindowPos2fARB (GLfloat x, GLfloat y); 7.3250 +void glWindowPos2fv (const GLfloat *p); 7.3251 +void glWindowPos2fvARB (const GLfloat *p); 7.3252 +void glWindowPos2i (GLint x, GLint y); 7.3253 +void glWindowPos2iARB (GLint x, GLint y); 7.3254 +void glWindowPos2iv (const GLint *p); 7.3255 +void glWindowPos2ivARB (const GLint *p); 7.3256 +void glWindowPos2s (GLshort x, GLshort y); 7.3257 +void glWindowPos2sARB (GLshort x, GLshort y); 7.3258 +void glWindowPos2sv (const GLshort *p); 7.3259 +void glWindowPos2svARB (const GLshort *p); 7.3260 +void glWindowPos3d (GLdouble x, GLdouble y, GLdouble z); 7.3261 +void glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z); 7.3262 +void glWindowPos3dv (const GLdouble *p); 7.3263 +void glWindowPos3dvARB (const GLdouble *p); 7.3264 +void glWindowPos3f (GLfloat x, GLfloat y, GLfloat z); 7.3265 +void glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z); 7.3266 +void glWindowPos3fv (const GLfloat *p); 7.3267 +void glWindowPos3fvARB (const GLfloat *p); 7.3268 +void glWindowPos3i (GLint x, GLint y, GLint z); 7.3269 +void glWindowPos3iARB (GLint x, GLint y, GLint z); 7.3270 +void glWindowPos3iv (const GLint *p); 7.3271 +void glWindowPos3ivARB (const GLint *p); 7.3272 +void glWindowPos3s (GLshort x, GLshort y, GLshort z); 7.3273 +void glWindowPos3sARB (GLshort x, GLshort y, GLshort z); 7.3274 +void glWindowPos3sv (const GLshort *p); 7.3275 +void glWindowPos3svARB (const GLshort *p); 7.3276 + 7.3277 + 7.3278 +#ifdef __DEFINED_GLAPI 7.3279 +# undef GLAPI 7.3280 +# undef __DEFINED_GLAPI 7.3281 +#endif 7.3282 + 7.3283 +#ifdef __cplusplus 7.3284 +} 7.3285 +#endif 7.3286 + 7.3287 +#endif /* __gl_h_ */
8.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 8.2 +++ b/GL/glext.h Tue Nov 27 15:23:52 2007 +0100 8.3 @@ -0,0 +1,5024 @@ 8.4 +#ifndef __glext_h_ 8.5 +#define __glext_h_ 8.6 + 8.7 +#ifdef __cplusplus 8.8 +extern "C" { 8.9 +#endif 8.10 + 8.11 +/* 8.12 +** License Applicability. Except to the extent portions of this file are 8.13 +** made subject to an alternative license as permitted in the SGI Free 8.14 +** Software License B, Version 1.1 (the "License"), the contents of this 8.15 +** file are subject only to the provisions of the License. You may not use 8.16 +** this file except in compliance with the License. You may obtain a copy 8.17 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 8.18 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: 8.19 +** 8.20 +** http://oss.sgi.com/projects/FreeB 8.21 +** 8.22 +** Note that, as provided in the License, the Software is distributed on an 8.23 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS 8.24 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND 8.25 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A 8.26 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 8.27 +** 8.28 +** Original Code. The Original Code is: OpenGL Sample Implementation, 8.29 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, 8.30 +** Inc. The Original Code is Copyright (c) 1991-2002 Silicon Graphics, Inc. 8.31 +** Copyright in any portions created by third parties is as indicated 8.32 +** elsewhere herein. All Rights Reserved. 8.33 +** 8.34 +** Additional Notice Provisions: This software was created using the 8.35 +** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has 8.36 +** not been independently verified as being compliant with the OpenGL(R) 8.37 +** version 1.2.1 Specification. 8.38 +*/ 8.39 + 8.40 +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) 8.41 +#define WIN32_LEAN_AND_MEAN 1 8.42 +#include <windows.h> 8.43 +#endif 8.44 + 8.45 +#ifndef APIENTRY 8.46 +#define APIENTRY 8.47 +#endif 8.48 +#ifndef GLAPI 8.49 +#define GLAPI extern 8.50 +#endif 8.51 + 8.52 +/*************************************************************/ 8.53 + 8.54 +/* Header file version number, required by OpenGL ABI for Linux */ 8.55 +/* glext.h last updated 2002/08/21 */ 8.56 +/* Current version at http://oss.sgi.com/projects/ogl-sample/registry/ */ 8.57 +#define GL_GLEXT_VERSION 17 8.58 + 8.59 +#ifndef GL_VERSION_1_2 8.60 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 8.61 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 8.62 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 8.63 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 8.64 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 8.65 +#define GL_RESCALE_NORMAL 0x803A 8.66 +#define GL_TEXTURE_BINDING_3D 0x806A 8.67 +#define GL_PACK_SKIP_IMAGES 0x806B 8.68 +#define GL_PACK_IMAGE_HEIGHT 0x806C 8.69 +#define GL_UNPACK_SKIP_IMAGES 0x806D 8.70 +#define GL_UNPACK_IMAGE_HEIGHT 0x806E 8.71 +#define GL_TEXTURE_3D 0x806F 8.72 +#define GL_PROXY_TEXTURE_3D 0x8070 8.73 +#define GL_TEXTURE_DEPTH 0x8071 8.74 +#define GL_TEXTURE_WRAP_R 0x8072 8.75 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 8.76 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 8.77 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 8.78 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 8.79 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 8.80 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 8.81 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 8.82 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 8.83 +#define GL_BGR 0x80E0 8.84 +#define GL_BGRA 0x80E1 8.85 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 8.86 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 8.87 +#define GL_CLAMP_TO_EDGE 0x812F 8.88 +#define GL_TEXTURE_MIN_LOD 0x813A 8.89 +#define GL_TEXTURE_MAX_LOD 0x813B 8.90 +#define GL_TEXTURE_BASE_LEVEL 0x813C 8.91 +#define GL_TEXTURE_MAX_LEVEL 0x813D 8.92 +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 8.93 +#define GL_SINGLE_COLOR 0x81F9 8.94 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA 8.95 +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 8.96 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 8.97 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 8.98 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 8.99 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D 8.100 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E 8.101 +#endif 8.102 + 8.103 +#ifndef GL_ARB_imaging 8.104 +#define GL_CONSTANT_COLOR 0x8001 8.105 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 8.106 +#define GL_CONSTANT_ALPHA 0x8003 8.107 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 8.108 +#define GL_BLEND_COLOR 0x8005 8.109 +#define GL_FUNC_ADD 0x8006 8.110 +#define GL_MIN 0x8007 8.111 +#define GL_MAX 0x8008 8.112 +#define GL_BLEND_EQUATION 0x8009 8.113 +#define GL_FUNC_SUBTRACT 0x800A 8.114 +#define GL_FUNC_REVERSE_SUBTRACT 0x800B 8.115 +#define GL_CONVOLUTION_1D 0x8010 8.116 +#define GL_CONVOLUTION_2D 0x8011 8.117 +#define GL_SEPARABLE_2D 0x8012 8.118 +#define GL_CONVOLUTION_BORDER_MODE 0x8013 8.119 +#define GL_CONVOLUTION_FILTER_SCALE 0x8014 8.120 +#define GL_CONVOLUTION_FILTER_BIAS 0x8015 8.121 +#define GL_REDUCE 0x8016 8.122 +#define GL_CONVOLUTION_FORMAT 0x8017 8.123 +#define GL_CONVOLUTION_WIDTH 0x8018 8.124 +#define GL_CONVOLUTION_HEIGHT 0x8019 8.125 +#define GL_MAX_CONVOLUTION_WIDTH 0x801A 8.126 +#define GL_MAX_CONVOLUTION_HEIGHT 0x801B 8.127 +#define GL_POST_CONVOLUTION_RED_SCALE 0x801C 8.128 +#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D 8.129 +#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E 8.130 +#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F 8.131 +#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 8.132 +#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 8.133 +#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 8.134 +#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 8.135 +#define GL_HISTOGRAM 0x8024 8.136 +#define GL_PROXY_HISTOGRAM 0x8025 8.137 +#define GL_HISTOGRAM_WIDTH 0x8026 8.138 +#define GL_HISTOGRAM_FORMAT 0x8027 8.139 +#define GL_HISTOGRAM_RED_SIZE 0x8028 8.140 +#define GL_HISTOGRAM_GREEN_SIZE 0x8029 8.141 +#define GL_HISTOGRAM_BLUE_SIZE 0x802A 8.142 +#define GL_HISTOGRAM_ALPHA_SIZE 0x802B 8.143 +#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C 8.144 +#define GL_HISTOGRAM_SINK 0x802D 8.145 +#define GL_MINMAX 0x802E 8.146 +#define GL_MINMAX_FORMAT 0x802F 8.147 +#define GL_MINMAX_SINK 0x8030 8.148 +#define GL_TABLE_TOO_LARGE 0x8031 8.149 +#define GL_COLOR_MATRIX 0x80B1 8.150 +#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 8.151 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 8.152 +#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 8.153 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 8.154 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 8.155 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 8.156 +#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 8.157 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 8.158 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA 8.159 +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB 8.160 +#define GL_COLOR_TABLE 0x80D0 8.161 +#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 8.162 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 8.163 +#define GL_PROXY_COLOR_TABLE 0x80D3 8.164 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 8.165 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 8.166 +#define GL_COLOR_TABLE_SCALE 0x80D6 8.167 +#define GL_COLOR_TABLE_BIAS 0x80D7 8.168 +#define GL_COLOR_TABLE_FORMAT 0x80D8 8.169 +#define GL_COLOR_TABLE_WIDTH 0x80D9 8.170 +#define GL_COLOR_TABLE_RED_SIZE 0x80DA 8.171 +#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB 8.172 +#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC 8.173 +#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD 8.174 +#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE 8.175 +#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF 8.176 +#define GL_CONSTANT_BORDER 0x8151 8.177 +#define GL_REPLICATE_BORDER 0x8153 8.178 +#define GL_CONVOLUTION_BORDER_COLOR 0x8154 8.179 +#endif 8.180 + 8.181 +#ifndef GL_VERSION_1_3 8.182 +#define GL_TEXTURE0 0x84C0 8.183 +#define GL_TEXTURE1 0x84C1 8.184 +#define GL_TEXTURE2 0x84C2 8.185 +#define GL_TEXTURE3 0x84C3 8.186 +#define GL_TEXTURE4 0x84C4 8.187 +#define GL_TEXTURE5 0x84C5 8.188 +#define GL_TEXTURE6 0x84C6 8.189 +#define GL_TEXTURE7 0x84C7 8.190 +#define GL_TEXTURE8 0x84C8 8.191 +#define GL_TEXTURE9 0x84C9 8.192 +#define GL_TEXTURE10 0x84CA 8.193 +#define GL_TEXTURE11 0x84CB 8.194 +#define GL_TEXTURE12 0x84CC 8.195 +#define GL_TEXTURE13 0x84CD 8.196 +#define GL_TEXTURE14 0x84CE 8.197 +#define GL_TEXTURE15 0x84CF 8.198 +#define GL_TEXTURE16 0x84D0 8.199 +#define GL_TEXTURE17 0x84D1 8.200 +#define GL_TEXTURE18 0x84D2 8.201 +#define GL_TEXTURE19 0x84D3 8.202 +#define GL_TEXTURE20 0x84D4 8.203 +#define GL_TEXTURE21 0x84D5 8.204 +#define GL_TEXTURE22 0x84D6 8.205 +#define GL_TEXTURE23 0x84D7 8.206 +#define GL_TEXTURE24 0x84D8 8.207 +#define GL_TEXTURE25 0x84D9 8.208 +#define GL_TEXTURE26 0x84DA 8.209 +#define GL_TEXTURE27 0x84DB 8.210 +#define GL_TEXTURE28 0x84DC 8.211 +#define GL_TEXTURE29 0x84DD 8.212 +#define GL_TEXTURE30 0x84DE 8.213 +#define GL_TEXTURE31 0x84DF 8.214 +#define GL_ACTIVE_TEXTURE 0x84E0 8.215 +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 8.216 +#define GL_MAX_TEXTURE_UNITS 0x84E2 8.217 +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 8.218 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 8.219 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 8.220 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 8.221 +#define GL_MULTISAMPLE 0x809D 8.222 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E 8.223 +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F 8.224 +#define GL_SAMPLE_COVERAGE 0x80A0 8.225 +#define GL_SAMPLE_BUFFERS 0x80A8 8.226 +#define GL_SAMPLES 0x80A9 8.227 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA 8.228 +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB 8.229 +#define GL_MULTISAMPLE_BIT 0x20000000 8.230 +#define GL_NORMAL_MAP 0x8511 8.231 +#define GL_REFLECTION_MAP 0x8512 8.232 +#define GL_TEXTURE_CUBE_MAP 0x8513 8.233 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 8.234 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 8.235 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 8.236 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 8.237 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 8.238 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 8.239 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A 8.240 +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B 8.241 +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C 8.242 +#define GL_COMPRESSED_ALPHA 0x84E9 8.243 +#define GL_COMPRESSED_LUMINANCE 0x84EA 8.244 +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB 8.245 +#define GL_COMPRESSED_INTENSITY 0x84EC 8.246 +#define GL_COMPRESSED_RGB 0x84ED 8.247 +#define GL_COMPRESSED_RGBA 0x84EE 8.248 +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF 8.249 +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 8.250 +#define GL_TEXTURE_COMPRESSED 0x86A1 8.251 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 8.252 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 8.253 +#define GL_CLAMP_TO_BORDER 0x812D 8.254 +#define GL_CLAMP_TO_BORDER_SGIS 0x812D 8.255 +#define GL_COMBINE 0x8570 8.256 +#define GL_COMBINE_RGB 0x8571 8.257 +#define GL_COMBINE_ALPHA 0x8572 8.258 +#define GL_SOURCE0_RGB 0x8580 8.259 +#define GL_SOURCE1_RGB 0x8581 8.260 +#define GL_SOURCE2_RGB 0x8582 8.261 +#define GL_SOURCE0_ALPHA 0x8588 8.262 +#define GL_SOURCE1_ALPHA 0x8589 8.263 +#define GL_SOURCE2_ALPHA 0x858A 8.264 +#define GL_OPERAND0_RGB 0x8590 8.265 +#define GL_OPERAND1_RGB 0x8591 8.266 +#define GL_OPERAND2_RGB 0x8592 8.267 +#define GL_OPERAND0_ALPHA 0x8598 8.268 +#define GL_OPERAND1_ALPHA 0x8599 8.269 +#define GL_OPERAND2_ALPHA 0x859A 8.270 +#define GL_RGB_SCALE 0x8573 8.271 +#define GL_ADD_SIGNED 0x8574 8.272 +#define GL_INTERPOLATE 0x8575 8.273 +#define GL_SUBTRACT 0x84E7 8.274 +#define GL_CONSTANT 0x8576 8.275 +#define GL_PRIMARY_COLOR 0x8577 8.276 +#define GL_PREVIOUS 0x8578 8.277 +#define GL_DOT3_RGB 0x86AE 8.278 +#define GL_DOT3_RGBA 0x86AF 8.279 +#endif 8.280 + 8.281 +#ifndef GL_VERSION_1_4 8.282 +#define GL_BLEND_DST_RGB 0x80C8 8.283 +#define GL_BLEND_SRC_RGB 0x80C9 8.284 +#define GL_BLEND_DST_ALPHA 0x80CA 8.285 +#define GL_BLEND_SRC_ALPHA 0x80CB 8.286 +#define GL_POINT_SIZE_MIN 0x8126 8.287 +#define GL_POINT_SIZE_MAX 0x8127 8.288 +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 8.289 +#define GL_POINT_DISTANCE_ATTENUATION 0x8129 8.290 +#define GL_GENERATE_MIPMAP 0x8191 8.291 +#define GL_GENERATE_MIPMAP_HINT 0x8192 8.292 +#define GL_DEPTH_COMPONENT16 0x81A5 8.293 +#define GL_DEPTH_COMPONENT24 0x81A6 8.294 +#define GL_DEPTH_COMPONENT32 0x81A7 8.295 +#define GL_MIRRORED_REPEAT 0x8370 8.296 +#define GL_FOG_COORDINATE_SOURCE 0x8450 8.297 +#define GL_FOG_COORDINATE 0x8451 8.298 +#define GL_FRAGMENT_DEPTH 0x8452 8.299 +#define GL_CURRENT_FOG_COORDINATE 0x8453 8.300 +#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 8.301 +#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 8.302 +#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 8.303 +#define GL_FOG_COORDINATE_ARRAY 0x8457 8.304 +#define GL_COLOR_SUM 0x8458 8.305 +#define GL_CURRENT_SECONDARY_COLOR 0x8459 8.306 +#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A 8.307 +#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B 8.308 +#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C 8.309 +#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D 8.310 +#define GL_SECONDARY_COLOR_ARRAY 0x845E 8.311 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD 8.312 +#define GL_TEXTURE_FILTER_CONTROL 0x8500 8.313 +#define GL_TEXTURE_LOD_BIAS 0x8501 8.314 +#define GL_INCR_WRAP 0x8507 8.315 +#define GL_DECR_WRAP 0x8508 8.316 +#define GL_TEXTURE_DEPTH_SIZE 0x884A 8.317 +#define GL_DEPTH_TEXTURE_MODE 0x884B 8.318 +#define GL_TEXTURE_COMPARE_MODE 0x884C 8.319 +#define GL_TEXTURE_COMPARE_FUNC 0x884D 8.320 +#define GL_COMPARE_R_TO_TEXTURE 0x884E 8.321 +#endif 8.322 + 8.323 +#ifndef GL_ARB_multitexture 8.324 +#define GL_TEXTURE0_ARB 0x84C0 8.325 +#define GL_TEXTURE1_ARB 0x84C1 8.326 +#define GL_TEXTURE2_ARB 0x84C2 8.327 +#define GL_TEXTURE3_ARB 0x84C3 8.328 +#define GL_TEXTURE4_ARB 0x84C4 8.329 +#define GL_TEXTURE5_ARB 0x84C5 8.330 +#define GL_TEXTURE6_ARB 0x84C6 8.331 +#define GL_TEXTURE7_ARB 0x84C7 8.332 +#define GL_TEXTURE8_ARB 0x84C8 8.333 +#define GL_TEXTURE9_ARB 0x84C9 8.334 +#define GL_TEXTURE10_ARB 0x84CA 8.335 +#define GL_TEXTURE11_ARB 0x84CB 8.336 +#define GL_TEXTURE12_ARB 0x84CC 8.337 +#define GL_TEXTURE13_ARB 0x84CD 8.338 +#define GL_TEXTURE14_ARB 0x84CE 8.339 +#define GL_TEXTURE15_ARB 0x84CF 8.340 +#define GL_TEXTURE16_ARB 0x84D0 8.341 +#define GL_TEXTURE17_ARB 0x84D1 8.342 +#define GL_TEXTURE18_ARB 0x84D2 8.343 +#define GL_TEXTURE19_ARB 0x84D3 8.344 +#define GL_TEXTURE20_ARB 0x84D4 8.345 +#define GL_TEXTURE21_ARB 0x84D5 8.346 +#define GL_TEXTURE22_ARB 0x84D6 8.347 +#define GL_TEXTURE23_ARB 0x84D7 8.348 +#define GL_TEXTURE24_ARB 0x84D8 8.349 +#define GL_TEXTURE25_ARB 0x84D9 8.350 +#define GL_TEXTURE26_ARB 0x84DA 8.351 +#define GL_TEXTURE27_ARB 0x84DB 8.352 +#define GL_TEXTURE28_ARB 0x84DC 8.353 +#define GL_TEXTURE29_ARB 0x84DD 8.354 +#define GL_TEXTURE30_ARB 0x84DE 8.355 +#define GL_TEXTURE31_ARB 0x84DF 8.356 +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 8.357 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 8.358 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 8.359 +#endif 8.360 + 8.361 +#ifndef GL_ARB_transpose_matrix 8.362 +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 8.363 +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 8.364 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 8.365 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 8.366 +#endif 8.367 + 8.368 +#ifndef GL_ARB_multisample 8.369 +#define GL_MULTISAMPLE_ARB 0x809D 8.370 +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E 8.371 +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F 8.372 +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 8.373 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 8.374 +#define GL_SAMPLES_ARB 0x80A9 8.375 +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA 8.376 +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB 8.377 +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 8.378 +#endif 8.379 + 8.380 +#ifndef GL_ARB_texture_env_add 8.381 +#endif 8.382 + 8.383 +#ifndef GL_ARB_texture_cube_map 8.384 +#define GL_NORMAL_MAP_ARB 0x8511 8.385 +#define GL_REFLECTION_MAP_ARB 0x8512 8.386 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 8.387 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 8.388 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 8.389 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 8.390 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 8.391 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 8.392 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 8.393 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A 8.394 +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B 8.395 +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C 8.396 +#endif 8.397 + 8.398 +#ifndef GL_ARB_texture_compression 8.399 +#define GL_COMPRESSED_ALPHA_ARB 0x84E9 8.400 +#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA 8.401 +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB 8.402 +#define GL_COMPRESSED_INTENSITY_ARB 0x84EC 8.403 +#define GL_COMPRESSED_RGB_ARB 0x84ED 8.404 +#define GL_COMPRESSED_RGBA_ARB 0x84EE 8.405 +#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF 8.406 +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 8.407 +#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 8.408 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 8.409 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 8.410 +#endif 8.411 + 8.412 +#ifndef GL_ARB_texture_border_clamp 8.413 +#define GL_CLAMP_TO_BORDER_ARB 0x812D 8.414 +#endif 8.415 + 8.416 +#ifndef GL_ARB_point_parameters 8.417 +#define GL_POINT_SIZE_MIN_ARB 0x8126 8.418 +#define GL_POINT_SIZE_MAX_ARB 0x8127 8.419 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 8.420 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 8.421 +#endif 8.422 + 8.423 +#ifndef GL_ARB_vertex_blend 8.424 +#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 8.425 +#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 8.426 +#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 8.427 +#define GL_VERTEX_BLEND_ARB 0x86A7 8.428 +#define GL_CURRENT_WEIGHT_ARB 0x86A8 8.429 +#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 8.430 +#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA 8.431 +#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB 8.432 +#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC 8.433 +#define GL_WEIGHT_ARRAY_ARB 0x86AD 8.434 +#define GL_MODELVIEW0_ARB 0x1700 8.435 +#define GL_MODELVIEW1_ARB 0x850A 8.436 +#define GL_MODELVIEW2_ARB 0x8722 8.437 +#define GL_MODELVIEW3_ARB 0x8723 8.438 +#define GL_MODELVIEW4_ARB 0x8724 8.439 +#define GL_MODELVIEW5_ARB 0x8725 8.440 +#define GL_MODELVIEW6_ARB 0x8726 8.441 +#define GL_MODELVIEW7_ARB 0x8727 8.442 +#define GL_MODELVIEW8_ARB 0x8728 8.443 +#define GL_MODELVIEW9_ARB 0x8729 8.444 +#define GL_MODELVIEW10_ARB 0x872A 8.445 +#define GL_MODELVIEW11_ARB 0x872B 8.446 +#define GL_MODELVIEW12_ARB 0x872C 8.447 +#define GL_MODELVIEW13_ARB 0x872D 8.448 +#define GL_MODELVIEW14_ARB 0x872E 8.449 +#define GL_MODELVIEW15_ARB 0x872F 8.450 +#define GL_MODELVIEW16_ARB 0x8730 8.451 +#define GL_MODELVIEW17_ARB 0x8731 8.452 +#define GL_MODELVIEW18_ARB 0x8732 8.453 +#define GL_MODELVIEW19_ARB 0x8733 8.454 +#define GL_MODELVIEW20_ARB 0x8734 8.455 +#define GL_MODELVIEW21_ARB 0x8735 8.456 +#define GL_MODELVIEW22_ARB 0x8736 8.457 +#define GL_MODELVIEW23_ARB 0x8737 8.458 +#define GL_MODELVIEW24_ARB 0x8738 8.459 +#define GL_MODELVIEW25_ARB 0x8739 8.460 +#define GL_MODELVIEW26_ARB 0x873A 8.461 +#define GL_MODELVIEW27_ARB 0x873B 8.462 +#define GL_MODELVIEW28_ARB 0x873C 8.463 +#define GL_MODELVIEW29_ARB 0x873D 8.464 +#define GL_MODELVIEW30_ARB 0x873E 8.465 +#define GL_MODELVIEW31_ARB 0x873F 8.466 +#endif 8.467 + 8.468 +#ifndef GL_ARB_matrix_palette 8.469 +#define GL_MATRIX_PALETTE_ARB 0x8840 8.470 +#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 8.471 +#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 8.472 +#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 8.473 +#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 8.474 +#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 8.475 +#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 8.476 +#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 8.477 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 8.478 +#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 8.479 +#endif 8.480 + 8.481 +#ifndef GL_ARB_texture_env_combine 8.482 +#define GL_COMBINE_ARB 0x8570 8.483 +#define GL_COMBINE_RGB_ARB 0x8571 8.484 +#define GL_COMBINE_ALPHA_ARB 0x8572 8.485 +#define GL_SOURCE0_RGB_ARB 0x8580 8.486 +#define GL_SOURCE1_RGB_ARB 0x8581 8.487 +#define GL_SOURCE2_RGB_ARB 0x8582 8.488 +#define GL_SOURCE0_ALPHA_ARB 0x8588 8.489 +#define GL_SOURCE1_ALPHA_ARB 0x8589 8.490 +#define GL_SOURCE2_ALPHA_ARB 0x858A 8.491 +#define GL_OPERAND0_RGB_ARB 0x8590 8.492 +#define GL_OPERAND1_RGB_ARB 0x8591 8.493 +#define GL_OPERAND2_RGB_ARB 0x8592 8.494 +#define GL_OPERAND0_ALPHA_ARB 0x8598 8.495 +#define GL_OPERAND1_ALPHA_ARB 0x8599 8.496 +#define GL_OPERAND2_ALPHA_ARB 0x859A 8.497 +#define GL_RGB_SCALE_ARB 0x8573 8.498 +#define GL_ADD_SIGNED_ARB 0x8574 8.499 +#define GL_INTERPOLATE_ARB 0x8575 8.500 +#define GL_SUBTRACT_ARB 0x84E7 8.501 +#define GL_CONSTANT_ARB 0x8576 8.502 +#define GL_PRIMARY_COLOR_ARB 0x8577 8.503 +#define GL_PREVIOUS_ARB 0x8578 8.504 +#endif 8.505 + 8.506 +#ifndef GL_ARB_texture_env_crossbar 8.507 +#endif 8.508 + 8.509 +#ifndef GL_ARB_texture_env_dot3 8.510 +#define GL_DOT3_RGB_ARB 0x86AE 8.511 +#define GL_DOT3_RGBA_ARB 0x86AF 8.512 +#endif 8.513 + 8.514 +#ifndef GL_ARB_texture_mirrored_repeat 8.515 +#define GL_MIRRORED_REPEAT_ARB 0x8370 8.516 +#endif 8.517 + 8.518 +#ifndef GL_ARB_depth_texture 8.519 +#define GL_DEPTH_COMPONENT16_ARB 0x81A5 8.520 +#define GL_DEPTH_COMPONENT24_ARB 0x81A6 8.521 +#define GL_DEPTH_COMPONENT32_ARB 0x81A7 8.522 +#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A 8.523 +#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B 8.524 +#endif 8.525 + 8.526 +#ifndef GL_ARB_shadow 8.527 +#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C 8.528 +#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D 8.529 +#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E 8.530 +#endif 8.531 + 8.532 +#ifndef GL_ARB_shadow_ambient 8.533 +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF 8.534 +#endif 8.535 + 8.536 +#ifndef GL_ARB_window_pos 8.537 +#endif 8.538 + 8.539 +#ifndef GL_ARB_vertex_program 8.540 +#define GL_VERTEX_PROGRAM_ARB 0x8620 8.541 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 8.542 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 8.543 +#define GL_COLOR_SUM_ARB 0x8458 8.544 +#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 8.545 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 8.546 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 8.547 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 8.548 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 8.549 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A 8.550 +#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 8.551 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 8.552 +#define GL_PROGRAM_LENGTH_ARB 0x8627 8.553 +#define GL_PROGRAM_FORMAT_ARB 0x8876 8.554 +#define GL_PROGRAM_BINDING_ARB 0x8677 8.555 +#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 8.556 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 8.557 +#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 8.558 +#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 8.559 +#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 8.560 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 8.561 +#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 8.562 +#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 8.563 +#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 8.564 +#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 8.565 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA 8.566 +#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB 8.567 +#define GL_PROGRAM_ATTRIBS_ARB 0x88AC 8.568 +#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD 8.569 +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE 8.570 +#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF 8.571 +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 8.572 +#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 8.573 +#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 8.574 +#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 8.575 +#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 8.576 +#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 8.577 +#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 8.578 +#define GL_PROGRAM_STRING_ARB 0x8628 8.579 +#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B 8.580 +#define GL_CURRENT_MATRIX_ARB 0x8641 8.581 +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 8.582 +#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 8.583 +#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 8.584 +#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F 8.585 +#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E 8.586 +#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 8.587 +#define GL_MATRIX0_ARB 0x88C0 8.588 +#define GL_MATRIX1_ARB 0x88C1 8.589 +#define GL_MATRIX2_ARB 0x88C2 8.590 +#define GL_MATRIX3_ARB 0x88C3 8.591 +#define GL_MATRIX4_ARB 0x88C4 8.592 +#define GL_MATRIX5_ARB 0x88C5 8.593 +#define GL_MATRIX6_ARB 0x88C6 8.594 +#define GL_MATRIX7_ARB 0x88C7 8.595 +#define GL_MATRIX8_ARB 0x88C8 8.596 +#define GL_MATRIX9_ARB 0x88C9 8.597 +#define GL_MATRIX10_ARB 0x88CA 8.598 +#define GL_MATRIX11_ARB 0x88CB 8.599 +#define GL_MATRIX12_ARB 0x88CC 8.600 +#define GL_MATRIX13_ARB 0x88CD 8.601 +#define GL_MATRIX14_ARB 0x88CE 8.602 +#define GL_MATRIX15_ARB 0x88CF 8.603 +#define GL_MATRIX16_ARB 0x88D0 8.604 +#define GL_MATRIX17_ARB 0x88D1 8.605 +#define GL_MATRIX18_ARB 0x88D2 8.606 +#define GL_MATRIX19_ARB 0x88D3 8.607 +#define GL_MATRIX20_ARB 0x88D4 8.608 +#define GL_MATRIX21_ARB 0x88D5 8.609 +#define GL_MATRIX22_ARB 0x88D6 8.610 +#define GL_MATRIX23_ARB 0x88D7 8.611 +#define GL_MATRIX24_ARB 0x88D8 8.612 +#define GL_MATRIX25_ARB 0x88D9 8.613 +#define GL_MATRIX26_ARB 0x88DA 8.614 +#define GL_MATRIX27_ARB 0x88DB 8.615 +#define GL_MATRIX28_ARB 0x88DC 8.616 +#define GL_MATRIX29_ARB 0x88DD 8.617 +#define GL_MATRIX30_ARB 0x88DE 8.618 +#define GL_MATRIX31_ARB 0x88DF 8.619 +#endif 8.620 + 8.621 +#ifndef GL_EXT_abgr 8.622 +#define GL_ABGR_EXT 0x8000 8.623 +#endif 8.624 + 8.625 +#ifndef GL_EXT_blend_color 8.626 +#define GL_CONSTANT_COLOR_EXT 0x8001 8.627 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 8.628 +#define GL_CONSTANT_ALPHA_EXT 0x8003 8.629 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 8.630 +#define GL_BLEND_COLOR_EXT 0x8005 8.631 +#endif 8.632 + 8.633 +#ifndef GL_EXT_polygon_offset 8.634 +#define GL_POLYGON_OFFSET_EXT 0x8037 8.635 +#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 8.636 +#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 8.637 +#endif 8.638 + 8.639 +#ifndef GL_EXT_texture 8.640 +#define GL_ALPHA4_EXT 0x803B 8.641 +#define GL_ALPHA8_EXT 0x803C 8.642 +#define GL_ALPHA12_EXT 0x803D 8.643 +#define GL_ALPHA16_EXT 0x803E 8.644 +#define GL_LUMINANCE4_EXT 0x803F 8.645 +#define GL_LUMINANCE8_EXT 0x8040 8.646 +#define GL_LUMINANCE12_EXT 0x8041 8.647 +#define GL_LUMINANCE16_EXT 0x8042 8.648 +#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 8.649 +#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 8.650 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 8.651 +#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 8.652 +#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 8.653 +#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 8.654 +#define GL_INTENSITY_EXT 0x8049 8.655 +#define GL_INTENSITY4_EXT 0x804A 8.656 +#define GL_INTENSITY8_EXT 0x804B 8.657 +#define GL_INTENSITY12_EXT 0x804C 8.658 +#define GL_INTENSITY16_EXT 0x804D 8.659 +#define GL_RGB2_EXT 0x804E 8.660 +#define GL_RGB4_EXT 0x804F 8.661 +#define GL_RGB5_EXT 0x8050 8.662 +#define GL_RGB8_EXT 0x8051 8.663 +#define GL_RGB10_EXT 0x8052 8.664 +#define GL_RGB12_EXT 0x8053 8.665 +#define GL_RGB16_EXT 0x8054 8.666 +#define GL_RGBA2_EXT 0x8055 8.667 +#define GL_RGBA4_EXT 0x8056 8.668 +#define GL_RGB5_A1_EXT 0x8057 8.669 +#define GL_RGBA8_EXT 0x8058 8.670 +#define GL_RGB10_A2_EXT 0x8059 8.671 +#define GL_RGBA12_EXT 0x805A 8.672 +#define GL_RGBA16_EXT 0x805B 8.673 +#define GL_TEXTURE_RED_SIZE_EXT 0x805C 8.674 +#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D 8.675 +#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E 8.676 +#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F 8.677 +#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 8.678 +#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 8.679 +#define GL_REPLACE_EXT 0x8062 8.680 +#define GL_PROXY_TEXTURE_1D_EXT 0x8063 8.681 +#define GL_PROXY_TEXTURE_2D_EXT 0x8064 8.682 +#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 8.683 +#endif 8.684 + 8.685 +#ifndef GL_EXT_texture3D 8.686 +#define GL_PACK_SKIP_IMAGES_EXT 0x806B 8.687 +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C 8.688 +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D 8.689 +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E 8.690 +#define GL_TEXTURE_3D_EXT 0x806F 8.691 +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 8.692 +#define GL_TEXTURE_DEPTH_EXT 0x8071 8.693 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 8.694 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 8.695 +#endif 8.696 + 8.697 +#ifndef GL_SGIS_texture_filter4 8.698 +#define GL_FILTER4_SGIS 0x8146 8.699 +#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 8.700 +#endif 8.701 + 8.702 +#ifndef GL_EXT_subtexture 8.703 +#endif 8.704 + 8.705 +#ifndef GL_EXT_copy_texture 8.706 +#endif 8.707 + 8.708 +#ifndef GL_EXT_histogram 8.709 +#define GL_HISTOGRAM_EXT 0x8024 8.710 +#define GL_PROXY_HISTOGRAM_EXT 0x8025 8.711 +#define GL_HISTOGRAM_WIDTH_EXT 0x8026 8.712 +#define GL_HISTOGRAM_FORMAT_EXT 0x8027 8.713 +#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 8.714 +#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 8.715 +#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A 8.716 +#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B 8.717 +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C 8.718 +#define GL_HISTOGRAM_SINK_EXT 0x802D 8.719 +#define GL_MINMAX_EXT 0x802E 8.720 +#define GL_MINMAX_FORMAT_EXT 0x802F 8.721 +#define GL_MINMAX_SINK_EXT 0x8030 8.722 +#define GL_TABLE_TOO_LARGE_EXT 0x8031 8.723 +#endif 8.724 + 8.725 +#ifndef GL_EXT_convolution 8.726 +#define GL_CONVOLUTION_1D_EXT 0x8010 8.727 +#define GL_CONVOLUTION_2D_EXT 0x8011 8.728 +#define GL_SEPARABLE_2D_EXT 0x8012 8.729 +#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 8.730 +#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 8.731 +#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 8.732 +#define GL_REDUCE_EXT 0x8016 8.733 +#define GL_CONVOLUTION_FORMAT_EXT 0x8017 8.734 +#define GL_CONVOLUTION_WIDTH_EXT 0x8018 8.735 +#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 8.736 +#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A 8.737 +#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B 8.738 +#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C 8.739 +#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D 8.740 +#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E 8.741 +#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F 8.742 +#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 8.743 +#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 8.744 +#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 8.745 +#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 8.746 +#endif 8.747 + 8.748 +#ifndef GL_SGI_color_matrix 8.749 +#define GL_COLOR_MATRIX_SGI 0x80B1 8.750 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 8.751 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 8.752 +#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 8.753 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 8.754 +#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 8.755 +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 8.756 +#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 8.757 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 8.758 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA 8.759 +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB 8.760 +#endif 8.761 + 8.762 +#ifndef GL_SGI_color_table 8.763 +#define GL_COLOR_TABLE_SGI 0x80D0 8.764 +#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 8.765 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 8.766 +#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 8.767 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 8.768 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 8.769 +#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 8.770 +#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 8.771 +#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 8.772 +#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 8.773 +#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA 8.774 +#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB 8.775 +#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC 8.776 +#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD 8.777 +#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE 8.778 +#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF 8.779 +#endif 8.780 + 8.781 +#ifndef GL_SGIS_pixel_texture 8.782 +#define GL_PIXEL_TEXTURE_SGIS 0x8353 8.783 +#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 8.784 +#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 8.785 +#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 8.786 +#endif 8.787 + 8.788 +#ifndef GL_SGIX_pixel_texture 8.789 +#define GL_PIXEL_TEX_GEN_SGIX 0x8139 8.790 +#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B 8.791 +#endif 8.792 + 8.793 +#ifndef GL_SGIS_texture4D 8.794 +#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 8.795 +#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 8.796 +#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 8.797 +#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 8.798 +#define GL_TEXTURE_4D_SGIS 0x8134 8.799 +#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 8.800 +#define GL_TEXTURE_4DSIZE_SGIS 0x8136 8.801 +#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 8.802 +#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 8.803 +#define GL_TEXTURE_4D_BINDING_SGIS 0x814F 8.804 +#endif 8.805 + 8.806 +#ifndef GL_SGI_texture_color_table 8.807 +#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC 8.808 +#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD 8.809 +#endif 8.810 + 8.811 +#ifndef GL_EXT_cmyka 8.812 +#define GL_CMYK_EXT 0x800C 8.813 +#define GL_CMYKA_EXT 0x800D 8.814 +#define GL_PACK_CMYK_HINT_EXT 0x800E 8.815 +#define GL_UNPACK_CMYK_HINT_EXT 0x800F 8.816 +#endif 8.817 + 8.818 +#ifndef GL_EXT_texture_object 8.819 +#define GL_TEXTURE_PRIORITY_EXT 0x8066 8.820 +#define GL_TEXTURE_RESIDENT_EXT 0x8067 8.821 +#define GL_TEXTURE_1D_BINDING_EXT 0x8068 8.822 +#define GL_TEXTURE_2D_BINDING_EXT 0x8069 8.823 +#define GL_TEXTURE_3D_BINDING_EXT 0x806A 8.824 +#endif 8.825 + 8.826 +#ifndef GL_SGIS_detail_texture 8.827 +#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 8.828 +#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 8.829 +#define GL_LINEAR_DETAIL_SGIS 0x8097 8.830 +#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 8.831 +#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 8.832 +#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A 8.833 +#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B 8.834 +#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C 8.835 +#endif 8.836 + 8.837 +#ifndef GL_SGIS_sharpen_texture 8.838 +#define GL_LINEAR_SHARPEN_SGIS 0x80AD 8.839 +#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE 8.840 +#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF 8.841 +#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 8.842 +#endif 8.843 + 8.844 +#ifndef GL_EXT_packed_pixels 8.845 +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 8.846 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 8.847 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 8.848 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 8.849 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 8.850 +#endif 8.851 + 8.852 +#ifndef GL_SGIS_texture_lod 8.853 +#define GL_TEXTURE_MIN_LOD_SGIS 0x813A 8.854 +#define GL_TEXTURE_MAX_LOD_SGIS 0x813B 8.855 +#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C 8.856 +#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D 8.857 +#endif 8.858 + 8.859 +#ifndef GL_SGIS_multisample 8.860 +#define GL_MULTISAMPLE_SGIS 0x809D 8.861 +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E 8.862 +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F 8.863 +#define GL_SAMPLE_MASK_SGIS 0x80A0 8.864 +#define GL_1PASS_SGIS 0x80A1 8.865 +#define GL_2PASS_0_SGIS 0x80A2 8.866 +#define GL_2PASS_1_SGIS 0x80A3 8.867 +#define GL_4PASS_0_SGIS 0x80A4 8.868 +#define GL_4PASS_1_SGIS 0x80A5 8.869 +#define GL_4PASS_2_SGIS 0x80A6 8.870 +#define GL_4PASS_3_SGIS 0x80A7 8.871 +#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 8.872 +#define GL_SAMPLES_SGIS 0x80A9 8.873 +#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA 8.874 +#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB 8.875 +#define GL_SAMPLE_PATTERN_SGIS 0x80AC 8.876 +#endif 8.877 + 8.878 +#ifndef GL_EXT_rescale_normal 8.879 +#define GL_RESCALE_NORMAL_EXT 0x803A 8.880 +#endif 8.881 + 8.882 +#ifndef GL_EXT_vertex_array 8.883 +#define GL_VERTEX_ARRAY_EXT 0x8074 8.884 +#define GL_NORMAL_ARRAY_EXT 0x8075 8.885 +#define GL_COLOR_ARRAY_EXT 0x8076 8.886 +#define GL_INDEX_ARRAY_EXT 0x8077 8.887 +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 8.888 +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 8.889 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A 8.890 +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B 8.891 +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C 8.892 +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D 8.893 +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E 8.894 +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F 8.895 +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 8.896 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 8.897 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 8.898 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 8.899 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 8.900 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 8.901 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 8.902 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 8.903 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 8.904 +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 8.905 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A 8.906 +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B 8.907 +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C 8.908 +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D 8.909 +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E 8.910 +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F 8.911 +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 8.912 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 8.913 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 8.914 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 8.915 +#endif 8.916 + 8.917 +#ifndef GL_EXT_misc_attribute 8.918 +#endif 8.919 + 8.920 +#ifndef GL_SGIS_generate_mipmap 8.921 +#define GL_GENERATE_MIPMAP_SGIS 0x8191 8.922 +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 8.923 +#endif 8.924 + 8.925 +#ifndef GL_SGIX_clipmap 8.926 +#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 8.927 +#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 8.928 +#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 8.929 +#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 8.930 +#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 8.931 +#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 8.932 +#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 8.933 +#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 8.934 +#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 8.935 +#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D 8.936 +#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E 8.937 +#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F 8.938 +#endif 8.939 + 8.940 +#ifndef GL_SGIX_shadow 8.941 +#define GL_TEXTURE_COMPARE_SGIX 0x819A 8.942 +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B 8.943 +#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C 8.944 +#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D 8.945 +#endif 8.946 + 8.947 +#ifndef GL_SGIS_texture_edge_clamp 8.948 +#define GL_CLAMP_TO_EDGE_SGIS 0x812F 8.949 +#endif 8.950 + 8.951 +#ifndef GL_EXT_blend_minmax 8.952 +#define GL_FUNC_ADD_EXT 0x8006 8.953 +#define GL_MIN_EXT 0x8007 8.954 +#define GL_MAX_EXT 0x8008 8.955 +#define GL_BLEND_EQUATION_EXT 0x8009 8.956 +#endif 8.957 + 8.958 +#ifndef GL_EXT_blend_subtract 8.959 +#define GL_FUNC_SUBTRACT_EXT 0x800A 8.960 +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B 8.961 +#endif 8.962 + 8.963 +#ifndef GL_EXT_blend_logic_op 8.964 +#endif 8.965 + 8.966 +#ifndef GL_SGIX_interlace 8.967 +#define GL_INTERLACE_SGIX 0x8094 8.968 +#endif 8.969 + 8.970 +#ifndef GL_SGIX_pixel_tiles 8.971 +#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E 8.972 +#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F 8.973 +#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 8.974 +#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 8.975 +#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 8.976 +#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 8.977 +#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 8.978 +#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 8.979 +#endif 8.980 + 8.981 +#ifndef GL_SGIS_texture_select 8.982 +#define GL_DUAL_ALPHA4_SGIS 0x8110 8.983 +#define GL_DUAL_ALPHA8_SGIS 0x8111 8.984 +#define GL_DUAL_ALPHA12_SGIS 0x8112 8.985 +#define GL_DUAL_ALPHA16_SGIS 0x8113 8.986 +#define GL_DUAL_LUMINANCE4_SGIS 0x8114 8.987 +#define GL_DUAL_LUMINANCE8_SGIS 0x8115 8.988 +#define GL_DUAL_LUMINANCE12_SGIS 0x8116 8.989 +#define GL_DUAL_LUMINANCE16_SGIS 0x8117 8.990 +#define GL_DUAL_INTENSITY4_SGIS 0x8118 8.991 +#define GL_DUAL_INTENSITY8_SGIS 0x8119 8.992 +#define GL_DUAL_INTENSITY12_SGIS 0x811A 8.993 +#define GL_DUAL_INTENSITY16_SGIS 0x811B 8.994 +#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C 8.995 +#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D 8.996 +#define GL_QUAD_ALPHA4_SGIS 0x811E 8.997 +#define GL_QUAD_ALPHA8_SGIS 0x811F 8.998 +#define GL_QUAD_LUMINANCE4_SGIS 0x8120 8.999 +#define GL_QUAD_LUMINANCE8_SGIS 0x8121 8.1000 +#define GL_QUAD_INTENSITY4_SGIS 0x8122 8.1001 +#define GL_QUAD_INTENSITY8_SGIS 0x8123 8.1002 +#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 8.1003 +#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 8.1004 +#endif 8.1005 + 8.1006 +#ifndef GL_SGIX_sprite 8.1007 +#define GL_SPRITE_SGIX 0x8148 8.1008 +#define GL_SPRITE_MODE_SGIX 0x8149 8.1009 +#define GL_SPRITE_AXIS_SGIX 0x814A 8.1010 +#define GL_SPRITE_TRANSLATION_SGIX 0x814B 8.1011 +#define GL_SPRITE_AXIAL_SGIX 0x814C 8.1012 +#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D 8.1013 +#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E 8.1014 +#endif 8.1015 + 8.1016 +#ifndef GL_SGIX_texture_multi_buffer 8.1017 +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E 8.1018 +#endif 8.1019 + 8.1020 +#ifndef GL_EXT_point_parameters 8.1021 +#define GL_POINT_SIZE_MIN_EXT 0x8126 8.1022 +#define GL_POINT_SIZE_MAX_EXT 0x8127 8.1023 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 8.1024 +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 8.1025 +#endif 8.1026 + 8.1027 +#ifndef GL_SGIS_point_parameters 8.1028 +#define GL_POINT_SIZE_MIN_SGIS 0x8126 8.1029 +#define GL_POINT_SIZE_MAX_SGIS 0x8127 8.1030 +#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 8.1031 +#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 8.1032 +#endif 8.1033 + 8.1034 +#ifndef GL_SGIX_instruments 8.1035 +#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 8.1036 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 8.1037 +#endif 8.1038 + 8.1039 +#ifndef GL_SGIX_texture_scale_bias 8.1040 +#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 8.1041 +#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A 8.1042 +#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B 8.1043 +#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C 8.1044 +#endif 8.1045 + 8.1046 +#ifndef GL_SGIX_framezoom 8.1047 +#define GL_FRAMEZOOM_SGIX 0x818B 8.1048 +#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C 8.1049 +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D 8.1050 +#endif 8.1051 + 8.1052 +#ifndef GL_SGIX_tag_sample_buffer 8.1053 +#endif 8.1054 + 8.1055 +#ifndef GL_FfdMaskSGIX 8.1056 +#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 8.1057 +#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 8.1058 +#endif 8.1059 + 8.1060 +#ifndef GL_SGIX_polynomial_ffd 8.1061 +#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 8.1062 +#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 8.1063 +#define GL_DEFORMATIONS_MASK_SGIX 0x8196 8.1064 +#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 8.1065 +#endif 8.1066 + 8.1067 +#ifndef GL_SGIX_reference_plane 8.1068 +#define GL_REFERENCE_PLANE_SGIX 0x817D 8.1069 +#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E 8.1070 +#endif 8.1071 + 8.1072 +#ifndef GL_SGIX_flush_raster 8.1073 +#endif 8.1074 + 8.1075 +#ifndef GL_SGIX_depth_texture 8.1076 +#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 8.1077 +#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 8.1078 +#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 8.1079 +#endif 8.1080 + 8.1081 +#ifndef GL_SGIS_fog_function 8.1082 +#define GL_FOG_FUNC_SGIS 0x812A 8.1083 +#define GL_FOG_FUNC_POINTS_SGIS 0x812B 8.1084 +#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C 8.1085 +#endif 8.1086 + 8.1087 +#ifndef GL_SGIX_fog_offset 8.1088 +#define GL_FOG_OFFSET_SGIX 0x8198 8.1089 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 8.1090 +#endif 8.1091 + 8.1092 +#ifndef GL_HP_image_transform 8.1093 +#define GL_IMAGE_SCALE_X_HP 0x8155 8.1094 +#define GL_IMAGE_SCALE_Y_HP 0x8156 8.1095 +#define GL_IMAGE_TRANSLATE_X_HP 0x8157 8.1096 +#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 8.1097 +#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 8.1098 +#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A 8.1099 +#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B 8.1100 +#define GL_IMAGE_MAG_FILTER_HP 0x815C 8.1101 +#define GL_IMAGE_MIN_FILTER_HP 0x815D 8.1102 +#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E 8.1103 +#define GL_CUBIC_HP 0x815F 8.1104 +#define GL_AVERAGE_HP 0x8160 8.1105 +#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 8.1106 +#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 8.1107 +#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 8.1108 +#endif 8.1109 + 8.1110 +#ifndef GL_HP_convolution_border_modes 8.1111 +#define GL_IGNORE_BORDER_HP 0x8150 8.1112 +#define GL_CONSTANT_BORDER_HP 0x8151 8.1113 +#define GL_REPLICATE_BORDER_HP 0x8153 8.1114 +#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 8.1115 +#endif 8.1116 + 8.1117 +#ifndef GL_INGR_palette_buffer 8.1118 +#endif 8.1119 + 8.1120 +#ifndef GL_SGIX_texture_add_env 8.1121 +#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE 8.1122 +#endif 8.1123 + 8.1124 +#ifndef GL_EXT_color_subtable 8.1125 +#endif 8.1126 + 8.1127 +#ifndef GL_PGI_vertex_hints 8.1128 +#define GL_VERTEX_DATA_HINT_PGI 0x1A22A 8.1129 +#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B 8.1130 +#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C 8.1131 +#define GL_MAX_VERTEX_HINT_PGI 0x1A22D 8.1132 +#define GL_COLOR3_BIT_PGI 0x00010000 8.1133 +#define GL_COLOR4_BIT_PGI 0x00020000 8.1134 +#define GL_EDGEFLAG_BIT_PGI 0x00040000 8.1135 +#define GL_INDEX_BIT_PGI 0x00080000 8.1136 +#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 8.1137 +#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 8.1138 +#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 8.1139 +#define GL_MAT_EMISSION_BIT_PGI 0x00800000 8.1140 +#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 8.1141 +#define GL_MAT_SHININESS_BIT_PGI 0x02000000 8.1142 +#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 8.1143 +#define GL_NORMAL_BIT_PGI 0x08000000 8.1144 +#define GL_TEXCOORD1_BIT_PGI 0x10000000 8.1145 +#define GL_TEXCOORD2_BIT_PGI 0x20000000 8.1146 +#define GL_TEXCOORD3_BIT_PGI 0x40000000 8.1147 +#define GL_TEXCOORD4_BIT_PGI 0x80000000 8.1148 +#define GL_VERTEX23_BIT_PGI 0x00000004 8.1149 +#define GL_VERTEX4_BIT_PGI 0x00000008 8.1150 +#endif 8.1151 + 8.1152 +#ifndef GL_PGI_misc_hints 8.1153 +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 8.1154 +#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD 8.1155 +#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE 8.1156 +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 8.1157 +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 8.1158 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 8.1159 +#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C 8.1160 +#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D 8.1161 +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E 8.1162 +#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F 8.1163 +#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 8.1164 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 8.1165 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 8.1166 +#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 8.1167 +#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 8.1168 +#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 8.1169 +#define GL_CLIP_NEAR_HINT_PGI 0x1A220 8.1170 +#define GL_CLIP_FAR_HINT_PGI 0x1A221 8.1171 +#define GL_WIDE_LINE_HINT_PGI 0x1A222 8.1172 +#define GL_BACK_NORMALS_HINT_PGI 0x1A223 8.1173 +#endif 8.1174 + 8.1175 +#ifndef GL_EXT_paletted_texture 8.1176 +#define GL_COLOR_INDEX1_EXT 0x80E2 8.1177 +#define GL_COLOR_INDEX2_EXT 0x80E3 8.1178 +#define GL_COLOR_INDEX4_EXT 0x80E4 8.1179 +#define GL_COLOR_INDEX8_EXT 0x80E5 8.1180 +#define GL_COLOR_INDEX12_EXT 0x80E6 8.1181 +#define GL_COLOR_INDEX16_EXT 0x80E7 8.1182 +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED 8.1183 +#endif 8.1184 + 8.1185 +#ifndef GL_EXT_clip_volume_hint 8.1186 +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 8.1187 +#endif 8.1188 + 8.1189 +#ifndef GL_SGIX_list_priority 8.1190 +#define GL_LIST_PRIORITY_SGIX 0x8182 8.1191 +#endif 8.1192 + 8.1193 +#ifndef GL_SGIX_ir_instrument1 8.1194 +#define GL_IR_INSTRUMENT1_SGIX 0x817F 8.1195 +#endif 8.1196 + 8.1197 +#ifndef GL_SGIX_calligraphic_fragment 8.1198 +#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 8.1199 +#endif 8.1200 + 8.1201 +#ifndef GL_SGIX_texture_lod_bias 8.1202 +#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E 8.1203 +#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F 8.1204 +#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 8.1205 +#endif 8.1206 + 8.1207 +#ifndef GL_SGIX_shadow_ambient 8.1208 +#define GL_SHADOW_AMBIENT_SGIX 0x80BF 8.1209 +#endif 8.1210 + 8.1211 +#ifndef GL_EXT_index_texture 8.1212 +#endif 8.1213 + 8.1214 +#ifndef GL_EXT_index_material 8.1215 +#define GL_INDEX_MATERIAL_EXT 0x81B8 8.1216 +#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 8.1217 +#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA 8.1218 +#endif 8.1219 + 8.1220 +#ifndef GL_EXT_index_func 8.1221 +#define GL_INDEX_TEST_EXT 0x81B5 8.1222 +#define GL_INDEX_TEST_FUNC_EXT 0x81B6 8.1223 +#define GL_INDEX_TEST_REF_EXT 0x81B7 8.1224 +#endif 8.1225 + 8.1226 +#ifndef GL_EXT_index_array_formats 8.1227 +#define GL_IUI_V2F_EXT 0x81AD 8.1228 +#define GL_IUI_V3F_EXT 0x81AE 8.1229 +#define GL_IUI_N3F_V2F_EXT 0x81AF 8.1230 +#define GL_IUI_N3F_V3F_EXT 0x81B0 8.1231 +#define GL_T2F_IUI_V2F_EXT 0x81B1 8.1232 +#define GL_T2F_IUI_V3F_EXT 0x81B2 8.1233 +#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 8.1234 +#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 8.1235 +#endif 8.1236 + 8.1237 +#ifndef GL_EXT_compiled_vertex_array 8.1238 +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 8.1239 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 8.1240 +#endif 8.1241 + 8.1242 +#ifndef GL_EXT_cull_vertex 8.1243 +#define GL_CULL_VERTEX_EXT 0x81AA 8.1244 +#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB 8.1245 +#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC 8.1246 +#endif 8.1247 + 8.1248 +#ifndef GL_SGIX_ycrcb 8.1249 +#define GL_YCRCB_422_SGIX 0x81BB 8.1250 +#define GL_YCRCB_444_SGIX 0x81BC 8.1251 +#endif 8.1252 + 8.1253 +#ifndef GL_SGIX_fragment_lighting 8.1254 +#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 8.1255 +#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 8.1256 +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 8.1257 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 8.1258 +#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 8.1259 +#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 8.1260 +#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 8.1261 +#define GL_LIGHT_ENV_MODE_SGIX 0x8407 8.1262 +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 8.1263 +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 8.1264 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A 8.1265 +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B 8.1266 +#define GL_FRAGMENT_LIGHT0_SGIX 0x840C 8.1267 +#define GL_FRAGMENT_LIGHT1_SGIX 0x840D 8.1268 +#define GL_FRAGMENT_LIGHT2_SGIX 0x840E 8.1269 +#define GL_FRAGMENT_LIGHT3_SGIX 0x840F 8.1270 +#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 8.1271 +#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 8.1272 +#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 8.1273 +#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 8.1274 +#endif 8.1275 + 8.1276 +#ifndef GL_IBM_rasterpos_clip 8.1277 +#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 8.1278 +#endif 8.1279 + 8.1280 +#ifndef GL_HP_texture_lighting 8.1281 +#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 8.1282 +#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 8.1283 +#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 8.1284 +#endif 8.1285 + 8.1286 +#ifndef GL_EXT_draw_range_elements 8.1287 +#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 8.1288 +#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 8.1289 +#endif 8.1290 + 8.1291 +#ifndef GL_WIN_phong_shading 8.1292 +#define GL_PHONG_WIN 0x80EA 8.1293 +#define GL_PHONG_HINT_WIN 0x80EB 8.1294 +#endif 8.1295 + 8.1296 +#ifndef GL_WIN_specular_fog 8.1297 +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC 8.1298 +#endif 8.1299 + 8.1300 +#ifndef GL_EXT_light_texture 8.1301 +#define GL_FRAGMENT_MATERIAL_EXT 0x8349 8.1302 +#define GL_FRAGMENT_NORMAL_EXT 0x834A 8.1303 +#define GL_FRAGMENT_COLOR_EXT 0x834C 8.1304 +#define GL_ATTENUATION_EXT 0x834D 8.1305 +#define GL_SHADOW_ATTENUATION_EXT 0x834E 8.1306 +#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F 8.1307 +#define GL_TEXTURE_LIGHT_EXT 0x8350 8.1308 +#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 8.1309 +#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 8.1310 +/* reuse GL_FRAGMENT_DEPTH_EXT */ 8.1311 +#endif 8.1312 + 8.1313 +#ifndef GL_SGIX_blend_alpha_minmax 8.1314 +#define GL_ALPHA_MIN_SGIX 0x8320 8.1315 +#define GL_ALPHA_MAX_SGIX 0x8321 8.1316 +#endif 8.1317 + 8.1318 +#ifndef GL_SGIX_impact_pixel_texture 8.1319 +#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184 8.1320 +#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185 8.1321 +#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186 8.1322 +#define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187 8.1323 +#define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188 8.1324 +#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189 8.1325 +#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A 8.1326 +#endif 8.1327 + 8.1328 +#ifndef GL_EXT_bgra 8.1329 +#define GL_BGR_EXT 0x80E0 8.1330 +#define GL_BGRA_EXT 0x80E1 8.1331 +#endif 8.1332 + 8.1333 +#ifndef GL_SGIX_async 8.1334 +#define GL_ASYNC_MARKER_SGIX 0x8329 8.1335 +#endif 8.1336 + 8.1337 +#ifndef GL_SGIX_async_pixel 8.1338 +#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C 8.1339 +#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D 8.1340 +#define GL_ASYNC_READ_PIXELS_SGIX 0x835E 8.1341 +#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F 8.1342 +#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 8.1343 +#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 8.1344 +#endif 8.1345 + 8.1346 +#ifndef GL_SGIX_async_histogram 8.1347 +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C 8.1348 +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D 8.1349 +#endif 8.1350 + 8.1351 +#ifndef GL_INTEL_texture_scissor 8.1352 +#endif 8.1353 + 8.1354 +#ifndef GL_INTEL_parallel_arrays 8.1355 +#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 8.1356 +#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 8.1357 +#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 8.1358 +#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 8.1359 +#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 8.1360 +#endif 8.1361 + 8.1362 +#ifndef GL_HP_occlusion_test 8.1363 +#define GL_OCCLUSION_TEST_HP 0x8165 8.1364 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 8.1365 +#endif 8.1366 + 8.1367 +#ifndef GL_EXT_pixel_transform 8.1368 +#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 8.1369 +#define GL_PIXEL_MAG_FILTER_EXT 0x8331 8.1370 +#define GL_PIXEL_MIN_FILTER_EXT 0x8332 8.1371 +#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 8.1372 +#define GL_CUBIC_EXT 0x8334 8.1373 +#define GL_AVERAGE_EXT 0x8335 8.1374 +#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 8.1375 +#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 8.1376 +#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 8.1377 +#endif 8.1378 + 8.1379 +#ifndef GL_EXT_pixel_transform_color_table 8.1380 +#endif 8.1381 + 8.1382 +#ifndef GL_EXT_shared_texture_palette 8.1383 +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB 8.1384 +#endif 8.1385 + 8.1386 +#ifndef GL_EXT_separate_specular_color 8.1387 +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 8.1388 +#define GL_SINGLE_COLOR_EXT 0x81F9 8.1389 +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA 8.1390 +#endif 8.1391 + 8.1392 +#ifndef GL_EXT_secondary_color 8.1393 +#define GL_COLOR_SUM_EXT 0x8458 8.1394 +#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 8.1395 +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A 8.1396 +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B 8.1397 +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C 8.1398 +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D 8.1399 +#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E 8.1400 +#endif 8.1401 + 8.1402 +#ifndef GL_EXT_texture_perturb_normal 8.1403 +#define GL_PERTURB_EXT 0x85AE 8.1404 +#define GL_TEXTURE_NORMAL_EXT 0x85AF 8.1405 +#endif 8.1406 + 8.1407 +#ifndef GL_EXT_multi_draw_arrays 8.1408 +#endif 8.1409 + 8.1410 +#ifndef GL_EXT_fog_coord 8.1411 +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 8.1412 +#define GL_FOG_COORDINATE_EXT 0x8451 8.1413 +#define GL_FRAGMENT_DEPTH_EXT 0x8452 8.1414 +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 8.1415 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 8.1416 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 8.1417 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 8.1418 +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 8.1419 +#endif 8.1420 + 8.1421 +#ifndef GL_REND_screen_coordinates 8.1422 +#define GL_SCREEN_COORDINATES_REND 0x8490 8.1423 +#define GL_INVERTED_SCREEN_W_REND 0x8491 8.1424 +#endif 8.1425 + 8.1426 +#ifndef GL_EXT_coordinate_frame 8.1427 +#define GL_TANGENT_ARRAY_EXT 0x8439 8.1428 +#define GL_BINORMAL_ARRAY_EXT 0x843A 8.1429 +#define GL_CURRENT_TANGENT_EXT 0x843B 8.1430 +#define GL_CURRENT_BINORMAL_EXT 0x843C 8.1431 +#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E 8.1432 +#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F 8.1433 +#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 8.1434 +#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 8.1435 +#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 8.1436 +#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 8.1437 +#define GL_MAP1_TANGENT_EXT 0x8444 8.1438 +#define GL_MAP2_TANGENT_EXT 0x8445 8.1439 +#define GL_MAP1_BINORMAL_EXT 0x8446 8.1440 +#define GL_MAP2_BINORMAL_EXT 0x8447 8.1441 +#endif 8.1442 + 8.1443 +#ifndef GL_EXT_texture_env_combine 8.1444 +#define GL_COMBINE_EXT 0x8570 8.1445 +#define GL_COMBINE_RGB_EXT 0x8571 8.1446 +#define GL_COMBINE_ALPHA_EXT 0x8572 8.1447 +#define GL_RGB_SCALE_EXT 0x8573 8.1448 +#define GL_ADD_SIGNED_EXT 0x8574 8.1449 +#define GL_INTERPOLATE_EXT 0x8575 8.1450 +#define GL_CONSTANT_EXT 0x8576 8.1451 +#define GL_PRIMARY_COLOR_EXT 0x8577 8.1452 +#define GL_PREVIOUS_EXT 0x8578 8.1453 +#define GL_SOURCE0_RGB_EXT 0x8580 8.1454 +#define GL_SOURCE1_RGB_EXT 0x8581 8.1455 +#define GL_SOURCE2_RGB_EXT 0x8582 8.1456 +#define GL_SOURCE0_ALPHA_EXT 0x8588 8.1457 +#define GL_SOURCE1_ALPHA_EXT 0x8589 8.1458 +#define GL_SOURCE2_ALPHA_EXT 0x858A 8.1459 +#define GL_OPERAND0_RGB_EXT 0x8590 8.1460 +#define GL_OPERAND1_RGB_EXT 0x8591 8.1461 +#define GL_OPERAND2_RGB_EXT 0x8592 8.1462 +#define GL_OPERAND0_ALPHA_EXT 0x8598 8.1463 +#define GL_OPERAND1_ALPHA_EXT 0x8599 8.1464 +#define GL_OPERAND2_ALPHA_EXT 0x859A 8.1465 +#endif 8.1466 + 8.1467 +#ifndef GL_APPLE_specular_vector 8.1468 +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 8.1469 +#endif 8.1470 + 8.1471 +#ifndef GL_APPLE_transform_hint 8.1472 +#define GL_TRANSFORM_HINT_APPLE 0x85B1 8.1473 +#endif 8.1474 + 8.1475 +#ifndef GL_SGIX_fog_scale 8.1476 +#define GL_FOG_SCALE_SGIX 0x81FC 8.1477 +#define GL_FOG_SCALE_VALUE_SGIX 0x81FD 8.1478 +#endif 8.1479 + 8.1480 +#ifndef GL_SUNX_constant_data 8.1481 +#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 8.1482 +#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 8.1483 +#endif 8.1484 + 8.1485 +#ifndef GL_SUN_global_alpha 8.1486 +#define GL_GLOBAL_ALPHA_SUN 0x81D9 8.1487 +#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA 8.1488 +#endif 8.1489 + 8.1490 +#ifndef GL_SUN_triangle_list 8.1491 +#define GL_RESTART_SUN 0x0001 8.1492 +#define GL_REPLACE_MIDDLE_SUN 0x0002 8.1493 +#define GL_REPLACE_OLDEST_SUN 0x0003 8.1494 +#define GL_TRIANGLE_LIST_SUN 0x81D7 8.1495 +#define GL_REPLACEMENT_CODE_SUN 0x81D8 8.1496 +#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 8.1497 +#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 8.1498 +#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 8.1499 +#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 8.1500 +#define GL_R1UI_V3F_SUN 0x85C4 8.1501 +#define GL_R1UI_C4UB_V3F_SUN 0x85C5 8.1502 +#define GL_R1UI_C3F_V3F_SUN 0x85C6 8.1503 +#define GL_R1UI_N3F_V3F_SUN 0x85C7 8.1504 +#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 8.1505 +#define GL_R1UI_T2F_V3F_SUN 0x85C9 8.1506 +#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA 8.1507 +#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB 8.1508 +#endif 8.1509 + 8.1510 +#ifndef GL_SUN_vertex 8.1511 +#endif 8.1512 + 8.1513 +#ifndef GL_EXT_blend_func_separate 8.1514 +#define GL_BLEND_DST_RGB_EXT 0x80C8 8.1515 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 8.1516 +#define GL_BLEND_DST_ALPHA_EXT 0x80CA 8.1517 +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB 8.1518 +#endif 8.1519 + 8.1520 +#ifndef GL_INGR_color_clamp 8.1521 +#define GL_RED_MIN_CLAMP_INGR 0x8560 8.1522 +#define GL_GREEN_MIN_CLAMP_INGR 0x8561 8.1523 +#define GL_BLUE_MIN_CLAMP_INGR 0x8562 8.1524 +#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 8.1525 +#define GL_RED_MAX_CLAMP_INGR 0x8564 8.1526 +#define GL_GREEN_MAX_CLAMP_INGR 0x8565 8.1527 +#define GL_BLUE_MAX_CLAMP_INGR 0x8566 8.1528 +#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 8.1529 +#endif 8.1530 + 8.1531 +#ifndef GL_INGR_interlace_read 8.1532 +#define GL_INTERLACE_READ_INGR 0x8568 8.1533 +#endif 8.1534 + 8.1535 +#ifndef GL_EXT_stencil_wrap 8.1536 +#define GL_INCR_WRAP_EXT 0x8507 8.1537 +#define GL_DECR_WRAP_EXT 0x8508 8.1538 +#endif 8.1539 + 8.1540 +#ifndef GL_EXT_422_pixels 8.1541 +#define GL_422_EXT 0x80CC 8.1542 +#define GL_422_REV_EXT 0x80CD 8.1543 +#define GL_422_AVERAGE_EXT 0x80CE 8.1544 +#define GL_422_REV_AVERAGE_EXT 0x80CF 8.1545 +#endif 8.1546 + 8.1547 +#ifndef GL_NV_texgen_reflection 8.1548 +#define GL_NORMAL_MAP_NV 0x8511 8.1549 +#define GL_REFLECTION_MAP_NV 0x8512 8.1550 +#endif 8.1551 + 8.1552 +#ifndef GL_EXT_texture_cube_map 8.1553 +#define GL_NORMAL_MAP_EXT 0x8511 8.1554 +#define GL_REFLECTION_MAP_EXT 0x8512 8.1555 +#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 8.1556 +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 8.1557 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 8.1558 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 8.1559 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 8.1560 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 8.1561 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 8.1562 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A 8.1563 +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B 8.1564 +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C 8.1565 +#endif 8.1566 + 8.1567 +#ifndef GL_SUN_convolution_border_modes 8.1568 +#define GL_WRAP_BORDER_SUN 0x81D4 8.1569 +#endif 8.1570 + 8.1571 +#ifndef GL_EXT_texture_env_add 8.1572 +#endif 8.1573 + 8.1574 +#ifndef GL_EXT_texture_lod_bias 8.1575 +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD 8.1576 +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 8.1577 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 8.1578 +#endif 8.1579 + 8.1580 +#ifndef GL_EXT_texture_filter_anisotropic 8.1581 +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE 8.1582 +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF 8.1583 +#endif 8.1584 + 8.1585 +#ifndef GL_EXT_vertex_weighting 8.1586 +#define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH 8.1587 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 8.1588 +#define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX 8.1589 +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 8.1590 +#define GL_VERTEX_WEIGHTING_EXT 0x8509 8.1591 +#define GL_MODELVIEW0_EXT GL_MODELVIEW 8.1592 +#define GL_MODELVIEW1_EXT 0x850A 8.1593 +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B 8.1594 +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C 8.1595 +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D 8.1596 +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E 8.1597 +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F 8.1598 +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 8.1599 +#endif 8.1600 + 8.1601 +#ifndef GL_NV_light_max_exponent 8.1602 +#define GL_MAX_SHININESS_NV 0x8504 8.1603 +#define GL_MAX_SPOT_EXPONENT_NV 0x8505 8.1604 +#endif 8.1605 + 8.1606 +#ifndef GL_NV_vertex_array_range 8.1607 +#define GL_VERTEX_ARRAY_RANGE_NV 0x851D 8.1608 +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E 8.1609 +#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F 8.1610 +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 8.1611 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 8.1612 +#endif 8.1613 + 8.1614 +#ifndef GL_NV_register_combiners 8.1615 +#define GL_REGISTER_COMBINERS_NV 0x8522 8.1616 +#define GL_VARIABLE_A_NV 0x8523 8.1617 +#define GL_VARIABLE_B_NV 0x8524 8.1618 +#define GL_VARIABLE_C_NV 0x8525 8.1619 +#define GL_VARIABLE_D_NV 0x8526 8.1620 +#define GL_VARIABLE_E_NV 0x8527 8.1621 +#define GL_VARIABLE_F_NV 0x8528 8.1622 +#define GL_VARIABLE_G_NV 0x8529 8.1623 +#define GL_CONSTANT_COLOR0_NV 0x852A 8.1624 +#define GL_CONSTANT_COLOR1_NV 0x852B 8.1625 +#define GL_PRIMARY_COLOR_NV 0x852C 8.1626 +#define GL_SECONDARY_COLOR_NV 0x852D 8.1627 +#define GL_SPARE0_NV 0x852E 8.1628 +#define GL_SPARE1_NV 0x852F 8.1629 +#define GL_DISCARD_NV 0x8530 8.1630 +#define GL_E_TIMES_F_NV 0x8531 8.1631 +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 8.1632 +#define GL_UNSIGNED_IDENTITY_NV 0x8536 8.1633 +#define GL_UNSIGNED_INVERT_NV 0x8537 8.1634 +#define GL_EXPAND_NORMAL_NV 0x8538 8.1635 +#define GL_EXPAND_NEGATE_NV 0x8539 8.1636 +#define GL_HALF_BIAS_NORMAL_NV 0x853A 8.1637 +#define GL_HALF_BIAS_NEGATE_NV 0x853B 8.1638 +#define GL_SIGNED_IDENTITY_NV 0x853C 8.1639 +#define GL_SIGNED_NEGATE_NV 0x853D 8.1640 +#define GL_SCALE_BY_TWO_NV 0x853E 8.1641 +#define GL_SCALE_BY_FOUR_NV 0x853F 8.1642 +#define GL_SCALE_BY_ONE_HALF_NV 0x8540 8.1643 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 8.1644 +#define GL_COMBINER_INPUT_NV 0x8542 8.1645 +#define GL_COMBINER_MAPPING_NV 0x8543 8.1646 +#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 8.1647 +#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 8.1648 +#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 8.1649 +#define GL_COMBINER_MUX_SUM_NV 0x8547 8.1650 +#define GL_COMBINER_SCALE_NV 0x8548 8.1651 +#define GL_COMBINER_BIAS_NV 0x8549 8.1652 +#define GL_COMBINER_AB_OUTPUT_NV 0x854A 8.1653 +#define GL_COMBINER_CD_OUTPUT_NV 0x854B 8.1654 +#define GL_COMBINER_SUM_OUTPUT_NV 0x854C 8.1655 +#define GL_MAX_GENERAL_COMBINERS_NV 0x854D 8.1656 +#define GL_NUM_GENERAL_COMBINERS_NV 0x854E 8.1657 +#define GL_COLOR_SUM_CLAMP_NV 0x854F 8.1658 +#define GL_COMBINER0_NV 0x8550 8.1659 +#define GL_COMBINER1_NV 0x8551 8.1660 +#define GL_COMBINER2_NV 0x8552 8.1661 +#define GL_COMBINER3_NV 0x8553 8.1662 +#define GL_COMBINER4_NV 0x8554 8.1663 +#define GL_COMBINER5_NV 0x8555 8.1664 +#define GL_COMBINER6_NV 0x8556 8.1665 +#define GL_COMBINER7_NV 0x8557 8.1666 +/* reuse GL_TEXTURE0_ARB */ 8.1667 +/* reuse GL_TEXTURE1_ARB */ 8.1668 +/* reuse GL_ZERO */ 8.1669 +/* reuse GL_NONE */ 8.1670 +/* reuse GL_FOG */ 8.1671 +#endif 8.1672 + 8.1673 +#ifndef GL_NV_fog_distance 8.1674 +#define GL_FOG_DISTANCE_MODE_NV 0x855A 8.1675 +#define GL_EYE_RADIAL_NV 0x855B 8.1676 +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C 8.1677 +/* reuse GL_EYE_PLANE */ 8.1678 +#endif 8.1679 + 8.1680 +#ifndef GL_NV_texgen_emboss 8.1681 +#define GL_EMBOSS_LIGHT_NV 0x855D 8.1682 +#define GL_EMBOSS_CONSTANT_NV 0x855E 8.1683 +#define GL_EMBOSS_MAP_NV 0x855F 8.1684 +#endif 8.1685 + 8.1686 +#ifndef GL_NV_blend_square 8.1687 +#endif 8.1688 + 8.1689 +#ifndef GL_NV_texture_env_combine4 8.1690 +#define GL_COMBINE4_NV 0x8503 8.1691 +#define GL_SOURCE3_RGB_NV 0x8583 8.1692 +#define GL_SOURCE3_ALPHA_NV 0x858B 8.1693 +#define GL_OPERAND3_RGB_NV 0x8593 8.1694 +#define GL_OPERAND3_ALPHA_NV 0x859B 8.1695 +#endif 8.1696 + 8.1697 +#ifndef GL_MESA_resize_buffers 8.1698 +#endif 8.1699 + 8.1700 +#ifndef GL_MESA_window_pos 8.1701 +#endif 8.1702 + 8.1703 +#ifndef GL_EXT_texture_compression_s3tc 8.1704 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 8.1705 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 8.1706 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 8.1707 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 8.1708 +#endif 8.1709 + 8.1710 +#ifndef GL_IBM_cull_vertex 8.1711 +#define GL_CULL_VERTEX_IBM 103050 8.1712 +#endif 8.1713 + 8.1714 +#ifndef GL_IBM_multimode_draw_arrays 8.1715 +#endif 8.1716 + 8.1717 +#ifndef GL_IBM_vertex_array_lists 8.1718 +#define GL_VERTEX_ARRAY_LIST_IBM 103070 8.1719 +#define GL_NORMAL_ARRAY_LIST_IBM 103071 8.1720 +#define GL_COLOR_ARRAY_LIST_IBM 103072 8.1721 +#define GL_INDEX_ARRAY_LIST_IBM 103073 8.1722 +#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 8.1723 +#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 8.1724 +#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 8.1725 +#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 8.1726 +#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 8.1727 +#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 8.1728 +#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 8.1729 +#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 8.1730 +#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 8.1731 +#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 8.1732 +#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 8.1733 +#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 8.1734 +#endif 8.1735 + 8.1736 +#ifndef GL_SGIX_subsample 8.1737 +#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 8.1738 +#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 8.1739 +#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 8.1740 +#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 8.1741 +#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 8.1742 +#endif 8.1743 + 8.1744 +#ifndef GL_SGIX_ycrcb_subsample 8.1745 +#endif 8.1746 + 8.1747 +#ifndef GL_SGIX_ycrcba 8.1748 +#define GL_YCRCB_SGIX 0x8318 8.1749 +#define GL_YCRCBA_SGIX 0x8319 8.1750 +#endif 8.1751 + 8.1752 +#ifndef GL_SGI_depth_pass_instrument 8.1753 +#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310 8.1754 +#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311 8.1755 +#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312 8.1756 +#endif 8.1757 + 8.1758 +#ifndef GL_3DFX_texture_compression_FXT1 8.1759 +#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 8.1760 +#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 8.1761 +#endif 8.1762 + 8.1763 +#ifndef GL_3DFX_multisample 8.1764 +#define GL_MULTISAMPLE_3DFX 0x86B2 8.1765 +#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 8.1766 +#define GL_SAMPLES_3DFX 0x86B4 8.1767 +#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 8.1768 +#endif 8.1769 + 8.1770 +#ifndef GL_3DFX_tbuffer 8.1771 +#endif 8.1772 + 8.1773 +#ifndef GL_EXT_multisample 8.1774 +#define GL_MULTISAMPLE_EXT 0x809D 8.1775 +#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E 8.1776 +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F 8.1777 +#define GL_SAMPLE_MASK_EXT 0x80A0 8.1778 +#define GL_1PASS_EXT 0x80A1 8.1779 +#define GL_2PASS_0_EXT 0x80A2 8.1780 +#define GL_2PASS_1_EXT 0x80A3 8.1781 +#define GL_4PASS_0_EXT 0x80A4 8.1782 +#define GL_4PASS_1_EXT 0x80A5 8.1783 +#define GL_4PASS_2_EXT 0x80A6 8.1784 +#define GL_4PASS_3_EXT 0x80A7 8.1785 +#define GL_SAMPLE_BUFFERS_EXT 0x80A8 8.1786 +#define GL_SAMPLES_EXT 0x80A9 8.1787 +#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA 8.1788 +#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB 8.1789 +#define GL_SAMPLE_PATTERN_EXT 0x80AC 8.1790 +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 8.1791 +#endif 8.1792 + 8.1793 +#ifndef GL_SGIX_vertex_preclip 8.1794 +#define GL_VERTEX_PRECLIP_SGIX 0x83EE 8.1795 +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF 8.1796 +#endif 8.1797 + 8.1798 +#ifndef GL_SGIX_convolution_accuracy 8.1799 +#define GL_CONVOLUTION_HINT_SGIX 0x8316 8.1800 +#endif 8.1801 + 8.1802 +#ifndef GL_SGIX_resample 8.1803 +#define GL_PACK_RESAMPLE_SGIX 0x842C 8.1804 +#define GL_UNPACK_RESAMPLE_SGIX 0x842D 8.1805 +#define GL_RESAMPLE_REPLICATE_SGIX 0x842E 8.1806 +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F 8.1807 +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 8.1808 +#endif 8.1809 + 8.1810 +#ifndef GL_SGIS_point_line_texgen 8.1811 +#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 8.1812 +#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 8.1813 +#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 8.1814 +#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 8.1815 +#define GL_EYE_POINT_SGIS 0x81F4 8.1816 +#define GL_OBJECT_POINT_SGIS 0x81F5 8.1817 +#define GL_EYE_LINE_SGIS 0x81F6 8.1818 +#define GL_OBJECT_LINE_SGIS 0x81F7 8.1819 +#endif 8.1820 + 8.1821 +#ifndef GL_SGIS_texture_color_mask 8.1822 +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF 8.1823 +#endif 8.1824 + 8.1825 +#ifndef GL_EXT_texture_env_dot3 8.1826 +#define GL_DOT3_RGB_EXT 0x8740 8.1827 +#define GL_DOT3_RGBA_EXT 0x8741 8.1828 +#endif 8.1829 + 8.1830 +#ifndef GL_ATI_texture_mirror_once 8.1831 +#define GL_MIRROR_CLAMP_ATI 0x8742 8.1832 +#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 8.1833 +#endif 8.1834 + 8.1835 +#ifndef GL_NV_fence 8.1836 +#define GL_ALL_COMPLETED_NV 0x84F2 8.1837 +#define GL_FENCE_STATUS_NV 0x84F3 8.1838 +#define GL_FENCE_CONDITION_NV 0x84F4 8.1839 +#endif 8.1840 + 8.1841 +#ifndef GL_IBM_texture_mirrored_repeat 8.1842 +#define GL_MIRRORED_REPEAT_IBM 0x8370 8.1843 +#endif 8.1844 + 8.1845 +#ifndef GL_NV_evaluators 8.1846 +#define GL_EVAL_2D_NV 0x86C0 8.1847 +#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 8.1848 +#define GL_MAP_TESSELLATION_NV 0x86C2 8.1849 +#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 8.1850 +#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 8.1851 +#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 8.1852 +#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 8.1853 +#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 8.1854 +#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 8.1855 +#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 8.1856 +#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA 8.1857 +#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB 8.1858 +#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC 8.1859 +#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD 8.1860 +#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE 8.1861 +#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF 8.1862 +#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 8.1863 +#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 8.1864 +#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 8.1865 +#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 8.1866 +#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 8.1867 +#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 8.1868 +#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 8.1869 +#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 8.1870 +#endif 8.1871 + 8.1872 +#ifndef GL_NV_packed_depth_stencil 8.1873 +#define GL_DEPTH_STENCIL_NV 0x84F9 8.1874 +#define GL_UNSIGNED_INT_24_8_NV 0x84FA 8.1875 +#endif 8.1876 + 8.1877 +#ifndef GL_NV_register_combiners2 8.1878 +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 8.1879 +#endif 8.1880 + 8.1881 +#ifndef GL_NV_texture_compression_vtc 8.1882 +#endif 8.1883 + 8.1884 +#ifndef GL_NV_texture_rectangle 8.1885 +#define GL_TEXTURE_RECTANGLE_NV 0x84F5 8.1886 +#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 8.1887 +#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 8.1888 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 8.1889 +#endif 8.1890 + 8.1891 +#ifndef GL_NV_texture_shader 8.1892 +#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C 8.1893 +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D 8.1894 +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E 8.1895 +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 8.1896 +#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA 8.1897 +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB 8.1898 +#define GL_DSDT_MAG_INTENSITY_NV 0x86DC 8.1899 +#define GL_SHADER_CONSISTENT_NV 0x86DD 8.1900 +#define GL_TEXTURE_SHADER_NV 0x86DE 8.1901 +#define GL_SHADER_OPERATION_NV 0x86DF 8.1902 +#define GL_CULL_MODES_NV 0x86E0 8.1903 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 8.1904 +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 8.1905 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 8.1906 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV 8.1907 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV 8.1908 +#define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV 8.1909 +#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 8.1910 +#define GL_CONST_EYE_NV 0x86E5 8.1911 +#define GL_PASS_THROUGH_NV 0x86E6 8.1912 +#define GL_CULL_FRAGMENT_NV 0x86E7 8.1913 +#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 8.1914 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 8.1915 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA 8.1916 +#define GL_DOT_PRODUCT_NV 0x86EC 8.1917 +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED 8.1918 +#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE 8.1919 +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 8.1920 +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 8.1921 +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 8.1922 +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 8.1923 +#define GL_HILO_NV 0x86F4 8.1924 +#define GL_DSDT_NV 0x86F5 8.1925 +#define GL_DSDT_MAG_NV 0x86F6 8.1926 +#define GL_DSDT_MAG_VIB_NV 0x86F7 8.1927 +#define GL_HILO16_NV 0x86F8 8.1928 +#define GL_SIGNED_HILO_NV 0x86F9 8.1929 +#define GL_SIGNED_HILO16_NV 0x86FA 8.1930 +#define GL_SIGNED_RGBA_NV 0x86FB 8.1931 +#define GL_SIGNED_RGBA8_NV 0x86FC 8.1932 +#define GL_SIGNED_RGB_NV 0x86FE 8.1933 +#define GL_SIGNED_RGB8_NV 0x86FF 8.1934 +#define GL_SIGNED_LUMINANCE_NV 0x8701 8.1935 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 8.1936 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 8.1937 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 8.1938 +#define GL_SIGNED_ALPHA_NV 0x8705 8.1939 +#define GL_SIGNED_ALPHA8_NV 0x8706 8.1940 +#define GL_SIGNED_INTENSITY_NV 0x8707 8.1941 +#define GL_SIGNED_INTENSITY8_NV 0x8708 8.1942 +#define GL_DSDT8_NV 0x8709 8.1943 +#define GL_DSDT8_MAG8_NV 0x870A 8.1944 +#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B 8.1945 +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C 8.1946 +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D 8.1947 +#define GL_HI_SCALE_NV 0x870E 8.1948 +#define GL_LO_SCALE_NV 0x870F 8.1949 +#define GL_DS_SCALE_NV 0x8710 8.1950 +#define GL_DT_SCALE_NV 0x8711 8.1951 +#define GL_MAGNITUDE_SCALE_NV 0x8712 8.1952 +#define GL_VIBRANCE_SCALE_NV 0x8713 8.1953 +#define GL_HI_BIAS_NV 0x8714 8.1954 +#define GL_LO_BIAS_NV 0x8715 8.1955 +#define GL_DS_BIAS_NV 0x8716 8.1956 +#define GL_DT_BIAS_NV 0x8717 8.1957 +#define GL_MAGNITUDE_BIAS_NV 0x8718 8.1958 +#define GL_VIBRANCE_BIAS_NV 0x8719 8.1959 +#define GL_TEXTURE_BORDER_VALUES_NV 0x871A 8.1960 +#define GL_TEXTURE_HI_SIZE_NV 0x871B 8.1961 +#define GL_TEXTURE_LO_SIZE_NV 0x871C 8.1962 +#define GL_TEXTURE_DS_SIZE_NV 0x871D 8.1963 +#define GL_TEXTURE_DT_SIZE_NV 0x871E 8.1964 +#define GL_TEXTURE_MAG_SIZE_NV 0x871F 8.1965 +#endif 8.1966 + 8.1967 +#ifndef GL_NV_texture_shader2 8.1968 +#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF 8.1969 +#endif 8.1970 + 8.1971 +#ifndef GL_NV_vertex_array_range2 8.1972 +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 8.1973 +#endif 8.1974 + 8.1975 +#ifndef GL_NV_vertex_program 8.1976 +#define GL_VERTEX_PROGRAM_NV 0x8620 8.1977 +#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 8.1978 +#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 8.1979 +#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 8.1980 +#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 8.1981 +#define GL_CURRENT_ATTRIB_NV 0x8626 8.1982 +#define GL_PROGRAM_LENGTH_NV 0x8627 8.1983 +#define GL_PROGRAM_STRING_NV 0x8628 8.1984 +#define GL_MODELVIEW_PROJECTION_NV 0x8629 8.1985 +#define GL_IDENTITY_NV 0x862A 8.1986 +#define GL_INVERSE_NV 0x862B 8.1987 +#define GL_TRANSPOSE_NV 0x862C 8.1988 +#define GL_INVERSE_TRANSPOSE_NV 0x862D 8.1989 +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E 8.1990 +#define GL_MAX_TRACK_MATRICES_NV 0x862F 8.1991 +#define GL_MATRIX0_NV 0x8630 8.1992 +#define GL_MATRIX1_NV 0x8631 8.1993 +#define GL_MATRIX2_NV 0x8632 8.1994 +#define GL_MATRIX3_NV 0x8633 8.1995 +#define GL_MATRIX4_NV 0x8634 8.1996 +#define GL_MATRIX5_NV 0x8635 8.1997 +#define GL_MATRIX6_NV 0x8636 8.1998 +#define GL_MATRIX7_NV 0x8637 8.1999 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 8.2000 +#define GL_CURRENT_MATRIX_NV 0x8641 8.2001 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 8.2002 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 8.2003 +#define GL_PROGRAM_PARAMETER_NV 0x8644 8.2004 +#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 8.2005 +#define GL_PROGRAM_TARGET_NV 0x8646 8.2006 +#define GL_PROGRAM_RESIDENT_NV 0x8647 8.2007 +#define GL_TRACK_MATRIX_NV 0x8648 8.2008 +#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 8.2009 +#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A 8.2010 +#define GL_PROGRAM_ERROR_POSITION_NV 0x864B 8.2011 +#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 8.2012 +#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 8.2013 +#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 8.2014 +#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 8.2015 +#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 8.2016 +#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 8.2017 +#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 8.2018 +#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 8.2019 +#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 8.2020 +#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 8.2021 +#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A 8.2022 +#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B 8.2023 +#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C 8.2024 +#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D 8.2025 +#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E 8.2026 +#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F 8.2027 +#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 8.2028 +#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 8.2029 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 8.2030 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 8.2031 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 8.2032 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 8.2033 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 8.2034 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 8.2035 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 8.2036 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 8.2037 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A 8.2038 +#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B 8.2039 +#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C 8.2040 +#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D 8.2041 +#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E 8.2042 +#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F 8.2043 +#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 8.2044 +#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 8.2045 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 8.2046 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 8.2047 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 8.2048 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 8.2049 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 8.2050 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 8.2051 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 8.2052 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 8.2053 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A 8.2054 +#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B 8.2055 +#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C 8.2056 +#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D 8.2057 +#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E 8.2058 +#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F 8.2059 +#endif 8.2060 + 8.2061 +#ifndef GL_SGIX_texture_coordinate_clamp 8.2062 +#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 8.2063 +#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A 8.2064 +#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B 8.2065 +#endif 8.2066 + 8.2067 +#ifndef GL_SGIX_scalebias_hint 8.2068 +#define GL_SCALEBIAS_HINT_SGIX 0x8322 8.2069 +#endif 8.2070 + 8.2071 +#ifndef GL_OML_interlace 8.2072 +#define GL_INTERLACE_OML 0x8980 8.2073 +#define GL_INTERLACE_READ_OML 0x8981 8.2074 +#endif 8.2075 + 8.2076 +#ifndef GL_OML_subsample 8.2077 +#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 8.2078 +#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 8.2079 +#endif 8.2080 + 8.2081 +#ifndef GL_OML_resample 8.2082 +#define GL_PACK_RESAMPLE_OML 0x8984 8.2083 +#define GL_UNPACK_RESAMPLE_OML 0x8985 8.2084 +#define GL_RESAMPLE_REPLICATE_OML 0x8986 8.2085 +#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 8.2086 +#define GL_RESAMPLE_AVERAGE_OML 0x8988 8.2087 +#define GL_RESAMPLE_DECIMATE_OML 0x8989 8.2088 +#endif 8.2089 + 8.2090 +#ifndef GL_NV_copy_depth_to_color 8.2091 +#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E 8.2092 +#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F 8.2093 +#endif 8.2094 + 8.2095 +#ifndef GL_ATI_envmap_bumpmap 8.2096 +#define GL_BUMP_ROT_MATRIX_ATI 0x8775 8.2097 +#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 8.2098 +#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 8.2099 +#define GL_BUMP_TEX_UNITS_ATI 0x8778 8.2100 +#define GL_DUDV_ATI 0x8779 8.2101 +#define GL_DU8DV8_ATI 0x877A 8.2102 +#define GL_BUMP_ENVMAP_ATI 0x877B 8.2103 +#define GL_BUMP_TARGET_ATI 0x877C 8.2104 +#endif 8.2105 + 8.2106 +#ifndef GL_ATI_fragment_shader 8.2107 +#define GL_FRAGMENT_SHADER_ATI 0x8920 8.2108 +#define GL_REG_0_ATI 0x8921 8.2109 +#define GL_REG_1_ATI 0x8922 8.2110 +#define GL_REG_2_ATI 0x8923 8.2111 +#define GL_REG_3_ATI 0x8924 8.2112 +#define GL_REG_4_ATI 0x8925 8.2113 +#define GL_REG_5_ATI 0x8926 8.2114 +#define GL_REG_6_ATI 0x8927 8.2115 +#define GL_REG_7_ATI 0x8928 8.2116 +#define GL_REG_8_ATI 0x8929 8.2117 +#define GL_REG_9_ATI 0x892A 8.2118 +#define GL_REG_10_ATI 0x892B 8.2119 +#define GL_REG_11_ATI 0x892C 8.2120 +#define GL_REG_12_ATI 0x892D 8.2121 +#define GL_REG_13_ATI 0x892E 8.2122 +#define GL_REG_14_ATI 0x892F 8.2123 +#define GL_REG_15_ATI 0x8930 8.2124 +#define GL_REG_16_ATI 0x8931 8.2125 +#define GL_REG_17_ATI 0x8932 8.2126 +#define GL_REG_18_ATI 0x8933 8.2127 +#define GL_REG_19_ATI 0x8934 8.2128 +#define GL_REG_20_ATI 0x8935 8.2129 +#define GL_REG_21_ATI 0x8936 8.2130 +#define GL_REG_22_ATI 0x8937 8.2131 +#define GL_REG_23_ATI 0x8938 8.2132 +#define GL_REG_24_ATI 0x8939 8.2133 +#define GL_REG_25_ATI 0x893A 8.2134 +#define GL_REG_26_ATI 0x893B 8.2135 +#define GL_REG_27_ATI 0x893C 8.2136 +#define GL_REG_28_ATI 0x893D 8.2137 +#define GL_REG_29_ATI 0x893E 8.2138 +#define GL_REG_30_ATI 0x893F 8.2139 +#define GL_REG_31_ATI 0x8940 8.2140 +#define GL_CON_0_ATI 0x8941 8.2141 +#define GL_CON_1_ATI 0x8942 8.2142 +#define GL_CON_2_ATI 0x8943 8.2143 +#define GL_CON_3_ATI 0x8944 8.2144 +#define GL_CON_4_ATI 0x8945 8.2145 +#define GL_CON_5_ATI 0x8946 8.2146 +#define GL_CON_6_ATI 0x8947 8.2147 +#define GL_CON_7_ATI 0x8948 8.2148 +#define GL_CON_8_ATI 0x8949 8.2149 +#define GL_CON_9_ATI 0x894A 8.2150 +#define GL_CON_10_ATI 0x894B 8.2151 +#define GL_CON_11_ATI 0x894C 8.2152 +#define GL_CON_12_ATI 0x894D 8.2153 +#define GL_CON_13_ATI 0x894E 8.2154 +#define GL_CON_14_ATI 0x894F 8.2155 +#define GL_CON_15_ATI 0x8950 8.2156 +#define GL_CON_16_ATI 0x8951 8.2157 +#define GL_CON_17_ATI 0x8952 8.2158 +#define GL_CON_18_ATI 0x8953 8.2159 +#define GL_CON_19_ATI 0x8954 8.2160 +#define GL_CON_20_ATI 0x8955 8.2161 +#define GL_CON_21_ATI 0x8956 8.2162 +#define GL_CON_22_ATI 0x8957 8.2163 +#define GL_CON_23_ATI 0x8958 8.2164 +#define GL_CON_24_ATI 0x8959 8.2165 +#define GL_CON_25_ATI 0x895A 8.2166 +#define GL_CON_26_ATI 0x895B 8.2167 +#define GL_CON_27_ATI 0x895C 8.2168 +#define GL_CON_28_ATI 0x895D 8.2169 +#define GL_CON_29_ATI 0x895E 8.2170 +#define GL_CON_30_ATI 0x895F 8.2171 +#define GL_CON_31_ATI 0x8960 8.2172 +#define GL_MOV_ATI 0x8961 8.2173 +#define GL_ADD_ATI 0x8963 8.2174 +#define GL_MUL_ATI 0x8964 8.2175 +#define GL_SUB_ATI 0x8965 8.2176 +#define GL_DOT3_ATI 0x8966 8.2177 +#define GL_DOT4_ATI 0x8967 8.2178 +#define GL_MAD_ATI 0x8968 8.2179 +#define GL_LERP_ATI 0x8969 8.2180 +#define GL_CND_ATI 0x896A 8.2181 +#define GL_CND0_ATI 0x896B 8.2182 +#define GL_DOT2_ADD_ATI 0x896C 8.2183 +#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D 8.2184 +#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E 8.2185 +#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F 8.2186 +#define GL_NUM_PASSES_ATI 0x8970 8.2187 +#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 8.2188 +#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 8.2189 +#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 8.2190 +#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 8.2191 +#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 8.2192 +#define GL_SWIZZLE_STR_ATI 0x8976 8.2193 +#define GL_SWIZZLE_STQ_ATI 0x8977 8.2194 +#define GL_SWIZZLE_STR_DR_ATI 0x8978 8.2195 +#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 8.2196 +#define GL_SWIZZLE_STRQ_ATI 0x897A 8.2197 +#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B 8.2198 +#define GL_RED_BIT_ATI 0x00000001 8.2199 +#define GL_GREEN_BIT_ATI 0x00000002 8.2200 +#define GL_BLUE_BIT_ATI 0x00000004 8.2201 +#define GL_2X_BIT_ATI 0x00000001 8.2202 +#define GL_4X_BIT_ATI 0x00000002 8.2203 +#define GL_8X_BIT_ATI 0x00000004 8.2204 +#define GL_HALF_BIT_ATI 0x00000008 8.2205 +#define GL_QUARTER_BIT_ATI 0x00000010 8.2206 +#define GL_EIGHTH_BIT_ATI 0x00000020 8.2207 +#define GL_SATURATE_BIT_ATI 0x00000040 8.2208 +#define GL_COMP_BIT_ATI 0x00000002 8.2209 +#define GL_NEGATE_BIT_ATI 0x00000004 8.2210 +#define GL_BIAS_BIT_ATI 0x00000008 8.2211 +#endif 8.2212 + 8.2213 +#ifndef GL_ATI_pn_triangles 8.2214 +#define GL_PN_TRIANGLES_ATI 0x87F0 8.2215 +#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 8.2216 +#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 8.2217 +#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 8.2218 +#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 8.2219 +#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 8.2220 +#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 8.2221 +#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 8.2222 +#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 8.2223 +#endif 8.2224 + 8.2225 +#ifndef GL_ATI_vertex_array_object 8.2226 +#define GL_STATIC_ATI 0x8760 8.2227 +#define GL_DYNAMIC_ATI 0x8761 8.2228 +#define GL_PRESERVE_ATI 0x8762 8.2229 +#define GL_DISCARD_ATI 0x8763 8.2230 +#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 8.2231 +#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 8.2232 +#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 8.2233 +#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 8.2234 +#endif 8.2235 + 8.2236 +#ifndef GL_EXT_vertex_shader 8.2237 +#define GL_VERTEX_SHADER_EXT 0x8780 8.2238 +#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 8.2239 +#define GL_OP_INDEX_EXT 0x8782 8.2240 +#define GL_OP_NEGATE_EXT 0x8783 8.2241 +#define GL_OP_DOT3_EXT 0x8784 8.2242 +#define GL_OP_DOT4_EXT 0x8785 8.2243 +#define GL_OP_MUL_EXT 0x8786 8.2244 +#define GL_OP_ADD_EXT 0x8787 8.2245 +#define GL_OP_MADD_EXT 0x8788 8.2246 +#define GL_OP_FRAC_EXT 0x8789 8.2247 +#define GL_OP_MAX_EXT 0x878A 8.2248 +#define GL_OP_MIN_EXT 0x878B 8.2249 +#define GL_OP_SET_GE_EXT 0x878C 8.2250 +#define GL_OP_SET_LT_EXT 0x878D 8.2251 +#define GL_OP_CLAMP_EXT 0x878E 8.2252 +#define GL_OP_FLOOR_EXT 0x878F 8.2253 +#define GL_OP_ROUND_EXT 0x8790 8.2254 +#define GL_OP_EXP_BASE_2_EXT 0x8791 8.2255 +#define GL_OP_LOG_BASE_2_EXT 0x8792 8.2256 +#define GL_OP_POWER_EXT 0x8793 8.2257 +#define GL_OP_RECIP_EXT 0x8794 8.2258 +#define GL_OP_RECIP_SQRT_EXT 0x8795 8.2259 +#define GL_OP_SUB_EXT 0x8796 8.2260 +#define GL_OP_CROSS_PRODUCT_EXT 0x8797 8.2261 +#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 8.2262 +#define GL_OP_MOV_EXT 0x8799 8.2263 +#define GL_OUTPUT_VERTEX_EXT 0x879A 8.2264 +#define GL_OUTPUT_COLOR0_EXT 0x879B 8.2265 +#define GL_OUTPUT_COLOR1_EXT 0x879C 8.2266 +#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D 8.2267 +#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E 8.2268 +#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F 8.2269 +#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 8.2270 +#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 8.2271 +#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 8.2272 +#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 8.2273 +#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 8.2274 +#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 8.2275 +#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 8.2276 +#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 8.2277 +#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 8.2278 +#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 8.2279 +#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA 8.2280 +#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB 8.2281 +#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC 8.2282 +#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD 8.2283 +#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE 8.2284 +#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF 8.2285 +#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 8.2286 +#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 8.2287 +#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 8.2288 +#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 8.2289 +#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 8.2290 +#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 8.2291 +#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 8.2292 +#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 8.2293 +#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 8.2294 +#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 8.2295 +#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA 8.2296 +#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB 8.2297 +#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC 8.2298 +#define GL_OUTPUT_FOG_EXT 0x87BD 8.2299 +#define GL_SCALAR_EXT 0x87BE 8.2300 +#define GL_VECTOR_EXT 0x87BF 8.2301 +#define GL_MATRIX_EXT 0x87C0 8.2302 +#define GL_VARIANT_EXT 0x87C1 8.2303 +#define GL_INVARIANT_EXT 0x87C2 8.2304 +#define GL_LOCAL_CONSTANT_EXT 0x87C3 8.2305 +#define GL_LOCAL_EXT 0x87C4 8.2306 +#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 8.2307 +#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 8.2308 +#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 8.2309 +#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 8.2310 +#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 8.2311 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA 8.2312 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB 8.2313 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC 8.2314 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INARIANTS_EXT 0x87CD 8.2315 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE 8.2316 +#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF 8.2317 +#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 8.2318 +#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 8.2319 +#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 8.2320 +#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 8.2321 +#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 8.2322 +#define GL_X_EXT 0x87D5 8.2323 +#define GL_Y_EXT 0x87D6 8.2324 +#define GL_Z_EXT 0x87D7 8.2325 +#define GL_W_EXT 0x87D8 8.2326 +#define GL_NEGATIVE_X_EXT 0x87D9 8.2327 +#define GL_NEGATIVE_Y_EXT 0x87DA 8.2328 +#define GL_NEGATIVE_Z_EXT 0x87DB 8.2329 +#define GL_NEGATIVE_W_EXT 0x87DC 8.2330 +#define GL_ZERO_EXT 0x87DD 8.2331 +#define GL_ONE_EXT 0x87DE 8.2332 +#define GL_NEGATIVE_ONE_EXT 0x87DF 8.2333 +#define GL_NORMALIZED_RANGE_EXT 0x87E0 8.2334 +#define GL_FULL_RANGE_EXT 0x87E1 8.2335 +#define GL_CURRENT_VERTEX_EXT 0x87E2 8.2336 +#define GL_MVP_MATRIX_EXT 0x87E3 8.2337 +#define GL_VARIANT_VALUE_EXT 0x87E4 8.2338 +#define GL_VARIANT_DATATYPE_EXT 0x87E5 8.2339 +#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 8.2340 +#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 8.2341 +#define GL_VARIANT_ARRAY_EXT 0x87E8 8.2342 +#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 8.2343 +#define GL_INVARIANT_VALUE_EXT 0x87EA 8.2344 +#define GL_INVARIANT_DATATYPE_EXT 0x87EB 8.2345 +#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC 8.2346 +#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED 8.2347 +#endif 8.2348 + 8.2349 +#ifndef GL_ATI_vertex_streams 8.2350 +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B 8.2351 +#define GL_VERTEX_STREAM0_ATI 0x876C 8.2352 +#define GL_VERTEX_STREAM1_ATI 0x876D 8.2353 +#define GL_VERTEX_STREAM2_ATI 0x876E 8.2354 +#define GL_VERTEX_STREAM3_ATI 0x876F 8.2355 +#define GL_VERTEX_STREAM4_ATI 0x8770 8.2356 +#define GL_VERTEX_STREAM5_ATI 0x8771 8.2357 +#define GL_VERTEX_STREAM6_ATI 0x8772 8.2358 +#define GL_VERTEX_STREAM7_ATI 0x8773 8.2359 +#define GL_VERTEX_SOURCE_ATI 0x8774 8.2360 +#endif 8.2361 + 8.2362 +#ifndef GL_ATI_element_array 8.2363 +#define GL_ELEMENT_ARRAY_ATI 0x8768 8.2364 +#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 8.2365 +#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A 8.2366 +#endif 8.2367 + 8.2368 +#ifndef GL_SUN_mesh_array 8.2369 +#define GL_QUAD_MESH_SUN 0x8614 8.2370 +#define GL_TRIANGLE_MESH_SUN 0x8615 8.2371 +#endif 8.2372 + 8.2373 +#ifndef GL_SUN_slice_accum 8.2374 +#define GL_SLICE_ACCUM_SUN 0x85CC 8.2375 +#endif 8.2376 + 8.2377 +#ifndef GL_NV_multisample_filter_hint 8.2378 +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 8.2379 +#endif 8.2380 + 8.2381 +#ifndef GL_NV_depth_clamp 8.2382 +#define GL_DEPTH_CLAMP_NV 0x864F 8.2383 +#endif 8.2384 + 8.2385 +#ifndef GL_NV_occlusion_query 8.2386 +#define GL_PIXEL_COUNTER_BITS_NV 0x8864 8.2387 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 8.2388 +#define GL_PIXEL_COUNT_NV 0x8866 8.2389 +#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 8.2390 +#endif 8.2391 + 8.2392 +#ifndef GL_NV_point_sprite 8.2393 +#define GL_POINT_SPRITE_NV 0x8861 8.2394 +#define GL_COORD_REPLACE_NV 0x8862 8.2395 +#define GL_POINT_SPRITE_R_MODE_NV 0x8863 8.2396 +#endif 8.2397 + 8.2398 +#ifndef GL_NV_texture_shader3 8.2399 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 8.2400 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 8.2401 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 8.2402 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 8.2403 +#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 8.2404 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 8.2405 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 8.2406 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 8.2407 +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 8.2408 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 8.2409 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A 8.2410 +#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B 8.2411 +#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C 8.2412 +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D 8.2413 +#define GL_HILO8_NV 0x885E 8.2414 +#define GL_SIGNED_HILO8_NV 0x885F 8.2415 +#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 8.2416 +#endif 8.2417 + 8.2418 +#ifndef GL_NV_vertex_program1_1 8.2419 +#endif 8.2420 + 8.2421 +#ifndef GL_EXT_shadow_funcs 8.2422 +#endif 8.2423 + 8.2424 +#ifndef GL_EXT_stencil_two_side 8.2425 +#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 8.2426 +#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 8.2427 +#endif 8.2428 + 8.2429 + 8.2430 +/*************************************************************/ 8.2431 + 8.2432 +#ifndef GL_VERSION_1_2 8.2433 +#define GL_VERSION_1_2 1 8.2434 +#ifdef GL_GLEXT_PROTOTYPES 8.2435 +GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf); 8.2436 +GLAPI void APIENTRY glBlendEquation (GLenum); 8.2437 +GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); 8.2438 +GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); 8.2439 +GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *); 8.2440 +GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *); 8.2441 +GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei); 8.2442 +GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *); 8.2443 +GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *); 8.2444 +GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *); 8.2445 +GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); 8.2446 +GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei); 8.2447 +GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); 8.2448 +GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); 8.2449 +GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat); 8.2450 +GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *); 8.2451 +GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint); 8.2452 +GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *); 8.2453 +GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei); 8.2454 +GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); 8.2455 +GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *); 8.2456 +GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *); 8.2457 +GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *); 8.2458 +GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); 8.2459 +GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); 8.2460 +GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *); 8.2461 +GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *); 8.2462 +GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *); 8.2463 +GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *); 8.2464 +GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *); 8.2465 +GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *); 8.2466 +GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean); 8.2467 +GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean); 8.2468 +GLAPI void APIENTRY glResetHistogram (GLenum); 8.2469 +GLAPI void APIENTRY glResetMinmax (GLenum); 8.2470 +GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); 8.2471 +GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); 8.2472 +GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); 8.2473 +#endif /* GL_GLEXT_PROTOTYPES */ 8.2474 +typedef void (APIENTRY * PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); 8.2475 +typedef void (APIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode); 8.2476 +typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); 8.2477 +typedef void (APIENTRY * PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); 8.2478 +typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); 8.2479 +typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); 8.2480 +typedef void (APIENTRY * PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); 8.2481 +typedef void (APIENTRY * PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); 8.2482 +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); 8.2483 +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); 8.2484 +typedef void (APIENTRY * PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); 8.2485 +typedef void (APIENTRY * PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); 8.2486 +typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); 8.2487 +typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); 8.2488 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); 8.2489 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); 8.2490 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); 8.2491 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); 8.2492 +typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); 8.2493 +typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); 8.2494 +typedef void (APIENTRY * PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); 8.2495 +typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); 8.2496 +typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); 8.2497 +typedef void (APIENTRY * PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); 8.2498 +typedef void (APIENTRY * PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); 8.2499 +typedef void (APIENTRY * PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); 8.2500 +typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); 8.2501 +typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); 8.2502 +typedef void (APIENTRY * PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); 8.2503 +typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); 8.2504 +typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); 8.2505 +typedef void (APIENTRY * PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); 8.2506 +typedef void (APIENTRY * PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); 8.2507 +typedef void (APIENTRY * PFNGLRESETHISTOGRAMPROC) (GLenum target); 8.2508 +typedef void (APIENTRY * PFNGLRESETMINMAXPROC) (GLenum target); 8.2509 +typedef void (APIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); 8.2510 +typedef void (APIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); 8.2511 +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); 8.2512 +#endif 8.2513 + 8.2514 +#ifndef GL_VERSION_1_3 8.2515 +#define GL_VERSION_1_3 1 8.2516 +#ifdef GL_GLEXT_PROTOTYPES 8.2517 +GLAPI void APIENTRY glActiveTexture (GLenum); 8.2518 +GLAPI void APIENTRY glClientActiveTexture (GLenum); 8.2519 +GLAPI void APIENTRY glMultiTexCoord1d (GLenum, GLdouble); 8.2520 +GLAPI void APIENTRY glMultiTexCoord1dv (GLenum, const GLdouble *); 8.2521 +GLAPI void APIENTRY glMultiTexCoord1f (GLenum, GLfloat); 8.2522 +GLAPI void APIENTRY glMultiTexCoord1fv (GLenum, const GLfloat *); 8.2523 +GLAPI void APIENTRY glMultiTexCoord1i (GLenum, GLint); 8.2524 +GLAPI void APIENTRY glMultiTexCoord1iv (GLenum, const GLint *); 8.2525 +GLAPI void APIENTRY glMultiTexCoord1s (GLenum, GLshort); 8.2526 +GLAPI void APIENTRY glMultiTexCoord1sv (GLenum, const GLshort *); 8.2527 +GLAPI void APIENTRY glMultiTexCoord2d (GLenum, GLdouble, GLdouble); 8.2528 +GLAPI void APIENTRY glMultiTexCoord2dv (GLenum, const GLdouble *); 8.2529 +GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat); 8.2530 +GLAPI void APIENTRY glMultiTexCoord2fv (GLenum, const GLfloat *); 8.2531 +GLAPI void APIENTRY glMultiTexCoord2i (GLenum, GLint, GLint); 8.2532 +GLAPI void APIENTRY glMultiTexCoord2iv (GLenum, const GLint *); 8.2533 +GLAPI void APIENTRY glMultiTexCoord2s (GLenum, GLshort, GLshort); 8.2534 +GLAPI void APIENTRY glMultiTexCoord2sv (GLenum, const GLshort *); 8.2535 +GLAPI void APIENTRY glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble); 8.2536 +GLAPI void APIENTRY glMultiTexCoord3dv (GLenum, const GLdouble *); 8.2537 +GLAPI void APIENTRY glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat); 8.2538 +GLAPI void APIENTRY glMultiTexCoord3fv (GLenum, const GLfloat *); 8.2539 +GLAPI void APIENTRY glMultiTexCoord3i (GLenum, GLint, GLint, GLint); 8.2540 +GLAPI void APIENTRY glMultiTexCoord3iv (GLenum, const GLint *); 8.2541 +GLAPI void APIENTRY glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort); 8.2542 +GLAPI void APIENTRY glMultiTexCoord3sv (GLenum, const GLshort *); 8.2543 +GLAPI void APIENTRY glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); 8.2544 +GLAPI void APIENTRY glMultiTexCoord4dv (GLenum, const GLdouble *); 8.2545 +GLAPI void APIENTRY glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); 8.2546 +GLAPI void APIENTRY glMultiTexCoord4fv (GLenum, const GLfloat *); 8.2547 +GLAPI void APIENTRY glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint); 8.2548 +GLAPI void APIENTRY glMultiTexCoord4iv (GLenum, const GLint *); 8.2549 +GLAPI void APIENTRY glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort); 8.2550 +GLAPI void APIENTRY glMultiTexCoord4sv (GLenum, const GLshort *); 8.2551 +GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *); 8.2552 +GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *); 8.2553 +GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *); 8.2554 +GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *); 8.2555 +GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean); 8.2556 +GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); 8.2557 +GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); 8.2558 +GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); 8.2559 +GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); 8.2560 +GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); 8.2561 +GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); 8.2562 +GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, void *); 8.2563 +#endif /* GL_GLEXT_PROTOTYPES */ 8.2564 +typedef void (APIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture); 8.2565 +typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); 8.2566 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); 8.2567 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); 8.2568 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); 8.2569 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); 8.2570 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); 8.2571 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); 8.2572 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); 8.2573 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); 8.2574 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); 8.2575 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); 8.2576 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); 8.2577 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); 8.2578 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); 8.2579 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); 8.2580 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); 8.2581 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); 8.2582 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); 8.2583 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); 8.2584 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); 8.2585 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); 8.2586 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); 8.2587 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); 8.2588 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); 8.2589 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); 8.2590 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); 8.2591 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); 8.2592 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); 8.2593 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); 8.2594 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); 8.2595 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); 8.2596 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); 8.2597 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); 8.2598 +typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); 8.2599 +typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); 8.2600 +typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); 8.2601 +typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); 8.2602 +typedef void (APIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); 8.2603 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); 8.2604 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); 8.2605 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); 8.2606 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); 8.2607 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); 8.2608 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); 8.2609 +typedef void (APIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img); 8.2610 +#endif 8.2611 + 8.2612 +#ifndef GL_VERSION_1_4 8.2613 +#define GL_VERSION_1_4 1 8.2614 +#ifdef GL_GLEXT_PROTOTYPES 8.2615 +GLAPI void APIENTRY glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum); 8.2616 +GLAPI void APIENTRY glFogCoordf (GLfloat); 8.2617 +GLAPI void APIENTRY glFogCoordfv (const GLfloat *); 8.2618 +GLAPI void APIENTRY glFogCoordd (GLdouble); 8.2619 +GLAPI void APIENTRY glFogCoorddv (const GLdouble *); 8.2620 +GLAPI void APIENTRY glFogCoordPointer (GLenum, GLsizei, const GLvoid *); 8.2621 +GLAPI void APIENTRY glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei); 8.2622 +GLAPI void APIENTRY glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); 8.2623 +GLAPI void APIENTRY glPointParameterf (GLenum, GLfloat); 8.2624 +GLAPI void APIENTRY glPointParameterfv (GLenum, const GLfloat *); 8.2625 +GLAPI void APIENTRY glPointParameteri (GLenum, GLint); 8.2626 +GLAPI void APIENTRY glPointParameteriv (GLenum, const GLint *); 8.2627 +GLAPI void APIENTRY glSecondaryColor3b (GLbyte, GLbyte, GLbyte); 8.2628 +GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *); 8.2629 +GLAPI void APIENTRY glSecondaryColor3d (GLdouble, GLdouble, GLdouble); 8.2630 +GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *); 8.2631 +GLAPI void APIENTRY glSecondaryColor3f (GLfloat, GLfloat, GLfloat); 8.2632 +GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *); 8.2633 +GLAPI void APIENTRY glSecondaryColor3i (GLint, GLint, GLint); 8.2634 +GLAPI void APIENTRY glSecondaryColor3iv (const GLint *); 8.2635 +GLAPI void APIENTRY glSecondaryColor3s (GLshort, GLshort, GLshort); 8.2636 +GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *); 8.2637 +GLAPI void APIENTRY glSecondaryColor3ub (GLubyte, GLubyte, GLubyte); 8.2638 +GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *); 8.2639 +GLAPI void APIENTRY glSecondaryColor3ui (GLuint, GLuint, GLuint); 8.2640 +GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *); 8.2641 +GLAPI void APIENTRY glSecondaryColor3us (GLushort, GLushort, GLushort); 8.2642 +GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *); 8.2643 +GLAPI void APIENTRY glSecondaryColorPointer (GLint, GLenum, GLsizei, const GLvoid *); 8.2644 +GLAPI void APIENTRY glWindowPos2d (GLdouble, GLdouble); 8.2645 +GLAPI void APIENTRY glWindowPos2dv (const GLdouble *); 8.2646 +GLAPI void APIENTRY glWindowPos2f (GLfloat, GLfloat); 8.2647 +GLAPI void APIENTRY glWindowPos2fv (const GLfloat *); 8.2648 +GLAPI void APIENTRY glWindowPos2i (GLint, GLint); 8.2649 +GLAPI void APIENTRY glWindowPos2iv (const GLint *); 8.2650 +GLAPI void APIENTRY glWindowPos2s (GLshort, GLshort); 8.2651 +GLAPI void APIENTRY glWindowPos2sv (const GLshort *); 8.2652 +GLAPI void APIENTRY glWindowPos3d (GLdouble, GLdouble, GLdouble); 8.2653 +GLAPI void APIENTRY glWindowPos3dv (const GLdouble *); 8.2654 +GLAPI void APIENTRY glWindowPos3f (GLfloat, GLfloat, GLfloat); 8.2655 +GLAPI void APIENTRY glWindowPos3fv (const GLfloat *); 8.2656 +GLAPI void APIENTRY glWindowPos3i (GLint, GLint, GLint); 8.2657 +GLAPI void APIENTRY glWindowPos3iv (const GLint *); 8.2658 +GLAPI void APIENTRY glWindowPos3s (GLshort, GLshort, GLshort); 8.2659 +GLAPI void APIENTRY glWindowPos3sv (const GLshort *); 8.2660 +#endif /* GL_GLEXT_PROTOTYPES */ 8.2661 +typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); 8.2662 +typedef void (APIENTRY * PFNGLFOGCOORDFPROC) (GLfloat coord); 8.2663 +typedef void (APIENTRY * PFNGLFOGCOORDFVPROC) (const GLfloat *coord); 8.2664 +typedef void (APIENTRY * PFNGLFOGCOORDDPROC) (GLdouble coord); 8.2665 +typedef void (APIENTRY * PFNGLFOGCOORDDVPROC) (const GLdouble *coord); 8.2666 +typedef void (APIENTRY * PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); 8.2667 +typedef void (APIENTRY * PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); 8.2668 +typedef void (APIENTRY * PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); 8.2669 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); 8.2670 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); 8.2671 +typedef void (APIENTRY * PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); 8.2672 +typedef void (APIENTRY * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); 8.2673 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); 8.2674 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); 8.2675 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); 8.2676 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); 8.2677 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); 8.2678 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); 8.2679 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); 8.2680 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); 8.2681 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); 8.2682 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); 8.2683 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); 8.2684 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); 8.2685 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); 8.2686 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); 8.2687 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); 8.2688 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); 8.2689 +typedef void (APIENTRY * PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 8.2690 +typedef void (APIENTRY * PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); 8.2691 +typedef void (APIENTRY * PFNGLWINDOWPOS2DVPROC) (const GLdouble *v); 8.2692 +typedef void (APIENTRY * PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); 8.2693 +typedef void (APIENTRY * PFNGLWINDOWPOS2FVPROC) (const GLfloat *v); 8.2694 +typedef void (APIENTRY * PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); 8.2695 +typedef void (APIENTRY * PFNGLWINDOWPOS2IVPROC) (const GLint *v); 8.2696 +typedef void (APIENTRY * PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); 8.2697 +typedef void (APIENTRY * PFNGLWINDOWPOS2SVPROC) (const GLshort *v); 8.2698 +typedef void (APIENTRY * PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); 8.2699 +typedef void (APIENTRY * PFNGLWINDOWPOS3DVPROC) (const GLdouble *v); 8.2700 +typedef void (APIENTRY * PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); 8.2701 +typedef void (APIENTRY * PFNGLWINDOWPOS3FVPROC) (const GLfloat *v); 8.2702 +typedef void (APIENTRY * PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); 8.2703 +typedef void (APIENTRY * PFNGLWINDOWPOS3IVPROC) (const GLint *v); 8.2704 +typedef void (APIENTRY * PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); 8.2705 +typedef void (APIENTRY * PFNGLWINDOWPOS3SVPROC) (const GLshort *v); 8.2706 +#endif 8.2707 + 8.2708 +#ifndef GL_ARB_multitexture 8.2709 +#define GL_ARB_multitexture 1 8.2710 +#ifdef GL_GLEXT_PROTOTYPES 8.2711 +GLAPI void APIENTRY glActiveTextureARB (GLenum); 8.2712 +GLAPI void APIENTRY glClientActiveTextureARB (GLenum); 8.2713 +GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble); 8.2714 +GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *); 8.2715 +GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat); 8.2716 +GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *); 8.2717 +GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint); 8.2718 +GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *); 8.2719 +GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort); 8.2720 +GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *); 8.2721 +GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble); 8.2722 +GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *); 8.2723 +GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat); 8.2724 +GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *); 8.2725 +GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint); 8.2726 +GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *); 8.2727 +GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort); 8.2728 +GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *); 8.2729 +GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble); 8.2730 +GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *); 8.2731 +GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat); 8.2732 +GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *); 8.2733 +GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint); 8.2734 +GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *); 8.2735 +GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort); 8.2736 +GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *); 8.2737 +GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); 8.2738 +GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *); 8.2739 +GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); 8.2740 +GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *); 8.2741 +GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint); 8.2742 +GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *); 8.2743 +GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort); 8.2744 +GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *); 8.2745 +#endif /* GL_GLEXT_PROTOTYPES */ 8.2746 +typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture); 8.2747 +typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); 8.2748 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); 8.2749 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); 8.2750 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); 8.2751 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); 8.2752 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); 8.2753 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); 8.2754 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); 8.2755 +typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); 8.2756 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); 8.2757 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); 8.2758 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); 8.2759 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); 8.2760 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); 8.2761 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); 8.2762 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); 8.2763 +typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); 8.2764 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); 8.2765 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); 8.2766 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); 8.2767 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); 8.2768 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); 8.2769 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); 8.2770 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); 8.2771 +typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); 8.2772 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); 8.2773 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); 8.2774 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); 8.2775 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); 8.2776 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); 8.2777 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); 8.2778 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); 8.2779 +typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); 8.2780 +#endif 8.2781 + 8.2782 +#ifndef GL_ARB_transpose_matrix 8.2783 +#define GL_ARB_transpose_matrix 1 8.2784 +#ifdef GL_GLEXT_PROTOTYPES 8.2785 +GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *); 8.2786 +GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *); 8.2787 +GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *); 8.2788 +GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *); 8.2789 +#endif /* GL_GLEXT_PROTOTYPES */ 8.2790 +typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); 8.2791 +typedef void (APIENTRY * PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); 8.2792 +typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); 8.2793 +typedef void (APIENTRY * PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); 8.2794 +#endif 8.2795 + 8.2796 +#ifndef GL_ARB_multisample 8.2797 +#define GL_ARB_multisample 1 8.2798 +#ifdef GL_GLEXT_PROTOTYPES 8.2799 +GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean); 8.2800 +#endif /* GL_GLEXT_PROTOTYPES */ 8.2801 +typedef void (APIENTRY * PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); 8.2802 +#endif 8.2803 + 8.2804 +#ifndef GL_ARB_texture_env_add 8.2805 +#define GL_ARB_texture_env_add 1 8.2806 +#endif 8.2807 + 8.2808 +#ifndef GL_ARB_texture_cube_map 8.2809 +#define GL_ARB_texture_cube_map 1 8.2810 +#endif 8.2811 + 8.2812 +#ifndef GL_ARB_texture_compression 8.2813 +#define GL_ARB_texture_compression 1 8.2814 +#ifdef GL_GLEXT_PROTOTYPES 8.2815 +GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); 8.2816 +GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); 8.2817 +GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); 8.2818 +GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); 8.2819 +GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); 8.2820 +GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); 8.2821 +GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, void *); 8.2822 +#endif /* GL_GLEXT_PROTOTYPES */ 8.2823 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); 8.2824 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); 8.2825 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); 8.2826 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); 8.2827 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); 8.2828 +typedef void (APIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); 8.2829 +typedef void (APIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img); 8.2830 +#endif 8.2831 + 8.2832 +#ifndef GL_ARB_texture_border_clamp 8.2833 +#define GL_ARB_texture_border_clamp 1 8.2834 +#endif 8.2835 + 8.2836 +#ifndef GL_ARB_point_parameters 8.2837 +#define GL_ARB_point_parameters 1 8.2838 +#ifdef GL_GLEXT_PROTOTYPES 8.2839 +GLAPI void APIENTRY glPointParameterfARB (GLenum, GLfloat); 8.2840 +GLAPI void APIENTRY glPointParameterfvARB (GLenum, const GLfloat *); 8.2841 +#endif /* GL_GLEXT_PROTOTYPES */ 8.2842 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); 8.2843 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); 8.2844 +#endif 8.2845 + 8.2846 +#ifndef GL_ARB_vertex_blend 8.2847 +#define GL_ARB_vertex_blend 1 8.2848 +#ifdef GL_GLEXT_PROTOTYPES 8.2849 +GLAPI void APIENTRY glWeightbvARB (GLint, const GLbyte *); 8.2850 +GLAPI void APIENTRY glWeightsvARB (GLint, const GLshort *); 8.2851 +GLAPI void APIENTRY glWeightivARB (GLint, const GLint *); 8.2852 +GLAPI void APIENTRY glWeightfvARB (GLint, const GLfloat *); 8.2853 +GLAPI void APIENTRY glWeightdvARB (GLint, const GLdouble *); 8.2854 +GLAPI void APIENTRY glWeightubvARB (GLint, const GLubyte *); 8.2855 +GLAPI void APIENTRY glWeightusvARB (GLint, const GLushort *); 8.2856 +GLAPI void APIENTRY glWeightuivARB (GLint, const GLuint *); 8.2857 +GLAPI void APIENTRY glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *); 8.2858 +GLAPI void APIENTRY glVertexBlendARB (GLint); 8.2859 +#endif /* GL_GLEXT_PROTOTYPES */ 8.2860 +typedef void (APIENTRY * PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights); 8.2861 +typedef void (APIENTRY * PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights); 8.2862 +typedef void (APIENTRY * PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights); 8.2863 +typedef void (APIENTRY * PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights); 8.2864 +typedef void (APIENTRY * PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights); 8.2865 +typedef void (APIENTRY * PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights); 8.2866 +typedef void (APIENTRY * PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights); 8.2867 +typedef void (APIENTRY * PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights); 8.2868 +typedef void (APIENTRY * PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 8.2869 +typedef void (APIENTRY * PFNGLVERTEXBLENDARBPROC) (GLint count); 8.2870 +#endif 8.2871 + 8.2872 +#ifndef GL_ARB_matrix_palette 8.2873 +#define GL_ARB_matrix_palette 1 8.2874 +#ifdef GL_GLEXT_PROTOTYPES 8.2875 +GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint); 8.2876 +GLAPI void APIENTRY glMatrixIndexubvARB (GLint, const GLubyte *); 8.2877 +GLAPI void APIENTRY glMatrixIndexusvARB (GLint, const GLushort *); 8.2878 +GLAPI void APIENTRY glMatrixIndexuivARB (GLint, const GLuint *); 8.2879 +GLAPI void APIENTRY glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *); 8.2880 +#endif /* GL_GLEXT_PROTOTYPES */ 8.2881 +typedef void (APIENTRY * PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); 8.2882 +typedef void (APIENTRY * PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices); 8.2883 +typedef void (APIENTRY * PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices); 8.2884 +typedef void (APIENTRY * PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices); 8.2885 +typedef void (APIENTRY * PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 8.2886 +#endif 8.2887 + 8.2888 +#ifndef GL_ARB_texture_env_combine 8.2889 +#define GL_ARB_texture_env_combine 1 8.2890 +#endif 8.2891 + 8.2892 +#ifndef GL_ARB_texture_env_crossbar 8.2893 +#define GL_ARB_texture_env_crossbar 1 8.2894 +#endif 8.2895 + 8.2896 +#ifndef GL_ARB_texture_env_dot3 8.2897 +#define GL_ARB_texture_env_dot3 1 8.2898 +#endif 8.2899 + 8.2900 +#ifndef GL_ARB_texture_mirror_repeat 8.2901 +#define GL_ARB_texture_mirror_repeat 1 8.2902 +#endif 8.2903 + 8.2904 +#ifndef GL_ARB_depth_texture 8.2905 +#define GL_ARB_depth_texture 1 8.2906 +#endif 8.2907 + 8.2908 +#ifndef GL_ARB_shadow 8.2909 +#define GL_ARB_shadow 1 8.2910 +#endif 8.2911 + 8.2912 +#ifndef GL_ARB_shadow_ambient 8.2913 +#define GL_ARB_shadow_ambient 1 8.2914 +#endif 8.2915 + 8.2916 +#ifndef GL_ARB_window_pos 8.2917 +#define GL_ARB_window_pos 1 8.2918 +#ifdef GL_GLEXT_PROTOTYPES 8.2919 +GLAPI void APIENTRY glWindowPos2dARB (GLdouble, GLdouble); 8.2920 +GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *); 8.2921 +GLAPI void APIENTRY glWindowPos2fARB (GLfloat, GLfloat); 8.2922 +GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *); 8.2923 +GLAPI void APIENTRY glWindowPos2iARB (GLint, GLint); 8.2924 +GLAPI void APIENTRY glWindowPos2ivARB (const GLint *); 8.2925 +GLAPI void APIENTRY glWindowPos2sARB (GLshort, GLshort); 8.2926 +GLAPI void APIENTRY glWindowPos2svARB (const GLshort *); 8.2927 +GLAPI void APIENTRY glWindowPos3dARB (GLdouble, GLdouble, GLdouble); 8.2928 +GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *); 8.2929 +GLAPI void APIENTRY glWindowPos3fARB (GLfloat, GLfloat, GLfloat); 8.2930 +GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *); 8.2931 +GLAPI void APIENTRY glWindowPos3iARB (GLint, GLint, GLint); 8.2932 +GLAPI void APIENTRY glWindowPos3ivARB (const GLint *); 8.2933 +GLAPI void APIENTRY glWindowPos3sARB (GLshort, GLshort, GLshort); 8.2934 +GLAPI void APIENTRY glWindowPos3svARB (const GLshort *); 8.2935 +#endif /* GL_GLEXT_PROTOTYPES */ 8.2936 +typedef void (APIENTRY * PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); 8.2937 +typedef void (APIENTRY * PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v); 8.2938 +typedef void (APIENTRY * PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); 8.2939 +typedef void (APIENTRY * PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v); 8.2940 +typedef void (APIENTRY * PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); 8.2941 +typedef void (APIENTRY * PFNGLWINDOWPOS2IVARBPROC) (const GLint *v); 8.2942 +typedef void (APIENTRY * PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); 8.2943 +typedef void (APIENTRY * PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v); 8.2944 +typedef void (APIENTRY * PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); 8.2945 +typedef void (APIENTRY * PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v); 8.2946 +typedef void (APIENTRY * PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); 8.2947 +typedef void (APIENTRY * PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v); 8.2948 +typedef void (APIENTRY * PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); 8.2949 +typedef void (APIENTRY * PFNGLWINDOWPOS3IVARBPROC) (const GLint *v); 8.2950 +typedef void (APIENTRY * PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); 8.2951 +typedef void (APIENTRY * PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v); 8.2952 +#endif 8.2953 + 8.2954 +#ifndef GL_ARB_vertex_program 8.2955 +#define GL_ARB_vertex_program 1 8.2956 +#ifdef GL_GLEXT_PROTOTYPES 8.2957 +GLAPI void APIENTRY glVertexAttrib1dARB (GLuint, GLdouble); 8.2958 +GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint, const GLdouble *); 8.2959 +GLAPI void APIENTRY glVertexAttrib1fARB (GLuint, GLfloat); 8.2960 +GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint, const GLfloat *); 8.2961 +GLAPI void APIENTRY glVertexAttrib1sARB (GLuint, GLshort); 8.2962 +GLAPI void APIENTRY glVertexAttrib1svARB (GLuint, const GLshort *); 8.2963 +GLAPI void APIENTRY glVertexAttrib2dARB (GLuint, GLdouble, GLdouble); 8.2964 +GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint, const GLdouble *); 8.2965 +GLAPI void APIENTRY glVertexAttrib2fARB (GLuint, GLfloat, GLfloat); 8.2966 +GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint, const GLfloat *); 8.2967 +GLAPI void APIENTRY glVertexAttrib2sARB (GLuint, GLshort, GLshort); 8.2968 +GLAPI void APIENTRY glVertexAttrib2svARB (GLuint, const GLshort *); 8.2969 +GLAPI void APIENTRY glVertexAttrib3dARB (GLuint, GLdouble, GLdouble, GLdouble); 8.2970 +GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint, const GLdouble *); 8.2971 +GLAPI void APIENTRY glVertexAttrib3fARB (GLuint, GLfloat, GLfloat, GLfloat); 8.2972 +GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint, const GLfloat *); 8.2973 +GLAPI void APIENTRY glVertexAttrib3sARB (GLuint, GLshort, GLshort, GLshort); 8.2974 +GLAPI void APIENTRY glVertexAttrib3svARB (GLuint, const GLshort *); 8.2975 +GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint, const GLbyte *); 8.2976 +GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint, const GLint *); 8.2977 +GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint, const GLshort *); 8.2978 +GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); 8.2979 +GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint, const GLubyte *); 8.2980 +GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint, const GLuint *); 8.2981 +GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint, const GLushort *); 8.2982 +GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint, const GLbyte *); 8.2983 +GLAPI void APIENTRY glVertexAttrib4dARB (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); 8.2984 +GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint, const GLdouble *); 8.2985 +GLAPI void APIENTRY glVertexAttrib4fARB (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); 8.2986 +GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint, const GLfloat *); 8.2987 +GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint, const GLint *); 8.2988 +GLAPI void APIENTRY glVertexAttrib4sARB (GLuint, GLshort, GLshort, GLshort, GLshort); 8.2989 +GLAPI void APIENTRY glVertexAttrib4svARB (GLuint, const GLshort *); 8.2990 +GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint, const GLubyte *); 8.2991 +GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint, const GLuint *); 8.2992 +GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint, const GLushort *); 8.2993 +GLAPI void APIENTRY glVertexAttribPointerARB (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); 8.2994 +GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint); 8.2995 +GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint); 8.2996 +GLAPI void APIENTRY glProgramStringARB (GLenum, GLenum, GLsizei, const GLvoid *); 8.2997 +GLAPI void APIENTRY glBindProgramARB (GLenum, GLuint); 8.2998 +GLAPI void APIENTRY glDeleteProgramsARB (GLsizei, const GLuint *); 8.2999 +GLAPI void APIENTRY glGenProgramsARB (GLsizei, GLuint *); 8.3000 +GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); 8.3001 +GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum, GLuint, const GLdouble *); 8.3002 +GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); 8.3003 +GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum, GLuint, const GLfloat *); 8.3004 +GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); 8.3005 +GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum, GLuint, const GLdouble *); 8.3006 +GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); 8.3007 +GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum, GLuint, const GLfloat *); 8.3008 +GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum, GLuint, GLdouble *); 8.3009 +GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum, GLuint, GLfloat *); 8.3010 +GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum, GLuint, GLdouble *); 8.3011 +GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum, GLuint, GLfloat *); 8.3012 +GLAPI void APIENTRY glGetProgramivARB (GLenum, GLenum, GLint *); 8.3013 +GLAPI void APIENTRY glGetProgramStringARB (GLenum, GLenum, GLvoid *); 8.3014 +GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint, GLenum, GLdouble *); 8.3015 +GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint, GLenum, GLfloat *); 8.3016 +GLAPI void APIENTRY glGetVertexAttribivARB (GLuint, GLenum, GLint *); 8.3017 +GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint, GLenum, GLvoid* *); 8.3018 +GLAPI GLboolean APIENTRY glIsProgramARB (GLuint); 8.3019 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3020 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); 8.3021 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v); 8.3022 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); 8.3023 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v); 8.3024 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); 8.3025 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v); 8.3026 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); 8.3027 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v); 8.3028 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); 8.3029 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v); 8.3030 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); 8.3031 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v); 8.3032 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); 8.3033 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v); 8.3034 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); 8.3035 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v); 8.3036 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); 8.3037 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v); 8.3038 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v); 8.3039 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v); 8.3040 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v); 8.3041 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); 8.3042 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v); 8.3043 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v); 8.3044 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v); 8.3045 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v); 8.3046 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 8.3047 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v); 8.3048 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 8.3049 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v); 8.3050 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v); 8.3051 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); 8.3052 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v); 8.3053 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v); 8.3054 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v); 8.3055 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v); 8.3056 +typedef void (APIENTRY * PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); 8.3057 +typedef void (APIENTRY * PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); 8.3058 +typedef void (APIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); 8.3059 +typedef void (APIENTRY * PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string); 8.3060 +typedef void (APIENTRY * PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); 8.3061 +typedef void (APIENTRY * PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs); 8.3062 +typedef void (APIENTRY * PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs); 8.3063 +typedef void (APIENTRY * PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 8.3064 +typedef void (APIENTRY * PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); 8.3065 +typedef void (APIENTRY * PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 8.3066 +typedef void (APIENTRY * PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); 8.3067 +typedef void (APIENTRY * PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 8.3068 +typedef void (APIENTRY * PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); 8.3069 +typedef void (APIENTRY * PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 8.3070 +typedef void (APIENTRY * PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); 8.3071 +typedef void (APIENTRY * PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); 8.3072 +typedef void (APIENTRY * PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); 8.3073 +typedef void (APIENTRY * PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); 8.3074 +typedef void (APIENTRY * PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); 8.3075 +typedef void (APIENTRY * PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); 8.3076 +typedef void (APIENTRY * PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string); 8.3077 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params); 8.3078 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params); 8.3079 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params); 8.3080 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer); 8.3081 +typedef GLboolean (APIENTRY * PFNGLISPROGRAMARBPROC) (GLuint program); 8.3082 +#endif 8.3083 + 8.3084 +#ifndef GL_EXT_abgr 8.3085 +#define GL_EXT_abgr 1 8.3086 +#endif 8.3087 + 8.3088 +#ifndef GL_EXT_blend_color 8.3089 +#define GL_EXT_blend_color 1 8.3090 +#ifdef GL_GLEXT_PROTOTYPES 8.3091 +GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf); 8.3092 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3093 +typedef void (APIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); 8.3094 +#endif 8.3095 + 8.3096 +#ifndef GL_EXT_polygon_offset 8.3097 +#define GL_EXT_polygon_offset 1 8.3098 +#ifdef GL_GLEXT_PROTOTYPES 8.3099 +GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat); 8.3100 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3101 +typedef void (APIENTRY * PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); 8.3102 +#endif 8.3103 + 8.3104 +#ifndef GL_EXT_texture 8.3105 +#define GL_EXT_texture 1 8.3106 +#endif 8.3107 + 8.3108 +#ifndef GL_EXT_texture3D 8.3109 +#define GL_EXT_texture3D 1 8.3110 +#ifdef GL_GLEXT_PROTOTYPES 8.3111 +GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); 8.3112 +GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); 8.3113 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3114 +typedef void (APIENTRY * PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); 8.3115 +typedef void (APIENTRY * PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); 8.3116 +#endif 8.3117 + 8.3118 +#ifndef GL_SGIS_texture_filter4 8.3119 +#define GL_SGIS_texture_filter4 1 8.3120 +#ifdef GL_GLEXT_PROTOTYPES 8.3121 +GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *); 8.3122 +GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *); 8.3123 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3124 +typedef void (APIENTRY * PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights); 8.3125 +typedef void (APIENTRY * PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); 8.3126 +#endif 8.3127 + 8.3128 +#ifndef GL_EXT_subtexture 8.3129 +#define GL_EXT_subtexture 1 8.3130 +#ifdef GL_GLEXT_PROTOTYPES 8.3131 +GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *); 8.3132 +GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); 8.3133 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3134 +typedef void (APIENTRY * PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); 8.3135 +typedef void (APIENTRY * PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); 8.3136 +#endif 8.3137 + 8.3138 +#ifndef GL_EXT_copy_texture 8.3139 +#define GL_EXT_copy_texture 1 8.3140 +#ifdef GL_GLEXT_PROTOTYPES 8.3141 +GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint); 8.3142 +GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); 8.3143 +GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei); 8.3144 +GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); 8.3145 +GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); 8.3146 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3147 +typedef void (APIENTRY * PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); 8.3148 +typedef void (APIENTRY * PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); 8.3149 +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); 8.3150 +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); 8.3151 +typedef void (APIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); 8.3152 +#endif 8.3153 + 8.3154 +#ifndef GL_EXT_histogram 8.3155 +#define GL_EXT_histogram 1 8.3156 +#ifdef GL_GLEXT_PROTOTYPES 8.3157 +GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *); 8.3158 +GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *); 8.3159 +GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *); 8.3160 +GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *); 8.3161 +GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *); 8.3162 +GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *); 8.3163 +GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean); 8.3164 +GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean); 8.3165 +GLAPI void APIENTRY glResetHistogramEXT (GLenum); 8.3166 +GLAPI void APIENTRY glResetMinmaxEXT (GLenum); 8.3167 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3168 +typedef void (APIENTRY * PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); 8.3169 +typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); 8.3170 +typedef void (APIENTRY * PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); 8.3171 +typedef void (APIENTRY * PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); 8.3172 +typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); 8.3173 +typedef void (APIENTRY * PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); 8.3174 +typedef void (APIENTRY * PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); 8.3175 +typedef void (APIENTRY * PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); 8.3176 +typedef void (APIENTRY * PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); 8.3177 +typedef void (APIENTRY * PFNGLRESETMINMAXEXTPROC) (GLenum target); 8.3178 +#endif 8.3179 + 8.3180 +#ifndef GL_EXT_convolution 8.3181 +#define GL_EXT_convolution 1 8.3182 +#ifdef GL_GLEXT_PROTOTYPES 8.3183 +GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); 8.3184 +GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); 8.3185 +GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat); 8.3186 +GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *); 8.3187 +GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint); 8.3188 +GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *); 8.3189 +GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei); 8.3190 +GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); 8.3191 +GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *); 8.3192 +GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *); 8.3193 +GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *); 8.3194 +GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); 8.3195 +GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); 8.3196 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3197 +typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); 8.3198 +typedef void (APIENTRY * PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); 8.3199 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params); 8.3200 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); 8.3201 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params); 8.3202 +typedef void (APIENTRY * PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); 8.3203 +typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); 8.3204 +typedef void (APIENTRY * PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); 8.3205 +typedef void (APIENTRY * PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); 8.3206 +typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); 8.3207 +typedef void (APIENTRY * PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); 8.3208 +typedef void (APIENTRY * PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); 8.3209 +typedef void (APIENTRY * PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); 8.3210 +#endif 8.3211 + 8.3212 +#ifndef GL_EXT_color_matrix 8.3213 +#define GL_EXT_color_matrix 1 8.3214 +#endif 8.3215 + 8.3216 +#ifndef GL_SGI_color_table 8.3217 +#define GL_SGI_color_table 1 8.3218 +#ifdef GL_GLEXT_PROTOTYPES 8.3219 +GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); 8.3220 +GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *); 8.3221 +GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *); 8.3222 +GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei); 8.3223 +GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *); 8.3224 +GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *); 8.3225 +GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *); 8.3226 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3227 +typedef void (APIENTRY * PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); 8.3228 +typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params); 8.3229 +typedef void (APIENTRY * PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params); 8.3230 +typedef void (APIENTRY * PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); 8.3231 +typedef void (APIENTRY * PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); 8.3232 +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params); 8.3233 +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params); 8.3234 +#endif 8.3235 + 8.3236 +#ifndef GL_SGIX_pixel_texture 8.3237 +#define GL_SGIX_pixel_texture 1 8.3238 +#ifdef GL_GLEXT_PROTOTYPES 8.3239 +GLAPI void APIENTRY glPixelTexGenSGIX (GLenum); 8.3240 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3241 +typedef void (APIENTRY * PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); 8.3242 +#endif 8.3243 + 8.3244 +#ifndef GL_SGIS_pixel_texture 8.3245 +#define GL_SGIS_pixel_texture 1 8.3246 +#ifdef GL_GLEXT_PROTOTYPES 8.3247 +GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint); 8.3248 +GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *); 8.3249 +GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat); 8.3250 +GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *); 8.3251 +GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *); 8.3252 +GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *); 8.3253 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3254 +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param); 8.3255 +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params); 8.3256 +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param); 8.3257 +typedef void (APIENTRY * PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); 8.3258 +typedef void (APIENTRY * PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params); 8.3259 +typedef void (APIENTRY * PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params); 8.3260 +#endif 8.3261 + 8.3262 +#ifndef GL_SGIS_texture4D 8.3263 +#define GL_SGIS_texture4D 1 8.3264 +#ifdef GL_GLEXT_PROTOTYPES 8.3265 +GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); 8.3266 +GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); 8.3267 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3268 +typedef void (APIENTRY * PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels); 8.3269 +typedef void (APIENTRY * PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels); 8.3270 +#endif 8.3271 + 8.3272 +#ifndef GL_SGI_texture_color_table 8.3273 +#define GL_SGI_texture_color_table 1 8.3274 +#endif 8.3275 + 8.3276 +#ifndef GL_EXT_cmyka 8.3277 +#define GL_EXT_cmyka 1 8.3278 +#endif 8.3279 + 8.3280 +#ifndef GL_EXT_texture_object 8.3281 +#define GL_EXT_texture_object 1 8.3282 +#ifdef GL_GLEXT_PROTOTYPES 8.3283 +GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *); 8.3284 +GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint); 8.3285 +GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *); 8.3286 +GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *); 8.3287 +GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint); 8.3288 +GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *); 8.3289 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3290 +typedef GLboolean (APIENTRY * PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences); 8.3291 +typedef void (APIENTRY * PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); 8.3292 +typedef void (APIENTRY * PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures); 8.3293 +typedef void (APIENTRY * PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures); 8.3294 +typedef GLboolean (APIENTRY * PFNGLISTEXTUREEXTPROC) (GLuint texture); 8.3295 +typedef void (APIENTRY * PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities); 8.3296 +#endif 8.3297 + 8.3298 +#ifndef GL_SGIS_detail_texture 8.3299 +#define GL_SGIS_detail_texture 1 8.3300 +#ifdef GL_GLEXT_PROTOTYPES 8.3301 +GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *); 8.3302 +GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *); 8.3303 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3304 +typedef void (APIENTRY * PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); 8.3305 +typedef void (APIENTRY * PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points); 8.3306 +#endif 8.3307 + 8.3308 +#ifndef GL_SGIS_sharpen_texture 8.3309 +#define GL_SGIS_sharpen_texture 1 8.3310 +#ifdef GL_GLEXT_PROTOTYPES 8.3311 +GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *); 8.3312 +GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *); 8.3313 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3314 +typedef void (APIENTRY * PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); 8.3315 +typedef void (APIENTRY * PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points); 8.3316 +#endif 8.3317 + 8.3318 +#ifndef GL_EXT_packed_pixels 8.3319 +#define GL_EXT_packed_pixels 1 8.3320 +#endif 8.3321 + 8.3322 +#ifndef GL_SGIS_texture_lod 8.3323 +#define GL_SGIS_texture_lod 1 8.3324 +#endif 8.3325 + 8.3326 +#ifndef GL_SGIS_multisample 8.3327 +#define GL_SGIS_multisample 1 8.3328 +#ifdef GL_GLEXT_PROTOTYPES 8.3329 +GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean); 8.3330 +GLAPI void APIENTRY glSamplePatternSGIS (GLenum); 8.3331 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3332 +typedef void (APIENTRY * PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); 8.3333 +typedef void (APIENTRY * PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); 8.3334 +#endif 8.3335 + 8.3336 +#ifndef GL_EXT_rescale_normal 8.3337 +#define GL_EXT_rescale_normal 1 8.3338 +#endif 8.3339 + 8.3340 +#ifndef GL_EXT_vertex_array 8.3341 +#define GL_EXT_vertex_array 1 8.3342 +#ifdef GL_GLEXT_PROTOTYPES 8.3343 +GLAPI void APIENTRY glArrayElementEXT (GLint); 8.3344 +GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); 8.3345 +GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei); 8.3346 +GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *); 8.3347 +GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *); 8.3348 +GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *); 8.3349 +GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *); 8.3350 +GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); 8.3351 +GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); 8.3352 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3353 +typedef void (APIENTRY * PFNGLARRAYELEMENTEXTPROC) (GLint i); 8.3354 +typedef void (APIENTRY * PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); 8.3355 +typedef void (APIENTRY * PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); 8.3356 +typedef void (APIENTRY * PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer); 8.3357 +typedef void (APIENTRY * PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params); 8.3358 +typedef void (APIENTRY * PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); 8.3359 +typedef void (APIENTRY * PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); 8.3360 +typedef void (APIENTRY * PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); 8.3361 +typedef void (APIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); 8.3362 +#endif 8.3363 + 8.3364 +#ifndef GL_EXT_misc_attribute 8.3365 +#define GL_EXT_misc_attribute 1 8.3366 +#endif 8.3367 + 8.3368 +#ifndef GL_SGIS_generate_mipmap 8.3369 +#define GL_SGIS_generate_mipmap 1 8.3370 +#endif 8.3371 + 8.3372 +#ifndef GL_SGIX_clipmap 8.3373 +#define GL_SGIX_clipmap 1 8.3374 +#endif 8.3375 + 8.3376 +#ifndef GL_SGIX_shadow 8.3377 +#define GL_SGIX_shadow 1 8.3378 +#endif 8.3379 + 8.3380 +#ifndef GL_SGIS_texture_edge_clamp 8.3381 +#define GL_SGIS_texture_edge_clamp 1 8.3382 +#endif 8.3383 + 8.3384 +#ifndef GL_SGIS_texture_border_clamp 8.3385 +#define GL_SGIS_texture_border_clamp 1 8.3386 +#endif 8.3387 + 8.3388 +#ifndef GL_EXT_blend_minmax 8.3389 +#define GL_EXT_blend_minmax 1 8.3390 +#ifdef GL_GLEXT_PROTOTYPES 8.3391 +GLAPI void APIENTRY glBlendEquationEXT (GLenum); 8.3392 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3393 +typedef void (APIENTRY * PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); 8.3394 +#endif 8.3395 + 8.3396 +#ifndef GL_EXT_blend_subtract 8.3397 +#define GL_EXT_blend_subtract 1 8.3398 +#endif 8.3399 + 8.3400 +#ifndef GL_EXT_blend_logic_op 8.3401 +#define GL_EXT_blend_logic_op 1 8.3402 +#endif 8.3403 + 8.3404 +#ifndef GL_SGIX_interlace 8.3405 +#define GL_SGIX_interlace 1 8.3406 +#endif 8.3407 + 8.3408 +#ifndef GL_SGIX_pixel_tiles 8.3409 +#define GL_SGIX_pixel_tiles 1 8.3410 +#endif 8.3411 + 8.3412 +#ifndef GL_SGIX_texture_select 8.3413 +#define GL_SGIX_texture_select 1 8.3414 +#endif 8.3415 + 8.3416 +#ifndef GL_SGIX_sprite 8.3417 +#define GL_SGIX_sprite 1 8.3418 +#ifdef GL_GLEXT_PROTOTYPES 8.3419 +GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat); 8.3420 +GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *); 8.3421 +GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint); 8.3422 +GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *); 8.3423 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3424 +typedef void (APIENTRY * PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); 8.3425 +typedef void (APIENTRY * PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params); 8.3426 +typedef void (APIENTRY * PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); 8.3427 +typedef void (APIENTRY * PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params); 8.3428 +#endif 8.3429 + 8.3430 +#ifndef GL_SGIX_texture_multi_buffer 8.3431 +#define GL_SGIX_texture_multi_buffer 1 8.3432 +#endif 8.3433 + 8.3434 +#ifndef GL_EXT_point_parameters 8.3435 +#define GL_EXT_point_parameters 1 8.3436 +#ifdef GL_GLEXT_PROTOTYPES 8.3437 +GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat); 8.3438 +GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *); 8.3439 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3440 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); 8.3441 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params); 8.3442 +#endif 8.3443 + 8.3444 +#ifndef GL_SGIS_point_parameters 8.3445 +#define GL_SGIS_point_parameters 1 8.3446 +#ifdef GL_GLEXT_PROTOTYPES 8.3447 +GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat); 8.3448 +GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *); 8.3449 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3450 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param); 8.3451 +typedef void (APIENTRY * PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); 8.3452 +#endif 8.3453 + 8.3454 +#ifndef GL_SGIX_instruments 8.3455 +#define GL_SGIX_instruments 1 8.3456 +#ifdef GL_GLEXT_PROTOTYPES 8.3457 +GLAPI GLint APIENTRY glGetInstrumentsSGIX (void); 8.3458 +GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *); 8.3459 +GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *); 8.3460 +GLAPI void APIENTRY glReadInstrumentsSGIX (GLint); 8.3461 +GLAPI void APIENTRY glStartInstrumentsSGIX (void); 8.3462 +GLAPI void APIENTRY glStopInstrumentsSGIX (GLint); 8.3463 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3464 +typedef GLint (APIENTRY * PFNGLGETINSTRUMENTSSGIXPROC) (void); 8.3465 +typedef void (APIENTRY * PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer); 8.3466 +typedef GLint (APIENTRY * PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p); 8.3467 +typedef void (APIENTRY * PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker); 8.3468 +typedef void (APIENTRY * PFNGLSTARTINSTRUMENTSSGIXPROC) (void); 8.3469 +typedef void (APIENTRY * PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker); 8.3470 +#endif 8.3471 + 8.3472 +#ifndef GL_SGIX_texture_scale_bias 8.3473 +#define GL_SGIX_texture_scale_bias 1 8.3474 +#endif 8.3475 + 8.3476 +#ifndef GL_SGIX_framezoom 8.3477 +#define GL_SGIX_framezoom 1 8.3478 +#ifdef GL_GLEXT_PROTOTYPES 8.3479 +GLAPI void APIENTRY glFrameZoomSGIX (GLint); 8.3480 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3481 +typedef void (APIENTRY * PFNGLFRAMEZOOMSGIXPROC) (GLint factor); 8.3482 +#endif 8.3483 + 8.3484 +#ifndef GL_SGIX_tag_sample_buffer 8.3485 +#define GL_SGIX_tag_sample_buffer 1 8.3486 +#ifdef GL_GLEXT_PROTOTYPES 8.3487 +GLAPI void APIENTRY glTagSampleBufferSGIX (void); 8.3488 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3489 +typedef void (APIENTRY * PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); 8.3490 +#endif 8.3491 + 8.3492 +#ifndef GL_SGIX_polynomial_ffd 8.3493 +#define GL_SGIX_polynomial_ffd 1 8.3494 +#ifdef GL_GLEXT_PROTOTYPES 8.3495 +GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *); 8.3496 +GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *); 8.3497 +GLAPI void APIENTRY glDeformSGIX (GLbitfield); 8.3498 +GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield); 8.3499 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3500 +typedef void (APIENTRY * PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); 8.3501 +typedef void (APIENTRY * PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); 8.3502 +typedef void (APIENTRY * PFNGLDEFORMSGIXPROC) (GLbitfield mask); 8.3503 +typedef void (APIENTRY * PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask); 8.3504 +#endif 8.3505 + 8.3506 +#ifndef GL_SGIX_reference_plane 8.3507 +#define GL_SGIX_reference_plane 1 8.3508 +#ifdef GL_GLEXT_PROTOTYPES 8.3509 +GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *); 8.3510 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3511 +typedef void (APIENTRY * PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation); 8.3512 +#endif 8.3513 + 8.3514 +#ifndef GL_SGIX_flush_raster 8.3515 +#define GL_SGIX_flush_raster 1 8.3516 +#ifdef GL_GLEXT_PROTOTYPES 8.3517 +GLAPI void APIENTRY glFlushRasterSGIX (void); 8.3518 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3519 +typedef void (APIENTRY * PFNGLFLUSHRASTERSGIXPROC) (void); 8.3520 +#endif 8.3521 + 8.3522 +#ifndef GL_SGIX_depth_texture 8.3523 +#define GL_SGIX_depth_texture 1 8.3524 +#endif 8.3525 + 8.3526 +#ifndef GL_SGIS_fog_function 8.3527 +#define GL_SGIS_fog_function 1 8.3528 +#ifdef GL_GLEXT_PROTOTYPES 8.3529 +GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *); 8.3530 +GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *); 8.3531 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3532 +typedef void (APIENTRY * PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points); 8.3533 +typedef void (APIENTRY * PFNGLGETFOGFUNCSGISPROC) (GLfloat *points); 8.3534 +#endif 8.3535 + 8.3536 +#ifndef GL_SGIX_fog_offset 8.3537 +#define GL_SGIX_fog_offset 1 8.3538 +#endif 8.3539 + 8.3540 +#ifndef GL_HP_image_transform 8.3541 +#define GL_HP_image_transform 1 8.3542 +#ifdef GL_GLEXT_PROTOTYPES 8.3543 +GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint); 8.3544 +GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat); 8.3545 +GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *); 8.3546 +GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *); 8.3547 +GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *); 8.3548 +GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *); 8.3549 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3550 +typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); 8.3551 +typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); 8.3552 +typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params); 8.3553 +typedef void (APIENTRY * PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); 8.3554 +typedef void (APIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); 8.3555 +typedef void (APIENTRY * PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); 8.3556 +#endif 8.3557 + 8.3558 +#ifndef GL_HP_convolution_border_modes 8.3559 +#define GL_HP_convolution_border_modes 1 8.3560 +#endif 8.3561 + 8.3562 +#ifndef GL_SGIX_texture_add_env 8.3563 +#define GL_SGIX_texture_add_env 1 8.3564 +#endif 8.3565 + 8.3566 +#ifndef GL_EXT_color_subtable 8.3567 +#define GL_EXT_color_subtable 1 8.3568 +#ifdef GL_GLEXT_PROTOTYPES 8.3569 +GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); 8.3570 +GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei); 8.3571 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3572 +typedef void (APIENTRY * PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); 8.3573 +typedef void (APIENTRY * PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); 8.3574 +#endif 8.3575 + 8.3576 +#ifndef GL_PGI_vertex_hints 8.3577 +#define GL_PGI_vertex_hints 1 8.3578 +#endif 8.3579 + 8.3580 +#ifndef GL_PGI_misc_hints 8.3581 +#define GL_PGI_misc_hints 1 8.3582 +#ifdef GL_GLEXT_PROTOTYPES 8.3583 +GLAPI void APIENTRY glHintPGI (GLenum, GLint); 8.3584 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3585 +typedef void (APIENTRY * PFNGLHINTPGIPROC) (GLenum target, GLint mode); 8.3586 +#endif 8.3587 + 8.3588 +#ifndef GL_EXT_paletted_texture 8.3589 +#define GL_EXT_paletted_texture 1 8.3590 +#ifdef GL_GLEXT_PROTOTYPES 8.3591 +GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); 8.3592 +GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *); 8.3593 +GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *); 8.3594 +GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *); 8.3595 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3596 +typedef void (APIENTRY * PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); 8.3597 +typedef void (APIENTRY * PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data); 8.3598 +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); 8.3599 +typedef void (APIENTRY * PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); 8.3600 +#endif 8.3601 + 8.3602 +#ifndef GL_EXT_clip_volume_hint 8.3603 +#define GL_EXT_clip_volume_hint 1 8.3604 +#endif 8.3605 + 8.3606 +#ifndef GL_SGIX_list_priority 8.3607 +#define GL_SGIX_list_priority 1 8.3608 +#ifdef GL_GLEXT_PROTOTYPES 8.3609 +GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *); 8.3610 +GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *); 8.3611 +GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat); 8.3612 +GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *); 8.3613 +GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint); 8.3614 +GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *); 8.3615 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3616 +typedef void (APIENTRY * PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params); 8.3617 +typedef void (APIENTRY * PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params); 8.3618 +typedef void (APIENTRY * PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param); 8.3619 +typedef void (APIENTRY * PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params); 8.3620 +typedef void (APIENTRY * PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param); 8.3621 +typedef void (APIENTRY * PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params); 8.3622 +#endif 8.3623 + 8.3624 +#ifndef GL_SGIX_ir_instrument1 8.3625 +#define GL_SGIX_ir_instrument1 1 8.3626 +#endif 8.3627 + 8.3628 +#ifndef GL_SGIX_calligraphic_fragment 8.3629 +#define GL_SGIX_calligraphic_fragment 1 8.3630 +#endif 8.3631 + 8.3632 +#ifndef GL_SGIX_texture_lod_bias 8.3633 +#define GL_SGIX_texture_lod_bias 1 8.3634 +#endif 8.3635 + 8.3636 +#ifndef GL_SGIX_shadow_ambient 8.3637 +#define GL_SGIX_shadow_ambient 1 8.3638 +#endif 8.3639 + 8.3640 +#ifndef GL_EXT_index_texture 8.3641 +#define GL_EXT_index_texture 1 8.3642 +#endif 8.3643 + 8.3644 +#ifndef GL_EXT_index_material 8.3645 +#define GL_EXT_index_material 1 8.3646 +#ifdef GL_GLEXT_PROTOTYPES 8.3647 +GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum); 8.3648 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3649 +typedef void (APIENTRY * PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); 8.3650 +#endif 8.3651 + 8.3652 +#ifndef GL_EXT_index_func 8.3653 +#define GL_EXT_index_func 1 8.3654 +#ifdef GL_GLEXT_PROTOTYPES 8.3655 +GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf); 8.3656 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3657 +typedef void (APIENTRY * PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref); 8.3658 +#endif 8.3659 + 8.3660 +#ifndef GL_EXT_index_array_formats 8.3661 +#define GL_EXT_index_array_formats 1 8.3662 +#endif 8.3663 + 8.3664 +#ifndef GL_EXT_compiled_vertex_array 8.3665 +#define GL_EXT_compiled_vertex_array 1 8.3666 +#ifdef GL_GLEXT_PROTOTYPES 8.3667 +GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei); 8.3668 +GLAPI void APIENTRY glUnlockArraysEXT (void); 8.3669 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3670 +typedef void (APIENTRY * PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); 8.3671 +typedef void (APIENTRY * PFNGLUNLOCKARRAYSEXTPROC) (void); 8.3672 +#endif 8.3673 + 8.3674 +#ifndef GL_EXT_cull_vertex 8.3675 +#define GL_EXT_cull_vertex 1 8.3676 +#ifdef GL_GLEXT_PROTOTYPES 8.3677 +GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *); 8.3678 +GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *); 8.3679 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3680 +typedef void (APIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params); 8.3681 +typedef void (APIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params); 8.3682 +#endif 8.3683 + 8.3684 +#ifndef GL_SGIX_ycrcb 8.3685 +#define GL_SGIX_ycrcb 1 8.3686 +#endif 8.3687 + 8.3688 +#ifndef GL_SGIX_fragment_lighting 8.3689 +#define GL_SGIX_fragment_lighting 1 8.3690 +#ifdef GL_GLEXT_PROTOTYPES 8.3691 +GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum); 8.3692 +GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat); 8.3693 +GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *); 8.3694 +GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint); 8.3695 +GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *); 8.3696 +GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat); 8.3697 +GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *); 8.3698 +GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint); 8.3699 +GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *); 8.3700 +GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat); 8.3701 +GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *); 8.3702 +GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint); 8.3703 +GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *); 8.3704 +GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *); 8.3705 +GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *); 8.3706 +GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *); 8.3707 +GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *); 8.3708 +GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint); 8.3709 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3710 +typedef void (APIENTRY * PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); 8.3711 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); 8.3712 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params); 8.3713 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); 8.3714 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params); 8.3715 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); 8.3716 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params); 8.3717 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); 8.3718 +typedef void (APIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params); 8.3719 +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param); 8.3720 +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params); 8.3721 +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param); 8.3722 +typedef void (APIENTRY * PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params); 8.3723 +typedef void (APIENTRY * PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params); 8.3724 +typedef void (APIENTRY * PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params); 8.3725 +typedef void (APIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params); 8.3726 +typedef void (APIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params); 8.3727 +typedef void (APIENTRY * PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param); 8.3728 +#endif 8.3729 + 8.3730 +#ifndef GL_IBM_rasterpos_clip 8.3731 +#define GL_IBM_rasterpos_clip 1 8.3732 +#endif 8.3733 + 8.3734 +#ifndef GL_HP_texture_lighting 8.3735 +#define GL_HP_texture_lighting 1 8.3736 +#endif 8.3737 + 8.3738 +#ifndef GL_EXT_draw_range_elements 8.3739 +#define GL_EXT_draw_range_elements 1 8.3740 +#ifdef GL_GLEXT_PROTOTYPES 8.3741 +GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); 8.3742 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3743 +typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); 8.3744 +#endif 8.3745 + 8.3746 +#ifndef GL_WIN_phong_shading 8.3747 +#define GL_WIN_phong_shading 1 8.3748 +#endif 8.3749 + 8.3750 +#ifndef GL_WIN_specular_fog 8.3751 +#define GL_WIN_specular_fog 1 8.3752 +#endif 8.3753 + 8.3754 +#ifndef GL_EXT_light_texture 8.3755 +#define GL_EXT_light_texture 1 8.3756 +#ifdef GL_GLEXT_PROTOTYPES 8.3757 +GLAPI void APIENTRY glApplyTextureEXT (GLenum); 8.3758 +GLAPI void APIENTRY glTextureLightEXT (GLenum); 8.3759 +GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum); 8.3760 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3761 +typedef void (APIENTRY * PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); 8.3762 +typedef void (APIENTRY * PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); 8.3763 +typedef void (APIENTRY * PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); 8.3764 +#endif 8.3765 + 8.3766 +#ifndef GL_SGIX_blend_alpha_minmax 8.3767 +#define GL_SGIX_blend_alpha_minmax 1 8.3768 +#endif 8.3769 + 8.3770 +#ifndef GL_EXT_bgra 8.3771 +#define GL_EXT_bgra 1 8.3772 +#endif 8.3773 + 8.3774 +#ifndef GL_SGIX_async 8.3775 +#define GL_SGIX_async 1 8.3776 +#ifdef GL_GLEXT_PROTOTYPES 8.3777 +GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint); 8.3778 +GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *); 8.3779 +GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *); 8.3780 +GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei); 8.3781 +GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei); 8.3782 +GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint); 8.3783 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3784 +typedef void (APIENTRY * PFNGLASYNCMARKERSGIXPROC) (GLuint marker); 8.3785 +typedef GLint (APIENTRY * PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp); 8.3786 +typedef GLint (APIENTRY * PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp); 8.3787 +typedef GLuint (APIENTRY * PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); 8.3788 +typedef void (APIENTRY * PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); 8.3789 +typedef GLboolean (APIENTRY * PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); 8.3790 +#endif 8.3791 + 8.3792 +#ifndef GL_SGIX_async_pixel 8.3793 +#define GL_SGIX_async_pixel 1 8.3794 +#endif 8.3795 + 8.3796 +#ifndef GL_SGIX_async_histogram 8.3797 +#define GL_SGIX_async_histogram 1 8.3798 +#endif 8.3799 + 8.3800 +#ifndef GL_INTEL_parallel_arrays 8.3801 +#define GL_INTEL_parallel_arrays 1 8.3802 +#ifdef GL_GLEXT_PROTOTYPES 8.3803 +GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *); 8.3804 +GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *); 8.3805 +GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *); 8.3806 +GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *); 8.3807 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3808 +typedef void (APIENTRY * PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); 8.3809 +typedef void (APIENTRY * PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer); 8.3810 +typedef void (APIENTRY * PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); 8.3811 +typedef void (APIENTRY * PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); 8.3812 +#endif 8.3813 + 8.3814 +#ifndef GL_HP_occlusion_test 8.3815 +#define GL_HP_occlusion_test 1 8.3816 +#endif 8.3817 + 8.3818 +#ifndef GL_EXT_pixel_transform 8.3819 +#define GL_EXT_pixel_transform 1 8.3820 +#ifdef GL_GLEXT_PROTOTYPES 8.3821 +GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint); 8.3822 +GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat); 8.3823 +GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *); 8.3824 +GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *); 8.3825 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3826 +typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); 8.3827 +typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); 8.3828 +typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); 8.3829 +typedef void (APIENTRY * PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); 8.3830 +#endif 8.3831 + 8.3832 +#ifndef GL_EXT_pixel_transform_color_table 8.3833 +#define GL_EXT_pixel_transform_color_table 1 8.3834 +#endif 8.3835 + 8.3836 +#ifndef GL_EXT_shared_texture_palette 8.3837 +#define GL_EXT_shared_texture_palette 1 8.3838 +#endif 8.3839 + 8.3840 +#ifndef GL_EXT_separate_specular_color 8.3841 +#define GL_EXT_separate_specular_color 1 8.3842 +#endif 8.3843 + 8.3844 +#ifndef GL_EXT_secondary_color 8.3845 +#define GL_EXT_secondary_color 1 8.3846 +#ifdef GL_GLEXT_PROTOTYPES 8.3847 +GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte); 8.3848 +GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *); 8.3849 +GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble); 8.3850 +GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *); 8.3851 +GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat); 8.3852 +GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *); 8.3853 +GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint); 8.3854 +GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *); 8.3855 +GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort); 8.3856 +GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *); 8.3857 +GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte); 8.3858 +GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *); 8.3859 +GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint); 8.3860 +GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *); 8.3861 +GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort); 8.3862 +GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *); 8.3863 +GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *); 8.3864 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3865 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); 8.3866 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); 8.3867 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); 8.3868 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); 8.3869 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); 8.3870 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); 8.3871 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); 8.3872 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); 8.3873 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); 8.3874 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); 8.3875 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); 8.3876 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); 8.3877 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); 8.3878 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); 8.3879 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); 8.3880 +typedef void (APIENTRY * PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); 8.3881 +typedef void (APIENTRY * PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); 8.3882 +#endif 8.3883 + 8.3884 +#ifndef GL_EXT_texture_perturb_normal 8.3885 +#define GL_EXT_texture_perturb_normal 1 8.3886 +#ifdef GL_GLEXT_PROTOTYPES 8.3887 +GLAPI void APIENTRY glTextureNormalEXT (GLenum); 8.3888 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3889 +typedef void (APIENTRY * PFNGLTEXTURENORMALEXTPROC) (GLenum mode); 8.3890 +#endif 8.3891 + 8.3892 +#ifndef GL_EXT_multi_draw_arrays 8.3893 +#define GL_EXT_multi_draw_arrays 1 8.3894 +#ifdef GL_GLEXT_PROTOTYPES 8.3895 +GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei); 8.3896 +GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); 8.3897 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3898 +typedef void (APIENTRY * PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); 8.3899 +typedef void (APIENTRY * PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); 8.3900 +#endif 8.3901 + 8.3902 +#ifndef GL_EXT_fog_coord 8.3903 +#define GL_EXT_fog_coord 1 8.3904 +#ifdef GL_GLEXT_PROTOTYPES 8.3905 +GLAPI void APIENTRY glFogCoordfEXT (GLfloat); 8.3906 +GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *); 8.3907 +GLAPI void APIENTRY glFogCoorddEXT (GLdouble); 8.3908 +GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *); 8.3909 +GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *); 8.3910 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3911 +typedef void (APIENTRY * PFNGLFOGCOORDFEXTPROC) (GLfloat coord); 8.3912 +typedef void (APIENTRY * PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); 8.3913 +typedef void (APIENTRY * PFNGLFOGCOORDDEXTPROC) (GLdouble coord); 8.3914 +typedef void (APIENTRY * PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); 8.3915 +typedef void (APIENTRY * PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); 8.3916 +#endif 8.3917 + 8.3918 +#ifndef GL_REND_screen_coordinates 8.3919 +#define GL_REND_screen_coordinates 1 8.3920 +#endif 8.3921 + 8.3922 +#ifndef GL_EXT_coordinate_frame 8.3923 +#define GL_EXT_coordinate_frame 1 8.3924 +#ifdef GL_GLEXT_PROTOTYPES 8.3925 +GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte); 8.3926 +GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *); 8.3927 +GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble); 8.3928 +GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *); 8.3929 +GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat); 8.3930 +GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *); 8.3931 +GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint); 8.3932 +GLAPI void APIENTRY glTangent3ivEXT (const GLint *); 8.3933 +GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort); 8.3934 +GLAPI void APIENTRY glTangent3svEXT (const GLshort *); 8.3935 +GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte); 8.3936 +GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *); 8.3937 +GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble); 8.3938 +GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *); 8.3939 +GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat); 8.3940 +GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *); 8.3941 +GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint); 8.3942 +GLAPI void APIENTRY glBinormal3ivEXT (const GLint *); 8.3943 +GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort); 8.3944 +GLAPI void APIENTRY glBinormal3svEXT (const GLshort *); 8.3945 +GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *); 8.3946 +GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *); 8.3947 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3948 +typedef void (APIENTRY * PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz); 8.3949 +typedef void (APIENTRY * PFNGLTANGENT3BVEXTPROC) (const GLbyte *v); 8.3950 +typedef void (APIENTRY * PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz); 8.3951 +typedef void (APIENTRY * PFNGLTANGENT3DVEXTPROC) (const GLdouble *v); 8.3952 +typedef void (APIENTRY * PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz); 8.3953 +typedef void (APIENTRY * PFNGLTANGENT3FVEXTPROC) (const GLfloat *v); 8.3954 +typedef void (APIENTRY * PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz); 8.3955 +typedef void (APIENTRY * PFNGLTANGENT3IVEXTPROC) (const GLint *v); 8.3956 +typedef void (APIENTRY * PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz); 8.3957 +typedef void (APIENTRY * PFNGLTANGENT3SVEXTPROC) (const GLshort *v); 8.3958 +typedef void (APIENTRY * PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz); 8.3959 +typedef void (APIENTRY * PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v); 8.3960 +typedef void (APIENTRY * PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz); 8.3961 +typedef void (APIENTRY * PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v); 8.3962 +typedef void (APIENTRY * PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz); 8.3963 +typedef void (APIENTRY * PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v); 8.3964 +typedef void (APIENTRY * PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz); 8.3965 +typedef void (APIENTRY * PFNGLBINORMAL3IVEXTPROC) (const GLint *v); 8.3966 +typedef void (APIENTRY * PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz); 8.3967 +typedef void (APIENTRY * PFNGLBINORMAL3SVEXTPROC) (const GLshort *v); 8.3968 +typedef void (APIENTRY * PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); 8.3969 +typedef void (APIENTRY * PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); 8.3970 +#endif 8.3971 + 8.3972 +#ifndef GL_EXT_texture_env_combine 8.3973 +#define GL_EXT_texture_env_combine 1 8.3974 +#endif 8.3975 + 8.3976 +#ifndef GL_APPLE_specular_vector 8.3977 +#define GL_APPLE_specular_vector 1 8.3978 +#endif 8.3979 + 8.3980 +#ifndef GL_APPLE_transform_hint 8.3981 +#define GL_APPLE_transform_hint 1 8.3982 +#endif 8.3983 + 8.3984 +#ifndef GL_SGIX_fog_scale 8.3985 +#define GL_SGIX_fog_scale 1 8.3986 +#endif 8.3987 + 8.3988 +#ifndef GL_SUNX_constant_data 8.3989 +#define GL_SUNX_constant_data 1 8.3990 +#ifdef GL_GLEXT_PROTOTYPES 8.3991 +GLAPI void APIENTRY glFinishTextureSUNX (void); 8.3992 +#endif /* GL_GLEXT_PROTOTYPES */ 8.3993 +typedef void (APIENTRY * PFNGLFINISHTEXTURESUNXPROC) (void); 8.3994 +#endif 8.3995 + 8.3996 +#ifndef GL_SUN_global_alpha 8.3997 +#define GL_SUN_global_alpha 1 8.3998 +#ifdef GL_GLEXT_PROTOTYPES 8.3999 +GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte); 8.4000 +GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort); 8.4001 +GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint); 8.4002 +GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat); 8.4003 +GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble); 8.4004 +GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte); 8.4005 +GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort); 8.4006 +GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint); 8.4007 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4008 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); 8.4009 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); 8.4010 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); 8.4011 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); 8.4012 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); 8.4013 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); 8.4014 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); 8.4015 +typedef void (APIENTRY * PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); 8.4016 +#endif 8.4017 + 8.4018 +#ifndef GL_SUN_triangle_list 8.4019 +#define GL_SUN_triangle_list 1 8.4020 +#ifdef GL_GLEXT_PROTOTYPES 8.4021 +GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint); 8.4022 +GLAPI void APIENTRY glReplacementCodeusSUN (GLushort); 8.4023 +GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte); 8.4024 +GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *); 8.4025 +GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *); 8.4026 +GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *); 8.4027 +GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *); 8.4028 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4029 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); 8.4030 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); 8.4031 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); 8.4032 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code); 8.4033 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code); 8.4034 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code); 8.4035 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer); 8.4036 +#endif 8.4037 + 8.4038 +#ifndef GL_SUN_vertex 8.4039 +#define GL_SUN_vertex 1 8.4040 +#ifdef GL_GLEXT_PROTOTYPES 8.4041 +GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat); 8.4042 +GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *); 8.4043 +GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); 8.4044 +GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *); 8.4045 +GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4046 +GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *); 8.4047 +GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4048 +GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *); 8.4049 +GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4050 +GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); 8.4051 +GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4052 +GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *); 8.4053 +GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4054 +GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *); 8.4055 +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); 8.4056 +GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *); 8.4057 +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4058 +GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); 8.4059 +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4060 +GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); 8.4061 +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4062 +GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); 8.4063 +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4064 +GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); 8.4065 +GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat); 8.4066 +GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *, const GLfloat *); 8.4067 +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); 8.4068 +GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *, const GLubyte *, const GLfloat *); 8.4069 +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4070 +GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); 8.4071 +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4072 +GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); 8.4073 +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4074 +GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *); 8.4075 +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4076 +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); 8.4077 +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4078 +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *); 8.4079 +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); 8.4080 +GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); 8.4081 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4082 +typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); 8.4083 +typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v); 8.4084 +typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); 8.4085 +typedef void (APIENTRY * PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v); 8.4086 +typedef void (APIENTRY * PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); 8.4087 +typedef void (APIENTRY * PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v); 8.4088 +typedef void (APIENTRY * PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); 8.4089 +typedef void (APIENTRY * PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v); 8.4090 +typedef void (APIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); 8.4091 +typedef void (APIENTRY * PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v); 8.4092 +typedef void (APIENTRY * PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); 8.4093 +typedef void (APIENTRY * PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v); 8.4094 +typedef void (APIENTRY * PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 8.4095 +typedef void (APIENTRY * PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v); 8.4096 +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); 8.4097 +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v); 8.4098 +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); 8.4099 +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v); 8.4100 +typedef void (APIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); 8.4101 +typedef void (APIENTRY * PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v); 8.4102 +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); 8.4103 +typedef void (APIENTRY * PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); 8.4104 +typedef void (APIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 8.4105 +typedef void (APIENTRY * PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); 8.4106 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); 8.4107 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v); 8.4108 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); 8.4109 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v); 8.4110 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); 8.4111 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v); 8.4112 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); 8.4113 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v); 8.4114 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); 8.4115 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); 8.4116 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); 8.4117 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v); 8.4118 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); 8.4119 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); 8.4120 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); 8.4121 +typedef void (APIENTRY * PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); 8.4122 +#endif 8.4123 + 8.4124 +#ifndef GL_EXT_blend_func_separate 8.4125 +#define GL_EXT_blend_func_separate 1 8.4126 +#ifdef GL_GLEXT_PROTOTYPES 8.4127 +GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum); 8.4128 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4129 +typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); 8.4130 +#endif 8.4131 + 8.4132 +#ifndef GL_INGR_blend_func_separate 8.4133 +#define GL_INGR_blend_func_separate 1 8.4134 +#ifdef GL_GLEXT_PROTOTYPES 8.4135 +GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum); 8.4136 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4137 +typedef void (APIENTRY * PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); 8.4138 +#endif 8.4139 + 8.4140 +#ifndef GL_INGR_color_clamp 8.4141 +#define GL_INGR_color_clamp 1 8.4142 +#endif 8.4143 + 8.4144 +#ifndef GL_INGR_interlace_read 8.4145 +#define GL_INGR_interlace_read 1 8.4146 +#endif 8.4147 + 8.4148 +#ifndef GL_EXT_stencil_wrap 8.4149 +#define GL_EXT_stencil_wrap 1 8.4150 +#endif 8.4151 + 8.4152 +#ifndef GL_EXT_422_pixels 8.4153 +#define GL_EXT_422_pixels 1 8.4154 +#endif 8.4155 + 8.4156 +#ifndef GL_NV_texgen_reflection 8.4157 +#define GL_NV_texgen_reflection 1 8.4158 +#endif 8.4159 + 8.4160 +#ifndef GL_SUN_convolution_border_modes 8.4161 +#define GL_SUN_convolution_border_modes 1 8.4162 +#endif 8.4163 + 8.4164 +#ifndef GL_EXT_texture_env_add 8.4165 +#define GL_EXT_texture_env_add 1 8.4166 +#endif 8.4167 + 8.4168 +#ifndef GL_EXT_texture_lod_bias 8.4169 +#define GL_EXT_texture_lod_bias 1 8.4170 +#endif 8.4171 + 8.4172 +#ifndef GL_EXT_texture_filter_anisotropic 8.4173 +#define GL_EXT_texture_filter_anisotropic 1 8.4174 +#endif 8.4175 + 8.4176 +#ifndef GL_EXT_vertex_weighting 8.4177 +#define GL_EXT_vertex_weighting 1 8.4178 +#ifdef GL_GLEXT_PROTOTYPES 8.4179 +GLAPI void APIENTRY glVertexWeightfEXT (GLfloat); 8.4180 +GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *); 8.4181 +GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *); 8.4182 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4183 +typedef void (APIENTRY * PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); 8.4184 +typedef void (APIENTRY * PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight); 8.4185 +typedef void (APIENTRY * PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer); 8.4186 +#endif 8.4187 + 8.4188 +#ifndef GL_NV_light_max_exponent 8.4189 +#define GL_NV_light_max_exponent 1 8.4190 +#endif 8.4191 + 8.4192 +#ifndef GL_NV_vertex_array_range 8.4193 +#define GL_NV_vertex_array_range 1 8.4194 +#ifdef GL_GLEXT_PROTOTYPES 8.4195 +GLAPI void APIENTRY glFlushVertexArrayRangeNV (void); 8.4196 +GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *); 8.4197 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4198 +typedef void (APIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); 8.4199 +typedef void (APIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer); 8.4200 +#endif 8.4201 + 8.4202 +#ifndef GL_NV_register_combiners 8.4203 +#define GL_NV_register_combiners 1 8.4204 +#ifdef GL_GLEXT_PROTOTYPES 8.4205 +GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *); 8.4206 +GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat); 8.4207 +GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *); 8.4208 +GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint); 8.4209 +GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum); 8.4210 +GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean); 8.4211 +GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum); 8.4212 +GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *); 8.4213 +GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *); 8.4214 +GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *); 8.4215 +GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *); 8.4216 +GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *); 8.4217 +GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *); 8.4218 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4219 +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params); 8.4220 +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); 8.4221 +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params); 8.4222 +typedef void (APIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); 8.4223 +typedef void (APIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); 8.4224 +typedef void (APIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); 8.4225 +typedef void (APIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); 8.4226 +typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); 8.4227 +typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); 8.4228 +typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); 8.4229 +typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params); 8.4230 +typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params); 8.4231 +typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params); 8.4232 +#endif 8.4233 + 8.4234 +#ifndef GL_NV_fog_distance 8.4235 +#define GL_NV_fog_distance 1 8.4236 +#endif 8.4237 + 8.4238 +#ifndef GL_NV_texgen_emboss 8.4239 +#define GL_NV_texgen_emboss 1 8.4240 +#endif 8.4241 + 8.4242 +#ifndef GL_NV_blend_square 8.4243 +#define GL_NV_blend_square 1 8.4244 +#endif 8.4245 + 8.4246 +#ifndef GL_NV_texture_env_combine4 8.4247 +#define GL_NV_texture_env_combine4 1 8.4248 +#endif 8.4249 + 8.4250 +#ifndef GL_MESA_resize_buffers 8.4251 +#define GL_MESA_resize_buffers 1 8.4252 +#ifdef GL_GLEXT_PROTOTYPES 8.4253 +GLAPI void APIENTRY glResizeBuffersMESA (void); 8.4254 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4255 +typedef void (APIENTRY * PFNGLRESIZEBUFFERSMESAPROC) (void); 8.4256 +#endif 8.4257 + 8.4258 +#ifndef GL_MESA_window_pos 8.4259 +#define GL_MESA_window_pos 1 8.4260 +#ifdef GL_GLEXT_PROTOTYPES 8.4261 +GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble); 8.4262 +GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *); 8.4263 +GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat); 8.4264 +GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *); 8.4265 +GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint); 8.4266 +GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *); 8.4267 +GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort); 8.4268 +GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *); 8.4269 +GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble); 8.4270 +GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *); 8.4271 +GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat); 8.4272 +GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *); 8.4273 +GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint); 8.4274 +GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *); 8.4275 +GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort); 8.4276 +GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *); 8.4277 +GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble); 8.4278 +GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *); 8.4279 +GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat); 8.4280 +GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *); 8.4281 +GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint); 8.4282 +GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *); 8.4283 +GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort); 8.4284 +GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *); 8.4285 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4286 +typedef void (APIENTRY * PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); 8.4287 +typedef void (APIENTRY * PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v); 8.4288 +typedef void (APIENTRY * PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); 8.4289 +typedef void (APIENTRY * PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v); 8.4290 +typedef void (APIENTRY * PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); 8.4291 +typedef void (APIENTRY * PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v); 8.4292 +typedef void (APIENTRY * PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); 8.4293 +typedef void (APIENTRY * PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v); 8.4294 +typedef void (APIENTRY * PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); 8.4295 +typedef void (APIENTRY * PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v); 8.4296 +typedef void (APIENTRY * PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); 8.4297 +typedef void (APIENTRY * PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v); 8.4298 +typedef void (APIENTRY * PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); 8.4299 +typedef void (APIENTRY * PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v); 8.4300 +typedef void (APIENTRY * PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); 8.4301 +typedef void (APIENTRY * PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v); 8.4302 +typedef void (APIENTRY * PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); 8.4303 +typedef void (APIENTRY * PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v); 8.4304 +typedef void (APIENTRY * PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); 8.4305 +typedef void (APIENTRY * PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v); 8.4306 +typedef void (APIENTRY * PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); 8.4307 +typedef void (APIENTRY * PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v); 8.4308 +typedef void (APIENTRY * PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); 8.4309 +typedef void (APIENTRY * PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v); 8.4310 +#endif 8.4311 + 8.4312 +#ifndef GL_IBM_cull_vertex 8.4313 +#define GL_IBM_cull_vertex 1 8.4314 +#endif 8.4315 + 8.4316 +#ifndef GL_IBM_multimode_draw_arrays 8.4317 +#define GL_IBM_multimode_draw_arrays 1 8.4318 +#ifdef GL_GLEXT_PROTOTYPES 8.4319 +GLAPI void APIENTRY glMultiModeDrawArraysIBM (GLenum, const GLint *, const GLsizei *, GLsizei, GLint); 8.4320 +GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* *, GLsizei, GLint); 8.4321 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4322 +typedef void (APIENTRY * PFNGLMULTIMODEDRAWARRAYSIBMPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); 8.4323 +typedef void (APIENTRY * PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, GLint modestride); 8.4324 +#endif 8.4325 + 8.4326 +#ifndef GL_IBM_vertex_array_lists 8.4327 +#define GL_IBM_vertex_array_lists 1 8.4328 +#ifdef GL_GLEXT_PROTOTYPES 8.4329 +GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); 8.4330 +GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); 8.4331 +GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint); 8.4332 +GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); 8.4333 +GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); 8.4334 +GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); 8.4335 +GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); 8.4336 +GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); 8.4337 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4338 +typedef void (APIENTRY * PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); 8.4339 +typedef void (APIENTRY * PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); 8.4340 +typedef void (APIENTRY * PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride); 8.4341 +typedef void (APIENTRY * PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); 8.4342 +typedef void (APIENTRY * PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); 8.4343 +typedef void (APIENTRY * PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); 8.4344 +typedef void (APIENTRY * PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); 8.4345 +typedef void (APIENTRY * PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); 8.4346 +#endif 8.4347 + 8.4348 +#ifndef GL_SGIX_subsample 8.4349 +#define GL_SGIX_subsample 1 8.4350 +#endif 8.4351 + 8.4352 +#ifndef GL_SGIX_ycrcba 8.4353 +#define GL_SGIX_ycrcba 1 8.4354 +#endif 8.4355 + 8.4356 +#ifndef GL_SGIX_ycrcb_subsample 8.4357 +#define GL_SGIX_ycrcb_subsample 1 8.4358 +#endif 8.4359 + 8.4360 +#ifndef GL_SGIX_depth_pass_instrument 8.4361 +#define GL_SGIX_depth_pass_instrument 1 8.4362 +#endif 8.4363 + 8.4364 +#ifndef GL_3DFX_texture_compression_FXT1 8.4365 +#define GL_3DFX_texture_compression_FXT1 1 8.4366 +#endif 8.4367 + 8.4368 +#ifndef GL_3DFX_multisample 8.4369 +#define GL_3DFX_multisample 1 8.4370 +#endif 8.4371 + 8.4372 +#ifndef GL_3DFX_tbuffer 8.4373 +#define GL_3DFX_tbuffer 1 8.4374 +#ifdef GL_GLEXT_PROTOTYPES 8.4375 +GLAPI void APIENTRY glTbufferMask3DFX (GLuint); 8.4376 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4377 +typedef void (APIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); 8.4378 +#endif 8.4379 + 8.4380 +#ifndef GL_EXT_multisample 8.4381 +#define GL_EXT_multisample 1 8.4382 +#ifdef GL_GLEXT_PROTOTYPES 8.4383 +GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean); 8.4384 +GLAPI void APIENTRY glSamplePatternEXT (GLenum); 8.4385 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4386 +typedef void (APIENTRY * PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); 8.4387 +typedef void (APIENTRY * PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); 8.4388 +#endif 8.4389 + 8.4390 +#ifndef GL_SGIX_vertex_preclip 8.4391 +#define GL_SGIX_vertex_preclip 1 8.4392 +#endif 8.4393 + 8.4394 +#ifndef GL_SGIX_convolution_accuracy 8.4395 +#define GL_SGIX_convolution_accuracy 1 8.4396 +#endif 8.4397 + 8.4398 +#ifndef GL_SGIX_resample 8.4399 +#define GL_SGIX_resample 1 8.4400 +#endif 8.4401 + 8.4402 +#ifndef GL_SGIS_point_line_texgen 8.4403 +#define GL_SGIS_point_line_texgen 1 8.4404 +#endif 8.4405 + 8.4406 +#ifndef GL_SGIS_texture_color_mask 8.4407 +#define GL_SGIS_texture_color_mask 1 8.4408 +#ifdef GL_GLEXT_PROTOTYPES 8.4409 +GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean); 8.4410 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4411 +typedef void (APIENTRY * PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); 8.4412 +#endif 8.4413 + 8.4414 +#ifndef GL_SGIX_igloo_interface 8.4415 +#define GL_SGIX_igloo_interface 1 8.4416 +#ifdef GL_GLEXT_PROTOTYPES 8.4417 +GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *); 8.4418 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4419 +typedef void (APIENTRY * PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params); 8.4420 +#endif 8.4421 + 8.4422 +#ifndef GL_EXT_texture_env_dot3 8.4423 +#define GL_EXT_texture_env_dot3 1 8.4424 +#endif 8.4425 + 8.4426 +#ifndef GL_ATI_texture_mirror_once 8.4427 +#define GL_ATI_texture_mirror_once 1 8.4428 +#endif 8.4429 + 8.4430 +#ifndef GL_NV_fence 8.4431 +#define GL_NV_fence 1 8.4432 +#ifdef GL_GLEXT_PROTOTYPES 8.4433 +GLAPI void APIENTRY glDeleteFencesNV (GLsizei, const GLuint *); 8.4434 +GLAPI void APIENTRY glGenFencesNV (GLsizei, GLuint *); 8.4435 +GLAPI GLboolean APIENTRY glIsFenceNV (GLuint); 8.4436 +GLAPI GLboolean APIENTRY glTestFenceNV (GLuint); 8.4437 +GLAPI void APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *); 8.4438 +GLAPI void APIENTRY glFinishFenceNV (GLuint); 8.4439 +GLAPI void APIENTRY glSetFenceNV (GLuint, GLenum); 8.4440 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4441 +typedef void (APIENTRY * PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); 8.4442 +typedef void (APIENTRY * PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); 8.4443 +typedef GLboolean (APIENTRY * PFNGLISFENCENVPROC) (GLuint fence); 8.4444 +typedef GLboolean (APIENTRY * PFNGLTESTFENCENVPROC) (GLuint fence); 8.4445 +typedef void (APIENTRY * PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); 8.4446 +typedef void (APIENTRY * PFNGLFINISHFENCENVPROC) (GLuint fence); 8.4447 +typedef void (APIENTRY * PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); 8.4448 +#endif 8.4449 + 8.4450 +#ifndef GL_NV_evaluators 8.4451 +#define GL_NV_evaluators 1 8.4452 +#ifdef GL_GLEXT_PROTOTYPES 8.4453 +GLAPI void APIENTRY glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *); 8.4454 +GLAPI void APIENTRY glMapParameterivNV (GLenum, GLenum, const GLint *); 8.4455 +GLAPI void APIENTRY glMapParameterfvNV (GLenum, GLenum, const GLfloat *); 8.4456 +GLAPI void APIENTRY glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *); 8.4457 +GLAPI void APIENTRY glGetMapParameterivNV (GLenum, GLenum, GLint *); 8.4458 +GLAPI void APIENTRY glGetMapParameterfvNV (GLenum, GLenum, GLfloat *); 8.4459 +GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *); 8.4460 +GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *); 8.4461 +GLAPI void APIENTRY glEvalMapsNV (GLenum, GLenum); 8.4462 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4463 +typedef void (APIENTRY * PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points); 8.4464 +typedef void (APIENTRY * PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params); 8.4465 +typedef void (APIENTRY * PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params); 8.4466 +typedef void (APIENTRY * PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points); 8.4467 +typedef void (APIENTRY * PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params); 8.4468 +typedef void (APIENTRY * PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params); 8.4469 +typedef void (APIENTRY * PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); 8.4470 +typedef void (APIENTRY * PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); 8.4471 +typedef void (APIENTRY * PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); 8.4472 +#endif 8.4473 + 8.4474 +#ifndef GL_NV_packed_depth_stencil 8.4475 +#define GL_NV_packed_depth_stencil 1 8.4476 +#endif 8.4477 + 8.4478 +#ifndef GL_NV_register_combiners2 8.4479 +#define GL_NV_register_combiners2 1 8.4480 +#ifdef GL_GLEXT_PROTOTYPES 8.4481 +GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *); 8.4482 +GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *); 8.4483 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4484 +typedef void (APIENTRY * PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params); 8.4485 +typedef void (APIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params); 8.4486 +#endif 8.4487 + 8.4488 +#ifndef GL_NV_texture_compression_vtc 8.4489 +#define GL_NV_texture_compression_vtc 1 8.4490 +#endif 8.4491 + 8.4492 +#ifndef GL_NV_texture_rectangle 8.4493 +#define GL_NV_texture_rectangle 1 8.4494 +#endif 8.4495 + 8.4496 +#ifndef GL_NV_texture_shader 8.4497 +#define GL_NV_texture_shader 1 8.4498 +#endif 8.4499 + 8.4500 +#ifndef GL_NV_texture_shader2 8.4501 +#define GL_NV_texture_shader2 1 8.4502 +#endif 8.4503 + 8.4504 +#ifndef GL_NV_vertex_array_range2 8.4505 +#define GL_NV_vertex_array_range2 1 8.4506 +#endif 8.4507 + 8.4508 +#ifndef GL_NV_vertex_program 8.4509 +#define GL_NV_vertex_program 1 8.4510 +#ifdef GL_GLEXT_PROTOTYPES 8.4511 +GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *); 8.4512 +GLAPI void APIENTRY glBindProgramNV (GLenum, GLuint); 8.4513 +GLAPI void APIENTRY glDeleteProgramsNV (GLsizei, const GLuint *); 8.4514 +GLAPI void APIENTRY glExecuteProgramNV (GLenum, GLuint, const GLfloat *); 8.4515 +GLAPI void APIENTRY glGenProgramsNV (GLsizei, GLuint *); 8.4516 +GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *); 8.4517 +GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *); 8.4518 +GLAPI void APIENTRY glGetProgramivNV (GLuint, GLenum, GLint *); 8.4519 +GLAPI void APIENTRY glGetProgramStringNV (GLuint, GLenum, GLubyte *); 8.4520 +GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *); 8.4521 +GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *); 8.4522 +GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *); 8.4523 +GLAPI void APIENTRY glGetVertexAttribivNV (GLuint, GLenum, GLint *); 8.4524 +GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *); 8.4525 +GLAPI GLboolean APIENTRY glIsProgramNV (GLuint); 8.4526 +GLAPI void APIENTRY glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *); 8.4527 +GLAPI void APIENTRY glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); 8.4528 +GLAPI void APIENTRY glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *); 8.4529 +GLAPI void APIENTRY glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); 8.4530 +GLAPI void APIENTRY glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *); 8.4531 +GLAPI void APIENTRY glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *); 8.4532 +GLAPI void APIENTRY glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *); 8.4533 +GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei, const GLuint *); 8.4534 +GLAPI void APIENTRY glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum); 8.4535 +GLAPI void APIENTRY glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *); 8.4536 +GLAPI void APIENTRY glVertexAttrib1dNV (GLuint, GLdouble); 8.4537 +GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint, const GLdouble *); 8.4538 +GLAPI void APIENTRY glVertexAttrib1fNV (GLuint, GLfloat); 8.4539 +GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint, const GLfloat *); 8.4540 +GLAPI void APIENTRY glVertexAttrib1sNV (GLuint, GLshort); 8.4541 +GLAPI void APIENTRY glVertexAttrib1svNV (GLuint, const GLshort *); 8.4542 +GLAPI void APIENTRY glVertexAttrib2dNV (GLuint, GLdouble, GLdouble); 8.4543 +GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint, const GLdouble *); 8.4544 +GLAPI void APIENTRY glVertexAttrib2fNV (GLuint, GLfloat, GLfloat); 8.4545 +GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint, const GLfloat *); 8.4546 +GLAPI void APIENTRY glVertexAttrib2sNV (GLuint, GLshort, GLshort); 8.4547 +GLAPI void APIENTRY glVertexAttrib2svNV (GLuint, const GLshort *); 8.4548 +GLAPI void APIENTRY glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble); 8.4549 +GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint, const GLdouble *); 8.4550 +GLAPI void APIENTRY glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat); 8.4551 +GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint, const GLfloat *); 8.4552 +GLAPI void APIENTRY glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort); 8.4553 +GLAPI void APIENTRY glVertexAttrib3svNV (GLuint, const GLshort *); 8.4554 +GLAPI void APIENTRY glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); 8.4555 +GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint, const GLdouble *); 8.4556 +GLAPI void APIENTRY glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); 8.4557 +GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint, const GLfloat *); 8.4558 +GLAPI void APIENTRY glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort); 8.4559 +GLAPI void APIENTRY glVertexAttrib4svNV (GLuint, const GLshort *); 8.4560 +GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); 8.4561 +GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint, const GLubyte *); 8.4562 +GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *); 8.4563 +GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *); 8.4564 +GLAPI void APIENTRY glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *); 8.4565 +GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *); 8.4566 +GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *); 8.4567 +GLAPI void APIENTRY glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *); 8.4568 +GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *); 8.4569 +GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *); 8.4570 +GLAPI void APIENTRY glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *); 8.4571 +GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *); 8.4572 +GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *); 8.4573 +GLAPI void APIENTRY glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *); 8.4574 +GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *); 8.4575 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4576 +typedef GLboolean (APIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences); 8.4577 +typedef void (APIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); 8.4578 +typedef void (APIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); 8.4579 +typedef void (APIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params); 8.4580 +typedef void (APIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs); 8.4581 +typedef void (APIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params); 8.4582 +typedef void (APIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); 8.4583 +typedef void (APIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params); 8.4584 +typedef void (APIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program); 8.4585 +typedef void (APIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params); 8.4586 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params); 8.4587 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params); 8.4588 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params); 8.4589 +typedef void (APIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); 8.4590 +typedef GLboolean (APIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id); 8.4591 +typedef void (APIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program); 8.4592 +typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 8.4593 +typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v); 8.4594 +typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 8.4595 +typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v); 8.4596 +typedef void (APIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble *v); 8.4597 +typedef void (APIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat *v); 8.4598 +typedef void (APIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); 8.4599 +typedef void (APIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); 8.4600 +typedef void (APIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer); 8.4601 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); 8.4602 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v); 8.4603 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); 8.4604 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v); 8.4605 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); 8.4606 +typedef void (APIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v); 8.4607 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); 8.4608 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v); 8.4609 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); 8.4610 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v); 8.4611 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); 8.4612 +typedef void (APIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v); 8.4613 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); 8.4614 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v); 8.4615 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); 8.4616 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v); 8.4617 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); 8.4618 +typedef void (APIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v); 8.4619 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 8.4620 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v); 8.4621 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 8.4622 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v); 8.4623 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); 8.4624 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v); 8.4625 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); 8.4626 +typedef void (APIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v); 8.4627 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); 8.4628 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); 8.4629 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); 8.4630 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); 8.4631 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); 8.4632 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); 8.4633 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); 8.4634 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); 8.4635 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); 8.4636 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); 8.4637 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); 8.4638 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); 8.4639 +typedef void (APIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v); 8.4640 +#endif 8.4641 + 8.4642 +#ifndef GL_SGIX_texture_coordinate_clamp 8.4643 +#define GL_SGIX_texture_coordinate_clamp 1 8.4644 +#endif 8.4645 + 8.4646 +#ifndef GL_SGIX_scalebias_hint 8.4647 +#define GL_SGIX_scalebias_hint 1 8.4648 +#endif 8.4649 + 8.4650 +#ifndef GL_OML_interlace 8.4651 +#define GL_OML_interlace 1 8.4652 +#endif 8.4653 + 8.4654 +#ifndef GL_OML_subsample 8.4655 +#define GL_OML_subsample 1 8.4656 +#endif 8.4657 + 8.4658 +#ifndef GL_OML_resample 8.4659 +#define GL_OML_resample 1 8.4660 +#endif 8.4661 + 8.4662 +#ifndef GL_NV_copy_depth_to_color 8.4663 +#define GL_NV_copy_depth_to_color 1 8.4664 +#endif 8.4665 + 8.4666 +#ifndef GL_ATI_envmap_bumpmap 8.4667 +#define GL_ATI_envmap_bumpmap 1 8.4668 +#ifdef GL_GLEXT_PROTOTYPES 8.4669 +GLAPI void APIENTRY glTexBumpParameterivATI (GLenum, const GLint *); 8.4670 +GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum, const GLfloat *); 8.4671 +GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum, GLint *); 8.4672 +GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum, GLfloat *); 8.4673 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4674 +typedef void (APIENTRY * PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param); 8.4675 +typedef void (APIENTRY * PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param); 8.4676 +typedef void (APIENTRY * PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); 8.4677 +typedef void (APIENTRY * PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); 8.4678 +#endif 8.4679 + 8.4680 +#ifndef GL_ATI_fragment_shader 8.4681 +#define GL_ATI_fragment_shader 1 8.4682 +#ifdef GL_GLEXT_PROTOTYPES 8.4683 +GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint); 8.4684 +GLAPI void APIENTRY glBindFragmentShaderATI (GLuint); 8.4685 +GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint); 8.4686 +GLAPI void APIENTRY glBeginFragmentShaderATI (void); 8.4687 +GLAPI void APIENTRY glEndFragmentShaderATI (void); 8.4688 +GLAPI void APIENTRY glPassTexCoordATI (GLuint, GLuint, GLenum); 8.4689 +GLAPI void APIENTRY glSampleMapATI (GLuint, GLuint, GLenum); 8.4690 +GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); 8.4691 +GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); 8.4692 +GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); 8.4693 +GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); 8.4694 +GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); 8.4695 +GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); 8.4696 +GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint, const GLfloat *); 8.4697 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4698 +typedef GLuint (APIENTRY * PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); 8.4699 +typedef void (APIENTRY * PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); 8.4700 +typedef void (APIENTRY * PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); 8.4701 +typedef void (APIENTRY * PFNGLBEGINFRAGMENTSHADERATIPROC) (void); 8.4702 +typedef void (APIENTRY * PFNGLENDFRAGMENTSHADERATIPROC) (void); 8.4703 +typedef void (APIENTRY * PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); 8.4704 +typedef void (APIENTRY * PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); 8.4705 +typedef void (APIENTRY * PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); 8.4706 +typedef void (APIENTRY * PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); 8.4707 +typedef void (APIENTRY * PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); 8.4708 +typedef void (APIENTRY * PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); 8.4709 +typedef void (APIENTRY * PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); 8.4710 +typedef void (APIENTRY * PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); 8.4711 +typedef void (APIENTRY * PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value); 8.4712 +#endif 8.4713 + 8.4714 +#ifndef GL_ATI_pn_triangles 8.4715 +#define GL_ATI_pn_triangles 1 8.4716 +#ifdef GL_GLEXT_PROTOTYPES 8.4717 +GLAPI void APIENTRY glPNTrianglesiATI (GLenum, GLint); 8.4718 +GLAPI void APIENTRY glPNTrianglesfATI (GLenum, GLfloat); 8.4719 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4720 +typedef void (APIENTRY * PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); 8.4721 +typedef void (APIENTRY * PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); 8.4722 +#endif 8.4723 + 8.4724 +#ifndef GL_ATI_vertex_array_object 8.4725 +#define GL_ATI_vertex_array_object 1 8.4726 +#ifdef GL_GLEXT_PROTOTYPES 8.4727 +GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum); 8.4728 +GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint); 8.4729 +GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum); 8.4730 +GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *); 8.4731 +GLAPI void APIENTRY glGetObjectBufferivATI (GLuint, GLenum, GLint *); 8.4732 +GLAPI void APIENTRY glDeleteObjectBufferATI (GLuint); 8.4733 +GLAPI void APIENTRY glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint); 8.4734 +GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *); 8.4735 +GLAPI void APIENTRY glGetArrayObjectivATI (GLenum, GLenum, GLint *); 8.4736 +GLAPI void APIENTRY glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint); 8.4737 +GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *); 8.4738 +GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *); 8.4739 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4740 +typedef GLuint (APIENTRY * PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage); 8.4741 +typedef GLboolean (APIENTRY * PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); 8.4742 +typedef void (APIENTRY * PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve); 8.4743 +typedef void (APIENTRY * PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params); 8.4744 +typedef void (APIENTRY * PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params); 8.4745 +typedef void (APIENTRY * PFNGLDELETEOBJECTBUFFERATIPROC) (GLuint buffer); 8.4746 +typedef void (APIENTRY * PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); 8.4747 +typedef void (APIENTRY * PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params); 8.4748 +typedef void (APIENTRY * PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params); 8.4749 +typedef void (APIENTRY * PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); 8.4750 +typedef void (APIENTRY * PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params); 8.4751 +typedef void (APIENTRY * PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params); 8.4752 +#endif 8.4753 + 8.4754 +#ifndef GL_EXT_vertex_shader 8.4755 +#define GL_EXT_vertex_shader 1 8.4756 +#ifdef GL_GLEXT_PROTOTYPES 8.4757 +GLAPI void APIENTRY glBeginVertexShaderEXT (void); 8.4758 +GLAPI void APIENTRY glEndVertexShaderEXT (void); 8.4759 +GLAPI void APIENTRY glBindVertexShaderEXT (GLuint); 8.4760 +GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint); 8.4761 +GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint); 8.4762 +GLAPI void APIENTRY glShaderOp1EXT (GLenum, GLuint, GLuint); 8.4763 +GLAPI void APIENTRY glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint); 8.4764 +GLAPI void APIENTRY glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint); 8.4765 +GLAPI void APIENTRY glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); 8.4766 +GLAPI void APIENTRY glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); 8.4767 +GLAPI void APIENTRY glInsertComponentEXT (GLuint, GLuint, GLuint); 8.4768 +GLAPI void APIENTRY glExtractComponentEXT (GLuint, GLuint, GLuint); 8.4769 +GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint); 8.4770 +GLAPI void APIENTRY glSetInvariantEXT (GLuint, GLenum, const void *); 8.4771 +GLAPI void APIENTRY glSetLocalConstantEXT (GLuint, GLenum, const void *); 8.4772 +GLAPI void APIENTRY glVariantbvEXT (GLuint, const GLbyte *); 8.4773 +GLAPI void APIENTRY glVariantsvEXT (GLuint, const GLshort *); 8.4774 +GLAPI void APIENTRY glVariantivEXT (GLuint, const GLint *); 8.4775 +GLAPI void APIENTRY glVariantfvEXT (GLuint, const GLfloat *); 8.4776 +GLAPI void APIENTRY glVariantdvEXT (GLuint, const GLdouble *); 8.4777 +GLAPI void APIENTRY glVariantubvEXT (GLuint, const GLubyte *); 8.4778 +GLAPI void APIENTRY glVariantusvEXT (GLuint, const GLushort *); 8.4779 +GLAPI void APIENTRY glVariantuivEXT (GLuint, const GLuint *); 8.4780 +GLAPI void APIENTRY glVariantPointerEXT (GLuint, GLenum, GLuint, const void *); 8.4781 +GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint); 8.4782 +GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint); 8.4783 +GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum, GLenum); 8.4784 +GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum, GLenum); 8.4785 +GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum, GLenum, GLenum); 8.4786 +GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum, GLenum); 8.4787 +GLAPI GLuint APIENTRY glBindParameterEXT (GLenum); 8.4788 +GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint, GLenum); 8.4789 +GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *); 8.4790 +GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint, GLenum, GLint *); 8.4791 +GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *); 8.4792 +GLAPI void APIENTRY glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *); 8.4793 +GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *); 8.4794 +GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint, GLenum, GLint *); 8.4795 +GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *); 8.4796 +GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *); 8.4797 +GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *); 8.4798 +GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *); 8.4799 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4800 +typedef void (APIENTRY * PFNGLBEGINVERTEXSHADEREXTPROC) (void); 8.4801 +typedef void (APIENTRY * PFNGLENDVERTEXSHADEREXTPROC) (void); 8.4802 +typedef void (APIENTRY * PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); 8.4803 +typedef GLuint (APIENTRY * PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); 8.4804 +typedef void (APIENTRY * PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); 8.4805 +typedef void (APIENTRY * PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); 8.4806 +typedef void (APIENTRY * PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); 8.4807 +typedef void (APIENTRY * PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); 8.4808 +typedef void (APIENTRY * PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); 8.4809 +typedef void (APIENTRY * PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); 8.4810 +typedef void (APIENTRY * PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); 8.4811 +typedef void (APIENTRY * PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); 8.4812 +typedef GLuint (APIENTRY * PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); 8.4813 +typedef void (APIENTRY * PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const void *addr); 8.4814 +typedef void (APIENTRY * PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const void *addr); 8.4815 +typedef void (APIENTRY * PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr); 8.4816 +typedef void (APIENTRY * PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr); 8.4817 +typedef void (APIENTRY * PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr); 8.4818 +typedef void (APIENTRY * PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr); 8.4819 +typedef void (APIENTRY * PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr); 8.4820 +typedef void (APIENTRY * PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr); 8.4821 +typedef void (APIENTRY * PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr); 8.4822 +typedef void (APIENTRY * PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr); 8.4823 +typedef void (APIENTRY * PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const void *addr); 8.4824 +typedef void (APIENTRY * PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); 8.4825 +typedef void (APIENTRY * PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); 8.4826 +typedef GLuint (APIENTRY * PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); 8.4827 +typedef GLuint (APIENTRY * PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); 8.4828 +typedef GLuint (APIENTRY * PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); 8.4829 +typedef GLuint (APIENTRY * PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); 8.4830 +typedef GLuint (APIENTRY * PFNGLBINDPARAMETEREXTPROC) (GLenum value); 8.4831 +typedef GLboolean (APIENTRY * PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); 8.4832 +typedef void (APIENTRY * PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); 8.4833 +typedef void (APIENTRY * PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); 8.4834 +typedef void (APIENTRY * PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); 8.4835 +typedef void (APIENTRY * PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* *data); 8.4836 +typedef void (APIENTRY * PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); 8.4837 +typedef void (APIENTRY * PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); 8.4838 +typedef void (APIENTRY * PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); 8.4839 +typedef void (APIENTRY * PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); 8.4840 +typedef void (APIENTRY * PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); 8.4841 +typedef void (APIENTRY * PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); 8.4842 +#endif 8.4843 + 8.4844 +#ifndef GL_ATI_vertex_streams 8.4845 +#define GL_ATI_vertex_streams 1 8.4846 +#ifdef GL_GLEXT_PROTOTYPES 8.4847 +GLAPI void APIENTRY glVertexStream1sATI (GLenum, GLshort); 8.4848 +GLAPI void APIENTRY glVertexStream1svATI (GLenum, const GLshort *); 8.4849 +GLAPI void APIENTRY glVertexStream1iATI (GLenum, GLint); 8.4850 +GLAPI void APIENTRY glVertexStream1ivATI (GLenum, const GLint *); 8.4851 +GLAPI void APIENTRY glVertexStream1fATI (GLenum, GLfloat); 8.4852 +GLAPI void APIENTRY glVertexStream1fvATI (GLenum, const GLfloat *); 8.4853 +GLAPI void APIENTRY glVertexStream1dATI (GLenum, GLdouble); 8.4854 +GLAPI void APIENTRY glVertexStream1dvATI (GLenum, const GLdouble *); 8.4855 +GLAPI void APIENTRY glVertexStream2sATI (GLenum, GLshort, GLshort); 8.4856 +GLAPI void APIENTRY glVertexStream2svATI (GLenum, const GLshort *); 8.4857 +GLAPI void APIENTRY glVertexStream2iATI (GLenum, GLint, GLint); 8.4858 +GLAPI void APIENTRY glVertexStream2ivATI (GLenum, const GLint *); 8.4859 +GLAPI void APIENTRY glVertexStream2fATI (GLenum, GLfloat, GLfloat); 8.4860 +GLAPI void APIENTRY glVertexStream2fvATI (GLenum, const GLfloat *); 8.4861 +GLAPI void APIENTRY glVertexStream2dATI (GLenum, GLdouble, GLdouble); 8.4862 +GLAPI void APIENTRY glVertexStream2dvATI (GLenum, const GLdouble *); 8.4863 +GLAPI void APIENTRY glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort); 8.4864 +GLAPI void APIENTRY glVertexStream3svATI (GLenum, const GLshort *); 8.4865 +GLAPI void APIENTRY glVertexStream3iATI (GLenum, GLint, GLint, GLint); 8.4866 +GLAPI void APIENTRY glVertexStream3ivATI (GLenum, const GLint *); 8.4867 +GLAPI void APIENTRY glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat); 8.4868 +GLAPI void APIENTRY glVertexStream3fvATI (GLenum, const GLfloat *); 8.4869 +GLAPI void APIENTRY glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble); 8.4870 +GLAPI void APIENTRY glVertexStream3dvATI (GLenum, const GLdouble *); 8.4871 +GLAPI void APIENTRY glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort); 8.4872 +GLAPI void APIENTRY glVertexStream4svATI (GLenum, const GLshort *); 8.4873 +GLAPI void APIENTRY glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint); 8.4874 +GLAPI void APIENTRY glVertexStream4ivATI (GLenum, const GLint *); 8.4875 +GLAPI void APIENTRY glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); 8.4876 +GLAPI void APIENTRY glVertexStream4fvATI (GLenum, const GLfloat *); 8.4877 +GLAPI void APIENTRY glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); 8.4878 +GLAPI void APIENTRY glVertexStream4dvATI (GLenum, const GLdouble *); 8.4879 +GLAPI void APIENTRY glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte); 8.4880 +GLAPI void APIENTRY glNormalStream3bvATI (GLenum, const GLbyte *); 8.4881 +GLAPI void APIENTRY glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort); 8.4882 +GLAPI void APIENTRY glNormalStream3svATI (GLenum, const GLshort *); 8.4883 +GLAPI void APIENTRY glNormalStream3iATI (GLenum, GLint, GLint, GLint); 8.4884 +GLAPI void APIENTRY glNormalStream3ivATI (GLenum, const GLint *); 8.4885 +GLAPI void APIENTRY glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat); 8.4886 +GLAPI void APIENTRY glNormalStream3fvATI (GLenum, const GLfloat *); 8.4887 +GLAPI void APIENTRY glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble); 8.4888 +GLAPI void APIENTRY glNormalStream3dvATI (GLenum, const GLdouble *); 8.4889 +GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum); 8.4890 +GLAPI void APIENTRY glVertexBlendEnviATI (GLenum, GLint); 8.4891 +GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum, GLfloat); 8.4892 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4893 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x); 8.4894 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords); 8.4895 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x); 8.4896 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords); 8.4897 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x); 8.4898 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords); 8.4899 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x); 8.4900 +typedef void (APIENTRY * PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords); 8.4901 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); 8.4902 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords); 8.4903 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); 8.4904 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords); 8.4905 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); 8.4906 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords); 8.4907 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); 8.4908 +typedef void (APIENTRY * PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords); 8.4909 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); 8.4910 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); 8.4911 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); 8.4912 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); 8.4913 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); 8.4914 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); 8.4915 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); 8.4916 +typedef void (APIENTRY * PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); 8.4917 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); 8.4918 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords); 8.4919 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); 8.4920 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords); 8.4921 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 8.4922 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords); 8.4923 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 8.4924 +typedef void (APIENTRY * PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords); 8.4925 +typedef void (APIENTRY * PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); 8.4926 +typedef void (APIENTRY * PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords); 8.4927 +typedef void (APIENTRY * PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz); 8.4928 +typedef void (APIENTRY * PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); 8.4929 +typedef void (APIENTRY * PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz); 8.4930 +typedef void (APIENTRY * PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); 8.4931 +typedef void (APIENTRY * PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); 8.4932 +typedef void (APIENTRY * PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); 8.4933 +typedef void (APIENTRY * PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); 8.4934 +typedef void (APIENTRY * PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); 8.4935 +typedef void (APIENTRY * PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); 8.4936 +typedef void (APIENTRY * PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); 8.4937 +typedef void (APIENTRY * PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); 8.4938 +#endif 8.4939 + 8.4940 +#ifndef GL_ATI_element_array 8.4941 +#define GL_ATI_element_array 1 8.4942 +#ifdef GL_GLEXT_PROTOTYPES 8.4943 +GLAPI void APIENTRY glElementPointerATI (GLenum, const GLvoid *); 8.4944 +GLAPI void APIENTRY glDrawElementArrayATI (GLenum, GLsizei); 8.4945 +GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei); 8.4946 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4947 +typedef void (APIENTRY * PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer); 8.4948 +typedef void (APIENTRY * PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); 8.4949 +typedef void (APIENTRY * PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); 8.4950 +#endif 8.4951 + 8.4952 +#ifndef GL_SUN_mesh_array 8.4953 +#define GL_SUN_mesh_array 1 8.4954 +#ifdef GL_GLEXT_PROTOTYPES 8.4955 +GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei); 8.4956 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4957 +typedef void (APIENTRY * PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width); 8.4958 +#endif 8.4959 + 8.4960 +#ifndef GL_SUN_slice_accum 8.4961 +#define GL_SUN_slice_accum 1 8.4962 +#endif 8.4963 + 8.4964 +#ifndef GL_NV_multisample_filter_hint 8.4965 +#define GL_NV_multisample_filter_hint 1 8.4966 +#endif 8.4967 + 8.4968 +#ifndef GL_NV_depth_clamp 8.4969 +#define GL_NV_depth_clamp 1 8.4970 +#endif 8.4971 + 8.4972 +#ifndef GL_NV_occlusion_query 8.4973 +#define GL_NV_occlusion_query 1 8.4974 +#ifdef GL_GLEXT_PROTOTYPES 8.4975 +GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei, GLuint *); 8.4976 +GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei, const GLuint *); 8.4977 +GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint); 8.4978 +GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint); 8.4979 +GLAPI void APIENTRY glEndOcclusionQueryNV (void); 8.4980 +GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint, GLenum, GLint *); 8.4981 +GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *); 8.4982 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4983 +typedef void (APIENTRY * PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids); 8.4984 +typedef void (APIENTRY * PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids); 8.4985 +typedef GLboolean (APIENTRY * PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); 8.4986 +typedef void (APIENTRY * PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); 8.4987 +typedef void (APIENTRY * PFNGLENDOCCLUSIONQUERYNVPROC) (void); 8.4988 +typedef void (APIENTRY * PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params); 8.4989 +typedef void (APIENTRY * PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params); 8.4990 +#endif 8.4991 + 8.4992 +#ifndef GL_NV_point_sprite 8.4993 +#define GL_NV_point_sprite 1 8.4994 +#ifdef GL_GLEXT_PROTOTYPES 8.4995 +GLAPI void APIENTRY glPointParameteriNV (GLenum, GLint); 8.4996 +GLAPI void APIENTRY glPointParameterivNV (GLenum, const GLint *); 8.4997 +#endif /* GL_GLEXT_PROTOTYPES */ 8.4998 +typedef void (APIENTRY * PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); 8.4999 +typedef void (APIENTRY * PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params); 8.5000 +#endif 8.5001 + 8.5002 +#ifndef GL_NV_texture_shader3 8.5003 +#define GL_NV_texture_shader3 1 8.5004 +#endif 8.5005 + 8.5006 +#ifndef GL_NV_vertex_program1_1 8.5007 +#define GL_NV_vertex_program1_1 1 8.5008 +#endif 8.5009 + 8.5010 +#ifndef GL_EXT_shadow_funcs 8.5011 +#define GL_EXT_shadow_funcs 1 8.5012 +#endif 8.5013 + 8.5014 +#ifndef GL_EXT_stencil_two_side 8.5015 +#define GL_EXT_stencil_two_side 1 8.5016 +#ifdef GL_GLEXT_PROTOTYPES 8.5017 +GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum); 8.5018 +#endif /* GL_GLEXT_PROTOTYPES */ 8.5019 +typedef void (APIENTRY * PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); 8.5020 +#endif 8.5021 + 8.5022 + 8.5023 +#ifdef __cplusplus 8.5024 +} 8.5025 +#endif 8.5026 + 8.5027 +#endif
9.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 9.2 +++ b/GL/glu.h Tue Nov 27 15:23:52 2007 +0100 9.3 @@ -0,0 +1,325 @@ 9.4 +/* $XFree86: xc/include/GL/glu.h,v 1.2 2001/04/03 02:18:39 dawes Exp $ */ 9.5 + 9.6 +/* 9.7 +** License Applicability. Except to the extent portions of this file are 9.8 +** made subject to an alternative license as permitted in the SGI Free 9.9 +** Software License B, Version 1.1 (the "License"), the contents of this 9.10 +** file are subject only to the provisions of the License. You may not use 9.11 +** this file except in compliance with the License. You may obtain a copy 9.12 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 9.13 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: 9.14 +** 9.15 +** http://oss.sgi.com/projects/FreeB 9.16 +** 9.17 +** Note that, as provided in the License, the Software is distributed on an 9.18 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS 9.19 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND 9.20 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A 9.21 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 9.22 +** 9.23 +** Original Code. The Original Code is: OpenGL Sample Implementation, 9.24 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, 9.25 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. 9.26 +** Copyright in any portions created by third parties is as indicated 9.27 +** elsewhere herein. All Rights Reserved. 9.28 +** 9.29 +** Additional Notice Provisions: This software was created using the 9.30 +** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has 9.31 +** not been independently verified as being compliant with the OpenGL(R) 9.32 +** version 1.2.1 Specification. 9.33 +*/ 9.34 + 9.35 +#ifndef __glu_h__ 9.36 +#define __glu_h__ 9.37 + 9.38 +#include <GL/gl.h> 9.39 + 9.40 +#ifdef __cplusplus 9.41 +extern "C" { 9.42 +#endif 9.43 + 9.44 +/*************************************************************/ 9.45 + 9.46 +/* Extensions */ 9.47 +#define GLU_EXT_object_space_tess 1 9.48 +#define GLU_EXT_nurbs_tessellator 1 9.49 + 9.50 +/* Boolean */ 9.51 +#define GLU_FALSE 0 9.52 +#define GLU_TRUE 1 9.53 + 9.54 +/* Version */ 9.55 +#define GLU_VERSION_1_1 1 9.56 +#define GLU_VERSION_1_2 1 9.57 +#define GLU_VERSION_1_3 1 9.58 + 9.59 +/* StringName */ 9.60 +#define GLU_VERSION 100800 9.61 +#define GLU_EXTENSIONS 100801 9.62 + 9.63 +/* ErrorCode */ 9.64 +#define GLU_INVALID_ENUM 100900 9.65 +#define GLU_INVALID_VALUE 100901 9.66 +#define GLU_OUT_OF_MEMORY 100902 9.67 +#define GLU_INVALID_OPERATION 100904 9.68 + 9.69 +/* NurbsDisplay */ 9.70 +/* GLU_FILL */ 9.71 +#define GLU_OUTLINE_POLYGON 100240 9.72 +#define GLU_OUTLINE_PATCH 100241 9.73 + 9.74 +/* NurbsCallback */ 9.75 +#define GLU_NURBS_ERROR 100103 9.76 +#define GLU_ERROR 100103 9.77 +#define GLU_NURBS_BEGIN 100164 9.78 +#define GLU_NURBS_BEGIN_EXT 100164 9.79 +#define GLU_NURBS_VERTEX 100165 9.80 +#define GLU_NURBS_VERTEX_EXT 100165 9.81 +#define GLU_NURBS_NORMAL 100166 9.82 +#define GLU_NURBS_NORMAL_EXT 100166 9.83 +#define GLU_NURBS_COLOR 100167 9.84 +#define GLU_NURBS_COLOR_EXT 100167 9.85 +#define GLU_NURBS_TEXTURE_COORD 100168 9.86 +#define GLU_NURBS_TEX_COORD_EXT 100168 9.87 +#define GLU_NURBS_END 100169 9.88 +#define GLU_NURBS_END_EXT 100169 9.89 +#define GLU_NURBS_BEGIN_DATA 100170 9.90 +#define GLU_NURBS_BEGIN_DATA_EXT 100170 9.91 +#define GLU_NURBS_VERTEX_DATA 100171 9.92 +#define GLU_NURBS_VERTEX_DATA_EXT 100171 9.93 +#define GLU_NURBS_NORMAL_DATA 100172 9.94 +#define GLU_NURBS_NORMAL_DATA_EXT 100172 9.95 +#define GLU_NURBS_COLOR_DATA 100173 9.96 +#define GLU_NURBS_COLOR_DATA_EXT 100173 9.97 +#define GLU_NURBS_TEXTURE_COORD_DATA 100174 9.98 +#define GLU_NURBS_TEX_COORD_DATA_EXT 100174 9.99 +#define GLU_NURBS_END_DATA 100175 9.100 +#define GLU_NURBS_END_DATA_EXT 100175 9.101 + 9.102 +/* NurbsError */ 9.103 +#define GLU_NURBS_ERROR1 100251 9.104 +#define GLU_NURBS_ERROR2 100252 9.105 +#define GLU_NURBS_ERROR3 100253 9.106 +#define GLU_NURBS_ERROR4 100254 9.107 +#define GLU_NURBS_ERROR5 100255 9.108 +#define GLU_NURBS_ERROR6 100256 9.109 +#define GLU_NURBS_ERROR7 100257 9.110 +#define GLU_NURBS_ERROR8 100258 9.111 +#define GLU_NURBS_ERROR9 100259 9.112 +#define GLU_NURBS_ERROR10 100260 9.113 +#define GLU_NURBS_ERROR11 100261 9.114 +#define GLU_NURBS_ERROR12 100262 9.115 +#define GLU_NURBS_ERROR13 100263 9.116 +#define GLU_NURBS_ERROR14 100264 9.117 +#define GLU_NURBS_ERROR15 100265 9.118 +#define GLU_NURBS_ERROR16 100266 9.119 +#define GLU_NURBS_ERROR17 100267 9.120 +#define GLU_NURBS_ERROR18 100268 9.121 +#define GLU_NURBS_ERROR19 100269 9.122 +#define GLU_NURBS_ERROR20 100270 9.123 +#define GLU_NURBS_ERROR21 100271 9.124 +#define GLU_NURBS_ERROR22 100272 9.125 +#define GLU_NURBS_ERROR23 100273 9.126 +#define GLU_NURBS_ERROR24 100274 9.127 +#define GLU_NURBS_ERROR25 100275 9.128 +#define GLU_NURBS_ERROR26 100276 9.129 +#define GLU_NURBS_ERROR27 100277 9.130 +#define GLU_NURBS_ERROR28 100278 9.131 +#define GLU_NURBS_ERROR29 100279 9.132 +#define GLU_NURBS_ERROR30 100280 9.133 +#define GLU_NURBS_ERROR31 100281 9.134 +#define GLU_NURBS_ERROR32 100282 9.135 +#define GLU_NURBS_ERROR33 100283 9.136 +#define GLU_NURBS_ERROR34 100284 9.137 +#define GLU_NURBS_ERROR35 100285 9.138 +#define GLU_NURBS_ERROR36 100286 9.139 +#define GLU_NURBS_ERROR37 100287 9.140 + 9.141 +/* NurbsProperty */ 9.142 +#define GLU_AUTO_LOAD_MATRIX 100200 9.143 +#define GLU_CULLING 100201 9.144 +#define GLU_SAMPLING_TOLERANCE 100203 9.145 +#define GLU_DISPLAY_MODE 100204 9.146 +#define GLU_PARAMETRIC_TOLERANCE 100202 9.147 +#define GLU_SAMPLING_METHOD 100205 9.148 +#define GLU_U_STEP 100206 9.149 +#define GLU_V_STEP 100207 9.150 +#define GLU_NURBS_MODE 100160 9.151 +#define GLU_NURBS_MODE_EXT 100160 9.152 +#define GLU_NURBS_TESSELLATOR 100161 9.153 +#define GLU_NURBS_TESSELLATOR_EXT 100161 9.154 +#define GLU_NURBS_RENDERER 100162 9.155 +#define GLU_NURBS_RENDERER_EXT 100162 9.156 + 9.157 +/* NurbsSampling */ 9.158 +#define GLU_OBJECT_PARAMETRIC_ERROR 100208 9.159 +#define GLU_OBJECT_PARAMETRIC_ERROR_EXT 100208 9.160 +#define GLU_OBJECT_PATH_LENGTH 100209 9.161 +#define GLU_OBJECT_PATH_LENGTH_EXT 100209 9.162 +#define GLU_PATH_LENGTH 100215 9.163 +#define GLU_PARAMETRIC_ERROR 100216 9.164 +#define GLU_DOMAIN_DISTANCE 100217 9.165 + 9.166 +/* NurbsTrim */ 9.167 +#define GLU_MAP1_TRIM_2 100210 9.168 +#define GLU_MAP1_TRIM_3 100211 9.169 + 9.170 +/* QuadricDrawStyle */ 9.171 +#define GLU_POINT 100010 9.172 +#define GLU_LINE 100011 9.173 +#define GLU_FILL 100012 9.174 +#define GLU_SILHOUETTE 100013 9.175 + 9.176 +/* QuadricCallback */ 9.177 +/* GLU_ERROR */ 9.178 + 9.179 +/* QuadricNormal */ 9.180 +#define GLU_SMOOTH 100000 9.181 +#define GLU_FLAT 100001 9.182 +#define GLU_NONE 100002 9.183 + 9.184 +/* QuadricOrientation */ 9.185 +#define GLU_OUTSIDE 100020 9.186 +#define GLU_INSIDE 100021 9.187 + 9.188 +/* TessCallback */ 9.189 +#define GLU_TESS_BEGIN 100100 9.190 +#define GLU_BEGIN 100100 9.191 +#define GLU_TESS_VERTEX 100101 9.192 +#define GLU_VERTEX 100101 9.193 +#define GLU_TESS_END 100102 9.194 +#define GLU_END 100102 9.195 +#define GLU_TESS_ERROR 100103 9.196 +#define GLU_TESS_EDGE_FLAG 100104 9.197 +#define GLU_EDGE_FLAG 100104 9.198 +#define GLU_TESS_COMBINE 100105 9.199 +#define GLU_TESS_BEGIN_DATA 100106 9.200 +#define GLU_TESS_VERTEX_DATA 100107 9.201 +#define GLU_TESS_END_DATA 100108 9.202 +#define GLU_TESS_ERROR_DATA 100109 9.203 +#define GLU_TESS_EDGE_FLAG_DATA 100110 9.204 +#define GLU_TESS_COMBINE_DATA 100111 9.205 + 9.206 +/* TessContour */ 9.207 +#define GLU_CW 100120 9.208 +#define GLU_CCW 100121 9.209 +#define GLU_INTERIOR 100122 9.210 +#define GLU_EXTERIOR 100123 9.211 +#define GLU_UNKNOWN 100124 9.212 + 9.213 +/* TessProperty */ 9.214 +#define GLU_TESS_WINDING_RULE 100140 9.215 +#define GLU_TESS_BOUNDARY_ONLY 100141 9.216 +#define GLU_TESS_TOLERANCE 100142 9.217 + 9.218 +/* TessError */ 9.219 +#define GLU_TESS_ERROR1 100151 9.220 +#define GLU_TESS_ERROR2 100152 9.221 +#define GLU_TESS_ERROR3 100153 9.222 +#define GLU_TESS_ERROR4 100154 9.223 +#define GLU_TESS_ERROR5 100155 9.224 +#define GLU_TESS_ERROR6 100156 9.225 +#define GLU_TESS_ERROR7 100157 9.226 +#define GLU_TESS_ERROR8 100158 9.227 +#define GLU_TESS_MISSING_BEGIN_POLYGON 100151 9.228 +#define GLU_TESS_MISSING_BEGIN_CONTOUR 100152 9.229 +#define GLU_TESS_MISSING_END_POLYGON 100153 9.230 +#define GLU_TESS_MISSING_END_CONTOUR 100154 9.231 +#define GLU_TESS_COORD_TOO_LARGE 100155 9.232 +#define GLU_TESS_NEED_COMBINE_CALLBACK 100156 9.233 + 9.234 +/* TessWinding */ 9.235 +#define GLU_TESS_WINDING_ODD 100130 9.236 +#define GLU_TESS_WINDING_NONZERO 100131 9.237 +#define GLU_TESS_WINDING_POSITIVE 100132 9.238 +#define GLU_TESS_WINDING_NEGATIVE 100133 9.239 +#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134 9.240 + 9.241 +/*************************************************************/ 9.242 + 9.243 + 9.244 +#ifdef __cplusplus 9.245 +class GLUnurbs; 9.246 +class GLUquadric; 9.247 +class GLUtesselator; 9.248 +#else 9.249 +typedef struct GLUnurbs GLUnurbs; 9.250 +typedef struct GLUquadric GLUquadric; 9.251 +typedef struct GLUtesselator GLUtesselator; 9.252 +#endif 9.253 + 9.254 +typedef struct GLUnurbs GLUnurbsObj; 9.255 +typedef struct GLUquadric GLUquadricObj; 9.256 +typedef struct GLUtesselator GLUtesselatorObj; 9.257 +typedef struct GLUtesselator GLUtriangulatorObj; 9.258 + 9.259 +#define GLU_TESS_MAX_COORD 1.0e150 9.260 + 9.261 +/* Internal convenience typedefs */ 9.262 +typedef GLvoid (*_GLUfuncptr)(GLvoid); 9.263 + 9.264 +extern void gluBeginCurve (GLUnurbs* nurb); 9.265 +extern void gluBeginPolygon (GLUtesselator* tess); 9.266 +extern void gluBeginSurface (GLUnurbs* nurb); 9.267 +extern void gluBeginTrim (GLUnurbs* nurb); 9.268 +extern GLint gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); 9.269 +extern GLint gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data); 9.270 +extern GLint gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); 9.271 +extern GLint gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data); 9.272 +extern GLint gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); 9.273 +extern GLint gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); 9.274 +extern GLboolean gluCheckExtension (const GLubyte *extName, const GLubyte *extString); 9.275 +extern void gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks); 9.276 +extern void gluDeleteNurbsRenderer (GLUnurbs* nurb); 9.277 +extern void gluDeleteQuadric (GLUquadric* quad); 9.278 +extern void gluDeleteTess (GLUtesselator* tess); 9.279 +extern void gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops); 9.280 +extern void gluEndCurve (GLUnurbs* nurb); 9.281 +extern void gluEndPolygon (GLUtesselator* tess); 9.282 +extern void gluEndSurface (GLUnurbs* nurb); 9.283 +extern void gluEndTrim (GLUnurbs* nurb); 9.284 +extern const GLubyte * gluErrorString (GLenum error); 9.285 +extern void gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data); 9.286 +extern const GLubyte * gluGetString (GLenum name); 9.287 +extern void gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data); 9.288 +extern void gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view); 9.289 +extern void gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ); 9.290 +extern GLUnurbs* gluNewNurbsRenderer (void); 9.291 +extern GLUquadric* gluNewQuadric (void); 9.292 +extern GLUtesselator* gluNewTess (void); 9.293 +extern void gluNextContour (GLUtesselator* tess, GLenum type); 9.294 +extern void gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc); 9.295 +extern void gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData); 9.296 +extern void gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData); 9.297 +extern void gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type); 9.298 +extern void gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value); 9.299 +extern void gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type); 9.300 +extern void gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top); 9.301 +extern void gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep); 9.302 +extern void gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar); 9.303 +extern void gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport); 9.304 +extern GLint gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ); 9.305 +extern void gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type); 9.306 +extern void gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc); 9.307 +extern void gluQuadricDrawStyle (GLUquadric* quad, GLenum draw); 9.308 +extern void gluQuadricNormals (GLUquadric* quad, GLenum normal); 9.309 +extern void gluQuadricOrientation (GLUquadric* quad, GLenum orientation); 9.310 +extern void gluQuadricTexture (GLUquadric* quad, GLboolean texture); 9.311 +extern GLint gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut); 9.312 +extern void gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks); 9.313 +extern void gluTessBeginContour (GLUtesselator* tess); 9.314 +extern void gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data); 9.315 +extern void gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc); 9.316 +extern void gluTessEndContour (GLUtesselator* tess); 9.317 +extern void gluTessEndPolygon (GLUtesselator* tess); 9.318 +extern void gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ); 9.319 +extern void gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data); 9.320 +extern void gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data); 9.321 +extern GLint gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ); 9.322 +extern GLint gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble near, GLdouble far, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW); 9.323 + 9.324 +#ifdef __cplusplus 9.325 +} 9.326 +#endif 9.327 + 9.328 +#endif /* __glu_h__ */
10.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 10.2 +++ b/GL/glut.h Tue Nov 27 15:23:52 2007 +0100 10.3 @@ -0,0 +1,771 @@ 10.4 +#ifndef __glut_h__ 10.5 +#define __glut_h__ 10.6 + 10.7 +/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998. */ 10.8 + 10.9 +/* This program is freely distributable without licensing fees and is 10.10 + provided without guarantee or warrantee expressed or implied. This 10.11 + program is -not- in the public domain. */ 10.12 + 10.13 +#include <GL/gl.h> 10.14 +#include <GL/glu.h> 10.15 + 10.16 +#ifdef __cplusplus 10.17 +extern "C" { 10.18 +#endif 10.19 + 10.20 +#if defined(_WIN32) 10.21 + 10.22 +/* GLUT 3.7 now tries to avoid including <windows.h> 10.23 + to avoid name space pollution, but Win32's <GL/gl.h> 10.24 + needs APIENTRY and WINGDIAPI defined properly. 10.25 + 10.26 + tjump@spgs.com contributes: 10.27 + If users are building glut code on MS Windows, then they should 10.28 + make sure they include windows.h early, let's not get into a 10.29 + header definitions war since MS has proven it's capability to 10.30 + change header dependencies w/o publishing they have done so. 10.31 + 10.32 + So, let's not include windows.h here, as it's not really required and 10.33 + MS own gl/gl.h *should* include it if the dependency is there. */ 10.34 + 10.35 +/* To disable automatic library usage for GLUT, define GLUT_NO_LIB_PRAGMA 10.36 + in your compile preprocessor options. */ 10.37 +# if !defined(GLUT_BUILDING_LIB) && !defined(GLUT_NO_LIB_PRAGMA) 10.38 +# pragma comment (lib, "winmm.lib") /* link with Windows MultiMedia lib */ 10.39 +/* To enable automatic SGI OpenGL for Windows library usage for GLUT, 10.40 + define GLUT_USE_SGI_OPENGL in your compile preprocessor options. */ 10.41 +# ifdef GLUT_USE_SGI_OPENGL 10.42 +# pragma comment (lib, "opengl.lib") /* link with SGI OpenGL for Windows lib */ 10.43 +# pragma comment (lib, "glu.lib") /* link with SGI OpenGL Utility lib */ 10.44 +# pragma comment (lib, "glut.lib") /* link with Win32 GLUT for SGI OpenGL lib */ 10.45 +# else 10.46 +# pragma comment (lib, "opengl32.lib") /* link with Microsoft OpenGL lib */ 10.47 +# pragma comment (lib, "glu32.lib") /* link with Microsoft OpenGL Utility lib */ 10.48 +# pragma comment (lib, "glut32.lib") /* link with Win32 GLUT lib */ 10.49 +# endif 10.50 +# endif 10.51 + 10.52 +/* To disable supression of annoying warnings about floats being promoted 10.53 + to doubles, define GLUT_NO_WARNING_DISABLE in your compile preprocessor 10.54 + options. */ 10.55 +# ifndef GLUT_NO_WARNING_DISABLE 10.56 +# pragma warning (disable:4244) /* Disable bogus VC++ 4.2 conversion warnings. */ 10.57 +# pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */ 10.58 +# endif 10.59 + 10.60 +/* Win32 has an annoying issue where there are multiple C run-time 10.61 + libraries (CRTs). If the executable is linked with a different CRT 10.62 + from the GLUT DLL, the GLUT DLL will not share the same CRT static 10.63 + data seen by the executable. In particular, atexit callbacks registered 10.64 + in the executable will not be called if GLUT calls its (different) 10.65 + exit routine). GLUT is typically built with the 10.66 + "/MD" option (the CRT with multithreading DLL support), but the Visual 10.67 + C++ linker default is "/ML" (the single threaded CRT). 10.68 + 10.69 + One workaround to this issue is requiring users to always link with 10.70 + the same CRT as GLUT is compiled with. That requires users supply a 10.71 + non-standard option. GLUT 3.7 has its own built-in workaround where 10.72 + the executable's "exit" function pointer is covertly passed to GLUT. 10.73 + GLUT then calls the executable's exit function pointer to ensure that 10.74 + any "atexit" calls registered by the application are called if GLUT 10.75 + needs to exit. 10.76 + 10.77 + Note that the __glut*WithExit routines should NEVER be called directly. 10.78 + To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK. */ 10.79 + 10.80 +/* XXX This is from Win32's <process.h> */ 10.81 +# if !defined(_MSC_VER) && !defined(__cdecl) 10.82 + /* Define __cdecl for non-Microsoft compilers. */ 10.83 +# define __cdecl 10.84 +# define GLUT_DEFINED___CDECL 10.85 +# endif 10.86 +# ifndef _CRTIMP 10.87 +# ifdef _NTSDK 10.88 + /* Definition compatible with NT SDK */ 10.89 +# define _CRTIMP 10.90 +# else 10.91 + /* Current definition */ 10.92 +# ifdef _DLL 10.93 +# define _CRTIMP __declspec(dllimport) 10.94 +# else 10.95 +# define _CRTIMP 10.96 +# endif 10.97 +# endif 10.98 +# define GLUT_DEFINED__CRTIMP 10.99 +# endif 10.100 +# ifndef GLUT_BUILDING_LIB 10.101 +extern _CRTIMP void __cdecl exit(int); 10.102 +# endif 10.103 + 10.104 +/* GLUT callback calling convention for Win32. */ 10.105 +# define GLUTCALLBACK __cdecl 10.106 + 10.107 +/* for callback/function pointer defs */ 10.108 +# define GLUTAPIENTRYV __cdecl 10.109 + 10.110 +/* glut-win32 specific macros, defined to prevent collision with 10.111 + and redifinition of Windows system defs, also removes requirement of 10.112 + pretty much any standard windows header from this file */ 10.113 + 10.114 +#if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__CYGWIN32__) 10.115 +# define GLUTAPIENTRY __stdcall 10.116 +#else 10.117 +# define GLUTAPIENTRY 10.118 +#endif 10.119 + 10.120 +/* GLUT API entry point declarations for Win32. */ 10.121 +#if defined(GLUT_BUILDING_LIB) && defined(_DLL) 10.122 +# define GLUTAPI __declspec(dllexport) 10.123 +#elif defined(_DLL) 10.124 +# define GLUTAPI __declspec(dllimport) 10.125 +#else 10.126 +# define GLUTAPI extern 10.127 +#endif 10.128 + 10.129 +#if defined(_WIN32) && !defined(_WINDEF_) && !defined(MESA) 10.130 +# if !defined(MESA_MINWARN) 10.131 +# pragma message( "note: WINDOWS.H not included, providing Mesa definition of CALLBACK macro" ) 10.132 +# pragma message( "----: and PROC typedef. If you receive compiler warnings about either ") 10.133 +# pragma message( "----: being multiply defined you should include WINDOWS.H priot to gl/glut.h" ) 10.134 +# endif 10.135 +# define CALLBACK __stdcall 10.136 +typedef int (GLUTAPIENTRY *PROC)(); 10.137 +typedef void *HGLRC; 10.138 +typedef void *HDC; 10.139 +typedef unsigned long COLORREF; 10.140 +#endif 10.141 + 10.142 +#if defined(_WIN32) && !defined(_WINGDI_) && !defined(MESA) 10.143 +# if !defined(MESA_MINWARN) 10.144 +# pragma message( "note: WINDOWS.H not included, providing Mesa definition of wgl functions" ) 10.145 +# pragma message( "----: and macros. If you receive compiler warnings about any being multiply ") 10.146 +# pragma message( "----: defined you should include WINDOWS.H priot to gl/glut.h" ) 10.147 +# endif 10.148 +# define WGL_FONT_LINES 0 10.149 +# define WGL_FONT_POLYGONS 1 10.150 +# ifdef UNICODE 10.151 +# define wglUseFontBitmaps wglUseFontBitmapsW 10.152 +# define wglUseFontOutlines wglUseFontOutlinesW 10.153 +# else 10.154 +# define wglUseFontBitmaps wglUseFontBitmapsA 10.155 +# define wglUseFontOutlines wglUseFontOutlinesA 10.156 +# endif /* !UNICODE */ 10.157 +typedef struct tagLAYERPLANEDESCRIPTOR LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR; 10.158 +typedef struct _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT; 10.159 +# pragma warning( push ) 10.160 +# pragma warning( disable : 4273 ) /* 'function' : inconsistent DLL linkage. dllexport assumed. */ 10.161 +# define WGLAPI __declspec(dllimport) 10.162 +WGLAPI int GLAPIENTRY wglDeleteContext(HGLRC); 10.163 +WGLAPI int GLAPIENTRY wglMakeCurrent(HDC,HGLRC); 10.164 +WGLAPI int GLAPIENTRY wglSetPixelFormat(HDC, int, const PIXELFORMATDESCRIPTOR *); 10.165 +WGLAPI int GLAPIENTRY wglSwapBuffers(HDC hdc); 10.166 +WGLAPI HDC GLAPIENTRY wglGetCurrentDC(void); 10.167 +WGLAPI HGLRC GLAPIENTRY wglCreateContext(HDC); 10.168 +WGLAPI HGLRC GLAPIENTRY wglCreateLayerContext(HDC,int); 10.169 +WGLAPI HGLRC GLAPIENTRY wglGetCurrentContext(void); 10.170 +WGLAPI PROC GLAPIENTRY wglGetProcAddress(const char*); 10.171 +WGLAPI int GLAPIENTRY wglChoosePixelFormat(HDC, const PIXELFORMATDESCRIPTOR *); 10.172 +WGLAPI int GLAPIENTRY wglCopyContext(HGLRC, HGLRC, unsigned int); 10.173 +WGLAPI int GLAPIENTRY wglDeleteContext(HGLRC); 10.174 +WGLAPI int GLAPIENTRY wglDescribeLayerPlane(HDC, int, int, unsigned int,LPLAYERPLANEDESCRIPTOR); 10.175 +WGLAPI int GLAPIENTRY wglDescribePixelFormat(HDC,int, unsigned int, LPPIXELFORMATDESCRIPTOR); 10.176 +WGLAPI int GLAPIENTRY wglGetLayerPaletteEntries(HDC, int, int, int,COLORREF *); 10.177 +WGLAPI int GLAPIENTRY wglGetPixelFormat(HDC hdc); 10.178 +WGLAPI int GLAPIENTRY wglMakeCurrent(HDC, HGLRC); 10.179 +WGLAPI int GLAPIENTRY wglRealizeLayerPalette(HDC, int, int); 10.180 +WGLAPI int GLAPIENTRY wglSetLayerPaletteEntries(HDC, int, int, int,const COLORREF *); 10.181 +WGLAPI int GLAPIENTRY wglShareLists(HGLRC, HGLRC); 10.182 +WGLAPI int GLAPIENTRY wglSwapLayerBuffers(HDC, unsigned int); 10.183 +WGLAPI int GLAPIENTRY wglUseFontBitmapsA(HDC, unsigned long, unsigned long, unsigned long); 10.184 +WGLAPI int GLAPIENTRY wglUseFontBitmapsW(HDC, unsigned long, unsigned long, unsigned long); 10.185 +WGLAPI int GLAPIENTRY wglUseFontOutlinesA(HDC, unsigned long, unsigned long, unsigned long, float,float, int, LPGLYPHMETRICSFLOAT); 10.186 +WGLAPI int GLAPIENTRY wglUseFontOutlinesW(HDC, unsigned long, unsigned long, unsigned long, float,float, int, LPGLYPHMETRICSFLOAT); 10.187 +WGLAPI int GLAPIENTRY SwapBuffers(HDC); 10.188 +WGLAPI int GLAPIENTRY ChoosePixelFormat(HDC,const PIXELFORMATDESCRIPTOR *); 10.189 +WGLAPI int GLAPIENTRY DescribePixelFormat(HDC,int,unsigned int,LPPIXELFORMATDESCRIPTOR); 10.190 +WGLAPI int GLAPIENTRY GetPixelFormat(HDC); 10.191 +WGLAPI int GLAPIENTRY SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR *); 10.192 +# undef WGLAPI 10.193 +# pragma warning( pop ) 10.194 +#endif 10.195 + 10.196 +#else /* _WIN32 not defined */ 10.197 + 10.198 +/* Define GLUTAPIENTRY and GLUTCALLBACK to nothing if we aren't on Win32. */ 10.199 +# define GLUTAPIENTRY 10.200 +# define GLUTAPIENTRYV 10.201 +# define GLUT_APIENTRY_DEFINED 10.202 +# define GLUTCALLBACK 10.203 +# define GLUTAPI extern 10.204 +/* Prototype exit for the non-Win32 case (see above). */ 10.205 +/*extern void exit(int); this screws up gcc -ansi -pedantic! */ 10.206 +#endif 10.207 + 10.208 + 10.209 +/** 10.210 + GLUT API revision history: 10.211 + 10.212 + GLUT_API_VERSION is updated to reflect incompatible GLUT 10.213 + API changes (interface changes, semantic changes, deletions, 10.214 + or additions). 10.215 + 10.216 + GLUT_API_VERSION=1 First public release of GLUT. 11/29/94 10.217 + 10.218 + GLUT_API_VERSION=2 Added support for OpenGL/GLX multisampling, 10.219 + extension. Supports new input devices like tablet, dial and button 10.220 + box, and Spaceball. Easy to query OpenGL extensions. 10.221 + 10.222 + GLUT_API_VERSION=3 glutMenuStatus added. 10.223 + 10.224 + GLUT_API_VERSION=4 glutInitDisplayString, glutWarpPointer, 10.225 + glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic 10.226 + video resize subAPI, glutPostWindowRedisplay, glutKeyboardUpFunc, 10.227 + glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat, 10.228 + glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!). 10.229 + 10.230 + GLUT_API_VERSION=5 glutGetProcAddress (added by BrianP) 10.231 +**/ 10.232 +#ifndef GLUT_API_VERSION /* allow this to be overriden */ 10.233 +#define GLUT_API_VERSION 5 10.234 +#endif 10.235 + 10.236 +/** 10.237 + GLUT implementation revision history: 10.238 + 10.239 + GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT 10.240 + API revisions and implementation revisions (ie, bug fixes). 10.241 + 10.242 + GLUT_XLIB_IMPLEMENTATION=1 mjk's first public release of 10.243 + GLUT Xlib-based implementation. 11/29/94 10.244 + 10.245 + GLUT_XLIB_IMPLEMENTATION=2 mjk's second public release of 10.246 + GLUT Xlib-based implementation providing GLUT version 2 10.247 + interfaces. 10.248 + 10.249 + GLUT_XLIB_IMPLEMENTATION=3 mjk's GLUT 2.2 images. 4/17/95 10.250 + 10.251 + GLUT_XLIB_IMPLEMENTATION=4 mjk's GLUT 2.3 images. 6/?/95 10.252 + 10.253 + GLUT_XLIB_IMPLEMENTATION=5 mjk's GLUT 3.0 images. 10/?/95 10.254 + 10.255 + GLUT_XLIB_IMPLEMENTATION=7 mjk's GLUT 3.1+ with glutWarpPoitner. 7/24/96 10.256 + 10.257 + GLUT_XLIB_IMPLEMENTATION=8 mjk's GLUT 3.1+ with glutWarpPoitner 10.258 + and video resize. 1/3/97 10.259 + 10.260 + GLUT_XLIB_IMPLEMENTATION=9 mjk's GLUT 3.4 release with early GLUT 4 routines. 10.261 + 10.262 + GLUT_XLIB_IMPLEMENTATION=11 Mesa 2.5's GLUT 3.6 release. 10.263 + 10.264 + GLUT_XLIB_IMPLEMENTATION=12 mjk's GLUT 3.6 release with early GLUT 4 routines + signal handling. 10.265 + 10.266 + GLUT_XLIB_IMPLEMENTATION=13 mjk's GLUT 3.7 beta with GameGLUT support. 10.267 + 10.268 + GLUT_XLIB_IMPLEMENTATION=14 mjk's GLUT 3.7 beta with f90gl friend interface. 10.269 + 10.270 + GLUT_XLIB_IMPLEMENTATION=15 mjk's GLUT 3.7 beta sync'ed with Mesa <GL/glut.h> 10.271 +**/ 10.272 +#ifndef GLUT_XLIB_IMPLEMENTATION /* Allow this to be overriden. */ 10.273 +#define GLUT_XLIB_IMPLEMENTATION 15 10.274 +#endif 10.275 + 10.276 +/* Display mode bit masks. */ 10.277 +#define GLUT_RGB 0 10.278 +#define GLUT_RGBA GLUT_RGB 10.279 +#define GLUT_INDEX 1 10.280 +#define GLUT_SINGLE 0 10.281 +#define GLUT_DOUBLE 2 10.282 +#define GLUT_ACCUM 4 10.283 +#define GLUT_ALPHA 8 10.284 +#define GLUT_DEPTH 16 10.285 +#define GLUT_STENCIL 32 10.286 +#if (GLUT_API_VERSION >= 2) 10.287 +#define GLUT_MULTISAMPLE 128 10.288 +#define GLUT_STEREO 256 10.289 +#endif 10.290 +#if (GLUT_API_VERSION >= 3) 10.291 +#define GLUT_LUMINANCE 512 10.292 +#endif 10.293 + 10.294 +/* Mouse buttons. */ 10.295 +#define GLUT_LEFT_BUTTON 0 10.296 +#define GLUT_MIDDLE_BUTTON 1 10.297 +#define GLUT_RIGHT_BUTTON 2 10.298 + 10.299 +/* Mouse button state. */ 10.300 +#define GLUT_DOWN 0 10.301 +#define GLUT_UP 1 10.302 + 10.303 +#if (GLUT_API_VERSION >= 2) 10.304 +/* function keys */ 10.305 +#define GLUT_KEY_F1 1 10.306 +#define GLUT_KEY_F2 2 10.307 +#define GLUT_KEY_F3 3 10.308 +#define GLUT_KEY_F4 4 10.309 +#define GLUT_KEY_F5 5 10.310 +#define GLUT_KEY_F6 6 10.311 +#define GLUT_KEY_F7 7 10.312 +#define GLUT_KEY_F8 8 10.313 +#define GLUT_KEY_F9 9 10.314 +#define GLUT_KEY_F10 10 10.315 +#define GLUT_KEY_F11 11 10.316 +#define GLUT_KEY_F12 12 10.317 +/* directional keys */ 10.318 +#define GLUT_KEY_LEFT 100 10.319 +#define GLUT_KEY_UP 101 10.320 +#define GLUT_KEY_RIGHT 102 10.321 +#define GLUT_KEY_DOWN 103 10.322 +#define GLUT_KEY_PAGE_UP 104 10.323 +#define GLUT_KEY_PAGE_DOWN 105 10.324 +#define GLUT_KEY_HOME 106 10.325 +#define GLUT_KEY_END 107 10.326 +#define GLUT_KEY_INSERT 108 10.327 +#endif 10.328 + 10.329 +/* Entry/exit state. */ 10.330 +#define GLUT_LEFT 0 10.331 +#define GLUT_ENTERED 1 10.332 + 10.333 +/* Menu usage state. */ 10.334 +#define GLUT_MENU_NOT_IN_USE 0 10.335 +#define GLUT_MENU_IN_USE 1 10.336 + 10.337 +/* Visibility state. */ 10.338 +#define GLUT_NOT_VISIBLE 0 10.339 +#define GLUT_VISIBLE 1 10.340 + 10.341 +/* Window status state. */ 10.342 +#define GLUT_HIDDEN 0 10.343 +#define GLUT_FULLY_RETAINED 1 10.344 +#define GLUT_PARTIALLY_RETAINED 2 10.345 +#define GLUT_FULLY_COVERED 3 10.346 + 10.347 +/* Color index component selection values. */ 10.348 +#define GLUT_RED 0 10.349 +#define GLUT_GREEN 1 10.350 +#define GLUT_BLUE 2 10.351 + 10.352 +/* Layers for use. */ 10.353 +#define GLUT_NORMAL 0 10.354 +#define GLUT_OVERLAY 1 10.355 + 10.356 +#if defined(_WIN32) 10.357 +/* Stroke font constants (use these in GLUT program). */ 10.358 +#define GLUT_STROKE_ROMAN ((void*)0) 10.359 +#define GLUT_STROKE_MONO_ROMAN ((void*)1) 10.360 + 10.361 +/* Bitmap font constants (use these in GLUT program). */ 10.362 +#define GLUT_BITMAP_9_BY_15 ((void*)2) 10.363 +#define GLUT_BITMAP_8_BY_13 ((void*)3) 10.364 +#define GLUT_BITMAP_TIMES_ROMAN_10 ((void*)4) 10.365 +#define GLUT_BITMAP_TIMES_ROMAN_24 ((void*)5) 10.366 +#if (GLUT_API_VERSION >= 3) 10.367 +#define GLUT_BITMAP_HELVETICA_10 ((void*)6) 10.368 +#define GLUT_BITMAP_HELVETICA_12 ((void*)7) 10.369 +#define GLUT_BITMAP_HELVETICA_18 ((void*)8) 10.370 +#endif 10.371 +#else 10.372 +/* Stroke font opaque addresses (use constants instead in source code). */ 10.373 +GLUTAPI void *glutStrokeRoman; 10.374 +GLUTAPI void *glutStrokeMonoRoman; 10.375 + 10.376 +/* Stroke font constants (use these in GLUT program). */ 10.377 +#define GLUT_STROKE_ROMAN (&glutStrokeRoman) 10.378 +#define GLUT_STROKE_MONO_ROMAN (&glutStrokeMonoRoman) 10.379 + 10.380 +/* Bitmap font opaque addresses (use constants instead in source code). */ 10.381 +GLUTAPI void *glutBitmap9By15; 10.382 +GLUTAPI void *glutBitmap8By13; 10.383 +GLUTAPI void *glutBitmapTimesRoman10; 10.384 +GLUTAPI void *glutBitmapTimesRoman24; 10.385 +GLUTAPI void *glutBitmapHelvetica10; 10.386 +GLUTAPI void *glutBitmapHelvetica12; 10.387 +GLUTAPI void *glutBitmapHelvetica18; 10.388 + 10.389 +/* Bitmap font constants (use these in GLUT program). */ 10.390 +#define GLUT_BITMAP_9_BY_15 (&glutBitmap9By15) 10.391 +#define GLUT_BITMAP_8_BY_13 (&glutBitmap8By13) 10.392 +#define GLUT_BITMAP_TIMES_ROMAN_10 (&glutBitmapTimesRoman10) 10.393 +#define GLUT_BITMAP_TIMES_ROMAN_24 (&glutBitmapTimesRoman24) 10.394 +#if (GLUT_API_VERSION >= 3) 10.395 +#define GLUT_BITMAP_HELVETICA_10 (&glutBitmapHelvetica10) 10.396 +#define GLUT_BITMAP_HELVETICA_12 (&glutBitmapHelvetica12) 10.397 +#define GLUT_BITMAP_HELVETICA_18 (&glutBitmapHelvetica18) 10.398 +#endif 10.399 +#endif 10.400 + 10.401 +/* glutGet parameters. */ 10.402 +#define GLUT_WINDOW_X 100 10.403 +#define GLUT_WINDOW_Y 101 10.404 +#define GLUT_WINDOW_WIDTH 102 10.405 +#define GLUT_WINDOW_HEIGHT 103 10.406 +#define GLUT_WINDOW_BUFFER_SIZE 104 10.407 +#define GLUT_WINDOW_STENCIL_SIZE 105 10.408 +#define GLUT_WINDOW_DEPTH_SIZE 106 10.409 +#define GLUT_WINDOW_RED_SIZE 107 10.410 +#define GLUT_WINDOW_GREEN_SIZE 108 10.411 +#define GLUT_WINDOW_BLUE_SIZE 109 10.412 +#define GLUT_WINDOW_ALPHA_SIZE 110 10.413 +#define GLUT_WINDOW_ACCUM_RED_SIZE 111 10.414 +#define GLUT_WINDOW_ACCUM_GREEN_SIZE 112 10.415 +#define GLUT_WINDOW_ACCUM_BLUE_SIZE 113 10.416 +#define GLUT_WINDOW_ACCUM_ALPHA_SIZE 114 10.417 +#define GLUT_WINDOW_DOUBLEBUFFER 115 10.418 +#define GLUT_WINDOW_RGBA 116 10.419 +#define GLUT_WINDOW_PARENT 117 10.420 +#define GLUT_WINDOW_NUM_CHILDREN 118 10.421 +#define GLUT_WINDOW_COLORMAP_SIZE 119 10.422 +#if (GLUT_API_VERSION >= 2) 10.423 +#define GLUT_WINDOW_NUM_SAMPLES 120 10.424 +#define GLUT_WINDOW_STEREO 121 10.425 +#endif 10.426 +#if (GLUT_API_VERSION >= 3) 10.427 +#define GLUT_WINDOW_CURSOR 122 10.428 +#endif 10.429 +#define GLUT_SCREEN_WIDTH 200 10.430 +#define GLUT_SCREEN_HEIGHT 201 10.431 +#define GLUT_SCREEN_WIDTH_MM 202 10.432 +#define GLUT_SCREEN_HEIGHT_MM 203 10.433 +#define GLUT_MENU_NUM_ITEMS 300 10.434 +#define GLUT_DISPLAY_MODE_POSSIBLE 400 10.435 +#define GLUT_INIT_WINDOW_X 500 10.436 +#define GLUT_INIT_WINDOW_Y 501 10.437 +#define GLUT_INIT_WINDOW_WIDTH 502 10.438 +#define GLUT_INIT_WINDOW_HEIGHT 503 10.439 +#define GLUT_INIT_DISPLAY_MODE 504 10.440 +#if (GLUT_API_VERSION >= 2) 10.441 +#define GLUT_ELAPSED_TIME 700 10.442 +#endif 10.443 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) 10.444 +#define GLUT_WINDOW_FORMAT_ID 123 10.445 +#endif 10.446 + 10.447 +#if (GLUT_API_VERSION >= 2) 10.448 +/* glutDeviceGet parameters. */ 10.449 +#define GLUT_HAS_KEYBOARD 600 10.450 +#define GLUT_HAS_MOUSE 601 10.451 +#define GLUT_HAS_SPACEBALL 602 10.452 +#define GLUT_HAS_DIAL_AND_BUTTON_BOX 603 10.453 +#define GLUT_HAS_TABLET 604 10.454 +#define GLUT_NUM_MOUSE_BUTTONS 605 10.455 +#define GLUT_NUM_SPACEBALL_BUTTONS 606 10.456 +#define GLUT_NUM_BUTTON_BOX_BUTTONS 607 10.457 +#define GLUT_NUM_DIALS 608 10.458 +#define GLUT_NUM_TABLET_BUTTONS 609 10.459 +#endif 10.460 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) 10.461 +#define GLUT_DEVICE_IGNORE_KEY_REPEAT 610 10.462 +#define GLUT_DEVICE_KEY_REPEAT 611 10.463 +#define GLUT_HAS_JOYSTICK 612 10.464 +#define GLUT_OWNS_JOYSTICK 613 10.465 +#define GLUT_JOYSTICK_BUTTONS 614 10.466 +#define GLUT_JOYSTICK_AXES 615 10.467 +#define GLUT_JOYSTICK_POLL_RATE 616 10.468 +#endif 10.469 + 10.470 +#if (GLUT_API_VERSION >= 3) 10.471 +/* glutLayerGet parameters. */ 10.472 +#define GLUT_OVERLAY_POSSIBLE 800 10.473 +#define GLUT_LAYER_IN_USE 801 10.474 +#define GLUT_HAS_OVERLAY 802 10.475 +#define GLUT_TRANSPARENT_INDEX 803 10.476 +#define GLUT_NORMAL_DAMAGED 804 10.477 +#define GLUT_OVERLAY_DAMAGED 805 10.478 + 10.479 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) 10.480 +/* glutVideoResizeGet parameters. */ 10.481 +#define GLUT_VIDEO_RESIZE_POSSIBLE 900 10.482 +#define GLUT_VIDEO_RESIZE_IN_USE 901 10.483 +#define GLUT_VIDEO_RESIZE_X_DELTA 902 10.484 +#define GLUT_VIDEO_RESIZE_Y_DELTA 903 10.485 +#define GLUT_VIDEO_RESIZE_WIDTH_DELTA 904 10.486 +#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA 905 10.487 +#define GLUT_VIDEO_RESIZE_X 906 10.488 +#define GLUT_VIDEO_RESIZE_Y 907 10.489 +#define GLUT_VIDEO_RESIZE_WIDTH 908 10.490 +#define GLUT_VIDEO_RESIZE_HEIGHT 909 10.491 +#endif 10.492 + 10.493 +/* glutUseLayer parameters. */ 10.494 +#define GLUT_NORMAL 0 10.495 +#define GLUT_OVERLAY 1 10.496 + 10.497 +/* glutGetModifiers return mask. */ 10.498 +#define GLUT_ACTIVE_SHIFT 1 10.499 +#define GLUT_ACTIVE_CTRL 2 10.500 +#define GLUT_ACTIVE_ALT 4 10.501 + 10.502 +/* glutSetCursor parameters. */ 10.503 +/* Basic arrows. */ 10.504 +#define GLUT_CURSOR_RIGHT_ARROW 0 10.505 +#define GLUT_CURSOR_LEFT_ARROW 1 10.506 +/* Symbolic cursor shapes. */ 10.507 +#define GLUT_CURSOR_INFO 2 10.508 +#define GLUT_CURSOR_DESTROY 3 10.509 +#define GLUT_CURSOR_HELP 4 10.510 +#define GLUT_CURSOR_CYCLE 5 10.511 +#define GLUT_CURSOR_SPRAY 6 10.512 +#define GLUT_CURSOR_WAIT 7 10.513 +#define GLUT_CURSOR_TEXT 8 10.514 +#define GLUT_CURSOR_CROSSHAIR 9 10.515 +/* Directional cursors. */ 10.516 +#define GLUT_CURSOR_UP_DOWN 10 10.517 +#define GLUT_CURSOR_LEFT_RIGHT 11 10.518 +/* Sizing cursors. */ 10.519 +#define GLUT_CURSOR_TOP_SIDE 12 10.520 +#define GLUT_CURSOR_BOTTOM_SIDE 13 10.521 +#define GLUT_CURSOR_LEFT_SIDE 14 10.522 +#define GLUT_CURSOR_RIGHT_SIDE 15 10.523 +#define GLUT_CURSOR_TOP_LEFT_CORNER 16 10.524 +#define GLUT_CURSOR_TOP_RIGHT_CORNER 17 10.525 +#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER 18 10.526 +#define GLUT_CURSOR_BOTTOM_LEFT_CORNER 19 10.527 +/* Inherit from parent window. */ 10.528 +#define GLUT_CURSOR_INHERIT 100 10.529 +/* Blank cursor. */ 10.530 +#define GLUT_CURSOR_NONE 101 10.531 +/* Fullscreen crosshair (if available). */ 10.532 +#define GLUT_CURSOR_FULL_CROSSHAIR 102 10.533 +#endif 10.534 + 10.535 +/* GLUT initialization sub-API. */ 10.536 +GLUTAPI void GLUTAPIENTRY glutInit(int *argcp, char **argv); 10.537 +#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) 10.538 +GLUTAPI void GLUTAPIENTRY __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int)); 10.539 +#ifndef GLUT_BUILDING_LIB 10.540 +static void GLUTAPIENTRY glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); } 10.541 +#define glutInit glutInit_ATEXIT_HACK 10.542 +#endif 10.543 +#endif 10.544 +GLUTAPI void GLUTAPIENTRY glutInitDisplayMode(unsigned int mode); 10.545 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) 10.546 +GLUTAPI void GLUTAPIENTRY glutInitDisplayString(const char *string); 10.547 +#endif 10.548 +GLUTAPI void GLUTAPIENTRY glutInitWindowPosition(int x, int y); 10.549 +GLUTAPI void GLUTAPIENTRY glutInitWindowSize(int width, int height); 10.550 +GLUTAPI void GLUTAPIENTRY glutMainLoop(void); 10.551 + 10.552 +/* GLUT window sub-API. */ 10.553 +GLUTAPI int GLUTAPIENTRY glutCreateWindow(const char *title); 10.554 +#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) 10.555 +GLUTAPI int GLUTAPIENTRY __glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int)); 10.556 +#ifndef GLUT_BUILDING_LIB 10.557 +static int GLUTAPIENTRY glutCreateWindow_ATEXIT_HACK(const char *title) { return __glutCreateWindowWithExit(title, exit); } 10.558 +#define glutCreateWindow glutCreateWindow_ATEXIT_HACK 10.559 +#endif 10.560 +#endif 10.561 +GLUTAPI int GLUTAPIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height); 10.562 +GLUTAPI void GLUTAPIENTRY glutDestroyWindow(int win); 10.563 +GLUTAPI void GLUTAPIENTRY glutPostRedisplay(void); 10.564 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11) 10.565 +GLUTAPI void GLUTAPIENTRY glutPostWindowRedisplay(int win); 10.566 +#endif 10.567 +GLUTAPI void GLUTAPIENTRY glutSwapBuffers(void); 10.568 +GLUTAPI int GLUTAPIENTRY glutGetWindow(void); 10.569 +GLUTAPI void GLUTAPIENTRY glutSetWindow(int win); 10.570 +GLUTAPI void GLUTAPIENTRY glutSetWindowTitle(const char *title); 10.571 +GLUTAPI void GLUTAPIENTRY glutSetIconTitle(const char *title); 10.572 +GLUTAPI void GLUTAPIENTRY glutPositionWindow(int x, int y); 10.573 +GLUTAPI void GLUTAPIENTRY glutReshapeWindow(int width, int height); 10.574 +GLUTAPI void GLUTAPIENTRY glutPopWindow(void); 10.575 +GLUTAPI void GLUTAPIENTRY glutPushWindow(void); 10.576 +GLUTAPI void GLUTAPIENTRY glutIconifyWindow(void); 10.577 +GLUTAPI void GLUTAPIENTRY glutShowWindow(void); 10.578 +GLUTAPI void GLUTAPIENTRY glutHideWindow(void); 10.579 +#if (GLUT_API_VERSION >= 3) 10.580 +GLUTAPI void GLUTAPIENTRY glutFullScreen(void); 10.581 +GLUTAPI void GLUTAPIENTRY glutSetCursor(int cursor); 10.582 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) 10.583 +GLUTAPI void GLUTAPIENTRY glutWarpPointer(int x, int y); 10.584 +#endif 10.585 + 10.586 +/* GLUT overlay sub-API. */ 10.587 +GLUTAPI void GLUTAPIENTRY glutEstablishOverlay(void); 10.588 +GLUTAPI void GLUTAPIENTRY glutRemoveOverlay(void); 10.589 +GLUTAPI void GLUTAPIENTRY glutUseLayer(GLenum layer); 10.590 +GLUTAPI void GLUTAPIENTRY glutPostOverlayRedisplay(void); 10.591 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11) 10.592 +GLUTAPI void GLUTAPIENTRY glutPostWindowOverlayRedisplay(int win); 10.593 +#endif 10.594 +GLUTAPI void GLUTAPIENTRY glutShowOverlay(void); 10.595 +GLUTAPI void GLUTAPIENTRY glutHideOverlay(void); 10.596 +#endif 10.597 + 10.598 +/* GLUT menu sub-API. */ 10.599 +GLUTAPI int GLUTAPIENTRY glutCreateMenu(void (GLUTCALLBACK *func)(int)); 10.600 +#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK) 10.601 +GLUTAPI int GLUTAPIENTRY __glutCreateMenuWithExit(void (GLUTCALLBACK *func)(int), void (__cdecl *exitfunc)(int)); 10.602 +#ifndef GLUT_BUILDING_LIB 10.603 +static int GLUTAPIENTRY glutCreateMenu_ATEXIT_HACK(void (GLUTCALLBACK *func)(int)) { return __glutCreateMenuWithExit(func, exit); } 10.604 +#define glutCreateMenu glutCreateMenu_ATEXIT_HACK 10.605 +#endif 10.606 +#endif 10.607 +GLUTAPI void GLUTAPIENTRY glutDestroyMenu(int menu); 10.608 +GLUTAPI int GLUTAPIENTRY glutGetMenu(void); 10.609 +GLUTAPI void GLUTAPIENTRY glutSetMenu(int menu); 10.610 +GLUTAPI void GLUTAPIENTRY glutAddMenuEntry(const char *label, int value); 10.611 +GLUTAPI void GLUTAPIENTRY glutAddSubMenu(const char *label, int submenu); 10.612 +GLUTAPI void GLUTAPIENTRY glutChangeToMenuEntry(int item, const char *label, int value); 10.613 +GLUTAPI void GLUTAPIENTRY glutChangeToSubMenu(int item, const char *label, int submenu); 10.614 +GLUTAPI void GLUTAPIENTRY glutRemoveMenuItem(int item); 10.615 +GLUTAPI void GLUTAPIENTRY glutAttachMenu(int button); 10.616 +GLUTAPI void GLUTAPIENTRY glutDetachMenu(int button); 10.617 + 10.618 +/* GLUT window callback sub-API. */ 10.619 +GLUTAPI void GLUTAPIENTRY glutDisplayFunc(void (GLUTCALLBACK *func)(void)); 10.620 +GLUTAPI void GLUTAPIENTRY glutReshapeFunc(void (GLUTCALLBACK *func)(int width, int height)); 10.621 +GLUTAPI void GLUTAPIENTRY glutKeyboardFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y)); 10.622 +GLUTAPI void GLUTAPIENTRY glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y)); 10.623 +GLUTAPI void GLUTAPIENTRY glutMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); 10.624 +GLUTAPI void GLUTAPIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); 10.625 +GLUTAPI void GLUTAPIENTRY glutEntryFunc(void (GLUTCALLBACK *func)(int state)); 10.626 +GLUTAPI void GLUTAPIENTRY glutVisibilityFunc(void (GLUTCALLBACK *func)(int state)); 10.627 +GLUTAPI void GLUTAPIENTRY glutIdleFunc(void (GLUTCALLBACK *func)(void)); 10.628 +GLUTAPI void GLUTAPIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK *func)(int value), int value); 10.629 +GLUTAPI void GLUTAPIENTRY glutMenuStateFunc(void (GLUTCALLBACK *func)(int state)); 10.630 +#if (GLUT_API_VERSION >= 2) 10.631 +GLUTAPI void GLUTAPIENTRY glutSpecialFunc(void (GLUTCALLBACK *func)(int key, int x, int y)); 10.632 +GLUTAPI void GLUTAPIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK *func)(int x, int y, int z)); 10.633 +GLUTAPI void GLUTAPIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK *func)(int x, int y, int z)); 10.634 +GLUTAPI void GLUTAPIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK *func)(int button, int state)); 10.635 +GLUTAPI void GLUTAPIENTRY glutButtonBoxFunc(void (GLUTCALLBACK *func)(int button, int state)); 10.636 +GLUTAPI void GLUTAPIENTRY glutDialsFunc(void (GLUTCALLBACK *func)(int dial, int value)); 10.637 +GLUTAPI void GLUTAPIENTRY glutTabletMotionFunc(void (GLUTCALLBACK *func)(int x, int y)); 10.638 +GLUTAPI void GLUTAPIENTRY glutTabletButtonFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y)); 10.639 +#if (GLUT_API_VERSION >= 3) 10.640 +GLUTAPI void GLUTAPIENTRY glutMenuStatusFunc(void (GLUTCALLBACK *func)(int status, int x, int y)); 10.641 +GLUTAPI void GLUTAPIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK *func)(void)); 10.642 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) 10.643 +GLUTAPI void GLUTAPIENTRY glutWindowStatusFunc(void (GLUTCALLBACK *func)(int state)); 10.644 +#endif 10.645 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) 10.646 +GLUTAPI void GLUTAPIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y)); 10.647 +GLUTAPI void GLUTAPIENTRY glutSpecialUpFunc(void (GLUTCALLBACK *func)(int key, int x, int y)); 10.648 +GLUTAPI void GLUTAPIENTRY glutJoystickFunc(void (GLUTCALLBACK *func)(unsigned int buttonMask, int x, int y, int z), int pollInterval); 10.649 +#endif 10.650 +#endif 10.651 +#endif 10.652 + 10.653 +/* GLUT color index sub-API. */ 10.654 +GLUTAPI void GLUTAPIENTRY glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue); 10.655 +GLUTAPI GLfloat GLUTAPIENTRY glutGetColor(int ndx, int component); 10.656 +GLUTAPI void GLUTAPIENTRY glutCopyColormap(int win); 10.657 + 10.658 +/* GLUT state retrieval sub-API. */ 10.659 +GLUTAPI int GLUTAPIENTRY glutGet(GLenum type); 10.660 +GLUTAPI int GLUTAPIENTRY glutDeviceGet(GLenum type); 10.661 +#if (GLUT_API_VERSION >= 2) 10.662 +/* GLUT extension support sub-API */ 10.663 +GLUTAPI int GLUTAPIENTRY glutExtensionSupported(const char *name); 10.664 +#endif 10.665 +#if (GLUT_API_VERSION >= 3) 10.666 +GLUTAPI int GLUTAPIENTRY glutGetModifiers(void); 10.667 +GLUTAPI int GLUTAPIENTRY glutLayerGet(GLenum type); 10.668 +#endif 10.669 +#if (GLUT_API_VERSION >= 5) 10.670 +GLUTAPI void * GLUTAPIENTRY glutGetProcAddress(const char *procName); 10.671 +#endif 10.672 + 10.673 +/* GLUT font sub-API */ 10.674 +GLUTAPI void GLUTAPIENTRY glutBitmapCharacter(void *font, int character); 10.675 +GLUTAPI int GLUTAPIENTRY glutBitmapWidth(void *font, int character); 10.676 +GLUTAPI void GLUTAPIENTRY glutStrokeCharacter(void *font, int character); 10.677 +GLUTAPI int GLUTAPIENTRY glutStrokeWidth(void *font, int character); 10.678 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) 10.679 +GLUTAPI int GLUTAPIENTRY glutBitmapLength(void *font, const unsigned char *string); 10.680 +GLUTAPI int GLUTAPIENTRY glutStrokeLength(void *font, const unsigned char *string); 10.681 +#endif 10.682 + 10.683 +/* GLUT pre-built models sub-API */ 10.684 +GLUTAPI void GLUTAPIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks); 10.685 +GLUTAPI void GLUTAPIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks); 10.686 +GLUTAPI void GLUTAPIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks); 10.687 +GLUTAPI void GLUTAPIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks); 10.688 +GLUTAPI void GLUTAPIENTRY glutWireCube(GLdouble size); 10.689 +GLUTAPI void GLUTAPIENTRY glutSolidCube(GLdouble size); 10.690 +GLUTAPI void GLUTAPIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); 10.691 +GLUTAPI void GLUTAPIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); 10.692 +GLUTAPI void GLUTAPIENTRY glutWireDodecahedron(void); 10.693 +GLUTAPI void GLUTAPIENTRY glutSolidDodecahedron(void); 10.694 +GLUTAPI void GLUTAPIENTRY glutWireTeapot(GLdouble size); 10.695 +GLUTAPI void GLUTAPIENTRY glutSolidTeapot(GLdouble size); 10.696 +GLUTAPI void GLUTAPIENTRY glutWireOctahedron(void); 10.697 +GLUTAPI void GLUTAPIENTRY glutSolidOctahedron(void); 10.698 +GLUTAPI void GLUTAPIENTRY glutWireTetrahedron(void); 10.699 +GLUTAPI void GLUTAPIENTRY glutSolidTetrahedron(void); 10.700 +GLUTAPI void GLUTAPIENTRY glutWireIcosahedron(void); 10.701 +GLUTAPI void GLUTAPIENTRY glutSolidIcosahedron(void); 10.702 + 10.703 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) 10.704 +/* GLUT video resize sub-API. */ 10.705 +GLUTAPI int GLUTAPIENTRY glutVideoResizeGet(GLenum param); 10.706 +GLUTAPI void GLUTAPIENTRY glutSetupVideoResizing(void); 10.707 +GLUTAPI void GLUTAPIENTRY glutStopVideoResizing(void); 10.708 +GLUTAPI void GLUTAPIENTRY glutVideoResize(int x, int y, int width, int height); 10.709 +GLUTAPI void GLUTAPIENTRY glutVideoPan(int x, int y, int width, int height); 10.710 + 10.711 +/* GLUT debugging sub-API. */ 10.712 +GLUTAPI void GLUTAPIENTRY glutReportErrors(void); 10.713 +#endif 10.714 + 10.715 +#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13) 10.716 +/* GLUT device control sub-API. */ 10.717 +/* glutSetKeyRepeat modes. */ 10.718 +#define GLUT_KEY_REPEAT_OFF 0 10.719 +#define GLUT_KEY_REPEAT_ON 1 10.720 +#define GLUT_KEY_REPEAT_DEFAULT 2 10.721 + 10.722 +/* Joystick button masks. */ 10.723 +#define GLUT_JOYSTICK_BUTTON_A 1 10.724 +#define GLUT_JOYSTICK_BUTTON_B 2 10.725 +#define GLUT_JOYSTICK_BUTTON_C 4 10.726 +#define GLUT_JOYSTICK_BUTTON_D 8 10.727 + 10.728 +GLUTAPI void GLUTAPIENTRY glutIgnoreKeyRepeat(int ignore); 10.729 +GLUTAPI void GLUTAPIENTRY glutSetKeyRepeat(int repeatMode); 10.730 +GLUTAPI void GLUTAPIENTRY glutForceJoystickFunc(void); 10.731 + 10.732 +/* GLUT game mode sub-API. */ 10.733 +/* glutGameModeGet. */ 10.734 +#define GLUT_GAME_MODE_ACTIVE 0 10.735 +#define GLUT_GAME_MODE_POSSIBLE 1 10.736 +#define GLUT_GAME_MODE_WIDTH 2 10.737 +#define GLUT_GAME_MODE_HEIGHT 3 10.738 +#define GLUT_GAME_MODE_PIXEL_DEPTH 4 10.739 +#define GLUT_GAME_MODE_REFRESH_RATE 5 10.740 +#define GLUT_GAME_MODE_DISPLAY_CHANGED 6 10.741 + 10.742 +GLUTAPI void GLUTAPIENTRY glutGameModeString(const char *string); 10.743 +GLUTAPI int GLUTAPIENTRY glutEnterGameMode(void); 10.744 +GLUTAPI void GLUTAPIENTRY glutLeaveGameMode(void); 10.745 +GLUTAPI int GLUTAPIENTRY glutGameModeGet(GLenum mode); 10.746 +#endif 10.747 + 10.748 +#ifdef __cplusplus 10.749 +} 10.750 +#endif 10.751 + 10.752 +#if 0 10.753 +#ifdef GLUT_APIENTRY_DEFINED 10.754 +# undef GLUT_APIENTRY_DEFINED 10.755 +# undef APIENTRY 10.756 +#endif 10.757 + 10.758 +#ifdef GLUT_WINGDIAPI_DEFINED 10.759 +# undef GLUT_WINGDIAPI_DEFINED 10.760 +# undef WINGDIAPI 10.761 +#endif 10.762 + 10.763 +#ifdef GLUT_DEFINED___CDECL 10.764 +# undef GLUT_DEFINED___CDECL 10.765 +# undef __cdecl 10.766 +#endif 10.767 + 10.768 +#ifdef GLUT_DEFINED__CRTIMP 10.769 +# undef GLUT_DEFINED__CRTIMP 10.770 +# undef _CRTIMP 10.771 +#endif 10.772 +#endif 10.773 + 10.774 +#endif /* __glut_h__ */
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 11.2 +++ b/GL/glutf90.h Tue Nov 27 15:23:52 2007 +0100 11.3 @@ -0,0 +1,81 @@ 11.4 +#ifndef __glutf90_h__ 11.5 +#define __glutf90_h__ 11.6 + 11.7 +/* Copyright (c) Mark J. Kilgard & Willam F. Mitchell, 1998. */ 11.8 + 11.9 +/* This program is freely distributable without licensing fees 11.10 + and is provided without guarantee or warrantee expressed or 11.11 + implied. This program is -not- in the public domain. */ 11.12 + 11.13 +/* This header provides the binding interface for William Mitchell's 11.14 + f90gl Fortran 90 GLUT binding. Other GLUT language bindings 11.15 + can and should use this interace. */ 11.16 + 11.17 +/* I appreciate the guidance from William Mitchell 11.18 + (mitchell@cam.nist.gov) in developing this friend interface 11.19 + for use by the f90gl package. See ../../README.fortran */ 11.20 + 11.21 +#include <GL/glut.h> 11.22 + 11.23 +/* Which callback enumerants for the __glutSetFCB/__glutGetFCB routines. */ 11.24 +/* NOTE These values are part of a binary interface for the f90gl Fortran 11.25 + 90 binding and so must NOT changes (additions are allowed). */ 11.26 + 11.27 +/* GLUTwindow callbacks. */ 11.28 +#define GLUT_FCB_DISPLAY 0 /* GLUTdisplayFCB */ 11.29 +#define GLUT_FCB_RESHAPE 1 /* GLUTreshapeFCB */ 11.30 +#define GLUT_FCB_MOUSE 2 /* GLUTmouseFCB */ 11.31 +#define GLUT_FCB_MOTION 3 /* GLUTmotionFCB */ 11.32 +#define GLUT_FCB_PASSIVE 4 /* GLUTpassiveFCB */ 11.33 +#define GLUT_FCB_ENTRY 5 /* GLUTentryFCB */ 11.34 +#define GLUT_FCB_KEYBOARD 6 /* GLUTkeyboardFCB */ 11.35 +#define GLUT_FCB_KEYBOARD_UP 7 /* GLUTkeyboardFCB */ 11.36 +#define GLUT_FCB_WINDOW_STATUS 8 /* GLUTwindowStatusFCB */ 11.37 +#define GLUT_FCB_VISIBILITY 9 /* GLUTvisibilityFCB */ 11.38 +#define GLUT_FCB_SPECIAL 10 /* GLUTspecialFCB */ 11.39 +#define GLUT_FCB_SPECIAL_UP 11 /* GLUTspecialFCB */ 11.40 +#define GLUT_FCB_BUTTON_BOX 12 /* GLUTbuttonBoxFCB */ 11.41 +#define GLUT_FCB_DIALS 13 /* GLUTdialsFCB */ 11.42 +#define GLUT_FCB_SPACE_MOTION 14 /* GLUTspaceMotionFCB */ 11.43 +#define GLUT_FCB_SPACE_ROTATE 15 /* GLUTspaceRotateFCB */ 11.44 +#define GLUT_FCB_SPACE_BUTTON 16 /* GLUTspaceButtonFCB */ 11.45 +#define GLUT_FCB_TABLET_MOTION 17 /* GLUTtabletMotionFCB */ 11.46 +#define GLUT_FCB_TABLET_BUTTON 18 /* GLUTtabletButtonFCB */ 11.47 +#define GLUT_FCB_JOYSTICK 19 /* GLUTjoystickFCB */ 11.48 +/* Non-GLUTwindow callbacks. */ 11.49 +#define GLUT_FCB_OVERLAY_DISPLAY 100 /* GLUTdisplayFCB */ 11.50 +#define GLUT_FCB_SELECT 101 /* GLUTselectFCB */ 11.51 +#define GLUT_FCB_TIMER 102 /* GLUTtimerFCB */ 11.52 + 11.53 +/* GLUT Fortran callback function types. */ 11.54 +typedef void (GLUTCALLBACK *GLUTdisplayFCB) (void); 11.55 +typedef void (GLUTCALLBACK *GLUTreshapeFCB) (int *, int *); 11.56 +/* NOTE the pressed key is int, not unsigned char for Fortran! */ 11.57 +typedef void (GLUTCALLBACK *GLUTkeyboardFCB) (int *, int *, int *); 11.58 +typedef void (GLUTCALLBACK *GLUTmouseFCB) (int *, int *, int *, int *); 11.59 +typedef void (GLUTCALLBACK *GLUTmotionFCB) (int *, int *); 11.60 +typedef void (GLUTCALLBACK *GLUTpassiveFCB) (int *, int *); 11.61 +typedef void (GLUTCALLBACK *GLUTentryFCB) (int *); 11.62 +typedef void (GLUTCALLBACK *GLUTwindowStatusFCB) (int *); 11.63 +typedef void (GLUTCALLBACK *GLUTvisibilityFCB) (int *); 11.64 +typedef void (GLUTCALLBACK *GLUTspecialFCB) (int *, int *, int *); 11.65 +typedef void (GLUTCALLBACK *GLUTbuttonBoxFCB) (int *, int *); 11.66 +typedef void (GLUTCALLBACK *GLUTdialsFCB) (int *, int *); 11.67 +typedef void (GLUTCALLBACK *GLUTspaceMotionFCB) (int *, int *, int *); 11.68 +typedef void (GLUTCALLBACK *GLUTspaceRotateFCB) (int *, int *, int *); 11.69 +typedef void (GLUTCALLBACK *GLUTspaceButtonFCB) (int *, int *); 11.70 +typedef void (GLUTCALLBACK *GLUTtabletMotionFCB) (int *, int *); 11.71 +typedef void (GLUTCALLBACK *GLUTtabletButtonFCB) (int *, int *, int *, int *); 11.72 +typedef void (GLUTCALLBACK *GLUTjoystickFCB) (unsigned int *buttonMask, int *x, int *y, int *z); 11.73 + 11.74 +typedef void (GLUTCALLBACK *GLUTselectFCB) (int *); 11.75 +typedef void (GLUTCALLBACK *GLUTtimerFCB) (int *); 11.76 +typedef void (GLUTCALLBACK *GLUTmenuStateFCB) (int *); /* DEPRICATED. */ 11.77 +typedef void (GLUTCALLBACK *GLUTmenuStatusFCB) (int *, int *, int *); 11.78 +typedef void (GLUTCALLBACK *GLUTidleFCB) (void); 11.79 + 11.80 +/* Functions that set and return Fortran callback functions. */ 11.81 +GLUTAPI void* APIENTRY __glutGetFCB(int which); 11.82 +GLUTAPI void APIENTRY __glutSetFCB(int which, void *func); 11.83 + 11.84 +#endif /* __glutf90_h__ */
12.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 12.2 +++ b/GL/glx.h Tue Nov 27 15:23:52 2007 +0100 12.3 @@ -0,0 +1,299 @@ 12.4 +#ifndef __glx_h__ 12.5 +#define __glx_h__ 12.6 + 12.7 +/* 12.8 +** The contents of this file are subject to the GLX Public License Version 1.0 12.9 +** (the "License"). You may not use this file except in compliance with the 12.10 +** License. You may obtain a copy of the License at Silicon Graphics, Inc., 12.11 +** attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043 12.12 +** or at http://www.sgi.com/software/opensource/glx/license.html. 12.13 +** 12.14 +** Software distributed under the License is distributed on an "AS IS" 12.15 +** basis. ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY 12.16 +** IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR 12.17 +** PURPOSE OR OF NON- INFRINGEMENT. See the License for the specific 12.18 +** language governing rights and limitations under the License. 12.19 +** 12.20 +** The Original Software is GLX version 1.2 source code, released February, 12.21 +** 1999. The developer of the Original Software is Silicon Graphics, Inc. 12.22 +** Those portions of the Subject Software created by Silicon Graphics, Inc. 12.23 +** are Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved. 12.24 +** 12.25 +** $Header: /home/cvsroot/synrj/int64_morph/GL/glx.h,v 1.1 2004/01/09 21:41:22 mryoung Exp $ 12.26 +*/ 12.27 + 12.28 +#include <X11/Xlib.h> 12.29 +#include <X11/Xutil.h> 12.30 +#include <X11/Xmd.h> 12.31 +#include <GL/gl.h> 12.32 +#include <GL/glxtokens.h> 12.33 + 12.34 +#ifdef __cplusplus 12.35 +extern "C" { 12.36 +#endif 12.37 + 12.38 +/* 12.39 + * GLX resources. 12.40 + */ 12.41 +typedef XID GLXContextID; 12.42 +typedef XID GLXPixmap; 12.43 +typedef XID GLXDrawable; 12.44 +typedef XID GLXPbuffer; 12.45 +typedef XID GLXPbufferSGIX; 12.46 +typedef XID GLXWindow; 12.47 +typedef XID GLXFBConfigID; 12.48 + 12.49 +/* 12.50 + * GLXContext is a pointer to opaque data. 12.51 + */ 12.52 +typedef struct __GLXcontextRec *GLXContext; 12.53 + 12.54 +/* 12.55 + * GLXFBConfig is a pointer to opaque data. 12.56 + */ 12.57 +typedef struct __GLXFBConfigRec *GLXFBConfig; 12.58 +typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; 12.59 + 12.60 + 12.61 +/**********************************************************************/ 12.62 + 12.63 +/* 12.64 + * GLX 1.0 functions. 12.65 + */ 12.66 +extern XVisualInfo* glXChooseVisual(Display *dpy, int screen, 12.67 + int *attrib_list); 12.68 + 12.69 +extern void glXCopyContext(Display *dpy, GLXContext src, 12.70 + GLXContext dst, unsigned long mask); 12.71 + 12.72 +extern GLXContext glXCreateContext(Display *dpy, XVisualInfo *vis, 12.73 + GLXContext share_list, Bool direct); 12.74 + 12.75 +extern GLXPixmap glXCreateGLXPixmap(Display *dpy, XVisualInfo *vis, 12.76 + Pixmap pixmap); 12.77 + 12.78 +extern void glXDestroyContext(Display *dpy, GLXContext ctx); 12.79 + 12.80 +extern void glXDestroyGLXPixmap(Display *dpy, GLXPixmap pix); 12.81 + 12.82 +extern int glXGetConfig(Display *dpy, XVisualInfo *vis, 12.83 + int attrib, int *value); 12.84 + 12.85 +extern GLXContext glXGetCurrentContext(void); 12.86 + 12.87 +extern GLXDrawable glXGetCurrentDrawable(void); 12.88 + 12.89 +extern Bool glXIsDirect(Display *dpy, GLXContext ctx); 12.90 + 12.91 +extern Bool glXMakeCurrent(Display *dpy, GLXDrawable drawable, 12.92 + GLXContext ctx); 12.93 + 12.94 +extern Bool glXQueryExtension(Display *dpy, int *error_base, int *event_base); 12.95 + 12.96 +extern Bool glXQueryVersion(Display *dpy, int *major, int *minor); 12.97 + 12.98 +extern void glXSwapBuffers(Display *dpy, GLXDrawable drawable); 12.99 + 12.100 +extern void glXUseXFont(Font font, int first, int count, int list_base); 12.101 + 12.102 +extern void glXWaitGL(void); 12.103 + 12.104 +extern void glXWaitX(void); 12.105 + 12.106 + 12.107 +/* 12.108 + * GLX 1.1 functions. 12.109 + */ 12.110 +extern const char *glXGetClientString(Display *dpy, int name); 12.111 + 12.112 +extern const char *glXQueryServerString(Display *dpy, int screen, int name); 12.113 + 12.114 +extern const char *glXQueryExtensionsString(Display *dpy, int screen); 12.115 + 12.116 + 12.117 +/* 12.118 + * GLX 1.2 functions. 12.119 + */ 12.120 +extern Display *glXGetCurrentDisplay(void); 12.121 + 12.122 + 12.123 +/* 12.124 + * GLX 1.3 functions. 12.125 + */ 12.126 +extern GLXFBConfig *glXChooseFBConfig(Display *dpy, int screen, 12.127 + const int *attrib_list, int *nelements); 12.128 + 12.129 +extern GLXContext glXCreateNewContext(Display *dpy, GLXFBConfig config, 12.130 + int render_type, GLXContext share_list, 12.131 + Bool direct); 12.132 + 12.133 +extern GLXPbuffer glXCreatePbuffer(Display *dpy, GLXFBConfig config, 12.134 + const int *attrib_list); 12.135 + 12.136 +extern GLXPixmap glXCreatePixmap(Display *dpy, GLXFBConfig config, 12.137 + Pixmap pixmap, const int *attrib_list); 12.138 + 12.139 +extern GLXWindow glXCreateWindow(Display *dpy, GLXFBConfig config, 12.140 + Window win, const int *attrib_list); 12.141 + 12.142 +extern void glXDestroyPbuffer(Display *dpy, GLXPbuffer pbuf); 12.143 + 12.144 +extern void glXDestroyPixmap(Display *dpy, GLXPixmap pixmap); 12.145 + 12.146 +extern void glXDestroyWindow(Display *dpy, GLXWindow win); 12.147 + 12.148 +extern GLXDrawable glXGetCurrentReadDrawable(void); 12.149 + 12.150 +extern int glXGetFBConfigAttrib(Display *dpy, GLXFBConfig config, 12.151 + int attribute, int *value); 12.152 + 12.153 +extern GLXFBConfig *glXGetFBConfigs(Display *dpy, int screen, int *nelements); 12.154 + 12.155 +extern void glXGetSelectedEvent(Display *dpy, GLXDrawable draw, 12.156 + unsigned long *event_mask); 12.157 + 12.158 +extern XVisualInfo *glXGetVisualFromFBConfig(Display *dpy, GLXFBConfig config); 12.159 + 12.160 +extern Bool glXMakeContextCurrent(Display *display, GLXDrawable draw, 12.161 + GLXDrawable read, GLXContext ctx); 12.162 + 12.163 +extern int glXQueryContext(Display *dpy, GLXContext ctx, 12.164 + int attribute, int *value); 12.165 + 12.166 +extern void glXQueryDrawable(Display *dpy, GLXDrawable draw, 12.167 + int attribute, unsigned int *value); 12.168 + 12.169 +extern void glXSelectEvent(Display *dpy, GLXDrawable draw, 12.170 + unsigned long event_mask); 12.171 + 12.172 + 12.173 +/**********************************************************************/ 12.174 + 12.175 +/* 12.176 + * ARB_get_proc_address 12.177 + */ 12.178 +extern void (*glXGetProcAddressARB(const GLubyte *procName))(void); 12.179 + 12.180 +/* 12.181 + * EXT_import_context 12.182 + */ 12.183 +extern void glXFreeContextEXT(Display *dpy, GLXContext ctx); 12.184 + 12.185 +extern GLXContextID glXGetContextIDEXT(const GLXContext ctx); 12.186 + 12.187 +extern GLXDrawable glXGetCurrentDrawableEXT(void); 12.188 + 12.189 +extern GLXContext glXImportContextEXT(Display *dpy, GLXContextID contextID); 12.190 + 12.191 +extern int glXQueryContextInfoEXT(Display *dpy, GLXContext ctx, 12.192 + int attribute, int *value); 12.193 + 12.194 +/* 12.195 + * NV_vertex_array_range 12.196 + */ 12.197 +extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, 12.198 + GLfloat writefreq, GLfloat priority); 12.199 + 12.200 +extern void glXFreeMemoryNV(GLvoid *pointer); 12.201 + 12.202 +/* 12.203 + * SGI_video_sync 12.204 + */ 12.205 +extern int glXGetVideoSyncSGI(unsigned int *count); 12.206 + 12.207 +extern int glXWaitVideoSyncSGI(int divisor, int remainder, 12.208 + unsigned int *count); 12.209 + 12.210 +extern int glXGetRefreshRateSGI(unsigned int *rate); 12.211 + 12.212 +/* 12.213 + * SGIX_swap_group 12.214 +*/ 12.215 +extern void glXJoinSwapGroupSGIX(Display *dpy, GLXDrawable drawable, 12.216 + GLXDrawable member); 12.217 + 12.218 +/* 12.219 + * SGIX_swap_barrier 12.220 +*/ 12.221 +extern void glXBindSwapBarrierSGIX(Display *dpy, GLXDrawable drawable, 12.222 + int barrier); 12.223 + 12.224 +extern Bool glXQueryMaxSwapBarriersSGIX(Display *dpy, int screen, int *max); 12.225 + 12.226 +/* 12.227 + * SGIX_fbconfig 12.228 +*/ 12.229 + 12.230 +extern int glXGetFBConfigAttribSGIX(Display *dpy, GLXFBConfigSGIX config, 12.231 + int attribute, int *value_return); 12.232 + 12.233 +extern GLXFBConfigSGIX *glXChooseFBConfigSGIX(Display *dpy, int screen, 12.234 + const int *attrib_list, 12.235 + int *nelements); 12.236 + 12.237 +extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX(Display *dpy, 12.238 + GLXFBConfigSGIX config, 12.239 + Pixmap pixmap); 12.240 + 12.241 +extern GLXContext glXCreateContextWithConfigSGIX(Display *dpy, 12.242 + GLXFBConfigSGIX config, 12.243 + int render_type, 12.244 + GLXContext share_list, 12.245 + Bool direct); 12.246 + 12.247 +extern XVisualInfo *glXGetVisualFromFBConfigSGIX(Display *dpy, 12.248 + GLXFBConfigSGIX config); 12.249 + 12.250 +extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX(Display *dpy, 12.251 + XVisualInfo *vis); 12.252 + 12.253 +/* 12.254 + * SGIX_pbuffer 12.255 + */ 12.256 +extern GLXPbuffer glXCreateGLXPbufferSGIX(Display *dpy, GLXFBConfig config, 12.257 + unsigned int width, 12.258 + unsigned int height, 12.259 + const int *attrib_list); 12.260 + 12.261 +extern void glXDestroyGLXPbufferSGIX(Display *dpy, GLXPbuffer pbuf); 12.262 + 12.263 +extern void glXQueryGLXPbufferSGIX(Display *dpy, GLXPbuffer pbuf, 12.264 + int attribute, unsigned int *value); 12.265 + 12.266 +extern void glXSelectEventSGIX(Display *dpy, GLXDrawable drawable, 12.267 + unsigned long mask); 12.268 + 12.269 +extern void glXGetSelectedEventSGIX(Display *dpy, GLXDrawable drawable, 12.270 + unsigned long *mask); 12.271 + 12.272 + 12.273 +/**********************************************************************/ 12.274 + 12.275 +/*** Should these go here, or in another header? */ 12.276 +/* 12.277 + * GLX Events 12.278 + */ 12.279 +typedef struct { 12.280 + int event_type; /* GLX_DAMAGED or GLX_SAVED */ 12.281 + int draw_type; /* GLX_WINDOW or GLX_PBUFFER */ 12.282 + unsigned long serial; /* # of last request processed by server */ 12.283 + Bool send_event; /* true if this came for SendEvent request */ 12.284 + Display *display; /* display the event was read from */ 12.285 + GLXDrawable drawable; /* XID of Drawable */ 12.286 + unsigned int buffer_mask; /* mask indicating which buffers are affected */ 12.287 + unsigned int aux_buffer; /* which aux buffer was affected */ 12.288 + int x, y; 12.289 + int width, height; 12.290 + int count; /* if nonzero, at least this many more */ 12.291 +} GLXPbufferClobberEvent; 12.292 + 12.293 +typedef union __GLXEvent { 12.294 + GLXPbufferClobberEvent glxpbufferclobber; 12.295 + long pad[24]; 12.296 +} GLXEvent; 12.297 + 12.298 +#ifdef __cplusplus 12.299 +} 12.300 +#endif 12.301 + 12.302 +#endif /* !__glx_h__ */
13.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 13.2 +++ b/GL/glxext.h Tue Nov 27 15:23:52 2007 +0100 13.3 @@ -0,0 +1,618 @@ 13.4 +#ifndef __glxext_h_ 13.5 +#define __glxext_h_ 13.6 + 13.7 +#ifdef __cplusplus 13.8 +extern "C" { 13.9 +#endif 13.10 + 13.11 +/* 13.12 +** License Applicability. Except to the extent portions of this file are 13.13 +** made subject to an alternative license as permitted in the SGI Free 13.14 +** Software License B, Version 1.1 (the "License"), the contents of this 13.15 +** file are subject only to the provisions of the License. You may not use 13.16 +** this file except in compliance with the License. You may obtain a copy 13.17 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 13.18 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: 13.19 +** 13.20 +** http://oss.sgi.com/projects/FreeB 13.21 +** 13.22 +** Note that, as provided in the License, the Software is distributed on an 13.23 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS 13.24 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND 13.25 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A 13.26 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 13.27 +** 13.28 +** Original Code. The Original Code is: OpenGL Sample Implementation, 13.29 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, 13.30 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. 13.31 +** Copyright in any portions created by third parties is as indicated 13.32 +** elsewhere herein. All Rights Reserved. 13.33 +** 13.34 +** Additional Notice Provisions: This software was created using the 13.35 +** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has 13.36 +** not been independently verified as being compliant with the OpenGL(R) 13.37 +** version 1.2.1 Specification. 13.38 +*/ 13.39 + 13.40 +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) 13.41 +#define WIN32_LEAN_AND_MEAN 1 13.42 +#include <windows.h> 13.43 +#endif 13.44 + 13.45 +#ifndef APIENTRY 13.46 +#define APIENTRY 13.47 +#endif 13.48 +#ifndef GLAPI 13.49 +#define GLAPI extern 13.50 +#endif 13.51 + 13.52 +/*************************************************************/ 13.53 + 13.54 +/* Header file version number, required by OpenGL ABI for Linux */ 13.55 +/* glxext.h last updated 2002/03/22 */ 13.56 +/* Current version at http://oss.sgi.com/projects/ogl-sample/registry/ */ 13.57 +#define GLX_GLXEXT_VERSION 5 13.58 + 13.59 +#ifndef GLX_VERSION_1_3 13.60 +#define GLX_WINDOW_BIT 0x00000001 13.61 +#define GLX_PIXMAP_BIT 0x00000002 13.62 +#define GLX_PBUFFER_BIT 0x00000004 13.63 +#define GLX_RGBA_BIT 0x00000001 13.64 +#define GLX_COLOR_INDEX_BIT 0x00000002 13.65 +#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 13.66 +#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 13.67 +#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 13.68 +#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 13.69 +#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 13.70 +#define GLX_AUX_BUFFERS_BIT 0x00000010 13.71 +#define GLX_DEPTH_BUFFER_BIT 0x00000020 13.72 +#define GLX_STENCIL_BUFFER_BIT 0x00000040 13.73 +#define GLX_ACCUM_BUFFER_BIT 0x00000080 13.74 +#define GLX_CONFIG_CAVEAT 0x20 13.75 +#define GLX_X_VISUAL_TYPE 0x22 13.76 +#define GLX_TRANSPARENT_TYPE 0x23 13.77 +#define GLX_TRANSPARENT_INDEX_VALUE 0x24 13.78 +#define GLX_TRANSPARENT_RED_VALUE 0x25 13.79 +#define GLX_TRANSPARENT_GREEN_VALUE 0x26 13.80 +#define GLX_TRANSPARENT_BLUE_VALUE 0x27 13.81 +#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 13.82 +#define GLX_DONT_CARE 0xFFFFFFFF 13.83 +#define GLX_NONE 0x8000 13.84 +#define GLX_SLOW_CONFIG 0x8001 13.85 +#define GLX_TRUE_COLOR 0x8002 13.86 +#define GLX_DIRECT_COLOR 0x8003 13.87 +#define GLX_PSEUDO_COLOR 0x8004 13.88 +#define GLX_STATIC_COLOR 0x8005 13.89 +#define GLX_GRAY_SCALE 0x8006 13.90 +#define GLX_STATIC_GRAY 0x8007 13.91 +#define GLX_TRANSPARENT_RGB 0x8008 13.92 +#define GLX_TRANSPARENT_INDEX 0x8009 13.93 +#define GLX_VISUAL_ID 0x800B 13.94 +#define GLX_SCREEN 0x800C 13.95 +#define GLX_NON_CONFORMANT_CONFIG 0x800D 13.96 +#define GLX_DRAWABLE_TYPE 0x8010 13.97 +#define GLX_RENDER_TYPE 0x8011 13.98 +#define GLX_X_RENDERABLE 0x8012 13.99 +#define GLX_FBCONFIG_ID 0x8013 13.100 +#define GLX_RGBA_TYPE 0x8014 13.101 +#define GLX_COLOR_INDEX_TYPE 0x8015 13.102 +#define GLX_MAX_PBUFFER_WIDTH 0x8016 13.103 +#define GLX_MAX_PBUFFER_HEIGHT 0x8017 13.104 +#define GLX_MAX_PBUFFER_PIXELS 0x8018 13.105 +#define GLX_PRESERVED_CONTENTS 0x801B 13.106 +#define GLX_LARGEST_PBUFFER 0x801C 13.107 +#define GLX_WIDTH 0x801D 13.108 +#define GLX_HEIGHT 0x801E 13.109 +#define GLX_EVENT_MASK 0x801F 13.110 +#define GLX_DAMAGED 0x8020 13.111 +#define GLX_SAVED 0x8021 13.112 +#define GLX_WINDOW 0x8022 13.113 +#define GLX_PBUFFER 0x8023 13.114 +#define GLX_PBUFFER_HEIGHT 0x8040 13.115 +#define GLX_PBUFFER_WIDTH 0x8041 13.116 +#endif 13.117 + 13.118 +#ifndef GLX_VERSION_1_4 13.119 +#define GLX_SAMPLE_BUFFERS 100000 13.120 +#define GLX_SAMPLES 100001 13.121 +#endif 13.122 + 13.123 +#ifndef GLX_ARB_get_proc_address 13.124 +#endif 13.125 + 13.126 +#ifndef GLX_ARB_multisample 13.127 +#define GLX_SAMPLE_BUFFERS_ARB 100000 13.128 +#define GLX_SAMPLES_ARB 100001 13.129 +#endif 13.130 + 13.131 +#ifndef GLX_SGIS_multisample 13.132 +#define GLX_SAMPLE_BUFFERS_SGIS 100000 13.133 +#define GLX_SAMPLES_SGIS 100001 13.134 +#endif 13.135 + 13.136 +#ifndef GLX_EXT_visual_info 13.137 +#define GLX_X_VISUAL_TYPE_EXT 0x22 13.138 +#define GLX_TRANSPARENT_TYPE_EXT 0x23 13.139 +#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 13.140 +#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 13.141 +#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 13.142 +#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 13.143 +#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 13.144 +#define GLX_NONE_EXT 0x8000 13.145 +#define GLX_TRUE_COLOR_EXT 0x8002 13.146 +#define GLX_DIRECT_COLOR_EXT 0x8003 13.147 +#define GLX_PSEUDO_COLOR_EXT 0x8004 13.148 +#define GLX_STATIC_COLOR_EXT 0x8005 13.149 +#define GLX_GRAY_SCALE_EXT 0x8006 13.150 +#define GLX_STATIC_GRAY_EXT 0x8007 13.151 +#define GLX_TRANSPARENT_RGB_EXT 0x8008 13.152 +#define GLX_TRANSPARENT_INDEX_EXT 0x8009 13.153 +#endif 13.154 + 13.155 +#ifndef GLX_SGI_swap_control 13.156 +#endif 13.157 + 13.158 +#ifndef GLX_SGI_video_sync 13.159 +#endif 13.160 + 13.161 +#ifndef GLX_SGI_make_current_read 13.162 +#endif 13.163 + 13.164 +#ifndef GLX_SGIX_video_source 13.165 +#endif 13.166 + 13.167 +#ifndef GLX_EXT_visual_rating 13.168 +#define GLX_VISUAL_CAVEAT_EXT 0x20 13.169 +#define GLX_SLOW_VISUAL_EXT 0x8001 13.170 +#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D 13.171 +/* reuse GLX_NONE_EXT */ 13.172 +#endif 13.173 + 13.174 +#ifndef GLX_EXT_import_context 13.175 +#define GLX_SHARE_CONTEXT_EXT 0x800A 13.176 +#define GLX_VISUAL_ID_EXT 0x800B 13.177 +#define GLX_SCREEN_EXT 0x800C 13.178 +#endif 13.179 + 13.180 +#ifndef GLX_SGIX_fbconfig 13.181 +#define GLX_WINDOW_BIT_SGIX 0x00000001 13.182 +#define GLX_PIXMAP_BIT_SGIX 0x00000002 13.183 +#define GLX_RGBA_BIT_SGIX 0x00000001 13.184 +#define GLX_COLOR_INDEX_BIT_SGIX 0x00000002 13.185 +#define GLX_DRAWABLE_TYPE_SGIX 0x8010 13.186 +#define GLX_RENDER_TYPE_SGIX 0x8011 13.187 +#define GLX_X_RENDERABLE_SGIX 0x8012 13.188 +#define GLX_FBCONFIG_ID_SGIX 0x8013 13.189 +#define GLX_RGBA_TYPE_SGIX 0x8014 13.190 +#define GLX_COLOR_INDEX_TYPE_SGIX 0x8015 13.191 +/* reuse GLX_SCREEN_EXT */ 13.192 +#endif 13.193 + 13.194 +#ifndef GLX_SGIX_pbuffer 13.195 +#define GLX_PBUFFER_BIT_SGIX 0x00000004 13.196 +#define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000 13.197 +#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001 13.198 +#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002 13.199 +#define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004 13.200 +#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008 13.201 +#define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010 13.202 +#define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020 13.203 +#define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040 13.204 +#define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080 13.205 +#define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100 13.206 +#define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016 13.207 +#define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017 13.208 +#define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018 13.209 +#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 13.210 +#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A 13.211 +#define GLX_PRESERVED_CONTENTS_SGIX 0x801B 13.212 +#define GLX_LARGEST_PBUFFER_SGIX 0x801C 13.213 +#define GLX_WIDTH_SGIX 0x801D 13.214 +#define GLX_HEIGHT_SGIX 0x801E 13.215 +#define GLX_EVENT_MASK_SGIX 0x801F 13.216 +#define GLX_DAMAGED_SGIX 0x8020 13.217 +#define GLX_SAVED_SGIX 0x8021 13.218 +#define GLX_WINDOW_SGIX 0x8022 13.219 +#define GLX_PBUFFER_SGIX 0x8023 13.220 +#endif 13.221 + 13.222 +#ifndef GLX_SGI_cushion 13.223 +#endif 13.224 + 13.225 +#ifndef GLX_SGIX_video_resize 13.226 +#define GLX_SYNC_FRAME_SGIX 0x00000000 13.227 +#define GLX_SYNC_SWAP_SGIX 0x00000001 13.228 +#endif 13.229 + 13.230 +#ifndef GLX_SGIX_dmbuffer 13.231 +#define GLX_DIGITAL_MEDIA_PBUFFER_SGIX 0x8024 13.232 +#endif 13.233 + 13.234 +#ifndef GLX_SGIX_swap_group 13.235 +#endif 13.236 + 13.237 +#ifndef GLX_SGIX_swap_barrier 13.238 +#endif 13.239 + 13.240 +#ifndef GLX_SGIS_blended_overlay 13.241 +#define GLX_BLENDED_RGBA_SGIS 0x8025 13.242 +#endif 13.243 + 13.244 +#ifndef GLX_SGIS_shared_multisample 13.245 +#define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026 13.246 +#define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027 13.247 +#endif 13.248 + 13.249 +#ifndef GLX_SUN_get_transparent_index 13.250 +#endif 13.251 + 13.252 +#ifndef GLX_3DFX_multisample 13.253 +#define GLX_SAMPLE_BUFFERS_3DFX 0x8050 13.254 +#define GLX_SAMPLES_3DFX 0x8051 13.255 +#endif 13.256 + 13.257 +#ifndef GLX_MESA_copy_sub_buffer 13.258 +#endif 13.259 + 13.260 +#ifndef GLX_MESA_pixmap_colormap 13.261 +#endif 13.262 + 13.263 +#ifndef GLX_MESA_release_buffers 13.264 +#endif 13.265 + 13.266 +#ifndef GLX_MESA_agp_offset 13.267 +#endif 13.268 + 13.269 +#ifndef GLX_MESA_set_3dfx_mode 13.270 +#define GLX_3DFX_WINDOW_MODE_MESA 0x1 13.271 +#define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 13.272 +#endif 13.273 + 13.274 +#ifndef GLX_SGIX_visual_select_group 13.275 +#define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028 13.276 +#endif 13.277 + 13.278 +#ifndef GLX_OML_swap_method 13.279 +#define GLX_SWAP_METHOD_OML 0x8060 13.280 +#define GLX_SWAP_EXCHANGE_OML 0x8061 13.281 +#define GLX_SWAP_COPY_OML 0x8062 13.282 +#define GLX_SWAP_UNDEFINED_OML 0x8063 13.283 +#endif 13.284 + 13.285 +#ifndef GLX_OML_sync_control 13.286 +#endif 13.287 + 13.288 + 13.289 +/*************************************************************/ 13.290 + 13.291 +#ifndef GLX_ARB_get_proc_address 13.292 +typedef void (*__GLXextFuncPtr)(void); 13.293 +#endif 13.294 + 13.295 +#ifndef GLX_SGIX_video_source 13.296 +typedef XID GLXVideoSourceSGIX; 13.297 +#endif 13.298 + 13.299 +#ifndef GLX_SGIX_fbconfig 13.300 +typedef XID GLXFBConfigIDSGIX; 13.301 +typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; 13.302 +#endif 13.303 + 13.304 +#ifndef GLX_SGIX_pbuffer 13.305 +typedef XID GLXPbufferSGIX; 13.306 +typedef struct { 13.307 + int type; 13.308 + unsigned long serial; /* # of last request processed by server */ 13.309 + Bool send_event; /* true if this came for SendEvent request */ 13.310 + Display *display; /* display the event was read from */ 13.311 + GLXDrawable drawable; /* i.d. of Drawable */ 13.312 + int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */ 13.313 + int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */ 13.314 + unsigned int mask; /* mask indicating which buffers are affected*/ 13.315 + int x, y; 13.316 + int width, height; 13.317 + int count; /* if nonzero, at least this many more */ 13.318 +} GLXBufferClobberEventSGIX; 13.319 +#endif 13.320 + 13.321 +#ifndef GLX_VERSION_1_3 13.322 +#define GLX_VERSION_1_3 1 13.323 +#ifdef GLX_GLXEXT_PROTOTYPES 13.324 +extern GLXFBConfig * glXGetFBConfigs (Display *, int, int *); 13.325 +extern GLXFBConfig * glXChooseFBConfig (Display *, int, const int *, int *); 13.326 +extern int glXGetFBConfigAttrib (Display *, GLXFBConfig, int, int *); 13.327 +extern XVisualInfo * glXGetVisualFromFBConfig (Display *, GLXFBConfig); 13.328 +extern GLXWindow glXCreateWindow (Display *, GLXFBConfig, Window, const int *); 13.329 +extern void glXDestroyWindow (Display *, GLXWindow); 13.330 +extern GLXPixmap glXCreatePixmap (Display *, GLXFBConfig, Pixmap, const int *); 13.331 +extern void glXDestroyPixmap (Display *, GLXPixmap); 13.332 +extern GLXPbuffer glXCreatePbuffer (Display *, GLXFBConfig, const int *); 13.333 +extern void glXDestroyPbuffer (Display *, GLXPbuffer); 13.334 +extern void glXQueryDrawable (Display *, GLXDrawable, int, unsigned int *); 13.335 +extern GLXContext glXCreateNewContext (Display *, GLXFBConfig, int, GLXContext, Bool); 13.336 +extern Bool glXMakeContextCurrent (Display *, GLXDrawable, GLXDrawable, GLXContext); 13.337 +extern GLXDrawable glXGetCurrentReadDrawable (void); 13.338 +extern Display * glXGetCurrentDisplay (void); 13.339 +extern int glXQueryContext (Display *, GLXContext, int, int *); 13.340 +extern void glXSelectEvent (Display *, GLXDrawable, unsigned long); 13.341 +extern void glXGetSelectedEvent (Display *, GLXDrawable, unsigned long *); 13.342 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.343 +typedef GLXFBConfig * ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements); 13.344 +typedef GLXFBConfig * ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); 13.345 +typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); 13.346 +typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config); 13.347 +typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); 13.348 +typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win); 13.349 +typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); 13.350 +typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap); 13.351 +typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); 13.352 +typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf); 13.353 +typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); 13.354 +typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); 13.355 +typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); 13.356 +typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void); 13.357 +typedef Display * ( * PFNGLXGETCURRENTDISPLAYPROC) (void); 13.358 +typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); 13.359 +typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); 13.360 +typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); 13.361 +#endif 13.362 + 13.363 +#ifndef GLX_VERSION_1_4 13.364 +#define GLX_VERSION_1_4 1 13.365 +#ifdef GLX_GLXEXT_PROTOTYPES 13.366 +extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *); 13.367 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.368 +typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName); 13.369 +#endif 13.370 + 13.371 +#ifndef GLX_ARB_get_proc_address 13.372 +#define GLX_ARB_get_proc_address 1 13.373 +#ifdef GLX_GLXEXT_PROTOTYPES 13.374 +extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *); 13.375 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.376 +typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName); 13.377 +#endif 13.378 + 13.379 +#ifndef GLX_ARB_multisample 13.380 +#define GLX_ARB_multisample 1 13.381 +#endif 13.382 + 13.383 +#ifndef GLX_SGIS_multisample 13.384 +#define GLX_SGIS_multisample 1 13.385 +#endif 13.386 + 13.387 +#ifndef GLX_EXT_visual_info 13.388 +#define GLX_EXT_visual_info 1 13.389 +#endif 13.390 + 13.391 +#ifndef GLX_SGI_swap_control 13.392 +#define GLX_SGI_swap_control 1 13.393 +#ifdef GLX_GLXEXT_PROTOTYPES 13.394 +extern int glXSwapIntervalSGI (int); 13.395 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.396 +typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval); 13.397 +#endif 13.398 + 13.399 +#ifndef GLX_SGI_video_sync 13.400 +#define GLX_SGI_video_sync 1 13.401 +#ifdef GLX_GLXEXT_PROTOTYPES 13.402 +extern int glXGetVideoSyncSGI (unsigned int *); 13.403 +extern int glXWaitVideoSyncSGI (int, int, unsigned int *); 13.404 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.405 +typedef int ( * PFNGLXGETVIDEOSYNCSGIPROC) (unsigned int *count); 13.406 +typedef int ( * PFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int *count); 13.407 +#endif 13.408 + 13.409 +#ifndef GLX_SGI_make_current_read 13.410 +#define GLX_SGI_make_current_read 1 13.411 +#ifdef GLX_GLXEXT_PROTOTYPES 13.412 +extern Bool glXMakeCurrentReadSGI (Display *, GLXDrawable, GLXDrawable, GLXContext); 13.413 +extern GLXDrawable glXGetCurrentReadDrawableSGI (void); 13.414 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.415 +typedef Bool ( * PFNGLXMAKECURRENTREADSGIPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); 13.416 +typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLESGIPROC) (void); 13.417 +#endif 13.418 + 13.419 +#ifdef _VL_H 13.420 +#ifndef GLX_SGIX_video_source 13.421 +#define GLX_SGIX_video_source 1 13.422 +#ifdef GLX_GLXEXT_PROTOTYPES 13.423 +extern GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX (Display *, int, VLServer, VLPath, int, VLNode); 13.424 +extern void glXDestroyGLXVideoSourceSGIX (Display *, GLXVideoSourceSGIX); 13.425 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.426 +typedef GLXVideoSourceSGIX ( * PFNGLXCREATEGLXVIDEOSOURCESGIXPROC) (Display *display, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode); 13.427 +typedef void ( * PFNGLXDESTROYGLXVIDEOSOURCESGIXPROC) (Display *dpy, GLXVideoSourceSGIX glxvideosource); 13.428 +#endif 13.429 + 13.430 +#endif /* _VL_H */ 13.431 +#ifndef GLX_EXT_visual_rating 13.432 +#define GLX_EXT_visual_rating 1 13.433 +#endif 13.434 + 13.435 +#ifndef GLX_EXT_import_context 13.436 +#define GLX_EXT_import_context 1 13.437 +#ifdef GLX_GLXEXT_PROTOTYPES 13.438 +extern Display * glXGetCurrentDisplayEXT (void); 13.439 +extern int glXQueryContextInfoEXT (Display *, GLXContext, int, int *); 13.440 +extern GLXContextID glXGetContextIDEXT (const GLXContext); 13.441 +extern GLXContext glXImportContextEXT (Display *, GLXContextID); 13.442 +extern void glXFreeContextEXT (Display *, GLXContext); 13.443 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.444 +typedef Display * ( * PFNGLXGETCURRENTDISPLAYEXTPROC) (void); 13.445 +typedef int ( * PFNGLXQUERYCONTEXTINFOEXTPROC) (Display *dpy, GLXContext context, int attribute, int *value); 13.446 +typedef GLXContextID ( * PFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context); 13.447 +typedef GLXContext ( * PFNGLXIMPORTCONTEXTEXTPROC) (Display *dpy, GLXContextID contextID); 13.448 +typedef void ( * PFNGLXFREECONTEXTEXTPROC) (Display *dpy, GLXContext context); 13.449 +#endif 13.450 + 13.451 +#ifndef GLX_SGIX_fbconfig 13.452 +#define GLX_SGIX_fbconfig 1 13.453 +#ifdef GLX_GLXEXT_PROTOTYPES 13.454 +extern int glXGetFBConfigAttribSGIX (Display *, GLXFBConfigSGIX, int, int *); 13.455 +extern GLXFBConfigSGIX * glXChooseFBConfigSGIX (Display *, int, int *, int *); 13.456 +extern GLXPixmap glXCreateGLXPixmapWithConfigSGIX (Display *, GLXFBConfigSGIX, Pixmap); 13.457 +extern GLXContext glXCreateContextWithConfigSGIX (Display *, GLXFBConfigSGIX, int, GLXContext, Bool); 13.458 +extern XVisualInfo * glXGetVisualFromFBConfigSGIX (Display *, GLXFBConfigSGIX); 13.459 +extern GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX (Display *, XVisualInfo *); 13.460 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.461 +typedef int ( * PFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int attribute, int *value); 13.462 +typedef GLXFBConfigSGIX * ( * PFNGLXCHOOSEFBCONFIGSGIXPROC) (Display *dpy, int screen, int *attrib_list, int *nelements); 13.463 +typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap); 13.464 +typedef GLXContext ( * PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct); 13.465 +typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display *dpy, GLXFBConfigSGIX config); 13.466 +typedef GLXFBConfigSGIX ( * PFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display *dpy, XVisualInfo *vis); 13.467 +#endif 13.468 + 13.469 +#ifndef GLX_SGIX_pbuffer 13.470 +#define GLX_SGIX_pbuffer 1 13.471 +#ifdef GLX_GLXEXT_PROTOTYPES 13.472 +extern GLXPbufferSGIX glXCreateGLXPbufferSGIX (Display *, GLXFBConfigSGIX, unsigned int, unsigned int, int *); 13.473 +extern void glXDestroyGLXPbufferSGIX (Display *, GLXPbufferSGIX); 13.474 +extern int glXQueryGLXPbufferSGIX (Display *, GLXPbufferSGIX, int, unsigned int *); 13.475 +extern void glXSelectEventSGIX (Display *, GLXDrawable, unsigned long); 13.476 +extern void glXGetSelectedEventSGIX (Display *, GLXDrawable, unsigned long *); 13.477 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.478 +typedef GLXPbufferSGIX ( * PFNGLXCREATEGLXPBUFFERSGIXPROC) (Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list); 13.479 +typedef void ( * PFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf); 13.480 +typedef int ( * PFNGLXQUERYGLXPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value); 13.481 +typedef void ( * PFNGLXSELECTEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long mask); 13.482 +typedef void ( * PFNGLXGETSELECTEDEVENTSGIXPROC) (Display *dpy, GLXDrawable drawable, unsigned long *mask); 13.483 +#endif 13.484 + 13.485 +#ifndef GLX_SGI_cushion 13.486 +#define GLX_SGI_cushion 1 13.487 +#ifdef GLX_GLXEXT_PROTOTYPES 13.488 +extern void glXCushionSGI (Display *, Window, float); 13.489 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.490 +typedef void ( * PFNGLXCUSHIONSGIPROC) (Display *dpy, Window window, float cushion); 13.491 +#endif 13.492 + 13.493 +#ifndef GLX_SGIX_video_resize 13.494 +#define GLX_SGIX_video_resize 1 13.495 +#ifdef GLX_GLXEXT_PROTOTYPES 13.496 +extern int glXBindChannelToWindowSGIX (Display *, int, int, Window); 13.497 +extern int glXChannelRectSGIX (Display *, int, int, int, int, int, int); 13.498 +extern int glXQueryChannelRectSGIX (Display *, int, int, int *, int *, int *, int *); 13.499 +extern int glXQueryChannelDeltasSGIX (Display *, int, int, int *, int *, int *, int *); 13.500 +extern int glXChannelRectSyncSGIX (Display *, int, int, GLenum); 13.501 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.502 +typedef int ( * PFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display *display, int screen, int channel, Window window); 13.503 +typedef int ( * PFNGLXCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int x, int y, int w, int h); 13.504 +typedef int ( * PFNGLXQUERYCHANNELRECTSGIXPROC) (Display *display, int screen, int channel, int *dx, int *dy, int *dw, int *dh); 13.505 +typedef int ( * PFNGLXQUERYCHANNELDELTASSGIXPROC) (Display *display, int screen, int channel, int *x, int *y, int *w, int *h); 13.506 +typedef int ( * PFNGLXCHANNELRECTSYNCSGIXPROC) (Display *display, int screen, int channel, GLenum synctype); 13.507 +#endif 13.508 + 13.509 +#ifdef _DM_BUFFER_H_ 13.510 +#ifndef GLX_SGIX_dmbuffer 13.511 +#define GLX_SGIX_dmbuffer 1 13.512 +#ifdef GLX_GLXEXT_PROTOTYPES 13.513 +extern Bool glXAssociateDMPbufferSGIX (Display *, GLXPbufferSGIX, DMparams *, DMbuffer); 13.514 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.515 +typedef Bool ( * PFNGLXASSOCIATEDMPBUFFERSGIXPROC) (Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer); 13.516 +#endif 13.517 + 13.518 +#endif /* _DM_BUFFER_H_ */ 13.519 +#ifndef GLX_SGIX_swap_group 13.520 +#define GLX_SGIX_swap_group 1 13.521 +#ifdef GLX_GLXEXT_PROTOTYPES 13.522 +extern void glXJoinSwapGroupSGIX (Display *, GLXDrawable, GLXDrawable); 13.523 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.524 +typedef void ( * PFNGLXJOINSWAPGROUPSGIXPROC) (Display *dpy, GLXDrawable drawable, GLXDrawable member); 13.525 +#endif 13.526 + 13.527 +#ifndef GLX_SGIX_swap_barrier 13.528 +#define GLX_SGIX_swap_barrier 1 13.529 +#ifdef GLX_GLXEXT_PROTOTYPES 13.530 +extern void glXBindSwapBarrierSGIX (Display *, GLXDrawable, int); 13.531 +extern Bool glXQueryMaxSwapBarriersSGIX (Display *, int, int *); 13.532 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.533 +typedef void ( * PFNGLXBINDSWAPBARRIERSGIXPROC) (Display *dpy, GLXDrawable drawable, int barrier); 13.534 +typedef Bool ( * PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display *dpy, int screen, int *max); 13.535 +#endif 13.536 + 13.537 +#ifndef GLX_SUN_get_transparent_index 13.538 +#define GLX_SUN_get_transparent_index 1 13.539 +#ifdef GLX_GLXEXT_PROTOTYPES 13.540 +extern Status glXGetTransparentIndexSUN (Display *, Window, Window, long *); 13.541 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.542 +typedef Status ( * PFNGLXGETTRANSPARENTINDEXSUNPROC) (Display *dpy, Window overlay, Window underlay, long *pTransparentIndex); 13.543 +#endif 13.544 + 13.545 +#ifndef GLX_MESA_copy_sub_buffer 13.546 +#define GLX_MESA_copy_sub_buffer 1 13.547 +#ifdef GLX_GLXEXT_PROTOTYPES 13.548 +extern void glXCopySubBufferMESA (Display *, GLXDrawable, int, int, int, int); 13.549 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.550 +typedef void ( * PFNGLXCOPYSUBBUFFERMESAPROC) (Display *dpy, GLXDrawable drawable, int x, int y, int width, int height); 13.551 +#endif 13.552 + 13.553 +#ifndef GLX_MESA_pixmap_colormap 13.554 +#define GLX_MESA_pixmap_colormap 1 13.555 +#ifdef GLX_GLXEXT_PROTOTYPES 13.556 +extern GLXPixmap glXCreateGLXPixmapMESA (Display *, XVisualInfo *, Pixmap, Colormap); 13.557 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.558 +typedef GLXPixmap ( * PFNGLXCREATEGLXPIXMAPMESAPROC) (Display *dpy, XVisualInfo *visual, Pixmap pixmap, Colormap cmap); 13.559 +#endif 13.560 + 13.561 +#ifndef GLX_MESA_release_buffers 13.562 +#define GLX_MESA_release_buffers 1 13.563 +#ifdef GLX_GLXEXT_PROTOTYPES 13.564 +extern Bool glXReleaseBuffersMESA (Display *, GLXDrawable); 13.565 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.566 +typedef Bool ( * PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable); 13.567 +#endif 13.568 + 13.569 +#ifndef GLX_MESA_set_3dfx_mode 13.570 +#define GLX_MESA_set_3dfx_mode 1 13.571 +#ifdef GLX_GLXEXT_PROTOTYPES 13.572 +extern Bool glXSet3DfxModeMESA (int); 13.573 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.574 +typedef Bool ( * PFNGLXSET3DFXMODEMESAPROC) (int mode); 13.575 +#endif 13.576 + 13.577 +#ifndef GLX_MESA_agp_offset 13.578 +#define GLX_MESA_agp_offset 1 13.579 +#ifdef GLX_GLXEXT_PROTOTYPES 13.580 +extern GLuint glXGetAGPOffsetMESA (const GLvoid *); 13.581 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.582 +typedef GLuint ( * PFNGLXGETAGPOFFSETMESAPROC) (const GLvoid *); 13.583 +#endif 13.584 + 13.585 +#ifndef GLX_SGIX_visual_select_group 13.586 +#define GLX_SGIX_visual_select_group 1 13.587 +#endif 13.588 + 13.589 +#ifndef GLX_OML_swap_method 13.590 +#define GLX_OML_swap_method 1 13.591 +#endif 13.592 + 13.593 +#if defined(__STDC_VERSION__) 13.594 +#if __STDC_VERSION__ >= 199901L 13.595 +/* Include ISO C99 integer types for OML_sync_control; need a better test */ 13.596 +#include <inttypes.h> 13.597 + 13.598 +#ifndef GLX_OML_sync_control 13.599 +#define GLX_OML_sync_control 1 13.600 +#ifdef GLX_GLXEXT_PROTOTYPES 13.601 +extern Bool glXGetSyncValuesOML (Display *, GLXDrawable, int64_t *, int64_t *, int64_t *); 13.602 +extern Bool glXGetMscRateOML (Display *, GLXDrawable, int32_t *, int32_t *); 13.603 +extern int64_t glXSwapBuffersMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t); 13.604 +extern Bool glXWaitForMscOML (Display *, GLXDrawable, int64_t, int64_t, int64_t, int64_t *, int64_t *, int64_t *); 13.605 +extern Bool glXWaitForSbcOML (Display *, GLXDrawable, int64_t, int64_t *, int64_t *, int64_t *); 13.606 +#endif /* GLX_GLXEXT_PROTOTYPES */ 13.607 +typedef Bool ( * PFNGLXGETSYNCVALUESOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc); 13.608 +typedef Bool ( * PFNGLXGETMSCRATEOMLPROC) (Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator); 13.609 +typedef int64_t ( * PFNGLXSWAPBUFFERSMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder); 13.610 +typedef Bool ( * PFNGLXWAITFORMSCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc); 13.611 +typedef Bool ( * PFNGLXWAITFORSBCOMLPROC) (Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc); 13.612 +#endif 13.613 + 13.614 +#endif /* C99 version test */ 13.615 +#endif /* STDC test */ 13.616 + 13.617 +#ifdef __cplusplus 13.618 +} 13.619 +#endif 13.620 + 13.621 +#endif
14.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 14.2 +++ b/GL/glxint.h Tue Nov 27 15:23:52 2007 +0100 14.3 @@ -0,0 +1,68 @@ 14.4 +#ifndef __GLX_glxint_h__ 14.5 +#define __GLX_glxint_h__ 14.6 + 14.7 +/* $XFree86: xc/include/GL/glxint.h,v 1.4 2001/08/01 00:44:34 tsi Exp $ */ 14.8 +/* 14.9 +** The contents of this file are subject to the GLX Public License Version 1.0 14.10 +** (the "License"). You may not use this file except in compliance with the 14.11 +** License. You may obtain a copy of the License at Silicon Graphics, Inc., 14.12 +** attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043 14.13 +** or at http://www.sgi.com/software/opensource/glx/license.html. 14.14 +** 14.15 +** Software distributed under the License is distributed on an "AS IS" 14.16 +** basis. ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY 14.17 +** IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR 14.18 +** PURPOSE OR OF NON- INFRINGEMENT. See the License for the specific 14.19 +** language governing rights and limitations under the License. 14.20 +** 14.21 +** The Original Software is GLX version 1.2 source code, released February, 14.22 +** 1999. The developer of the Original Software is Silicon Graphics, Inc. 14.23 +** Those portions of the Subject Software created by Silicon Graphics, Inc. 14.24 +** are Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved. 14.25 +** 14.26 +** $SGI$ 14.27 +*/ 14.28 + 14.29 +#include <X11/X.h> 14.30 +#include <X11/Xdefs.h> 14.31 + 14.32 +typedef struct __GLXvisualConfigRec __GLXvisualConfig; 14.33 + 14.34 +struct __GLXvisualConfigRec { 14.35 + VisualID vid; 14.36 + int class; 14.37 + Bool rgba; 14.38 + int redSize, greenSize, blueSize, alphaSize; 14.39 + unsigned long redMask, greenMask, blueMask, alphaMask; 14.40 + int accumRedSize, accumGreenSize, accumBlueSize, accumAlphaSize; 14.41 + Bool doubleBuffer; 14.42 + Bool stereo; 14.43 + int bufferSize; 14.44 + int depthSize; 14.45 + int stencilSize; 14.46 + int auxBuffers; 14.47 + int level; 14.48 + /* Start of Extended Visual Properties */ 14.49 + int visualRating; /* visual_rating extension */ 14.50 + int transparentPixel; /* visual_info extension */ 14.51 + /* colors are floats scaled to ints */ 14.52 + int transparentRed, transparentGreen, transparentBlue, transparentAlpha; 14.53 + int transparentIndex; 14.54 +}; 14.55 + 14.56 +#define __GLX_MIN_CONFIG_PROPS 18 14.57 +#define __GLX_MAX_CONFIG_PROPS 500 14.58 + 14.59 +#define __GLX_EXT_CONFIG_PROPS 7 14.60 + 14.61 +/* 14.62 +** Since we send all non-core visual properties as token, value pairs, 14.63 +** we require 2 words across the wire. In order to maintain backwards 14.64 +** compatibility, we need to send the total number of words that the 14.65 +** VisualConfigs are sent back in so old libraries can simply "ignore" 14.66 +** the new properties. 14.67 +*/ 14.68 +#define __GLX_TOTAL_CONFIG (__GLX_MIN_CONFIG_PROPS + \ 14.69 + 2 * __GLX_EXT_CONFIG_PROPS) 14.70 + 14.71 +#endif /* !__GLX_glxint_h__ */
15.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 15.2 +++ b/GL/glxmd.h Tue Nov 27 15:23:52 2007 +0100 15.3 @@ -0,0 +1,58 @@ 15.4 +#ifndef _GLX_glxmd_h_ 15.5 +#define _GLX_glxmd_h_ 15.6 + 15.7 +/* $XFree86: xc/include/GL/glxmd.h,v 1.3 2001/03/21 15:51:38 dawes Exp $ */ 15.8 +/* 15.9 +** License Applicability. Except to the extent portions of this file are 15.10 +** made subject to an alternative license as permitted in the SGI Free 15.11 +** Software License B, Version 1.1 (the "License"), the contents of this 15.12 +** file are subject only to the provisions of the License. You may not use 15.13 +** this file except in compliance with the License. You may obtain a copy 15.14 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 15.15 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: 15.16 +** 15.17 +** http://oss.sgi.com/projects/FreeB 15.18 +** 15.19 +** Note that, as provided in the License, the Software is distributed on an 15.20 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS 15.21 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND 15.22 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A 15.23 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 15.24 +** 15.25 +** Original Code. The Original Code is: OpenGL Sample Implementation, 15.26 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, 15.27 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. 15.28 +** Copyright in any portions created by third parties is as indicated 15.29 +** elsewhere herein. All Rights Reserved. 15.30 +** 15.31 +** Additional Notice Provisions: The application programming interfaces 15.32 +** established by SGI in conjunction with the Original Code are The 15.33 +** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released 15.34 +** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version 15.35 +** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X 15.36 +** Window System(R) (Version 1.3), released October 19, 1998. This software 15.37 +** was created using the OpenGL(R) version 1.2.1 Sample Implementation 15.38 +** published by SGI, but has not been independently verified as being 15.39 +** compliant with the OpenGL(R) version 1.2.1 Specification. 15.40 +*/ 15.41 + 15.42 +/* 15.43 +** Machine dependent declarations. 15.44 +*/ 15.45 + 15.46 +/* 15.47 +** Define floating point wire types. These are in IEEE format on the wire. 15.48 +*/ 15.49 +typedef float FLOAT32; 15.50 +typedef double FLOAT64; 15.51 + 15.52 +/* 15.53 +** Like B32, but this is used to store floats in a request. 15.54 +** 15.55 +** NOTE: Machines that have a native 32-bit IEEE float can define this as 15.56 +** nothing. Machines that don't might mimic the float with an integer, 15.57 +** and then define this to :32. 15.58 +*/ 15.59 +#define F32 15.60 + 15.61 +#endif /* _GLX_glxmd_h_ */
16.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 16.2 +++ b/GL/glxproto.h Tue Nov 27 15:23:52 2007 +0100 16.3 @@ -0,0 +1,1834 @@ 16.4 +#ifndef _GLX_glxproto_h_ 16.5 +#define _GLX_glxproto_h_ 16.6 + 16.7 +/* $XFree86: xc/include/GL/glxproto.h,v 1.5 2001/08/01 00:44:34 tsi Exp $ */ 16.8 +/* 16.9 +** License Applicability. Except to the extent portions of this file are 16.10 +** made subject to an alternative license as permitted in the SGI Free 16.11 +** Software License B, Version 1.1 (the "License"), the contents of this 16.12 +** file are subject only to the provisions of the License. You may not use 16.13 +** this file except in compliance with the License. You may obtain a copy 16.14 +** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 16.15 +** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: 16.16 +** 16.17 +** http://oss.sgi.com/projects/FreeB 16.18 +** 16.19 +** Note that, as provided in the License, the Software is distributed on an 16.20 +** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS 16.21 +** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND 16.22 +** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A 16.23 +** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 16.24 +** 16.25 +** Original Code. The Original Code is: OpenGL Sample Implementation, 16.26 +** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, 16.27 +** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. 16.28 +** Copyright in any portions created by third parties is as indicated 16.29 +** elsewhere herein. All Rights Reserved. 16.30 +** 16.31 +** Additional Notice Provisions: The application programming interfaces 16.32 +** established by SGI in conjunction with the Original Code are The 16.33 +** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released 16.34 +** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version 16.35 +** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X 16.36 +** Window System(R) (Version 1.3), released October 19, 1998. This software 16.37 +** was created using the OpenGL(R) version 1.2.1 Sample Implementation 16.38 +** published by SGI, but has not been independently verified as being 16.39 +** compliant with the OpenGL(R) version 1.2.1 Specification. 16.40 +*/ 16.41 + 16.42 +#include <GL/glxmd.h> 16.43 + 16.44 +/*****************************************************************************/ 16.45 + 16.46 +/* 16.47 +** Errrors. 16.48 +*/ 16.49 +#define GLXBadContext 0 16.50 +#define GLXBadContextState 1 16.51 +#define GLXBadDrawable 2 16.52 +#define GLXBadPixmap 3 16.53 +#define GLXBadContextTag 4 16.54 +#define GLXBadCurrentWindow 5 16.55 +#define GLXBadRenderRequest 6 16.56 +#define GLXBadLargeRequest 7 16.57 +#define GLXUnsupportedPrivateRequest 8 16.58 +#define GLXBadFBConfig 9 16.59 +#define GLXBadPbuffer 10 16.60 +#define GLXBadCurrentDrawable 11 16.61 +#define GLXBadWindow 12 16.62 + 16.63 +#define __GLX_NUMBER_ERRORS 12 16.64 + 16.65 +/* 16.66 +** Events. 16.67 +** __GLX_NUMBER_EVENTS is set to 17 to account for the BufferClobberSGIX 16.68 +** event - this helps initialization if the server supports the pbuffer 16.69 +** extension and the client doesn't. 16.70 +*/ 16.71 +#define GLX_PbufferClobber 0 16.72 + 16.73 +#define __GLX_NUMBER_EVENTS 17 16.74 + 16.75 +#define GLX_EXTENSION_NAME "GLX" 16.76 +#define GLX_EXTENSION_ALIAS "SGI-GLX" 16.77 + 16.78 +#define __GLX_MAX_CONTEXT_PROPS 3 16.79 + 16.80 +#define GLX_VENDOR 0x1 16.81 +#define GLX_VERSION 0x2 16.82 +#define GLX_EXTENSIONS 0x3 16.83 + 16.84 +/*****************************************************************************/ 16.85 + 16.86 +/* 16.87 +** For the structure definitions in this file, we must redefine these types in 16.88 +** terms of Xmd.h types, which may include bitfields. All of these are 16.89 +** undef'ed at the end of this file, restoring the definitions in glx.h. 16.90 +*/ 16.91 +#define GLXContextID CARD32 16.92 +#define GLXPixmap CARD32 16.93 +#define GLXDrawable CARD32 16.94 +#define GLXPbuffer CARD32 16.95 +#define GLXWindow CARD32 16.96 +#define GLXFBConfigID CARD32 16.97 +#define GLXFBConfigIDSGIX CARD32 16.98 +#define GLXPbufferSGIX CARD32 16.99 + 16.100 +/* 16.101 +** ContextTag is not exposed to the API. 16.102 +*/ 16.103 +typedef CARD32 GLXContextTag; 16.104 + 16.105 +/*****************************************************************************/ 16.106 + 16.107 +/* 16.108 +** Sizes of basic wire types. 16.109 +*/ 16.110 +#define __GLX_SIZE_INT8 1 16.111 +#define __GLX_SIZE_INT16 2 16.112 +#define __GLX_SIZE_INT32 4 16.113 +#define __GLX_SIZE_CARD8 1 16.114 +#define __GLX_SIZE_CARD16 2 16.115 +#define __GLX_SIZE_CARD32 4 16.116 +#define __GLX_SIZE_FLOAT32 4 16.117 +#define __GLX_SIZE_FLOAT64 8 16.118 + 16.119 +/*****************************************************************************/ 16.120 + 16.121 +/* Requests */ 16.122 + 16.123 +/* 16.124 +** Render command request. A bunch of rendering commands are packed into 16.125 +** a single X extension request. 16.126 +*/ 16.127 +typedef struct GLXRender { 16.128 + CARD8 reqType; 16.129 + CARD8 glxCode; 16.130 + CARD16 length B16; 16.131 + GLXContextTag contextTag B32; 16.132 +} xGLXRenderReq; 16.133 +#define sz_xGLXRenderReq 8 16.134 + 16.135 +/* 16.136 +** The maximum size that a GLXRender command can be. The value must fit 16.137 +** in 16 bits and should be a multiple of 4. 16.138 +*/ 16.139 +#define __GLX_MAX_RENDER_CMD_SIZE 64000 16.140 + 16.141 +/* 16.142 +** Large render command request. A single large rendering command 16.143 +** is output in multiple X extension requests. The first packet 16.144 +** contains an opcode dependent header (see below) that describes 16.145 +** the data that follows. 16.146 +*/ 16.147 +typedef struct GLXRenderLarge { 16.148 + CARD8 reqType; 16.149 + CARD8 glxCode; 16.150 + CARD16 length B16; 16.151 + GLXContextTag contextTag B32; 16.152 + CARD16 requestNumber B16; 16.153 + CARD16 requestTotal B16; 16.154 + CARD32 dataBytes B32; 16.155 +} xGLXRenderLargeReq; 16.156 +#define sz_xGLXRenderLargeReq 16 16.157 + 16.158 +/* 16.159 +** GLX single request. Commands that go over as single GLX protocol 16.160 +** requests use this structure. The glxCode will be one of the X_GLsop 16.161 +** opcodes. 16.162 +*/ 16.163 +typedef struct GLXSingle { 16.164 + CARD8 reqType; 16.165 + CARD8 glxCode; 16.166 + CARD16 length B16; 16.167 + GLXContextTag contextTag B32; 16.168 +} xGLXSingleReq; 16.169 +#define sz_xGLXSingleReq 8 16.170 + 16.171 +/* 16.172 +** glXQueryVersion request 16.173 +*/ 16.174 +typedef struct GLXQueryVersion { 16.175 + CARD8 reqType; 16.176 + CARD8 glxCode; 16.177 + CARD16 length B16; 16.178 + CARD32 majorVersion B32; 16.179 + CARD32 minorVersion B32; 16.180 +} xGLXQueryVersionReq; 16.181 +#define sz_xGLXQueryVersionReq 12 16.182 + 16.183 +/* 16.184 +** glXIsDirect request 16.185 +*/ 16.186 +typedef struct GLXIsDirect { 16.187 + CARD8 reqType; 16.188 + CARD8 glxCode; 16.189 + CARD16 length B16; 16.190 + GLXContextID context B32; 16.191 +} xGLXIsDirectReq; 16.192 +#define sz_xGLXIsDirectReq 8 16.193 + 16.194 +/* 16.195 +** glXCreateContext request 16.196 +*/ 16.197 +typedef struct GLXCreateContext { 16.198 + CARD8 reqType; 16.199 + CARD8 glxCode; 16.200 + CARD16 length B16; 16.201 + GLXContextID context B32; 16.202 + CARD32 visual B32; 16.203 + CARD32 screen B32; 16.204 + GLXContextID shareList B32; 16.205 + BOOL isDirect; 16.206 + CARD8 reserved1; 16.207 + CARD16 reserved2 B16; 16.208 +} xGLXCreateContextReq; 16.209 +#define sz_xGLXCreateContextReq 24 16.210 + 16.211 +/* 16.212 +** glXDestroyContext request 16.213 +*/ 16.214 +typedef struct GLXDestroyContext { 16.215 + CARD8 reqType; 16.216 + CARD8 glxCode; 16.217 + CARD16 length B16; 16.218 + GLXContextID context B32; 16.219 +} xGLXDestroyContextReq; 16.220 +#define sz_xGLXDestroyContextReq 8 16.221 + 16.222 +/* 16.223 +** glXMakeCurrent request 16.224 +*/ 16.225 +typedef struct GLXMakeCurrent { 16.226 + CARD8 reqType; 16.227 + CARD8 glxCode; 16.228 + CARD16 length B16; 16.229 + GLXDrawable drawable B32; 16.230 + GLXContextID context B32; 16.231 + GLXContextTag oldContextTag B32; 16.232 +} xGLXMakeCurrentReq; 16.233 +#define sz_xGLXMakeCurrentReq 16 16.234 + 16.235 +/* 16.236 +** glXWaitGL request 16.237 +*/ 16.238 +typedef struct GLXWaitGL { 16.239 + CARD8 reqType; 16.240 + CARD8 glxCode; 16.241 + CARD16 length B16; 16.242 + GLXContextTag contextTag B32; 16.243 +} xGLXWaitGLReq; 16.244 +#define sz_xGLXWaitGLReq 8 16.245 + 16.246 +/* 16.247 +** glXWaitX request 16.248 +*/ 16.249 +typedef struct GLXWaitX { 16.250 + CARD8 reqType; 16.251 + CARD8 glxCode; 16.252 + CARD16 length B16; 16.253 + GLXContextTag contextTag B32; 16.254 +} xGLXWaitXReq; 16.255 +#define sz_xGLXWaitXReq 8 16.256 + 16.257 +/* 16.258 +** glXCopyContext request 16.259 +*/ 16.260 +typedef struct GLXCopyContext { 16.261 + CARD8 reqType; 16.262 + CARD8 glxCode; 16.263 + CARD16 length B16; 16.264 + GLXContextID source B32; 16.265 + GLXContextID dest B32; 16.266 + CARD32 mask B32; 16.267 + GLXContextTag contextTag B32; 16.268 +} xGLXCopyContextReq; 16.269 +#define sz_xGLXCopyContextReq 20 16.270 + 16.271 +/* 16.272 +** glXSwapBuffers request 16.273 +*/ 16.274 +typedef struct GLXSwapBuffers { 16.275 + CARD8 reqType; 16.276 + CARD8 glxCode; 16.277 + CARD16 length B16; 16.278 + GLXContextTag contextTag B32; 16.279 + GLXDrawable drawable B32; 16.280 +} xGLXSwapBuffersReq; 16.281 +#define sz_xGLXSwapBuffersReq 12 16.282 + 16.283 +/* 16.284 +** glXUseXFont request 16.285 +*/ 16.286 +typedef struct GLXUseXFont { 16.287 + CARD8 reqType; 16.288 + CARD8 glxCode; 16.289 + CARD16 length B16; 16.290 + GLXContextTag contextTag B32; 16.291 + CARD32 font B32; 16.292 + CARD32 first B32; 16.293 + CARD32 count B32; 16.294 + CARD32 listBase B32; 16.295 +} xGLXUseXFontReq; 16.296 +#define sz_xGLXUseXFontReq 24 16.297 + 16.298 +/* 16.299 +** glXCreateGLXPixmap request 16.300 +*/ 16.301 +typedef struct GLXCreateGLXPixmap { 16.302 + CARD8 reqType; 16.303 + CARD8 glxCode; 16.304 + CARD16 length B16; 16.305 + CARD32 screen B32; 16.306 + CARD32 visual B32; 16.307 + CARD32 pixmap B32; 16.308 + GLXPixmap glxpixmap B32; 16.309 +} xGLXCreateGLXPixmapReq; 16.310 +#define sz_xGLXCreateGLXPixmapReq 20 16.311 + 16.312 +/* 16.313 +** glXDestroyGLXPixmap request 16.314 +*/ 16.315 +typedef struct GLXDestroyGLXPixmap { 16.316 + CARD8 reqType; 16.317 + CARD8 glxCode; 16.318 + CARD16 length B16; 16.319 + GLXPixmap glxpixmap B32; 16.320 +} xGLXDestroyGLXPixmapReq; 16.321 +#define sz_xGLXDestroyGLXPixmapReq 8 16.322 + 16.323 +/* 16.324 +** glXGetVisualConfigs request 16.325 +*/ 16.326 +typedef struct GLXGetVisualConfigs { 16.327 + CARD8 reqType; 16.328 + CARD8 glxCode; 16.329 + CARD16 length B16; 16.330 + CARD32 screen B32; 16.331 +} xGLXGetVisualConfigsReq; 16.332 +#define sz_xGLXGetVisualConfigsReq 8 16.333 + 16.334 +/* 16.335 +** glXVendorPrivate request. 16.336 +*/ 16.337 +typedef struct GLXVendorPrivate { 16.338 + CARD8 reqType; 16.339 + CARD8 glxCode; 16.340 + CARD16 length B16; 16.341 + CARD32 vendorCode B32; /* vendor-specific opcode */ 16.342 + GLXContextTag contextTag B32; 16.343 + /* 16.344 + ** More data may follow; this is just the header. 16.345 + */ 16.346 +} xGLXVendorPrivateReq; 16.347 +#define sz_xGLXVendorPrivateReq 12 16.348 + 16.349 +/* 16.350 +** glXVendorPrivateWithReply request 16.351 +*/ 16.352 +typedef struct GLXVendorPrivateWithReply { 16.353 + CARD8 reqType; 16.354 + CARD8 glxCode; 16.355 + CARD16 length B16; 16.356 + CARD32 vendorCode B32; /* vendor-specific opcode */ 16.357 + GLXContextTag contextTag B32; 16.358 + /* 16.359 + ** More data may follow; this is just the header. 16.360 + */ 16.361 +} xGLXVendorPrivateWithReplyReq; 16.362 +#define sz_xGLXVendorPrivateWithReplyReq 12 16.363 + 16.364 +/* 16.365 +** glXQueryExtensionsString request 16.366 +*/ 16.367 +typedef struct GLXQueryExtensionsString { 16.368 + CARD8 reqType; 16.369 + CARD8 glxCode; 16.370 + CARD16 length B16; 16.371 + CARD32 screen B32; 16.372 +} xGLXQueryExtensionsStringReq; 16.373 +#define sz_xGLXQueryExtensionsStringReq 8 16.374 + 16.375 +/* 16.376 +** glXQueryServerString request 16.377 +*/ 16.378 +typedef struct GLXQueryServerString { 16.379 + CARD8 reqType; 16.380 + CARD8 glxCode; 16.381 + CARD16 length B16; 16.382 + CARD32 screen B32; 16.383 + CARD32 name B32; 16.384 +} xGLXQueryServerStringReq; 16.385 +#define sz_xGLXQueryServerStringReq 12 16.386 + 16.387 +/* 16.388 +** glXClientInfo request 16.389 +*/ 16.390 +typedef struct GLXClientInfo { 16.391 + CARD8 reqType; 16.392 + CARD8 glxCode; 16.393 + CARD16 length B16; 16.394 + CARD32 major B32; 16.395 + CARD32 minor B32; 16.396 + CARD32 numbytes B32; 16.397 +} xGLXClientInfoReq; 16.398 +#define sz_xGLXClientInfoReq 16 16.399 + 16.400 +/*** Start of GLX 1.3 requests */ 16.401 + 16.402 +/* 16.403 +** glXGetFBConfigs request 16.404 +*/ 16.405 +typedef struct GLXGetFBConfigs { 16.406 + CARD8 reqType; 16.407 + CARD8 glxCode; 16.408 + CARD16 length B16; 16.409 + CARD32 screen B32; 16.410 +} xGLXGetFBConfigsReq; 16.411 +#define sz_xGLXGetFBConfigsReq 8 16.412 + 16.413 +/* 16.414 +** glXCreatePixmap request 16.415 +*/ 16.416 +typedef struct GLXCreatePixmap { 16.417 + CARD8 reqType; 16.418 + CARD8 glxCode; 16.419 + CARD16 length B16; 16.420 + CARD32 screen B32; 16.421 + GLXFBConfigID fbconfig B32; 16.422 + CARD32 pixmap B32; 16.423 + GLXPixmap glxpixmap B32; 16.424 + CARD32 numAttribs B32; 16.425 + /* followed by attribute list */ 16.426 +} xGLXCreatePixmapReq; 16.427 +#define sz_xGLXCreatePixmapReq 24 16.428 + 16.429 +/* 16.430 +** glXDestroyPixmap request 16.431 +*/ 16.432 +typedef struct GLXDestroyPixmap { 16.433 + CARD8 reqType; 16.434 + CARD8 glxCode; 16.435 + CARD16 length B16; 16.436 + GLXPixmap glxpixmap B32; 16.437 +} xGLXDestroyPixmapReq; 16.438 +#define sz_xGLXDestroyPixmapReq 8 16.439 + 16.440 +/* 16.441 +** glXCreateNewContext request 16.442 +*/ 16.443 +typedef struct GLXCreateNewContext { 16.444 + CARD8 reqType; 16.445 + CARD8 glxCode; 16.446 + CARD16 length B16; 16.447 + GLXContextID context B32; 16.448 + GLXFBConfigID fbconfig B32; 16.449 + CARD32 screen B32; 16.450 + CARD32 renderType; 16.451 + GLXContextID shareList B32; 16.452 + BOOL isDirect; 16.453 + CARD8 reserved1; 16.454 + CARD16 reserved2 B16; 16.455 +} xGLXCreateNewContextReq; 16.456 +#define sz_xGLXCreateNewContextReq 28 16.457 + 16.458 +/* 16.459 +** glXQueryContext request 16.460 +*/ 16.461 +typedef struct GLXQueryContext { 16.462 + CARD8 reqType; 16.463 + CARD8 glxCode; 16.464 + CARD16 length B16; 16.465 + GLXContextID context B32; 16.466 +} xGLXQueryContextReq; 16.467 +#define sz_xGLXQueryContextReq 8 16.468 + 16.469 +/* 16.470 +** glXMakeContextCurrent request 16.471 +*/ 16.472 +typedef struct GLXMakeContextCurrent { 16.473 + CARD8 reqType; 16.474 + CARD8 glxCode; 16.475 + CARD16 length B16; 16.476 + GLXContextTag oldContextTag B32; 16.477 + GLXDrawable drawable B32; 16.478 + GLXDrawable readdrawable B32; 16.479 + GLXContextID context B32; 16.480 +} xGLXMakeContextCurrentReq; 16.481 +#define sz_xGLXMakeContextCurrentReq 20 16.482 + 16.483 +/* 16.484 +** glXCreatePbuffer request 16.485 +*/ 16.486 +typedef struct GLXCreatePbuffer { 16.487 + CARD8 reqType; 16.488 + CARD8 glxCode; 16.489 + CARD16 length B16; 16.490 + CARD32 screen B32; 16.491 + GLXFBConfigID fbconfig B32; 16.492 + GLXPbuffer pbuffer B32; 16.493 + CARD32 numAttribs B32; 16.494 + /* followed by attribute list */ 16.495 +} xGLXCreatePbufferReq; 16.496 +#define sz_xGLXCreatePbufferReq 20 16.497 + 16.498 +/* 16.499 +** glXDestroyPbuffer request 16.500 +*/ 16.501 +typedef struct GLXDestroyPbuffer { 16.502 + CARD8 reqType; 16.503 + CARD8 glxCode; 16.504 + CARD16 length B16; 16.505 + GLXPbuffer pbuffer B32; 16.506 +} xGLXDestroyPbufferReq; 16.507 +#define sz_xGLXDestroyPbufferReq 8 16.508 + 16.509 +/* 16.510 +** glXGetDrawableAttributes request 16.511 +*/ 16.512 +typedef struct GLXGetDrawableAttributes { 16.513 + CARD8 reqType; 16.514 + CARD8 glxCode; 16.515 + CARD16 length B16; 16.516 + GLXDrawable drawable B32; 16.517 +} xGLXGetDrawableAttributesReq; 16.518 +#define sz_xGLXGetDrawableAttributesReq 8 16.519 + 16.520 +/* 16.521 +** glXChangeDrawableAttributes request 16.522 +*/ 16.523 +typedef struct GLXChangeDrawableAttributes { 16.524 + CARD8 reqType; 16.525 + CARD8 glxCode; 16.526 + CARD16 length B16; 16.527 + GLXDrawable drawable B32; 16.528 + CARD32 numAttribs B32; 16.529 + /* followed by attribute list */ 16.530 +} xGLXChangeDrawableAttributesReq; 16.531 +#define sz_xGLXChangeDrawableAttributesReq 12 16.532 + 16.533 +/* 16.534 +** glXCreateWindow request 16.535 +*/ 16.536 +typedef struct GLXCreateWindow { 16.537 + CARD8 reqType; 16.538 + CARD8 glxCode; 16.539 + CARD16 length B16; 16.540 + CARD32 screen B32; 16.541 + GLXFBConfigID fbconfig B32; 16.542 + CARD32 window B32; 16.543 + GLXWindow glxwindow B32; 16.544 + CARD32 numAttribs B32; 16.545 + /* followed by attribute list */ 16.546 +} xGLXCreateWindowReq; 16.547 +#define sz_xGLXCreateWindowReq 24 16.548 + 16.549 +/* 16.550 +** glXDestroyWindow request 16.551 +*/ 16.552 +typedef struct GLXDestroyWindow { 16.553 + CARD8 reqType; 16.554 + CARD8 glxCode; 16.555 + CARD16 length B16; 16.556 + GLXWindow glxwindow B32; 16.557 +} xGLXDestroyWindowReq; 16.558 +#define sz_xGLXDestroyWindowReq 8 16.559 + 16.560 +/* Replies */ 16.561 + 16.562 +typedef struct { 16.563 + BYTE type; /* X_Reply */ 16.564 + CARD8 unused; /* not used */ 16.565 + CARD16 sequenceNumber B16; 16.566 + CARD32 length B32; 16.567 + CARD32 error B32; 16.568 + CARD32 pad2 B32; 16.569 + CARD32 pad3 B32; 16.570 + CARD32 pad4 B32; 16.571 + CARD32 pad5 B32; 16.572 + CARD32 pad6 B32; 16.573 +} xGLXGetErrorReply; 16.574 +#define sz_xGLXGetErrorReply 32 16.575 + 16.576 +typedef struct { 16.577 + BYTE type; /* X_Reply */ 16.578 + CARD8 unused; /* not used */ 16.579 + CARD16 sequenceNumber B16; 16.580 + CARD32 length B32; 16.581 + GLXContextTag contextTag B32; 16.582 + CARD32 pad2 B32; 16.583 + CARD32 pad3 B32; 16.584 + CARD32 pad4 B32; 16.585 + CARD32 pad5 B32; 16.586 + CARD32 pad6 B32; 16.587 +} xGLXMakeCurrentReply; 16.588 +#define sz_xGLXMakeCurrentReply 32 16.589 + 16.590 +typedef struct { 16.591 + BYTE type; /* X_Reply */ 16.592 + CARD8 unused; /* not used */ 16.593 + CARD16 sequenceNumber B16; 16.594 + CARD32 length B32; 16.595 + CARD32 pad1 B32; 16.596 + CARD32 pad2 B32; 16.597 + CARD32 pad3 B32; 16.598 + CARD32 pad4 B32; 16.599 + CARD32 pad5 B32; 16.600 + CARD32 pad6 B32; 16.601 +} xGLXReadPixelsReply; 16.602 +#define sz_xGLXReadPixelsReply 32 16.603 + 16.604 +typedef struct { 16.605 + BYTE type; /* X_Reply */ 16.606 + CARD8 unused; /* not used */ 16.607 + CARD16 sequenceNumber B16; 16.608 + CARD32 length B32; 16.609 + CARD32 pad1 B32; 16.610 + CARD32 pad2 B32; 16.611 + CARD32 width B32; 16.612 + CARD32 height B32; 16.613 + CARD32 depth B32; 16.614 + CARD32 pad6 B32; 16.615 +} xGLXGetTexImageReply; 16.616 +#define sz_xGLXGetTexImageReply 32 16.617 + 16.618 +typedef struct { 16.619 + BYTE type; /* X_Reply */ 16.620 + CARD8 unused; /* not used */ 16.621 + CARD16 sequenceNumber B16; 16.622 + CARD32 length B32; 16.623 + CARD32 pad1 B32; 16.624 + CARD32 pad2 B32; 16.625 + CARD32 width B32; 16.626 + CARD32 height B32; 16.627 + CARD32 pad5 B32; 16.628 + CARD32 pad6 B32; 16.629 +} xGLXGetSeparableFilterReply; 16.630 +#define sz_xGLXGetSeparableFilterReply 32 16.631 + 16.632 +typedef struct { 16.633 + BYTE type; /* X_Reply */ 16.634 + CARD8 unused; /* not used */ 16.635 + CARD16 sequenceNumber B16; 16.636 + CARD32 length B32; 16.637 + CARD32 pad1 B32; 16.638 + CARD32 pad2 B32; 16.639 + CARD32 width B32; 16.640 + CARD32 height B32; 16.641 + CARD32 pad5 B32; 16.642 + CARD32 pad6 B32; 16.643 +} xGLXGetConvolutionFilterReply; 16.644 +#define sz_xGLXGetConvolutionFilterReply 32 16.645 + 16.646 +typedef struct { 16.647 + BYTE type; /* X_Reply */ 16.648 + CARD8 unused; /* not used */ 16.649 + CARD16 sequenceNumber B16; 16.650 + CARD32 length B32; 16.651 + CARD32 pad1 B32; 16.652 + CARD32 pad2 B32; 16.653 + CARD32 width B32; 16.654 + CARD32 pad4 B32; 16.655 + CARD32 pad5 B32; 16.656 + CARD32 pad6 B32; 16.657 +} xGLXGetHistogramReply; 16.658 +#define sz_xGLXGetHistogramReply 32 16.659 + 16.660 +typedef struct { 16.661 + BYTE type; /* X_Reply */ 16.662 + CARD8 unused; /* not used */ 16.663 + CARD16 sequenceNumber B16; 16.664 + CARD32 length B32; 16.665 + CARD32 pad1 B32; 16.666 + CARD32 pad2 B32; 16.667 + CARD32 pad3 B32; 16.668 + CARD32 pad4 B32; 16.669 + CARD32 pad5 B32; 16.670 + CARD32 pad6 B32; 16.671 +} xGLXGetMinmaxReply; 16.672 +#define sz_xGLXGetMinmaxReply 32 16.673 + 16.674 +typedef struct { 16.675 + BYTE type; /* X_Reply */ 16.676 + CARD8 unused; /* not used */ 16.677 + CARD16 sequenceNumber B16; 16.678 + CARD32 length B32; 16.679 + CARD32 retval B32; 16.680 + CARD32 size B32; 16.681 + CARD32 newMode B32; 16.682 + CARD32 pad4 B32; 16.683 + CARD32 pad5 B32; 16.684 + CARD32 pad6 B32; 16.685 +} xGLXRenderModeReply; 16.686 +#define sz_xGLXRenderModeReply 32 16.687 + 16.688 +typedef struct { 16.689 + BYTE type; /* X_Reply */ 16.690 + CARD8 unused; /* not used */ 16.691 + CARD16 sequenceNumber B16; 16.692 + CARD32 length B32; 16.693 + CARD32 majorVersion B32; 16.694 + CARD32 minorVersion B32; 16.695 + CARD32 pad3 B32; 16.696 + CARD32 pad4 B32; 16.697 + CARD32 pad5 B32; 16.698 + CARD32 pad6 B32; 16.699 +} xGLXQueryVersionReply; 16.700 +#define sz_xGLXQueryVersionReply 32 16.701 + 16.702 +typedef struct { 16.703 + BYTE type; /* X_Reply */ 16.704 + CARD8 unused; /* not used */ 16.705 + CARD16 sequenceNumber B16; 16.706 + CARD32 length B32; 16.707 + CARD32 numVisuals B32; 16.708 + CARD32 numProps B32; 16.709 + CARD32 pad3 B32; 16.710 + CARD32 pad4 B32; 16.711 + CARD32 pad5 B32; 16.712 + CARD32 pad6 B32; 16.713 +} xGLXGetVisualConfigsReply; 16.714 +#define sz_xGLXGetVisualConfigsReply 32 16.715 + 16.716 +typedef struct { 16.717 + BYTE type; /* X_Reply */ 16.718 + CARD8 unused; /* not used */ 16.719 + CARD16 sequenceNumber B16; 16.720 + CARD32 length B32; 16.721 + BOOL isDirect; 16.722 + CARD8 pad1; 16.723 + CARD16 pad2 B16; 16.724 + CARD32 pad3 B32; 16.725 + CARD32 pad4 B32; 16.726 + CARD32 pad5 B32; 16.727 + CARD32 pad6 B32; 16.728 + CARD32 pad7 B32; 16.729 +} xGLXIsDirectReply; 16.730 +#define sz_xGLXIsDirectReply 32 16.731 + 16.732 +/* 16.733 +** This reply structure is used for all single replies. Single replies 16.734 +** ship either 1 piece of data or N pieces of data. In these cases 16.735 +** size indicates how much data is to be returned. 16.736 +*/ 16.737 +typedef struct { 16.738 + BYTE type; /* X_Reply */ 16.739 + CARD8 unused; /* not used */ 16.740 + CARD16 sequenceNumber B16; 16.741 + CARD32 length B32; 16.742 + CARD32 retval B32; 16.743 + CARD32 size B32; 16.744 + CARD32 pad3 B32; /* NOTE: may hold a single value */ 16.745 + CARD32 pad4 B32; /* NOTE: may hold half a double */ 16.746 + CARD32 pad5 B32; 16.747 + CARD32 pad6 B32; 16.748 +} xGLXSingleReply; 16.749 +#define sz_xGLXSingleReply 32 16.750 + 16.751 +/* 16.752 +** This reply structure is used for all Vendor Private replies. Vendor 16.753 +** Private replies can ship up to 24 bytes within the header or can 16.754 +** be variable sized, in which case, the reply length field indicates 16.755 +** the number of words of data which follow the header. 16.756 +*/ 16.757 +typedef struct { 16.758 + BYTE type; /* X_Reply */ 16.759 + CARD8 unused; /* not used */ 16.760 + CARD16 sequenceNumber B16; 16.761 + CARD32 length B32; 16.762 + CARD32 retval B32; 16.763 + CARD32 size B32; 16.764 + CARD32 pad3 B32; 16.765 + CARD32 pad4 B32; 16.766 + CARD32 pad5 B32; 16.767 + CARD32 pad6 B32; 16.768 +} xGLXVendorPrivReply; 16.769 +#define sz_xGLXVendorPrivReply 32 16.770 + 16.771 +/* 16.772 +** QueryExtensionsStringReply 16.773 +** n indicates the number of bytes to be returned. 16.774 +*/ 16.775 +typedef struct { 16.776 + BYTE type; /* X_Reply */ 16.777 + CARD8 unused; /* not used */ 16.778 + CARD16 sequenceNumber B16; 16.779 + CARD32 length B32; 16.780 + CARD32 pad1 B32; 16.781 + CARD32 n B32; 16.782 + CARD32 pad3 B32; 16.783 + CARD32 pad4 B32; 16.784 + CARD32 pad5 B32; 16.785 + CARD32 pad6 B32; 16.786 +} xGLXQueryExtensionsStringReply; 16.787 +#define sz_xGLXQueryExtensionsStringReply 32 16.788 + 16.789 +/* 16.790 +** QueryServerString Reply struct 16.791 +** n indicates the number of bytes to be returned. 16.792 +*/ 16.793 +typedef struct { 16.794 + BYTE type; /* X_Reply */ 16.795 + CARD8 unused; /* not used */ 16.796 + CARD16 sequenceNumber B16; 16.797 + CARD32 length B32; 16.798 + CARD32 pad1 B32; 16.799 + CARD32 n B32; 16.800 + CARD32 pad3 B32; /* NOTE: may hold a single value */ 16.801 + CARD32 pad4 B32; /* NOTE: may hold half a double */ 16.802 + CARD32 pad5 B32; 16.803 + CARD32 pad6 B32; 16.804 +} xGLXQueryServerStringReply; 16.805 +#define sz_xGLXQueryServerStringReply 32 16.806 + 16.807 +/*** Start of GLX 1.3 replies */ 16.808 + 16.809 +/* 16.810 +** glXGetFBConfigs reply 16.811 +*/ 16.812 +typedef struct { 16.813 + BYTE type; /* X_Reply */ 16.814 + CARD8 unused; /* not used */ 16.815 + CARD16 sequenceNumber B16; 16.816 + CARD32 length B32; 16.817 + CARD32 numFBConfigs B32; 16.818 + CARD32 numAttribs B32; 16.819 + CARD32 pad3 B32; 16.820 + CARD32 pad4 B32; 16.821 + CARD32 pad5 B32; 16.822 + CARD32 pad6 B32; 16.823 +} xGLXGetFBConfigsReply; 16.824 +#define sz_xGLXGetFBConfigsReply 32 16.825 + 16.826 +/* 16.827 +** glXQueryContext reply 16.828 +*/ 16.829 +typedef struct { 16.830 + BYTE type; /* X_Reply */ 16.831 + CARD8 unused; /* not used */ 16.832 + CARD16 sequenceNumber B16; 16.833 + CARD32 length B32; 16.834 + CARD32 n B32; /* number of attribute/value pairs */ 16.835 + CARD32 pad2 B32; 16.836 + CARD32 pad3 B32; 16.837 + CARD32 pad4 B32; 16.838 + CARD32 pad5 B32; 16.839 + CARD32 pad6 B32; 16.840 +} xGLXQueryContextReply; 16.841 +#define sz_xGLXQueryContextReply 32 16.842 + 16.843 +/* 16.844 +** glXMakeContextCurrent reply 16.845 +*/ 16.846 +typedef struct { 16.847 + BYTE type; /* X_Reply */ 16.848 + CARD8 unused; /* not used */ 16.849 + CARD16 sequenceNumber B16; 16.850 + CARD32 length B32; 16.851 + GLXContextTag contextTag B32; 16.852 + CARD32 pad2 B32; 16.853 + CARD32 pad3 B32; 16.854 + CARD32 pad4 B32; 16.855 + CARD32 pad5 B32; 16.856 + CARD32 pad6 B32; 16.857 +} xGLXMakeContextCurrentReply; 16.858 +#define sz_xGLXMakeContextCurrentReply 32 16.859 + 16.860 +/* 16.861 +** glXCreateGLXPbuffer reply 16.862 +** This is used only in the direct rendering case on SGIs - otherwise 16.863 +** CreateGLXPbuffer has no reply. It is not part of GLX 1.3. 16.864 +*/ 16.865 +typedef struct { 16.866 + BYTE type; /* X_Reply */ 16.867 + CARD8 success; 16.868 + CARD16 sequenceNumber B16; 16.869 + CARD32 length B32; 16.870 + CARD32 pad1 B32; 16.871 + CARD32 pad2 B32; 16.872 + CARD32 pad3 B32; 16.873 + CARD32 pad4 B32; 16.874 + CARD32 pad5 B32; 16.875 + CARD32 pad6 B32; 16.876 +} xGLXCreateGLXPbufferReply; 16.877 +#define sz_xGLXCreateGLXPbufferReply 32 16.878 + 16.879 +/* 16.880 +** glXGetDrawableAttributes reply 16.881 +*/ 16.882 +typedef struct { 16.883 + BYTE type; /* X_Reply */ 16.884 + CARD8 unused; /* not used */ 16.885 + CARD16 sequenceNumber B16; 16.886 + CARD32 length B32; 16.887 + CARD32 numAttribs B32; 16.888 + CARD32 pad2 B32; 16.889 + CARD32 pad3 B32; 16.890 + CARD32 pad4 B32; 16.891 + CARD32 pad5 B32; 16.892 + CARD32 pad6 B32; 16.893 +} xGLXGetDrawableAttributesReply; 16.894 +#define sz_xGLXGetDrawableAttributesReply 32 16.895 + 16.896 +/* 16.897 +** glXGetColorTable reply 16.898 +*/ 16.899 +typedef struct { 16.900 + BYTE type; /* X_Reply */ 16.901 + CARD8 unused; /* not used */ 16.902 + CARD16 sequenceNumber B16; 16.903 + CARD32 length B32; 16.904 + CARD32 pad1 B32; 16.905 + CARD32 pad2 B32; 16.906 + CARD32 width B32; 16.907 + CARD32 pad4 B32; 16.908 + CARD32 pad5 B32; 16.909 + CARD32 pad6 B32; 16.910 +} xGLXGetColorTableReply; 16.911 +#define sz_xGLXGetColorTableReply 32 16.912 + 16.913 +/************************************************************************/ 16.914 + 16.915 +/* GLX extension requests and replies */ 16.916 + 16.917 +/* 16.918 +** glXQueryContextInfoEXT request 16.919 +*/ 16.920 +typedef struct GLXQueryContextInfoEXT { 16.921 + CARD8 reqType; 16.922 + CARD8 glxCode; 16.923 + CARD16 length B16; 16.924 + CARD32 vendorCode B32; /* vendor-specific opcode */ 16.925 + CARD32 pad1 B32; /* unused; corresponds to contextTag in header */ 16.926 + GLXContextID context B32; 16.927 +} xGLXQueryContextInfoEXTReq; 16.928 +#define sz_xGLXQueryContextInfoEXTReq 16 16.929 + 16.930 +/* 16.931 +** glXQueryContextInfoEXT reply 16.932 +*/ 16.933 +typedef struct { 16.934 + BYTE type; /* X_Reply */ 16.935 + CARD8 unused; /* not used */ 16.936 + CARD16 sequenceNumber B16; 16.937 + CARD32 length B32; 16.938 + CARD32 n B32; /* number of attribute/value pairs */ 16.939 + CARD32 pad2 B32; 16.940 + CARD32 pad3 B32; 16.941 + CARD32 pad4 B32; 16.942 + CARD32 pad5 B32; 16.943 + CARD32 pad6 B32; 16.944 +} xGLXQueryContextInfoEXTReply; 16.945 +#define sz_xGLXQueryContextInfoEXTReply 32 16.946 + 16.947 +/************************************************************************/ 16.948 + 16.949 +/* 16.950 +** Events 16.951 +*/ 16.952 + 16.953 +typedef struct { 16.954 + BYTE type; 16.955 + BYTE pad; 16.956 + CARD16 sequenceNumber B16; 16.957 + CARD16 event_type B16; /*** was clobber_class */ 16.958 + CARD16 draw_type B16; 16.959 + CARD32 drawable B32; 16.960 + CARD32 buffer_mask B32; /*** was mask */ 16.961 + CARD16 aux_buffer B16; 16.962 + CARD16 x B16; 16.963 + CARD16 y B16; 16.964 + CARD16 width B16; 16.965 + CARD16 height B16; 16.966 + CARD16 count B16; 16.967 + CARD32 unused2 B32; 16.968 +} xGLXPbufferClobberEvent; 16.969 + 16.970 +/************************************************************************/ 16.971 + 16.972 +/* 16.973 +** Size of the standard X request header. 16.974 +*/ 16.975 +#define __GLX_SINGLE_HDR_SIZE sz_xGLXSingleReq 16.976 +#define __GLX_VENDPRIV_HDR_SIZE sz_xGLXVendorPrivateReq 16.977 + 16.978 +#define __GLX_RENDER_HDR \ 16.979 + CARD16 length B16; \ 16.980 + CARD16 opcode B16 16.981 + 16.982 +#define __GLX_RENDER_HDR_SIZE 4 16.983 + 16.984 +typedef struct { 16.985 + __GLX_RENDER_HDR; 16.986 +} __GLXrenderHeader; 16.987 + 16.988 +#define __GLX_RENDER_LARGE_HDR \ 16.989 + CARD32 length B32; \ 16.990 + CARD32 opcode B32 16.991 + 16.992 +#define __GLX_RENDER_LARGE_HDR_SIZE 8 16.993 + 16.994 +typedef struct { 16.995 + __GLX_RENDER_LARGE_HDR; 16.996 +} __GLXrenderLargeHeader; 16.997 + 16.998 +/* 16.999 +** The glBitmap, glPolygonStipple, glTexImage[12]D, glTexSubImage[12]D 16.1000 +** and glDrawPixels calls all have a pixel header transmitted after the 16.1001 +** Render or RenderLarge header and before their own opcode specific 16.1002 +** headers. 16.1003 +*/ 16.1004 +#define __GLX_PIXEL_HDR \ 16.1005 + BOOL swapBytes; \ 16.1006 + BOOL lsbFirst; \ 16.1007 + CARD8 reserved0; \ 16.1008 + CARD8 reserved1; \ 16.1009 + CARD32 rowLength B32; \ 16.1010 + CARD32 skipRows B32; \ 16.1011 + CARD32 skipPixels B32; \ 16.1012 + CARD32 alignment B32 16.1013 + 16.1014 +#define __GLX_PIXEL_HDR_SIZE 20 16.1015 + 16.1016 +typedef struct { 16.1017 + __GLX_PIXEL_HDR; 16.1018 +} __GLXpixelHeader; 16.1019 + 16.1020 +/* 16.1021 +** glTexImage[34]D and glTexSubImage[34]D calls 16.1022 +** all have a pixel header transmitted after the Render or RenderLarge 16.1023 +** header and before their own opcode specific headers. 16.1024 +*/ 16.1025 +#define __GLX_PIXEL_3D_HDR \ 16.1026 + BOOL swapBytes; \ 16.1027 + BOOL lsbFirst; \ 16.1028 + CARD8 reserved0; \ 16.1029 + CARD8 reserved1; \ 16.1030 + CARD32 rowLength B32; \ 16.1031 + CARD32 imageHeight B32; \ 16.1032 + CARD32 imageDepth B32; \ 16.1033 + CARD32 skipRows B32; \ 16.1034 + CARD32 skipImages B32; \ 16.1035 + CARD32 skipVolumes B32; \ 16.1036 + CARD32 skipPixels B32; \ 16.1037 + CARD32 alignment B32 16.1038 + 16.1039 +#define __GLX_PIXEL_3D_HDR_SIZE 36 16.1040 + 16.1041 +/* 16.1042 +** Data that is specific to a glBitmap call. The data is sent in the 16.1043 +** following order: 16.1044 +** Render or RenderLarge header 16.1045 +** Pixel header 16.1046 +** Bitmap header 16.1047 +*/ 16.1048 +#define __GLX_BITMAP_HDR \ 16.1049 + CARD32 width B32; \ 16.1050 + CARD32 height B32; \ 16.1051 + FLOAT32 xorig F32; \ 16.1052 + FLOAT32 yorig F32; \ 16.1053 + FLOAT32 xmove F32; \ 16.1054 + FLOAT32 ymove F32 16.1055 + 16.1056 +typedef struct { 16.1057 + __GLX_RENDER_HDR; 16.1058 + __GLX_PIXEL_HDR; 16.1059 + __GLX_BITMAP_HDR; 16.1060 +} __GLXbitmapHeader; 16.1061 + 16.1062 +typedef struct { 16.1063 + __GLX_RENDER_LARGE_HDR; 16.1064 + __GLX_PIXEL_HDR; 16.1065 + __GLX_BITMAP_HDR; 16.1066 +} __GLXbitmapLargeHeader; 16.1067 + 16.1068 +typedef struct { 16.1069 + __GLX_PIXEL_HDR; 16.1070 + __GLX_BITMAP_HDR; 16.1071 +} __GLXdispatchBitmapHeader; 16.1072 + 16.1073 +#define __GLX_BITMAP_HDR_SIZE 24 16.1074 + 16.1075 +#define __GLX_BITMAP_CMD_HDR_SIZE \ 16.1076 + (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_BITMAP_HDR_SIZE) 16.1077 + 16.1078 +#define __GLX_BITMAP_CMD_DISPATCH_HDR_SIZE \ 16.1079 + (__GLX_PIXEL_HDR_SIZE + __GLX_BITMAP_HDR_SIZE) 16.1080 + 16.1081 +typedef struct { 16.1082 + __GLX_RENDER_HDR; 16.1083 + __GLX_PIXEL_HDR; 16.1084 +} __GLXpolygonStippleHeader; 16.1085 + 16.1086 +#define __GLX_POLYGONSTIPPLE_CMD_HDR_SIZE \ 16.1087 + (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE) 16.1088 + 16.1089 +/* 16.1090 +** Data that is specific to a glTexImage1D or glTexImage2D call. The 16.1091 +** data is sent in the following order: 16.1092 +** Render or RenderLarge header 16.1093 +** Pixel header 16.1094 +** TexImage header 16.1095 +** When a glTexImage1D call the height field is unexamined by the server. 16.1096 +*/ 16.1097 +#define __GLX_TEXIMAGE_HDR \ 16.1098 + CARD32 target B32; \ 16.1099 + CARD32 level B32; \ 16.1100 + CARD32 components B32; \ 16.1101 + CARD32 width B32; \ 16.1102 + CARD32 height B32; \ 16.1103 + CARD32 border B32; \ 16.1104 + CARD32 format B32; \ 16.1105 + CARD32 type B32 16.1106 + 16.1107 +#define __GLX_TEXIMAGE_HDR_SIZE 32 16.1108 + 16.1109 +#define __GLX_TEXIMAGE_CMD_HDR_SIZE \ 16.1110 + (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_TEXIMAGE_HDR_SIZE) 16.1111 + 16.1112 +#define __GLX_TEXIMAGE_CMD_DISPATCH_HDR_SIZE \ 16.1113 + (__GLX_PIXEL_HDR_SIZE + __GLX_TEXIMAGE_HDR_SIZE) 16.1114 + 16.1115 +typedef struct { 16.1116 + __GLX_RENDER_HDR; 16.1117 + __GLX_PIXEL_HDR; 16.1118 + __GLX_TEXIMAGE_HDR; 16.1119 +} __GLXtexImageHeader; 16.1120 + 16.1121 +typedef struct { 16.1122 + __GLX_RENDER_LARGE_HDR; 16.1123 + __GLX_PIXEL_HDR; 16.1124 + __GLX_TEXIMAGE_HDR; 16.1125 +} __GLXtexImageLargeHeader; 16.1126 + 16.1127 +typedef struct { 16.1128 + __GLX_PIXEL_HDR; 16.1129 + __GLX_TEXIMAGE_HDR; 16.1130 +} __GLXdispatchTexImageHeader; 16.1131 + 16.1132 +/* 16.1133 +** Data that is specific to a glTexImage3D or glTexImage4D call. The 16.1134 +** data is sent in the following order: 16.1135 +** Render or RenderLarge header 16.1136 +** Pixel 3D header 16.1137 +** TexImage 3D header 16.1138 +** When a glTexImage3D call the size4d and woffset fields are unexamined 16.1139 +** by the server. 16.1140 +** Could be used by all TexImage commands and perhaps should be in the 16.1141 +** future. 16.1142 +*/ 16.1143 +#define __GLX_TEXIMAGE_3D_HDR \ 16.1144 + CARD32 target B32; \ 16.1145 + CARD32 level B32; \ 16.1146 + CARD32 internalformat B32; \ 16.1147 + CARD32 width B32; \ 16.1148 + CARD32 height B32; \ 16.1149 + CARD32 depth B32; \ 16.1150 + CARD32 size4d B32; \ 16.1151 + CARD32 border B32; \ 16.1152 + CARD32 format B32; \ 16.1153 + CARD32 type B32; \ 16.1154 + CARD32 nullimage B32 16.1155 + 16.1156 +#define __GLX_TEXIMAGE_3D_HDR_SIZE 44 16.1157 + 16.1158 +#define __GLX_TEXIMAGE_3D_CMD_HDR_SIZE \ 16.1159 + (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_3D_HDR_SIZE + \ 16.1160 + __GLX_TEXIMAGE_3D_HDR_SIZE) 16.1161 + 16.1162 +#define __GLX_TEXIMAGE_3D_CMD_DISPATCH_HDR_SIZE \ 16.1163 + (__GLX_PIXEL_3D_HDR_SIZE + __GLX_TEXIMAGE_3D_HDR_SIZE) 16.1164 + 16.1165 +typedef struct { 16.1166 + __GLX_RENDER_HDR; 16.1167 + __GLX_PIXEL_3D_HDR; 16.1168 + __GLX_TEXIMAGE_3D_HDR; 16.1169 +} __GLXtexImage3DHeader; 16.1170 + 16.1171 +typedef struct { 16.1172 + __GLX_RENDER_LARGE_HDR; 16.1173 + __GLX_PIXEL_3D_HDR; 16.1174 + __GLX_TEXIMAGE_3D_HDR; 16.1175 +} __GLXtexImage3DLargeHeader; 16.1176 + 16.1177 +typedef struct { 16.1178 + __GLX_PIXEL_3D_HDR; 16.1179 + __GLX_TEXIMAGE_3D_HDR; 16.1180 +} __GLXdispatchTexImage3DHeader; 16.1181 + 16.1182 +/* 16.1183 +** Data that is specific to a glTexSubImage1D or glTexSubImage2D call. The 16.1184 +** data is sent in the following order: 16.1185 +** Render or RenderLarge header 16.1186 +** Pixel header 16.1187 +** TexSubImage header 16.1188 +** When a glTexSubImage1D call is made, the yoffset and height fields 16.1189 +** are unexamined by the server and are considered to be padding. 16.1190 +*/ 16.1191 +#define __GLX_TEXSUBIMAGE_HDR \ 16.1192 + CARD32 target B32; \ 16.1193 + CARD32 level B32; \ 16.1194 + CARD32 xoffset B32; \ 16.1195 + CARD32 yoffset B32; \ 16.1196 + CARD32 width B32; \ 16.1197 + CARD32 height B32; \ 16.1198 + CARD32 format B32; \ 16.1199 + CARD32 type B32; \ 16.1200 + CARD32 nullImage \ 16.1201 + 16.1202 +#define __GLX_TEXSUBIMAGE_HDR_SIZE 36 16.1203 + 16.1204 +#define __GLX_TEXSUBIMAGE_CMD_HDR_SIZE \ 16.1205 + (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_TEXSUBIMAGE_HDR_SIZE) 16.1206 + 16.1207 +#define __GLX_TEXSUBIMAGE_CMD_DISPATCH_HDR_SIZE \ 16.1208 + (__GLX_PIXEL_HDR_SIZE + __GLX_TEXSUBIMAGE_HDR_SIZE) 16.1209 + 16.1210 +typedef struct { 16.1211 + __GLX_RENDER_HDR; 16.1212 + __GLX_PIXEL_HDR; 16.1213 + __GLX_TEXSUBIMAGE_HDR; 16.1214 +} __GLXtexSubImageHeader; 16.1215 + 16.1216 +typedef struct { 16.1217 + __GLX_RENDER_LARGE_HDR; 16.1218 + __GLX_PIXEL_HDR; 16.1219 + __GLX_TEXSUBIMAGE_HDR; 16.1220 +} __GLXtexSubImageLargeHeader; 16.1221 + 16.1222 +typedef struct { 16.1223 + __GLX_PIXEL_HDR; 16.1224 + __GLX_TEXSUBIMAGE_HDR; 16.1225 +} __GLXdispatchTexSubImageHeader; 16.1226 + 16.1227 +/* 16.1228 +** Data that is specific to a glTexSubImage3D and 4D calls. The 16.1229 +** data is sent in the following order: 16.1230 +** Render or RenderLarge header 16.1231 +** Pixel 3D header 16.1232 +** TexSubImage 3D header 16.1233 +** When a glTexSubImage3D call is made, the woffset and size4d fields 16.1234 +** are unexamined by the server and are considered to be padding. 16.1235 +*/ 16.1236 +#define __GLX_TEXSUBIMAGE_3D_HDR \ 16.1237 + CARD32 target B32; \ 16.1238 + CARD32 level B32; \ 16.1239 + CARD32 xoffset B32; \ 16.1240 + CARD32 yoffset B32; \ 16.1241 + CARD32 zoffset B32; \ 16.1242 + CARD32 woffset B32; \ 16.1243 + CARD32 width B32; \ 16.1244 + CARD32 height B32; \ 16.1245 + CARD32 depth B32; \ 16.1246 + CARD32 size4d B32; \ 16.1247 + CARD32 format B32; \ 16.1248 + CARD32 type B32; \ 16.1249 + CARD32 nullImage \ 16.1250 + 16.1251 +#define __GLX_TEXSUBIMAGE_3D_HDR_SIZE 52 16.1252 + 16.1253 +#define __GLX_TEXSUBIMAGE_3D_CMD_HDR_SIZE \ 16.1254 + (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_3D_HDR_SIZE + \ 16.1255 + __GLX_TEXSUBIMAGE_3D_HDR_SIZE) 16.1256 + 16.1257 +#define __GLX_TEXSUBIMAGE_3D_CMD_DISPATCH_HDR_SIZE \ 16.1258 + (__GLX_PIXEL_3D_HDR_SIZE + __GLX_TEXSUBIMAGE_3D_HDR_SIZE) 16.1259 + 16.1260 +typedef struct { 16.1261 + __GLX_RENDER_HDR; 16.1262 + __GLX_PIXEL_3D_HDR; 16.1263 + __GLX_TEXSUBIMAGE_3D_HDR; 16.1264 +} __GLXtexSubImage3DHeader; 16.1265 + 16.1266 +typedef struct { 16.1267 + __GLX_RENDER_LARGE_HDR; 16.1268 + __GLX_PIXEL_3D_HDR; 16.1269 + __GLX_TEXSUBIMAGE_3D_HDR; 16.1270 +} __GLXtexSubImage3DLargeHeader; 16.1271 + 16.1272 +typedef struct { 16.1273 + __GLX_PIXEL_3D_HDR; 16.1274 + __GLX_TEXSUBIMAGE_3D_HDR; 16.1275 +} __GLXdispatchTexSubImage3DHeader; 16.1276 + 16.1277 +/* 16.1278 +** Data that is specific to a glDrawPixels call. The data is sent in the 16.1279 +** following order: 16.1280 +** Render or RenderLarge header 16.1281 +** Pixel header 16.1282 +** DrawPixels header 16.1283 +*/ 16.1284 +#define __GLX_DRAWPIXELS_HDR \ 16.1285 + CARD32 width B32; \ 16.1286 + CARD32 height B32; \ 16.1287 + CARD32 format B32; \ 16.1288 + CARD32 type B32 16.1289 + 16.1290 +#define __GLX_DRAWPIXELS_HDR_SIZE 16 16.1291 + 16.1292 +#define __GLX_DRAWPIXELS_CMD_HDR_SIZE \ 16.1293 + (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_DRAWPIXELS_HDR_SIZE) 16.1294 + 16.1295 +#define __GLX_DRAWPIXELS_CMD_DISPATCH_HDR_SIZE \ 16.1296 + (__GLX_PIXEL_HDR_SIZE + __GLX_DRAWPIXELS_HDR_SIZE) 16.1297 + 16.1298 +typedef struct { 16.1299 + __GLX_RENDER_HDR; 16.1300 + __GLX_PIXEL_HDR; 16.1301 + __GLX_DRAWPIXELS_HDR; 16.1302 +} __GLXdrawPixelsHeader; 16.1303 + 16.1304 +typedef struct { 16.1305 + __GLX_RENDER_LARGE_HDR; 16.1306 + __GLX_PIXEL_HDR; 16.1307 + __GLX_DRAWPIXELS_HDR; 16.1308 +} __GLXdrawPixelsLargeHeader; 16.1309 + 16.1310 +typedef struct { 16.1311 + __GLX_PIXEL_HDR; 16.1312 + __GLX_DRAWPIXELS_HDR; 16.1313 +} __GLXdispatchDrawPixelsHeader; 16.1314 + 16.1315 +/* 16.1316 +** Data that is specific to a glConvolutionFilter1D or glConvolutionFilter2D 16.1317 +** call. The data is sent in the following order: 16.1318 +** Render or RenderLarge header 16.1319 +** Pixel header 16.1320 +** ConvolutionFilter header 16.1321 +** When a glConvolutionFilter1D call the height field is unexamined by the server. 16.1322 +*/ 16.1323 +#define __GLX_CONV_FILT_HDR \ 16.1324 + CARD32 target B32; \ 16.1325 + CARD32 internalformat B32; \ 16.1326 + CARD32 width B32; \ 16.1327 + CARD32 height B32; \ 16.1328 + CARD32 format B32; \ 16.1329 + CARD32 type B32 16.1330 + 16.1331 +#define __GLX_CONV_FILT_HDR_SIZE 24 16.1332 + 16.1333 +#define __GLX_CONV_FILT_CMD_HDR_SIZE \ 16.1334 + (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_CONV_FILT_HDR_SIZE) 16.1335 + 16.1336 +#define __GLX_CONV_FILT_CMD_DISPATCH_HDR_SIZE \ 16.1337 + (__GLX_PIXEL_HDR_SIZE + __GLX_CONV_FILT_HDR_SIZE) 16.1338 +typedef struct { 16.1339 + __GLX_RENDER_HDR; 16.1340 + __GLX_PIXEL_HDR; 16.1341 + __GLX_CONV_FILT_HDR; 16.1342 +} __GLXConvolutionFilterHeader; 16.1343 + 16.1344 +typedef struct { 16.1345 + __GLX_RENDER_LARGE_HDR; 16.1346 + __GLX_PIXEL_HDR; 16.1347 + __GLX_CONV_FILT_HDR; 16.1348 +} __GLXConvolutionFilterLargeHeader; 16.1349 + 16.1350 +typedef struct { 16.1351 + __GLX_PIXEL_HDR; 16.1352 + __GLX_CONV_FILT_HDR; 16.1353 +} __GLXdispatchConvolutionFilterHeader; 16.1354 + 16.1355 +/* 16.1356 +** Data that is specific to a glDrawArraysEXT call. The data is sent in the 16.1357 +** following order: 16.1358 +** Render or RenderLarge header 16.1359 +** Draw Arrays header 16.1360 +** a variable number of Component headers 16.1361 +** vertex data for each component type 16.1362 +*/ 16.1363 + 16.1364 +#define __GLX_DRAWARRAYS_HDR \ 16.1365 + CARD32 numVertexes B32; \ 16.1366 + CARD32 numComponents B32; \ 16.1367 + CARD32 primType B32 16.1368 + 16.1369 +#define __GLX_DRAWARRAYS_HDR_SIZE 12 16.1370 + 16.1371 +#define __GLX_DRAWARRAYS_CMD_HDR_SIZE \ 16.1372 + (__GLX_RENDER_HDR_SIZE + __GLX_DRAWARRAYS_HDR_SIZE) 16.1373 + 16.1374 +typedef struct { 16.1375 + __GLX_RENDER_HDR; 16.1376 + __GLX_DRAWARRAYS_HDR; 16.1377 +} __GLXdrawArraysHeader; 16.1378 + 16.1379 +typedef struct { 16.1380 + __GLX_RENDER_LARGE_HDR; 16.1381 + __GLX_DRAWARRAYS_HDR; 16.1382 +} __GLXdrawArraysLargeHeader; 16.1383 + 16.1384 +typedef struct { 16.1385 + __GLX_DRAWARRAYS_HDR; 16.1386 +} __GLXdispatchDrawArraysHeader; 16.1387 + 16.1388 +#define __GLX_COMPONENT_HDR \ 16.1389 + CARD32 datatype B32; \ 16.1390 + INT32 numVals B32; \ 16.1391 + CARD32 component B32 16.1392 + 16.1393 +typedef struct { 16.1394 + __GLX_COMPONENT_HDR; 16.1395 +} __GLXdispatchDrawArraysComponentHeader; 16.1396 + 16.1397 +#define __GLX_COMPONENT_HDR_SIZE 12 16.1398 + 16.1399 +/* 16.1400 +** Data that is specific to a glColorTable call 16.1401 +** The data is sent in the following order: 16.1402 +** Render or RenderLarge header 16.1403 +** Pixel header 16.1404 +** ColorTable header 16.1405 +*/ 16.1406 + 16.1407 +#define __GLX_COLOR_TABLE_HDR \ 16.1408 + CARD32 target B32; \ 16.1409 + CARD32 internalformat B32; \ 16.1410 + CARD32 width B32; \ 16.1411 + CARD32 format B32; \ 16.1412 + CARD32 type B32 16.1413 + 16.1414 +#define __GLX_COLOR_TABLE_HDR_SIZE 20 16.1415 + 16.1416 +#define __GLX_COLOR_TABLE_CMD_HDR_SIZE \ 16.1417 + (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + __GLX_COLOR_TABLE_HDR_SIZE) 16.1418 + 16.1419 +typedef struct { 16.1420 + __GLX_RENDER_HDR; 16.1421 + __GLX_PIXEL_HDR; 16.1422 + __GLX_COLOR_TABLE_HDR; 16.1423 +} __GLXColorTableHeader; 16.1424 + 16.1425 +typedef struct { 16.1426 + __GLX_RENDER_LARGE_HDR; 16.1427 + __GLX_PIXEL_HDR; 16.1428 + __GLX_COLOR_TABLE_HDR; 16.1429 +} __GLXColorTableLargeHeader; 16.1430 + 16.1431 +typedef struct { 16.1432 + __GLX_PIXEL_HDR; 16.1433 + __GLX_COLOR_TABLE_HDR; 16.1434 +} __GLXdispatchColorTableHeader; 16.1435 + 16.1436 +/* 16.1437 +** Data that is specific to a glColorSubTable call 16.1438 +** The data is sent in the following order: 16.1439 +** Render or RenderLarge header 16.1440 +** Pixel header 16.1441 +** ColorTable header 16.1442 +*/ 16.1443 + 16.1444 +#define __GLX_COLOR_SUBTABLE_HDR \ 16.1445 + CARD32 target B32; \ 16.1446 + CARD32 start B32; \ 16.1447 + CARD32 count B32; \ 16.1448 + CARD32 format B32; \ 16.1449 + CARD32 type B32 16.1450 + 16.1451 +#define __GLX_COLOR_SUBTABLE_HDR_SIZE 20 16.1452 + 16.1453 +#define __GLX_COLOR_SUBTABLE_CMD_HDR_SIZE \ 16.1454 + (__GLX_RENDER_HDR_SIZE + __GLX_PIXEL_HDR_SIZE + \ 16.1455 + __GLX_COLOR_SUBTABLE_HDR_SIZE) 16.1456 + 16.1457 +typedef struct { 16.1458 + __GLX_RENDER_HDR; 16.1459 + __GLX_PIXEL_HDR; 16.1460 + __GLX_COLOR_SUBTABLE_HDR; 16.1461 +} __GLXColorSubTableHeader; 16.1462 + 16.1463 +typedef struct { 16.1464 + __GLX_RENDER_LARGE_HDR; 16.1465 + __GLX_PIXEL_HDR; 16.1466 + __GLX_COLOR_SUBTABLE_HDR; 16.1467 +} __GLXColorSubTableLargeHeader; 16.1468 + 16.1469 +typedef struct { 16.1470 + __GLX_PIXEL_HDR; 16.1471 + __GLX_COLOR_SUBTABLE_HDR; 16.1472 +} __GLXdispatchColorSubTableHeader; 16.1473 + 16.1474 + 16.1475 +/*****************************************************************************/ 16.1476 + 16.1477 +/* 16.1478 +** Restore these definitions back to the typedefs in glx.h 16.1479 +*/ 16.1480 +#undef GLXContextID 16.1481 +#undef GLXPixmap 16.1482 +#undef GLXDrawable 16.1483 +#undef GLXPbuffer 16.1484 +#undef GLXWindow 16.1485 +#undef GLXFBConfigID 16.1486 +#undef GLXFBConfigIDSGIX 16.1487 +#undef GLXPbufferSGIX 16.1488 + 16.1489 + 16.1490 +/* Opcodes for GLX commands */ 16.1491 + 16.1492 +#define X_GLXRender 1 16.1493 +#define X_GLXRenderLarge 2 16.1494 +#define X_GLXCreateContext 3 16.1495 +#define X_GLXDestroyContext 4 16.1496 +#define X_GLXMakeCurrent 5 16.1497 +#define X_GLXIsDirect 6 16.1498 +#define X_GLXQueryVersion 7 16.1499 +#define X_GLXWaitGL 8 16.1500 +#define X_GLXWaitX 9 16.1501 +#define X_GLXCopyContext 10 16.1502 +#define X_GLXSwapBuffers 11 16.1503 +#define X_GLXUseXFont 12 16.1504 +#define X_GLXCreateGLXPixmap 13 16.1505 +#define X_GLXGetVisualConfigs 14 16.1506 +#define X_GLXDestroyGLXPixmap 15 16.1507 +#define X_GLXVendorPrivate 16 16.1508 +#define X_GLXVendorPrivateWithReply 17 16.1509 +#define X_GLXQueryExtensionsString 18 16.1510 +#define X_GLXQueryServerString 19 16.1511 +#define X_GLXClientInfo 20 16.1512 + 16.1513 + 16.1514 +/* Opcodes for single commands (part of GLX command space) */ 16.1515 + 16.1516 +#define X_GLsop_NewList 101 16.1517 +#define X_GLsop_EndList 102 16.1518 +#define X_GLsop_DeleteLists 103 16.1519 +#define X_GLsop_GenLists 104 16.1520 +#define X_GLsop_FeedbackBuffer 105 16.1521 +#define X_GLsop_SelectBuffer 106 16.1522 +#define X_GLsop_RenderMode 107 16.1523 +#define X_GLsop_Finish 108 16.1524 +#define X_GLsop_Flush 142 16.1525 +#define X_GLsop_PixelStoref 109 16.1526 +#define X_GLsop_PixelStorei 110 16.1527 +#define X_GLsop_ReadPixels 111 16.1528 +#define X_GLsop_GetBooleanv 112 16.1529 +#define X_GLsop_GetClipPlane 113 16.1530 +#define X_GLsop_GetDoublev 114 16.1531 +#define X_GLsop_GetError 115 16.1532 +#define X_GLsop_GetFloatv 116 16.1533 +#define X_GLsop_GetIntegerv 117 16.1534 +#define X_GLsop_GetLightfv 118 16.1535 +#define X_GLsop_GetLightiv 119 16.1536 +#define X_GLsop_GetMapdv 120 16.1537 +#define X_GLsop_GetMapfv 121 16.1538 +#define X_GLsop_GetMapiv 122 16.1539 +#define X_GLsop_GetMaterialfv 123 16.1540 +#define X_GLsop_GetMaterialiv 124 16.1541 +#define X_GLsop_GetPixelMapfv 125 16.1542 +#define X_GLsop_GetPixelMapuiv 126 16.1543 +#define X_GLsop_GetPixelMapusv 127 16.1544 +#define X_GLsop_GetPolygonStipple 128 16.1545 +#define X_GLsop_GetString 129 16.1546 +#define X_GLsop_GetTexEnvfv 130 16.1547 +#define X_GLsop_GetTexEnviv 131 16.1548 +#define X_GLsop_GetTexGendv 132 16.1549 +#define X_GLsop_GetTexGenfv 133 16.1550 +#define X_GLsop_GetTexGeniv 134 16.1551 +#define X_GLsop_GetTexImage 135 16.1552 +#define X_GLsop_GetTexParameterfv 136 16.1553 +#define X_GLsop_GetTexParameteriv 137 16.1554 +#define X_GLsop_GetTexLevelParameterfv 138 16.1555 +#define X_GLsop_GetTexLevelParameteriv 139 16.1556 +#define X_GLsop_IsEnabled 140 16.1557 +#define X_GLsop_IsList 141 16.1558 +#define X_GLsop_AreTexturesResident 143 16.1559 +#define X_GLsop_DeleteTextures 144 16.1560 +#define X_GLsop_GenTextures 145 16.1561 +#define X_GLsop_IsTexture 146 16.1562 +#define X_GLsop_GetColorTable 147 16.1563 +#define X_GLsop_GetColorTableParameterfv 148 16.1564 +#define X_GLsop_GetColorTableParameteriv 149 16.1565 +#define X_GLsop_GetConvolutionFilter 150 16.1566 +#define X_GLsop_GetConvolutionParameterfv 151 16.1567 +#define X_GLsop_GetConvolutionParameteriv 152 16.1568 +#define X_GLsop_GetSeparableFilter 153 16.1569 +#define X_GLsop_GetHistogram 154 16.1570 +#define X_GLsop_GetHistogramParameterfv 155 16.1571 +#define X_GLsop_GetHistogramParameteriv 156 16.1572 +#define X_GLsop_GetMinmax 157 16.1573 +#define X_GLsop_GetMinmaxParameterfv 158 16.1574 +#define X_GLsop_GetMinmaxParameteriv 159 16.1575 + 16.1576 + 16.1577 +/* Opcodes for rendering commands */ 16.1578 + 16.1579 +#define X_GLrop_CallList 1 16.1580 +#define X_GLrop_CallLists 2 16.1581 +#define X_GLrop_ListBase 3 16.1582 +#define X_GLrop_Begin 4 16.1583 +#define X_GLrop_Bitmap 5 16.1584 +#define X_GLrop_Color3bv 6 16.1585 +#define X_GLrop_Color3dv 7 16.1586 +#define X_GLrop_Color3fv 8 16.1587 +#define X_GLrop_Color3iv 9 16.1588 +#define X_GLrop_Color3sv 10 16.1589 +#define X_GLrop_Color3ubv 11 16.1590 +#define X_GLrop_Color3uiv 12 16.1591 +#define X_GLrop_Color3usv 13 16.1592 +#define X_GLrop_Color4bv 14 16.1593 +#define X_GLrop_Color4dv 15 16.1594 +#define X_GLrop_Color4fv 16 16.1595 +#define X_GLrop_Color4iv 17 16.1596 +#define X_GLrop_Color4sv 18 16.1597 +#define X_GLrop_Color4ubv 19 16.1598 +#define X_GLrop_Color4uiv 20 16.1599 +#define X_GLrop_Color4usv 21 16.1600 +#define X_GLrop_EdgeFlagv 22 16.1601 +#define X_GLrop_End 23 16.1602 +#define X_GLrop_Indexdv 24 16.1603 +#define X_GLrop_Indexfv 25 16.1604 +#define X_GLrop_Indexiv 26 16.1605 +#define X_GLrop_Indexsv 27 16.1606 +#define X_GLrop_Normal3bv 28 16.1607 +#define X_GLrop_Normal3dv 29 16.1608 +#define X_GLrop_Normal3fv 30 16.1609 +#define X_GLrop_Normal3iv 31 16.1610 +#define X_GLrop_Normal3sv 32 16.1611 +#define X_GLrop_RasterPos2dv 33 16.1612 +#define X_GLrop_RasterPos2fv 34 16.1613 +#define X_GLrop_RasterPos2iv 35 16.1614 +#define X_GLrop_RasterPos2sv 36 16.1615 +#define X_GLrop_RasterPos3dv 37 16.1616 +#define X_GLrop_RasterPos3fv 38 16.1617 +#define X_GLrop_RasterPos3iv 39 16.1618 +#define X_GLrop_RasterPos3sv 40 16.1619 +#define X_GLrop_RasterPos4dv 41 16.1620 +#define X_GLrop_RasterPos4fv 42 16.1621 +#define X_GLrop_RasterPos4iv 43 16.1622 +#define X_GLrop_RasterPos4sv 44 16.1623 +#define X_GLrop_Rectdv 45 16.1624 +#define X_GLrop_Rectfv 46 16.1625 +#define X_GLrop_Rectiv 47 16.1626 +#define X_GLrop_Rectsv 48 16.1627 +#define X_GLrop_TexCoord1dv 49 16.1628 +#define X_GLrop_TexCoord1fv 50 16.1629 +#define X_GLrop_TexCoord1iv 51 16.1630 +#define X_GLrop_TexCoord1sv 52 16.1631 +#define X_GLrop_TexCoord2dv 53 16.1632 +#define X_GLrop_TexCoord2fv 54 16.1633 +#define X_GLrop_TexCoord2iv 55 16.1634 +#define X_GLrop_TexCoord2sv 56 16.1635 +#define X_GLrop_TexCoord3dv 57 16.1636 +#define X_GLrop_TexCoord3fv 58 16.1637 +#define X_GLrop_TexCoord3iv 59 16.1638 +#define X_GLrop_TexCoord3sv 60 16.1639 +#define X_GLrop_TexCoord4dv 61 16.1640 +#define X_GLrop_TexCoord4fv 62 16.1641 +#define X_GLrop_TexCoord4iv 63 16.1642 +#define X_GLrop_TexCoord4sv 64 16.1643 +#define X_GLrop_Vertex2dv 65 16.1644 +#define X_GLrop_Vertex2fv 66 16.1645 +#define X_GLrop_Vertex2iv 67 16.1646 +#define X_GLrop_Vertex2sv 68 16.1647 +#define X_GLrop_Vertex3dv 69 16.1648 +#define X_GLrop_Vertex3fv 70 16.1649 +#define X_GLrop_Vertex3iv 71 16.1650 +#define X_GLrop_Vertex3sv 72 16.1651 +#define X_GLrop_Vertex4dv 73 16.1652 +#define X_GLrop_Vertex4fv 74 16.1653 +#define X_GLrop_Vertex4iv 75 16.1654 +#define X_GLrop_Vertex4sv 76 16.1655 +#define X_GLrop_ClipPlane 77 16.1656 +#define X_GLrop_ColorMaterial 78 16.1657 +#define X_GLrop_CullFace 79 16.1658 +#define X_GLrop_Fogf 80 16.1659 +#define X_GLrop_Fogfv 81 16.1660 +#define X_GLrop_Fogi 82 16.1661 +#define X_GLrop_Fogiv 83 16.1662 +#define X_GLrop_FrontFace 84 16.1663 +#define X_GLrop_Hint 85 16.1664 +#define X_GLrop_Lightf 86 16.1665 +#define X_GLrop_Lightfv 87 16.1666 +#define X_GLrop_Lighti 88 16.1667 +#define X_GLrop_Lightiv 89 16.1668 +#define X_GLrop_LightModelf 90 16.1669 +#define X_GLrop_LightModelfv 91 16.1670 +#define X_GLrop_LightModeli 92 16.1671 +#define X_GLrop_LightModeliv 93 16.1672 +#define X_GLrop_LineStipple 94 16.1673 +#define X_GLrop_LineWidth 95 16.1674 +#define X_GLrop_Materialf 96 16.1675 +#define X_GLrop_Materialfv 97 16.1676 +#define X_GLrop_Materiali 98 16.1677 +#define X_GLrop_Materialiv 99 16.1678 +#define X_GLrop_PointSize 100 16.1679 +#define X_GLrop_PolygonMode 101 16.1680 +#define X_GLrop_PolygonStipple 102 16.1681 +#define X_GLrop_Scissor 103 16.1682 +#define X_GLrop_ShadeModel 104 16.1683 +#define X_GLrop_TexParameterf 105 16.1684 +#define X_GLrop_TexParameterfv 106 16.1685 +#define X_GLrop_TexParameteri 107 16.1686 +#define X_GLrop_TexParameteriv 108 16.1687 +#define X_GLrop_TexImage1D 109 16.1688 +#define X_GLrop_TexImage2D 110 16.1689 +#define X_GLrop_TexEnvf 111 16.1690 +#define X_GLrop_TexEnvfv 112 16.1691 +#define X_GLrop_TexEnvi 113 16.1692 +#define X_GLrop_TexEnviv 114 16.1693 +#define X_GLrop_TexGend 115 16.1694 +#define X_GLrop_TexGendv 116 16.1695 +#define X_GLrop_TexGenf 117 16.1696 +#define X_GLrop_TexGenfv 118 16.1697 +#define X_GLrop_TexGeni 119 16.1698 +#define X_GLrop_TexGeniv 120 16.1699 +#define X_GLrop_InitNames 121 16.1700 +#define X_GLrop_LoadName 122 16.1701 +#define X_GLrop_PassThrough 123 16.1702 +#define X_GLrop_PopName 124 16.1703 +#define X_GLrop_PushName 125 16.1704 +#define X_GLrop_DrawBuffer 126 16.1705 +#define X_GLrop_Clear 127 16.1706 +#define X_GLrop_ClearAccum 128 16.1707 +#define X_GLrop_ClearIndex 129 16.1708 +#define X_GLrop_ClearColor 130 16.1709 +#define X_GLrop_ClearStencil 131 16.1710 +#define X_GLrop_ClearDepth 132 16.1711 +#define X_GLrop_StencilMask 133 16.1712 +#define X_GLrop_ColorMask 134 16.1713 +#define X_GLrop_DepthMask 135 16.1714 +#define X_GLrop_IndexMask 136 16.1715 +#define X_GLrop_Accum 137 16.1716 +#define X_GLrop_Disable 138 16.1717 +#define X_GLrop_Enable 139 16.1718 +#define X_GLrop_PopAttrib 141 16.1719 +#define X_GLrop_PushAttrib 142 16.1720 +#define X_GLrop_Map1d 143 16.1721 +#define X_GLrop_Map1f 144 16.1722 +#define X_GLrop_Map2d 145 16.1723 +#define X_GLrop_Map2f 146 16.1724 +#define X_GLrop_MapGrid1d 147 16.1725 +#define X_GLrop_MapGrid1f 148 16.1726 +#define X_GLrop_MapGrid2d 149 16.1727 +#define X_GLrop_MapGrid2f 150 16.1728 +#define X_GLrop_EvalCoord1dv 151 16.1729 +#define X_GLrop_EvalCoord1fv 152 16.1730 +#define X_GLrop_EvalCoord2dv 153 16.1731 +#define X_GLrop_EvalCoord2fv 154 16.1732 +#define X_GLrop_EvalMesh1 155 16.1733 +#define X_GLrop_EvalPoint1 156 16.1734 +#define X_GLrop_EvalMesh2 157 16.1735 +#define X_GLrop_EvalPoint2 158 16.1736 +#define X_GLrop_AlphaFunc 159 16.1737 +#define X_GLrop_BlendFunc 160 16.1738 +#define X_GLrop_LogicOp 161 16.1739 +#define X_GLrop_StencilFunc 162 16.1740 +#define X_GLrop_StencilOp 163 16.1741 +#define X_GLrop_DepthFunc 164 16.1742 +#define X_GLrop_PixelZoom 165 16.1743 +#define X_GLrop_PixelTransferf 166 16.1744 +#define X_GLrop_PixelTransferi 167 16.1745 +#define X_GLrop_PixelMapfv 168 16.1746 +#define X_GLrop_PixelMapuiv 169 16.1747 +#define X_GLrop_PixelMapusv 170 16.1748 +#define X_GLrop_ReadBuffer 171 16.1749 +#define X_GLrop_CopyPixels 172 16.1750 +#define X_GLrop_DrawPixels 173 16.1751 +#define X_GLrop_DepthRange 174 16.1752 +#define X_GLrop_Frustum 175 16.1753 +#define X_GLrop_LoadIdentity 176 16.1754 +#define X_GLrop_LoadMatrixf 177 16.1755 +#define X_GLrop_LoadMatrixd 178 16.1756 +#define X_GLrop_MatrixMode 179 16.1757 +#define X_GLrop_MultMatrixf 180 16.1758 +#define X_GLrop_MultMatrixd 181 16.1759 +#define X_GLrop_Ortho 182 16.1760 +#define X_GLrop_PopMatrix 183 16.1761 +#define X_GLrop_PushMatrix 184 16.1762 +#define X_GLrop_Rotated 185 16.1763 +#define X_GLrop_Rotatef 186 16.1764 +#define X_GLrop_Scaled 187 16.1765 +#define X_GLrop_Scalef 188 16.1766 +#define X_GLrop_Translated 189 16.1767 +#define X_GLrop_Translatef 190 16.1768 +#define X_GLrop_Viewport 191 16.1769 +#define X_GLrop_DrawArrays 193 16.1770 +#define X_GLrop_PolygonOffset 192 16.1771 +#define X_GLrop_CopyTexImage1D 4119 16.1772 +#define X_GLrop_CopyTexImage2D 4120 16.1773 +#define X_GLrop_CopyTexSubImage1D 4121 16.1774 +#define X_GLrop_CopyTexSubImage2D 4122 16.1775 +#define X_GLrop_TexSubImage1D 4099 16.1776 +#define X_GLrop_TexSubImage2D 4100 16.1777 +#define X_GLrop_BindTexture 4117 16.1778 +#define X_GLrop_PrioritizeTextures 4118 16.1779 +#define X_GLrop_Indexubv 194 16.1780 +#define X_GLrop_BlendColor 4096 16.1781 +#define X_GLrop_BlendEquation 4097 16.1782 +#define X_GLrop_ColorTable 2053 16.1783 +#define X_GLrop_ColorTableParameterfv 2054 16.1784 +#define X_GLrop_ColorTableParameteriv 2055 16.1785 +#define X_GLrop_CopyColorTable 2056 16.1786 +#define X_GLrop_ColorSubTable 195 16.1787 +#define X_GLrop_CopyColorSubTable 196 16.1788 +#define X_GLrop_ConvolutionFilter1D 4101 16.1789 +#define X_GLrop_ConvolutionFilter2D 4102 16.1790 +#define X_GLrop_ConvolutionParameterf 4103 16.1791 +#define X_GLrop_ConvolutionParameterfv 4104 16.1792 +#define X_GLrop_ConvolutionParameteri 4105 16.1793 +#define X_GLrop_ConvolutionParameteriv 4106 16.1794 +#define X_GLrop_CopyConvolutionFilter1D 4107 16.1795 +#define X_GLrop_CopyConvolutionFilter2D 4108 16.1796 +#define X_GLrop_SeparableFilter2D 4109 16.1797 +#define X_GLrop_Histogram 4110 16.1798 +#define X_GLrop_Minmax 4111 16.1799 +#define X_GLrop_ResetHistogram 4112 16.1800 +#define X_GLrop_ResetMinmax 4113 16.1801 +#define X_GLrop_TexImage3D 4114 16.1802 +#define X_GLrop_TexSubImage3D 4115 16.1803 +#define X_GLrop_CopyTexSubImage3D 4123 16.1804 +#define X_GLrop_ActiveTextureARB 197 16.1805 +#define X_GLrop_MultiTexCoord1dvARB 198 16.1806 +#define X_GLrop_MultiTexCoord1fvARB 199 16.1807 +#define X_GLrop_MultiTexCoord1ivARB 200 16.1808 +#define X_GLrop_MultiTexCoord1svARB 201 16.1809 +#define X_GLrop_MultiTexCoord2dvARB 202 16.1810 +#define X_GLrop_MultiTexCoord2fvARB 203 16.1811 +#define X_GLrop_MultiTexCoord2ivARB 204 16.1812 +#define X_GLrop_MultiTexCoord2svARB 205 16.1813 +#define X_GLrop_MultiTexCoord3dvARB 206 16.1814 +#define X_GLrop_MultiTexCoord3fvARB 207 16.1815 +#define X_GLrop_MultiTexCoord3ivARB 208 16.1816 +#define X_GLrop_MultiTexCoord3svARB 209 16.1817 +#define X_GLrop_MultiTexCoord4dvARB 210 16.1818 +#define X_GLrop_MultiTexCoord4fvARB 211 16.1819 +#define X_GLrop_MultiTexCoord4ivARB 212 16.1820 +#define X_GLrop_MultiTexCoord4svARB 213 16.1821 +#define X_GLrop_DrawArraysEXT 4116 16.1822 + 16.1823 + 16.1824 +/* Opcodes for Vendor Private commands */ 16.1825 + 16.1826 +#define X_GLvop_AreTexturesResidentEXT 11 16.1827 +#define X_GLvop_DeleteTexturesEXT 12 16.1828 +#define X_GLvop_GenTexturesEXT 13 16.1829 +#define X_GLvop_IsTextureEXT 14 16.1830 + 16.1831 + 16.1832 +/* Opcodes for GLX vendor private commands */ 16.1833 + 16.1834 +#define X_GLXvop_QueryContextInfoEXT 1024 16.1835 + 16.1836 + 16.1837 +#endif /* _GLX_glxproto_h_ */
17.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 17.2 +++ b/GL/glxtokens.h Tue Nov 27 15:23:52 2007 +0100 17.3 @@ -0,0 +1,262 @@ 17.4 +#ifndef __glxtokens_h__ 17.5 +#define __glxtokens_h__ 17.6 + 17.7 +/* 17.8 +** The contents of this file are subject to the GLX Public License Version 1.0 17.9 +** (the "License"). You may not use this file except in compliance with the 17.10 +** License. You may obtain a copy of the License at Silicon Graphics, Inc., 17.11 +** attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043 17.12 +** or at http://www.sgi.com/software/opensource/glx/license.html. 17.13 +** 17.14 +** Software distributed under the License is distributed on an "AS IS" 17.15 +** basis. ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY 17.16 +** IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR 17.17 +** PURPOSE OR OF NON- INFRINGEMENT. See the License for the specific 17.18 +** language governing rights and limitations under the License. 17.19 +** 17.20 +** The Original Software is GLX version 1.2 source code, released February, 17.21 +** 1999. The developer of the Original Software is Silicon Graphics, Inc. 17.22 +** Those portions of the Subject Software created by Silicon Graphics, Inc. 17.23 +** are Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved. 17.24 +** 17.25 +** $Header: /home/cvsroot/synrj/int64_morph/GL/glxtokens.h,v 1.1 2004/01/09 21:41:22 mryoung Exp $ 17.26 +*/ 17.27 + 17.28 +#ifdef __cplusplus 17.29 +extern "C" { 17.30 +#endif 17.31 + 17.32 +#define GLX_VERSION_1_1 1 17.33 +#define GLX_VERSION_1_2 1 17.34 +#define GLX_VERSION_1_3 1 17.35 + 17.36 +/* GLX Extensions */ 17.37 +#define GLX_EXT_import_context 1 17.38 +#define GLX_EXT_visual_info 1 17.39 +#define GLX_EXT_visual_rating 1 17.40 +#define GLX_SGIX_fbconfig 1 17.41 +#define GLX_SGIX_pbuffer 1 17.42 +#define GLX_NV_float_buffer 1 17.43 +#define GLX_ARB_get_proc_address 1 17.44 + 17.45 +/* 17.46 + * Names for attributes to glXGetConfig. 17.47 + */ 17.48 +#define GLX_USE_GL 1 /* support GLX rendering */ 17.49 +#define GLX_BUFFER_SIZE 2 /* depth of the color buffer */ 17.50 +#define GLX_LEVEL 3 /* level in plane stacking */ 17.51 +#define GLX_RGBA 4 /* true if RGBA mode */ 17.52 +#define GLX_DOUBLEBUFFER 5 /* double buffering supported */ 17.53 +#define GLX_STEREO 6 /* stereo buffering supported */ 17.54 +#define GLX_AUX_BUFFERS 7 /* number of aux buffers */ 17.55 +#define GLX_RED_SIZE 8 /* number of red component bits */ 17.56 +#define GLX_GREEN_SIZE 9 /* number of green component bits */ 17.57 +#define GLX_BLUE_SIZE 10 /* number of blue component bits */ 17.58 +#define GLX_ALPHA_SIZE 11 /* number of alpha component bits */ 17.59 +#define GLX_DEPTH_SIZE 12 /* number of depth bits */ 17.60 +#define GLX_STENCIL_SIZE 13 /* number of stencil bits */ 17.61 +#define GLX_ACCUM_RED_SIZE 14 /* number of red accum bits */ 17.62 +#define GLX_ACCUM_GREEN_SIZE 15 /* number of green accum bits */ 17.63 +#define GLX_ACCUM_BLUE_SIZE 16 /* number of blue accum bits */ 17.64 +#define GLX_ACCUM_ALPHA_SIZE 17 /* number of alpha accum bits */ 17.65 + 17.66 +#define GLX_SAMPLE_BUFFERS_ARB 100000 /* number of multisample buffers */ 17.67 +#define GLX_SAMPLES_ARB 100001 /* number of multisample samples */ 17.68 + 17.69 +/* 17.70 + * FBConfig-specific attributes 17.71 + */ 17.72 +#define GLX_X_VISUAL_TYPE 0x22 17.73 +#define GLX_CONFIG_CAVEAT 0x20 /* Like visual_info VISUAL_CAVEAT */ 17.74 +#define GLX_TRANSPARENT_TYPE 0x23 17.75 +#define GLX_TRANSPARENT_INDEX_VALUE 0x24 17.76 +#define GLX_TRANSPARENT_RED_VALUE 0x25 17.77 +#define GLX_TRANSPARENT_GREEN_VALUE 0x26 17.78 +#define GLX_TRANSPARENT_BLUE_VALUE 0x27 17.79 +#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 17.80 +#define GLX_DRAWABLE_TYPE 0x8010 17.81 +#define GLX_RENDER_TYPE 0x8011 17.82 +#define GLX_X_RENDERABLE 0x8012 17.83 +#define GLX_FBCONFIG_ID 0x8013 17.84 +#define GLX_MAX_PBUFFER_WIDTH 0x8016 17.85 +#define GLX_MAX_PBUFFER_HEIGHT 0x8017 17.86 +#define GLX_MAX_PBUFFER_PIXELS 0x8018 17.87 +#define GLX_VISUAL_ID 0x800B 17.88 + 17.89 +#define GLX_DRAWABLE_TYPE_SGIX GLX_DRAWABLE_TYPE 17.90 +#define GLX_RENDER_TYPE_SGIX GLX_RENDER_TYPE 17.91 +#define GLX_X_RENDERABLE_SGIX GLX_X_RENDERABLE 17.92 +#define GLX_FBCONFIG_ID_SGIX GLX_FBCONFIG_ID 17.93 +#define GLX_MAX_PBUFFER_WIDTH_SGIX GLX_MAX_PBUFFER_WIDTH 17.94 +#define GLX_MAX_PBUFFER_HEIGHT_SGIX GLX_MAX_PBUFFER_HEIGHT 17.95 +#define GLX_MAX_PBUFFER_PIXELS_SGIX GLX_MAX_PBUFFER_PIXELS 17.96 +#define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 17.97 +#define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A 17.98 + 17.99 +/* 17.100 + * Error return values from glXGetConfig. Success is indicated by 17.101 + * a value of 0. 17.102 + */ 17.103 +#define GLX_BAD_SCREEN 1 /* screen # is bad */ 17.104 +#define GLX_BAD_ATTRIBUTE 2 /* attribute to get is bad */ 17.105 +#define GLX_NO_EXTENSION 3 /* no glx extension on server */ 17.106 +#define GLX_BAD_VISUAL 4 /* visual # not known by GLX */ 17.107 +#define GLX_BAD_CONTEXT 5 17.108 +#define GLX_BAD_VALUE 6 17.109 +#define GLX_BAD_ENUM 7 17.110 + 17.111 + 17.112 +/* FBConfig attribute values */ 17.113 + 17.114 +/* 17.115 + * Generic "don't care" value for glX ChooseFBConfig attributes (except 17.116 + * GLX_LEVEL). 17.117 + */ 17.118 +#define GLX_DONT_CARE 0xFFFFFFFF 17.119 + 17.120 +/* GLX_RENDER_TYPE bits */ 17.121 +#define GLX_RGBA_BIT 0x00000001 17.122 +#define GLX_COLOR_INDEX_BIT 0x00000002 17.123 +#define GLX_RGBA_BIT_SGIX GLX_RGBA_BIT 17.124 +#define GLX_COLOR_INDEX_BIT_SGIX GLX_COLOR_INDEX_BIT 17.125 + 17.126 +/* GLX_DRAWABLE_TYPE bits */ 17.127 +#define GLX_WINDOW_BIT 0x00000001 17.128 +#define GLX_PIXMAP_BIT 0x00000002 17.129 +#define GLX_PBUFFER_BIT 0x00000004 17.130 +#define GLX_WINDOW_BIT_SGIX GLX_WINDOW_BIT 17.131 +#define GLX_PIXMAP_BIT_SGIX GLX_PIXMAP_BIT 17.132 +#define GLX_PBUFFER_BIT_SGIX GLX_PBUFFER_BIT 17.133 + 17.134 +/* GLX_CONFIG_CAVEAT attribute values */ 17.135 +#define GLX_NONE 0x8000 17.136 +#define GLX_SLOW_CONFIG 0x8001 17.137 +#define GLX_NON_CONFORMANT_CONFIG 0x800D 17.138 + 17.139 +/* GLX_X_VISUAL_TYPE attribute values */ 17.140 +#define GLX_TRUE_COLOR 0x8002 17.141 +#define GLX_DIRECT_COLOR 0x8003 17.142 +#define GLX_PSEUDO_COLOR 0x8004 17.143 +#define GLX_STATIC_COLOR 0x8005 17.144 +#define GLX_GRAY_SCALE 0x8006 17.145 +#define GLX_STATIC_GRAY 0x8007 17.146 + 17.147 +/* GLX_TRANSPARENT_TYPE attribute values */ 17.148 +/* #define GLX_NONE 0x8000 */ 17.149 +#define GLX_TRANSPARENT_RGB 0x8008 17.150 +#define GLX_TRANSPARENT_INDEX 0x8009 17.151 + 17.152 +/* glXCreateGLXPbuffer attributes */ 17.153 +#define GLX_PRESERVED_CONTENTS 0x801B 17.154 +#define GLX_LARGEST_PBUFFER 0x801C 17.155 +#define GLX_PBUFFER_HEIGHT 0x8040 /* New for GLX 1.3 */ 17.156 +#define GLX_PBUFFER_WIDTH 0x8041 /* New for GLX 1.3 */ 17.157 +#define GLX_PRESERVED_CONTENTS_SGIX GLX_PRESERVED_CONTENTS 17.158 +#define GLX_LARGEST_PBUFFER_SGIX GLX_LARGEST_PBUFFER 17.159 + 17.160 +/* glXQueryGLXPBuffer attributes */ 17.161 +#define GLX_WIDTH 0x801D 17.162 +#define GLX_HEIGHT 0x801E 17.163 +#define GLX_EVENT_MASK 0x801F 17.164 +#define GLX_WIDTH_SGIX GLX_WIDTH 17.165 +#define GLX_HEIGHT_SGIX GLX_HEIGHT 17.166 +#define GLX_EVENT_MASK_SGIX GLX_EVENT_MASK 17.167 + 17.168 +/* glXCreateNewContext render_type attribute values */ 17.169 +#define GLX_RGBA_TYPE 0x8014 17.170 +#define GLX_COLOR_INDEX_TYPE 0x8015 17.171 +#define GLX_RGBA_TYPE_SGIX GLX_RGBA_TYPE 17.172 +#define GLX_COLOR_INDEX_TYPE_SGIX GLX_COLOR_INDEX_TYPE 17.173 + 17.174 +/* glXQueryContext attributes */ 17.175 +/* #define GLX_FBCONFIG_ID 0x8013 */ 17.176 +/* #define GLX_RENDER_TYPE 0x8011 */ 17.177 +#define GLX_SCREEN 0x800C 17.178 + 17.179 +/* glXSelectEvent event mask bits */ 17.180 +#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 17.181 +#define GLX_PBUFFER_CLOBBER_MASK_SGIX GLX_PBUFFER_CLOBBER_MASK 17.182 + 17.183 +/* GLXPbufferClobberEvent event_type values */ 17.184 +#define GLX_DAMAGED 0x8020 17.185 +#define GLX_SAVED 0x8021 17.186 +#define GLX_DAMAGED_SGIX GLX_DAMAGED 17.187 +#define GLX_SAVED_SGIX GLX_SAVED 17.188 + 17.189 +/* GLXPbufferClobberEvent draw_type values */ 17.190 +#define GLX_WINDOW 0x8022 17.191 +#define GLX_PBUFFER 0x8023 17.192 +#define GLX_WINDOW_SGIX GLX_WINDOW 17.193 +#define GLX_PBUFFER_SGIX GLX_PBUFFER 17.194 + 17.195 +/* GLXPbufferClobberEvent buffer_mask bits */ 17.196 +#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 17.197 +#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 17.198 +#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 17.199 +#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 17.200 +#define GLX_AUX_BUFFERS_BIT 0x00000010 17.201 +#define GLX_DEPTH_BUFFER_BIT 0x00000020 17.202 +#define GLX_STENCIL_BUFFER_BIT 0x00000040 17.203 +#define GLX_ACCUM_BUFFER_BIT 0x00000080 17.204 +#define GLX_FRONT_LEFT_BUFFER_BIT_SGIX GLX_FRONT_LEFT_BUFFER_BIT 17.205 +#define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX GLX_FRONT_RIGHT_BUFFER_BIT 17.206 +#define GLX_BACK_LEFT_BUFFER_BIT_SGIX GLX_BACK_LEFT_BUFFER_BIT 17.207 +#define GLX_BACK_RIGHT_BUFFER_BIT_SGIX GLX_BACK_RIGHT_BUFFER_BIT 17.208 +#define GLX_AUX_BUFFERS_BIT_SGIX GLX_AUX_BUFFERS_BIT 17.209 +#define GLX_DEPTH_BUFFER_BIT_SGIX GLX_DEPTH_BUFFER_BIT 17.210 +#define GLX_STENCIL_BUFFER_BIT_SGIX GLX_STENCIL_BUFFER_BIT 17.211 +#define GLX_ACCUM_BUFFER_BIT_SGIX GLX_ACCUM_BUFFER_BIT 17.212 + 17.213 +/* 17.214 + * Extension return values from glXGetConfig. These are also 17.215 + * accepted as parameter values for glXChooseVisual. 17.216 + */ 17.217 + 17.218 +#define GLX_X_VISUAL_TYPE_EXT 0x22 /* visual_info extension type */ 17.219 +#define GLX_TRANSPARENT_TYPE_EXT 0x23 /* visual_info extension */ 17.220 +#define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 /* visual_info extension */ 17.221 +#define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 /* visual_info extension */ 17.222 +#define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 /* visual_info extension */ 17.223 +#define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 /* visual_info extension */ 17.224 +#define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 /* visual_info extension */ 17.225 + 17.226 +/* Property values for visual_type */ 17.227 +#define GLX_TRUE_COLOR_EXT 0x8002 17.228 +#define GLX_DIRECT_COLOR_EXT 0x8003 17.229 +#define GLX_PSEUDO_COLOR_EXT 0x8004 17.230 +#define GLX_STATIC_COLOR_EXT 0x8005 17.231 +#define GLX_GRAY_SCALE_EXT 0x8006 17.232 +#define GLX_STATIC_GRAY_EXT 0x8007 17.233 + 17.234 +/* Property values for transparent pixel */ 17.235 +#define GLX_NONE_EXT 0x8000 17.236 +#define GLX_TRANSPARENT_RGB_EXT 0x8008 17.237 +#define GLX_TRANSPARENT_INDEX_EXT 0x8009 17.238 + 17.239 +/* Property values for visual_rating */ 17.240 +#define GLX_VISUAL_CAVEAT_EXT 0x20 /* visual_rating extension type */ 17.241 +#define GLX_SLOW_VISUAL_EXT 0x8001 17.242 +#define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D 17.243 + 17.244 +/* 17.245 + * Names for attributes to glXGetClientString. 17.246 + */ 17.247 +#define GLX_VENDOR 0x1 17.248 +#define GLX_VERSION 0x2 17.249 +#define GLX_EXTENSIONS 0x3 17.250 + 17.251 +/* 17.252 + * Names for attributes to glXQueryContextInfoEXT. 17.253 + */ 17.254 +#define GLX_SHARE_CONTEXT_EXT 0x800A /* id of share context */ 17.255 +#define GLX_VISUAL_ID_EXT 0x800B /* id of context's visual */ 17.256 +#define GLX_SCREEN_EXT 0x800C /* screen number */ 17.257 + 17.258 +/* NV_float_buffer */ 17.259 +#define GLX_FLOAT_COMPONENTS_NV 0x20B0 17.260 + 17.261 +#ifdef __cplusplus 17.262 +} 17.263 +#endif 17.264 + 17.265 +#endif /* !__glxtokens_h__ */
18.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 18.2 +++ b/GL/osmesa.h Tue Nov 27 15:23:52 2007 +0100 18.3 @@ -0,0 +1,273 @@ 18.4 +/* 18.5 + * Mesa 3-D graphics library 18.6 + * Version: 4.0.3 18.7 + * 18.8 + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. 18.9 + * 18.10 + * Permission is hereby granted, free of charge, to any person obtaining a 18.11 + * copy of this software and associated documentation files (the "Software"), 18.12 + * to deal in the Software without restriction, including without limitation 18.13 + * the rights to use, copy, modify, merge, publish, distribute, sublicense, 18.14 + * and/or sell copies of the Software, and to permit persons to whom the 18.15 + * Software is furnished to do so, subject to the following conditions: 18.16 + * 18.17 + * The above copyright notice and this permission notice shall be included 18.18 + * in all copies or substantial portions of the Software. 18.19 + * 18.20 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18.21 + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18.22 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18.23 + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 18.24 + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 18.25 + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 18.26 + */ 18.27 + 18.28 + 18.29 +/* 18.30 + * Mesa Off-Screen rendering interface. 18.31 + * 18.32 + * This is an operating system and window system independent interface to 18.33 + * Mesa which allows one to render images into a client-supplied buffer in 18.34 + * main memory. Such images may manipulated or saved in whatever way the 18.35 + * client wants. 18.36 + * 18.37 + * These are the API functions: 18.38 + * OSMesaCreateContext - create a new Off-Screen Mesa rendering context 18.39 + * OSMesaMakeCurrent - bind an OSMesaContext to a client's image buffer 18.40 + * and make the specified context the current one. 18.41 + * OSMesaDestroyContext - destroy an OSMesaContext 18.42 + * OSMesaGetCurrentContext - return thread's current context ID 18.43 + * OSMesaPixelStore - controls how pixels are stored in image buffer 18.44 + * OSMesaGetIntegerv - return OSMesa state parameters 18.45 + * 18.46 + * 18.47 + * The limits on the width and height of an image buffer are MAX_WIDTH and 18.48 + * MAX_HEIGHT as defined in Mesa/src/config.h. Defaults are 1280 and 1024. 18.49 + * You can increase them as needed but beware that many temporary arrays in 18.50 + * Mesa are dimensioned by MAX_WIDTH or MAX_HEIGHT. 18.51 + */ 18.52 + 18.53 + 18.54 +#ifndef OSMESA_H 18.55 +#define OSMESA_H 18.56 + 18.57 + 18.58 +#ifdef __cplusplus 18.59 +extern "C" { 18.60 +#endif 18.61 + 18.62 + 18.63 +#include <GL/gl.h> 18.64 + 18.65 + 18.66 +#define OSMESA_MAJOR_VERSION 4 18.67 +#define OSMESA_MINOR_VERSION 0 18.68 +#define OSMESA_PATCH_VERSION 3 18.69 + 18.70 + 18.71 + 18.72 +/* 18.73 + * Values for the format parameter of OSMesaCreateContext() 18.74 + * New in version 2.0. 18.75 + */ 18.76 +#define OSMESA_COLOR_INDEX GL_COLOR_INDEX 18.77 +#define OSMESA_RGBA GL_RGBA 18.78 +#define OSMESA_BGRA 0x1 18.79 +#define OSMESA_ARGB 0x2 18.80 +#define OSMESA_RGB GL_RGB 18.81 +#define OSMESA_BGR 0x4 18.82 +#define OSMESA_RGB_565 0x5 18.83 + 18.84 + 18.85 +/* 18.86 + * OSMesaPixelStore() parameters: 18.87 + * New in version 2.0. 18.88 + */ 18.89 +#define OSMESA_ROW_LENGTH 0x10 18.90 +#define OSMESA_Y_UP 0x11 18.91 + 18.92 + 18.93 +/* 18.94 + * Accepted by OSMesaGetIntegerv: 18.95 + */ 18.96 +#define OSMESA_WIDTH 0x20 18.97 +#define OSMESA_HEIGHT 0x21 18.98 +#define OSMESA_FORMAT 0x22 18.99 +#define OSMESA_TYPE 0x23 18.100 +#define OSMESA_MAX_WIDTH 0x24 /* new in 4.0 */ 18.101 +#define OSMESA_MAX_HEIGHT 0x25 /* new in 4.0 */ 18.102 + 18.103 + 18.104 +typedef struct osmesa_context *OSMesaContext; 18.105 + 18.106 + 18.107 +#if defined(__BEOS__) || defined(__QUICKDRAW__) 18.108 +#pragma export on 18.109 +#endif 18.110 + 18.111 + 18.112 +/* 18.113 + * Create an Off-Screen Mesa rendering context. The only attribute needed is 18.114 + * an RGBA vs Color-Index mode flag. 18.115 + * 18.116 + * Input: format - one of OSMESA_COLOR_INDEX, OSMESA_RGBA, OSMESA_BGRA, 18.117 + * OSMESA_ARGB, OSMESA_RGB, or OSMESA_BGR. 18.118 + * sharelist - specifies another OSMesaContext with which to share 18.119 + * display lists. NULL indicates no sharing. 18.120 + * Return: an OSMesaContext or 0 if error 18.121 + */ 18.122 +GLAPI OSMesaContext GLAPIENTRY 18.123 +OSMesaCreateContext( GLenum format, OSMesaContext sharelist ); 18.124 + 18.125 + 18.126 + 18.127 +/* 18.128 + * Create an Off-Screen Mesa rendering contextH 18.129 + 18.130 + 18.131 +#list ); 18.132 + 18.133 + 18.134 + 18.135 +/* 18.136 + YdA_BGxe of depth buffer, stencil buffer and accumulation buffer. 18.137 + * If you list ); 18.138 +zero for depthBits, stencilBits, accumBits you 18.139 + * can save some memory. 18.140 + * 18.141 + * New in Mesa 3.5 18.142 + */ 18.143 +GLAPI OSMesaContext GLAPIENTRY 18.144 +OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits, 18.145 + GLint accumBits, OSMesaContext sharelist); 18.146 + 18.147 + 18.148 +/* 18.149 + * Destroy an Off-Screen Mesa rendering context. 18.150 + * 18.151 + * Input: ctx - the context to destroy 18.152 + */ 18.153 +GLAPI void GLAPIENTRY 18.154 +OSMesaDestroyContext( OSMesaContext ctx ); 18.155 + 18.156 + 18.157 + 18.158 +/* 18.159 + * Bind an OSMesaContext to an image buffer. The image buffer is just a 18.160 + * block of memory which the client provides. Its BGxe must be at least 18.161 + * as large as width*height*BGxeof(type). Its address Bhould be a multiple 18.162 + * of 4 if using RGBA mode. 18.163 + * 18.164 + * Image data is stored in the order of glDrawPixels: row-major order 18.165 + * with the lower-left image pixel stored in the first array position 18.166 + * (ie. bottom-to-top). 18.167 + * 18.168 + * Since the only type initially supported is GL_UNSIGNED_BYTE, if the 18.169 + * context is in RGBA mode, each pixel will be stored as a 4-byte RGBA 18.170 + * value. If the context is in color indexed mode, each pixel will beYdA_Btored as a 1-byte value. 18.171 + * 18.172 + * If the context's viewport hasn't been initialGxed yet, it will now beYdA_initialGxed to (0,0,width,height). 18.173 + * 18.174 + * Input: ctx - the rendering context 18.175 + * buffer - the image buffer memory 18.176 + * type - data type for pixel components, only GL_UNSIGNED_BYTE 18.177 + * supported now 18.178 + * width, height -_BGxe of image buffer in pixels, at least 1 18.179 + * Return: GL_TRUE if success, GL_FALSE if error because of invalid ctx, 18.180 + * invalid buffer address, type!=GL_UNSIGNED_BYTE, width<1, height<1, 18.181 + * width>internal limit or height>internal limit. 18.182 + */ 18.183 +GLAPI GLboolean GLAPIENTRY 18.184 +OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type, 18.185 + GLBGxei width, GLBGxei height ); 18.186 + 18.187 + 18.188 + 18.189 + 18.190 +/* 18.191 + * Return the current Off-Screen Mesa rendering contextHhandle. 18.192 + */ 18.193 +GLAPI OSMesaContext GLAPIENTRY 18.194 +OSMesaGetCurrentContext( void ); 18.195 + 18.196 + 18.197 + 18.198 +/* 18.199 + * Set pixel store/packing parameters for the current context. 18.200 + * This is similar to glPixelStore. 18.201 + * Input: pname -_OSMESA_ROW_LENGTH 18.202 + * list ); 18.203 +actual pixels per row in image buffer 18.204 + * 0 = same as image width (default) 18.205 + * OSMESA_Y_UP 18.206 + * zero = Y coordinates increase downward 18.207 + * non-zero = Y coordinates increase upward (default) 18.208 + * value - the value for the parameter pname 18.209 + * 18.210 + * New in version 2.0. 18.211 + */ 18.212 +GLAPI void GLAPIENTRY 18.213 +OSMesaPixelStore( GLint pname, GLint value ); 18.214 + 18.215 + 18.216 + 18.217 +/* 18.218 + * Return an integer value like glGetIntegerv. 18.219 + * Input: pname - 18.220 + * OSMESA_WIDTH return current image width 18.221 + * OSMESA_HEIGHT return current image height 18.222 + * OSMESA_FORMAT return image format 18.223 + * OSMESA_TYPE return color component data type 18.224 + * OSMESA_ROW_LENGTH return row length in pixels 18.225 + * OSMESA_Y_UP returns 1 or 0 to indicate Y axis d/* 18.226 +ction 18.227 + * value - pointer to integer in which to return result. 18.228 + */ 18.229 +GLAPI void GLAPIENTRY 18.230 +OSMesaGetIntegerv( GLint pname, GLint *value ); 18.231 + 18.232 + 18.233 + 18.234 +/* 18.235 + * Return the depth buffer associated with an OSMesa context. 18.236 + * Input: c - the OSMesa context 18.237 + * Output: width, height -_BGxe of buffer in pixels 18.238 + * bytesPerValue - bytes per depth value (2 or 4) 18.239 + * buffer - pointer to depth buffer values 18.240 + * Return: GL_TRUE or GL_FALSE to indicate success or failure. 18.241 + * 18.242 + * New in Mesa 2.4. 18.243 + */ 18.244 +GLAPI GLboolean GLAPIENTRY 18.245 +OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height, 18.246 + GLint *bytesPerValue, void **buffer ); 18.247 + 18.248 + 18.249 + 18.250 +/* 18.251 + * Return the color buffer associated with an OSMesa context. 18.252 + * Input: c - the OSMesa context 18.253 + * Output: width, height -_BGxe of buffer in pixels 18.254 + * format - buffer format (OSMESA_FORMAT) 18.255 + * buffer - pointer to depth buffer values 18.256 + * Return: GL_TRUE or GL_FALSE to indicate success or failure. 18.257 + * 18.258 + * New in Mesa 3.3. 18.259 + */ 18.260 +GLAPI GLboolean GLAPIENTRY 18.261 +OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height, 18.262 + GLint *format, void **buffer ); 18.263 + 18.264 + 18.265 + 18.266 +#if defined(__BEOS__) || defined(__QUICKDRAW__) 18.267 +#pragma export off 18.268 +#endif 18.269 + 18.270 + 18.271 +#ifdef __cplusplus 18.272 +} 18.273 +#endif 18.274 + 18.275 + 18.276 +#endif
19.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 19.2 +++ b/SOTA Intro.dsp Tue Nov 27 15:23:52 2007 +0100 19.3 @@ -0,0 +1,453 @@ 19.4 +# Microsoft Developer Studio Project File - Name="SOTA Intro" - Package Owner=<4> 19.5 +# Microsoft Developer Studio Generated Build File, Format Version 6.00 19.6 +# ** DO NOT EDIT ** 19.7 + 19.8 +# TARGTYPE "Win32 (x86) Application" 0x0101 19.9 + 19.10 +CFG=SOTA Intro - Win32 Debug 19.11 +!MESSAGE This is not a valid makefile. To build this project using NMAKE, 19.12 +!MESSAGE use the Export Makefile command and run 19.13 +!MESSAGE 19.14 +!MESSAGE NMAKE /f "SOTA Intro.mak". 19.15 +!MESSAGE 19.16 +!MESSAGE You can specify a configuration when running NMAKE 19.17 +!MESSAGE by defining the macro CFG on the command line. For example: 19.18 +!MESSAGE 19.19 +!MESSAGE NMAKE /f "SOTA Intro.mak" CFG="SOTA Intro - Win32 Debug" 19.20 +!MESSAGE 19.21 +!MESSAGE Possible choices for configuration are: 19.22 +!MESSAGE 19.23 +!MESSAGE "SOTA Intro - Win32 Release" (based on "Win32 (x86) Application") 19.24 +!MESSAGE "SOTA Intro - Win32 Debug" (based on "Win32 (x86) Application") 19.25 +!MESSAGE 19.26 + 19.27 +# Begin Project 19.28 +# PROP AllowPerConfigDependencies 0 19.29 +# PROP Scc_ProjName "" 19.30 +# PROP Scc_LocalPath "" 19.31 +CPP=cl.exe 19.32 +MTL=midl.exe 19.33 +RSC=rc.exe 19.34 + 19.35 +!IF "$(CFG)" == "SOTA Intro - Win32 Release" 19.36 + 19.37 +# PROP BASE Use_MFC 0 19.38 +# PROP BASE Use_Debug_Libraries 0 19.39 +# PROP BASE Output_Dir "Release" 19.40 +# PROP BASE Intermediate_Dir "Release" 19.41 +# PROP BASE Target_Dir "" 19.42 +# PROP Use_MFC 0 19.43 +# PROP Use_Debug_Libraries 0 19.44 +# PROP Output_Dir "Release" 19.45 +# PROP Intermediate_Dir "Release" 19.46 +# PROP Ignore_Export_Lib 0 19.47 +# PROP Target_Dir "" 19.48 +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c 19.49 +# ADD CPP /nologo /MD /GX /O1 /D "MIDDLERES" /D "FINALE_RELEASE" /D "WIN32_MEAN_AND_LEAN" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /FR /FD /c 19.50 +# SUBTRACT CPP /YX 19.51 +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 19.52 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 19.53 +# ADD BASE RSC /l 0x40c /d "NDEBUG" 19.54 +# ADD RSC /l 0x40c /d "NDEBUG" 19.55 +BSC32=bscmake.exe 19.56 +# ADD BASE BSC32 /nologo 19.57 +# ADD BSC32 /nologo 19.58 +LINK32=link.exe 19.59 +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 19.60 +# ADD LINK32 "minifmod/winmm.lib" minifmod.lib opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib /nologo /subsystem:windows /pdb:none /map /machine:I386 19.61 +# Begin Special Build Tool 19.62 +SOURCE="$(InputPath)" 19.63 +PostBuild_Cmds="Release/upx.exe" --best "Release/SOTA Intro.exe" 19.64 +# End Special Build Tool 19.65 + 19.66 +!ELSEIF "$(CFG)" == "SOTA Intro - Win32 Debug" 19.67 + 19.68 +# PROP BASE Use_MFC 0 19.69 +# PROP BASE Use_Debug_Libraries 1 19.70 +# PROP BASE Output_Dir "Debug" 19.71 +# PROP BASE Intermediate_Dir "Debug" 19.72 +# PROP BASE Target_Dir "" 19.73 +# PROP Use_MFC 0 19.74 +# PROP Use_Debug_Libraries 1 19.75 +# PROP Output_Dir "Debug" 19.76 +# PROP Intermediate_Dir "Debug" 19.77 +# PROP Ignore_Export_Lib 0 19.78 +# PROP Target_Dir "" 19.79 +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c 19.80 +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /D "MIDDLERES" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FD /GZ /c 19.81 +# SUBTRACT CPP /YX 19.82 +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 19.83 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 19.84 +# ADD BASE RSC /l 0x40c /d "_DEBUG" 19.85 +# ADD RSC /l 0x40c /d "_DEBUG" 19.86 +BSC32=bscmake.exe 19.87 +# ADD BASE BSC32 /nologo 19.88 +# ADD BSC32 /nologo 19.89 +LINK32=link.exe 19.90 +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept 19.91 +# ADD LINK32 "minifmod/winmm.lib" minifmod.lib opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept 19.92 +# SUBTRACT LINK32 /nodefaultlib 19.93 + 19.94 +!ENDIF 19.95 + 19.96 +# Begin Target 19.97 + 19.98 +# Name "SOTA Intro - Win32 Release" 19.99 +# Name "SOTA Intro - Win32 Debug" 19.100 +# Begin Group "Source Files" 19.101 + 19.102 +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" 19.103 +# Begin Source File 19.104 + 19.105 +SOURCE=.\main.cxx 19.106 + 19.107 +!IF "$(CFG)" == "SOTA Intro - Win32 Release" 19.108 + 19.109 +# ADD CPP /O1 19.110 + 19.111 +!ELSEIF "$(CFG)" == "SOTA Intro - Win32 Debug" 19.112 + 19.113 +!ENDIF 19.114 + 19.115 +# End Source File 19.116 +# Begin Source File 19.117 + 19.118 +SOURCE=.\Script5.rc 19.119 +# End Source File 19.120 +# Begin Source File 19.121 + 19.122 +SOURCE=.\window_fmod_init.cpp 19.123 +# End Source File 19.124 +# Begin Source File 19.125 + 19.126 +SOURCE=.\window_fmod_init.h 19.127 +# End Source File 19.128 +# End Group 19.129 +# Begin Group "Header Files" 19.130 + 19.131 +# PROP Default_Filter "h;hpp;hxx;hm;inl" 19.132 +# Begin Source File 19.133 + 19.134 +SOURCE=.\gl_header.h 19.135 +# End Source File 19.136 +# End Group 19.137 +# Begin Group "Resource Files" 19.138 + 19.139 +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" 19.140 +# Begin Source File 19.141 + 19.142 +SOURCE=.\font_16x16.bmp 19.143 +# End Source File 19.144 +# Begin Source File 19.145 + 19.146 +SOURCE=.\font_16x16_corrected.bmp 19.147 +# End Source File 19.148 +# Begin Source File 19.149 + 19.150 +SOURCE=.\font_8x16.bmp 19.151 +# End Source File 19.152 +# Begin Source File 19.153 + 19.154 +SOURCE=.\font_8x16squaremin.bmp 19.155 +# End Source File 19.156 +# Begin Source File 19.157 + 19.158 +SOURCE=.\fontkoko.bmp 19.159 +# End Source File 19.160 +# Begin Source File 19.161 + 19.162 +SOURCE=.\resource.h 19.163 +# End Source File 19.164 +# End Group 19.165 +# Begin Group "Effects" 19.166 + 19.167 +# PROP Default_Filter "" 19.168 +# Begin Source File 19.169 + 19.170 +SOURCE=.\efx_equa.cxx 19.171 +# End Source File 19.172 +# Begin Source File 19.173 + 19.174 +SOURCE=.\efx_equa.h 19.175 +# End Source File 19.176 +# Begin Source File 19.177 + 19.178 +SOURCE=.\efx_equa2.cxx 19.179 +# End Source File 19.180 +# Begin Source File 19.181 + 19.182 +SOURCE=.\efx_equa2.h 19.183 +# End Source File 19.184 +# Begin Source File 19.185 + 19.186 +SOURCE=.\efx_harmonics.cxx 19.187 +# End Source File 19.188 +# Begin Source File 19.189 + 19.190 +SOURCE=.\efx_harmonics.h 19.191 +# End Source File 19.192 +# Begin Source File 19.193 + 19.194 +SOURCE=.\efx_rub.cxx 19.195 +# End Source File 19.196 +# Begin Source File 19.197 + 19.198 +SOURCE=.\efx_rub.h 19.199 +# End Source File 19.200 +# Begin Source File 19.201 + 19.202 +SOURCE=.\efx_screen0.cxx 19.203 +# End Source File 19.204 +# Begin Source File 19.205 + 19.206 +SOURCE=.\efx_screen0.h 19.207 +# End Source File 19.208 +# Begin Source File 19.209 + 19.210 +SOURCE=.\efx_screen1.cxx 19.211 +# End Source File 19.212 +# Begin Source File 19.213 + 19.214 +SOURCE=.\efx_screen1.h 19.215 +# End Source File 19.216 +# Begin Source File 19.217 + 19.218 +SOURCE=.\efx_screen2.cxx 19.219 +# End Source File 19.220 +# Begin Source File 19.221 + 19.222 +SOURCE=.\efx_screen2.h 19.223 +# End Source File 19.224 +# Begin Source File 19.225 + 19.226 +SOURCE=.\efx_screen3.cxx 19.227 + 19.228 +!IF "$(CFG)" == "SOTA Intro - Win32 Release" 19.229 + 19.230 +# ADD CPP /O2 19.231 + 19.232 +!ELSEIF "$(CFG)" == "SOTA Intro - Win32 Debug" 19.233 + 19.234 +!ENDIF 19.235 + 19.236 +# End Source File 19.237 +# Begin Source File 19.238 + 19.239 +SOURCE=.\efx_screen3.h 19.240 +# End Source File 19.241 +# Begin Source File 19.242 + 19.243 +SOURCE=.\efx_screen4.cxx 19.244 +# End Source File 19.245 +# Begin Source File 19.246 + 19.247 +SOURCE=.\efx_screen4.h 19.248 +# End Source File 19.249 +# Begin Source File 19.250 + 19.251 +SOURCE=.\efx_touf.cxx 19.252 +# End Source File 19.253 +# Begin Source File 19.254 + 19.255 +SOURCE=.\efx_touf.h 19.256 +# End Source File 19.257 +# End Group 19.258 +# Begin Group "Utils" 19.259 + 19.260 +# PROP Default_Filter "" 19.261 +# Begin Source File 19.262 + 19.263 +SOURCE=.\cmn_design.cxx 19.264 +# End Source File 19.265 +# Begin Source File 19.266 + 19.267 +SOURCE=.\cmn_design.h 19.268 +# End Source File 19.269 +# Begin Source File 19.270 + 19.271 +SOURCE=.\cmn_intro.cxx 19.272 +# End Source File 19.273 +# Begin Source File 19.274 + 19.275 +SOURCE=.\cmn_intro.h 19.276 +# End Source File 19.277 +# Begin Source File 19.278 + 19.279 +SOURCE=.\cmn_shape.cxx 19.280 +# End Source File 19.281 +# Begin Source File 19.282 + 19.283 +SOURCE=.\cmn_shape.h 19.284 +# End Source File 19.285 +# Begin Source File 19.286 + 19.287 +SOURCE=.\cmn_texture.cxx 19.288 +# End Source File 19.289 +# Begin Source File 19.290 + 19.291 +SOURCE=.\cmn_texture.h 19.292 +# End Source File 19.293 +# Begin Source File 19.294 + 19.295 +SOURCE=.\mth.cxx 19.296 +# End Source File 19.297 +# Begin Source File 19.298 + 19.299 +SOURCE=.\mth.h 19.300 +# End Source File 19.301 +# Begin Source File 19.302 + 19.303 +SOURCE=.\mth_hermite.h 19.304 +# End Source File 19.305 +# Begin Source File 19.306 + 19.307 +SOURCE=.\mth_perlin.cxx 19.308 +# End Source File 19.309 +# Begin Source File 19.310 + 19.311 +SOURCE=.\mth_perlin.h 19.312 +# End Source File 19.313 +# Begin Source File 19.314 + 19.315 +SOURCE=.\mth_plane3.h 19.316 +# End Source File 19.317 +# Begin Source File 19.318 + 19.319 +SOURCE=.\mth_vector2.h 19.320 +# End Source File 19.321 +# Begin Source File 19.322 + 19.323 +SOURCE=.\mth_vector3.h 19.324 +# End Source File 19.325 +# Begin Source File 19.326 + 19.327 +SOURCE=.\phy.h 19.328 +# End Source File 19.329 +# Begin Source File 19.330 + 19.331 +SOURCE=.\phy_element.h 19.332 +# End Source File 19.333 +# Begin Source File 19.334 + 19.335 +SOURCE=.\phy_server.cxx 19.336 + 19.337 +!IF "$(CFG)" == "SOTA Intro - Win32 Release" 19.338 + 19.339 +# ADD CPP /O1 19.340 + 19.341 +!ELSEIF "$(CFG)" == "SOTA Intro - Win32 Debug" 19.342 + 19.343 +!ENDIF 19.344 + 19.345 +# End Source File 19.346 +# Begin Source File 19.347 + 19.348 +SOURCE=.\phy_server.h 19.349 +# End Source File 19.350 +# Begin Source File 19.351 + 19.352 +SOURCE=.\rdr_font.cxx 19.353 +# End Source File 19.354 +# Begin Source File 19.355 + 19.356 +SOURCE=.\rdr_font.h 19.357 +# End Source File 19.358 +# Begin Source File 19.359 + 19.360 +SOURCE=.\sys_assert.cxx 19.361 +# End Source File 19.362 +# Begin Source File 19.363 + 19.364 +SOURCE=.\sys_assert.h 19.365 +# End Source File 19.366 +# End Group 19.367 +# Begin Group "Meshes" 19.368 + 19.369 +# PROP Default_Filter "" 19.370 +# End Group 19.371 +# Begin Group "Transitions" 19.372 + 19.373 +# PROP Default_Filter "" 19.374 +# Begin Source File 19.375 + 19.376 +SOURCE=.\trans_crossradial.cxx 19.377 +# End Source File 19.378 +# Begin Source File 19.379 + 19.380 +SOURCE=.\trans_crossradial.h 19.381 +# End Source File 19.382 +# Begin Source File 19.383 + 19.384 +SOURCE=.\trans_explode.cxx 19.385 +# End Source File 19.386 +# Begin Source File 19.387 + 19.388 +SOURCE=.\trans_explode.h 19.389 +# End Source File 19.390 +# Begin Source File 19.391 + 19.392 +SOURCE=.\trans_explode2.cxx 19.393 +# End Source File 19.394 +# Begin Source File 19.395 + 19.396 +SOURCE=.\trans_explode2.h 19.397 +# End Source File 19.398 +# Begin Source File 19.399 + 19.400 +SOURCE=.\trans_fade.cxx 19.401 +# End Source File 19.402 +# Begin Source File 19.403 + 19.404 +SOURCE=.\trans_fade.h 19.405 +# End Source File 19.406 +# Begin Source File 19.407 + 19.408 +SOURCE=.\trans_glow.cxx 19.409 +# End Source File 19.410 +# Begin Source File 19.411 + 19.412 +SOURCE=.\trans_glow.h 19.413 +# End Source File 19.414 +# Begin Source File 19.415 + 19.416 +SOURCE=.\trans_puzzle.cxx 19.417 +# End Source File 19.418 +# Begin Source File 19.419 + 19.420 +SOURCE=.\trans_puzzle.h 19.421 +# End Source File 19.422 +# Begin Source File 19.423 + 19.424 +SOURCE=.\trans_radial.cxx 19.425 +# End Source File 19.426 +# Begin Source File 19.427 + 19.428 +SOURCE=.\trans_radial.h 19.429 +# End Source File 19.430 +# End Group 19.431 +# Begin Group "Sync" 19.432 + 19.433 +# PROP Default_Filter "" 19.434 +# Begin Source File 19.435 + 19.436 +SOURCE=.\fxSync.cxx 19.437 +# End Source File 19.438 +# Begin Source File 19.439 + 19.440 +SOURCE=.\fxSync.h 19.441 +# End Source File 19.442 +# Begin Source File 19.443 + 19.444 +SOURCE=.\smplInfo.h 19.445 +# End Source File 19.446 +# Begin Source File 19.447 + 19.448 +SOURCE=.\sndDetect.cxx 19.449 +# End Source File 19.450 +# Begin Source File 19.451 + 19.452 +SOURCE=.\sndDetect.h 19.453 +# End Source File 19.454 +# End Group 19.455 +# End Target 19.456 +# End Project
20.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 20.2 +++ b/SOTA Intro.dsw Tue Nov 27 15:23:52 2007 +0100 20.3 @@ -0,0 +1,29 @@ 20.4 +Microsoft Developer Studio Workspace File, Format Version 6.00 20.5 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! 20.6 + 20.7 +############################################################################### 20.8 + 20.9 +Project: "SOTA Intro"=".\SOTA Intro.dsp" - Package Owner=<4> 20.10 + 20.11 +Package=<5> 20.12 +{{{ 20.13 +}}} 20.14 + 20.15 +Package=<4> 20.16 +{{{ 20.17 +}}} 20.18 + 20.19 +############################################################################### 20.20 + 20.21 +Global: 20.22 + 20.23 +Package=<5> 20.24 +{{{ 20.25 +}}} 20.26 + 20.27 +Package=<3> 20.28 +{{{ 20.29 +}}} 20.30 + 20.31 +############################################################################### 20.32 +
21.1 Binary file Script5.aps has changed
22.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 22.2 +++ b/Script5.rc Tue Nov 27 15:23:52 2007 +0100 22.3 @@ -0,0 +1,2491 @@ 22.4 +//Microsoft Developer Studio generated resource script. 22.5 +// 22.6 +#include "resource.h" 22.7 + 22.8 +#define APSTUDIO_READONLY_SYMBOLS 22.9 +///////////////////////////////////////////////////////////////////////////// 22.10 +// 22.11 +// Generated from the TEXTINCLUDE 2 resource. 22.12 +// 22.13 +#include "afxres.h" 22.14 + 22.15 +///////////////////////////////////////////////////////////////////////////// 22.16 +#undef APSTUDIO_READONLY_SYMBOLS 22.17 + 22.18 +///////////////////////////////////////////////////////////////////////////// 22.19 +// French (France) resources 22.20 + 22.21 +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) 22.22 +#ifdef _WIN32 22.23 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH 22.24 +#pragma code_page(1252) 22.25 +#endif //_WIN32 22.26 + 22.27 +#ifdef APSTUDIO_INVOKED 22.28 +///////////////////////////////////////////////////////////////////////////// 22.29 +// 22.30 +// TEXTINCLUDE 22.31 +// 22.32 + 22.33 +1 TEXTINCLUDE DISCARDABLE 22.34 +BEGIN 22.35 + "resource.h\0" 22.36 +END 22.37 + 22.38 +2 TEXTINCLUDE DISCARDABLE 22.39 +BEGIN 22.40 + "#include ""afxres.h""\r\n" 22.41 + "\0" 22.42 +END 22.43 + 22.44 +3 TEXTINCLUDE DISCARDABLE 22.45 +BEGIN 22.46 + "\r\n" 22.47 + "\0" 22.48 +END 22.49 + 22.50 +#endif // APSTUDIO_INVOKED 22.51 + 22.52 + 22.53 +///////////////////////////////////////////////////////////////////////////// 22.54 +// 22.55 +// Data 22.56 +// 22.57 + 22.58 +IDR_DATA12 RCDATA DISCARDABLE 22.59 +BEGIN 22.60 + 0x7845, 0x6574, 0x646e, 0x6465, 0x4d20, 0x646f, 0x6c75, 0x3a65, 0x0020, 22.61 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.62 + 0x1a00, 0x614d, 0x5464, 0x6172, 0x6b63, 0x7265, 0x3220, 0x302e, 0x0000, 22.63 + 0x0000, 0x0000, 0x0104, 0x0114, 0x0000, 0x001d, 0x0000, 0x0006, 0x0015, 22.64 + 0x0009, 0x0001, 0x0005, 0x0082, 0x0000, 0x0201, 0x0203, 0x0503, 0x0404, 22.65 + 0x0706, 0x0a06, 0x0c09, 0x0c0d, 0x0c0e, 0x1014, 0x1010, 0x1110, 0x1211, 22.66 + 0x0013, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.67 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.68 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.69 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.70 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.71 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.72 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.73 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.74 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.75 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.76 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.77 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.78 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0000, 0x4000, 22.79 + 0x5700, 0x9b02, 0x013c, 0x050f, 0x0c88, 0x0c88, 0x259b, 0x0c06, 0x9804, 22.80 + 0x010a, 0x0c88, 0x8080, 0x9880, 0x100a, 0x0e98, 0x80b1, 0x8080, 0x9880, 22.81 + 0x100a, 0x0a98, 0x8001, 0x8080, 0x9880, 0x100a, 0x0e98, 0x80b1, 0x8080, 22.82 + 0x9880, 0x100a, 0x0a98, 0x8001, 0x8080, 0x9880, 0x200a, 0x0e98, 0x80b1, 22.83 + 0x3883, 0x8001, 0x9880, 0x100a, 0x0a98, 0x8001, 0x8080, 0x9880, 0x200a, 22.84 + 0x0e98, 0x80b1, 0x8080, 0x8080, 0x0a98, 0x8001, 0x8080, 0x8080, 0x0e98, 22.85 + 0x80b1, 0x8080, 0x8080, 0x0a98, 0x8001, 0x8080, 0x8080, 0x0e98, 0x80b1, 22.86 + 0x3583, 0x8001, 0x8080, 0x0a98, 0x8001, 0x8080, 0x8080, 0x0e98, 0x80b1, 22.87 + 0x0498, 0x80a1, 0x8080, 0x0a98, 0x8001, 0x0488, 0x8080, 0x9880, 0xb10e, 22.88 + 0x9880, 0x0204, 0x8080, 0x9880, 0x010a, 0x9880, 0x0106, 0x8080, 0x9880, 22.89 + 0x010a, 0x8880, 0x8004, 0x8080, 0x0a98, 0x8001, 0x0698, 0x8002, 0x8080, 22.90 + 0x0a98, 0x8001, 0x0488, 0x8080, 0x9880, 0x010a, 0x9880, 0x0106, 0x8080, 22.91 + 0x9880, 0x010a, 0x8880, 0x8004, 0x8080, 0x0c88, 0x9880, 0x0206, 0x8080, 22.92 + 0x8080, 0x8880, 0x8004, 0x9880, 0xb10e, 0x8080, 0x0698, 0x8001, 0x8080, 22.93 + 0x8080, 0x0488, 0x8080, 0x0e98, 0x80b1, 0x9880, 0x0206, 0x8080, 0x8080, 22.94 + 0x8880, 0x8004, 0x9880, 0xb10e, 0x8080, 0x0698, 0x8001, 0x9880, 0xb10e, 22.95 + 0x8080, 0x0488, 0x8080, 0x0e98, 0x80b1, 0x9880, 0x0206, 0x8080, 0x0e98, 22.96 + 0x80b1, 0x9880, 0x2006, 0x8080, 0x0a98, 0x9b01, 0x0628, 0x040c, 0x9880, 22.97 + 0x0206, 0x8080, 0x0e98, 0x98b1, 0x100a, 0x9880, 0x2006, 0x8080, 0x0a98, 22.98 + 0x9801, 0x100a, 0x9880, 0x0206, 0x8080, 0x0e98, 0x98b1, 0x100a, 0x9880, 22.99 + 0x2006, 0x8080, 0x0a98, 0x9801, 0x100a, 0x9880, 0x0206, 0x8080, 0x0e98, 22.100 + 0x98b1, 0x200a, 0x9880, 0x2006, 0x8080, 0x0a98, 0x9801, 0x100a, 0x9880, 22.101 + 0x0206, 0x8080, 0x0e98, 0x98b1, 0x200a, 0x9880, 0x2006, 0x8080, 0x0a98, 22.102 + 0x8001, 0x9880, 0x0206, 0x8080, 0x0e98, 0x80b1, 0x9880, 0x2006, 0x8080, 22.103 + 0x0a98, 0x8001, 0x9880, 0x0206, 0x8080, 0x0e98, 0x80b1, 0x9880, 0x2006, 22.104 + 0x8080, 0x0a98, 0x8001, 0x9880, 0x0206, 0x8080, 0x0e98, 0x80b1, 0x9880, 22.105 + 0x1006, 0x8080, 0x0a98, 0x8001, 0x9880, 0x2006, 0x8080, 0x0e98, 0x80b1, 22.106 + 0x8380, 0x0141, 0x8080, 0x0c88, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.107 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.108 + 0x8080, 0x8080, 0x3d83, 0x8001, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.109 + 0x8080, 0x8080, 0x0e98, 0x80b1, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.110 + 0x0e98, 0x80b1, 0x8080, 0x8080, 0x8080, 0x3583, 0x8001, 0x8080, 0x0e98, 22.111 + 0x80b1, 0x8080, 0x8080, 0x0e98, 0x80b1, 0x8080, 0x8080, 0x0e98, 0x80b1, 22.112 + 0x8080, 0x8080, 0x0e98, 0x80b1, 0x0009, 0x0000, 0x4000, 0xc200, 0x8302, 22.113 + 0x013c, 0x3d83, 0x8002, 0x259b, 0x0c06, 0x9804, 0x010a, 0x8080, 0x8080, 22.114 + 0x0a98, 0x9810, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 0x800a, 0x0a98, 0x9810, 22.115 + 0x010a, 0x8080, 0x8080, 0x0a98, 0x9810, 0xb10e, 0x8080, 0x3d83, 0x8002, 22.116 + 0x0a98, 0x9810, 0x010a, 0x8080, 0x8080, 0x0a98, 0x9820, 0xb10e, 0x8380, 22.117 + 0x0138, 0x3d9b, 0x0c02, 0x8010, 0x0a98, 0x9810, 0x010a, 0x8080, 0x8080, 22.118 + 0x0a98, 0x9820, 0xb10e, 0x8080, 0x3d83, 0x8002, 0x9880, 0x010a, 0x8080, 22.119 + 0x8080, 0x9880, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 0x800a, 0x9880, 0x010a, 22.120 + 0x8080, 0x8080, 0x9880, 0xb10e, 0x8380, 0x0135, 0x3d83, 0x8002, 0x9880, 22.121 + 0x010a, 0x8080, 0x8080, 0x9880, 0xb10e, 0x9880, 0xa104, 0x3d9b, 0x0c02, 22.122 + 0x8010, 0x9880, 0x010a, 0x8880, 0x8004, 0x8080, 0x0e98, 0x80b1, 0x0498, 22.123 + 0x8302, 0x023d, 0x8080, 0x0a98, 0x8001, 0x0698, 0x8001, 0x8080, 0x0a98, 22.124 + 0x8001, 0x0488, 0x3d9b, 0x0c02, 0x800a, 0x9880, 0x010a, 0x9880, 0x0206, 22.125 + 0x8080, 0x9880, 0x010a, 0x8880, 0x8304, 0x023d, 0x8080, 0x0a98, 0x8001, 22.126 + 0x0698, 0x8001, 0x8080, 0x0a98, 0x8001, 0x0488, 0x3d9b, 0x0c02, 0x8010, 22.127 + 0x8880, 0x800c, 0x0698, 0x8002, 0x8080, 0x8080, 0x0488, 0x3d83, 0x8002, 22.128 + 0x0e98, 0x80b1, 0x9880, 0x0106, 0x8080, 0x8080, 0x8880, 0x9b04, 0x023d, 22.129 + 0x0a0c, 0x9880, 0xb10e, 0x8080, 0x0698, 0x8002, 0x8080, 0x8080, 0x0488, 22.130 + 0x3d83, 0x8002, 0x0e98, 0x80b1, 0x9880, 0x0106, 0x8080, 0x0e98, 0x80b1, 22.131 + 0x8880, 0x9b04, 0x023d, 0x100c, 0x9880, 0xb10e, 0x8080, 0x0698, 0x8002, 22.132 + 0x9880, 0xb10e, 0x8080, 0x0698, 0x8320, 0x023d, 0x9880, 0x010a, 0x2c9b, 22.133 + 0x0c06, 0x8004, 0x0698, 0x8002, 0x9880, 0xb10e, 0x0a98, 0x8010, 0x0698, 22.134 + 0x9b20, 0x023d, 0x0a0c, 0x9880, 0x010a, 0x0a98, 0x8010, 0x0698, 0x8002, 22.135 + 0x9880, 0xb10e, 0x0a98, 0x8010, 0x0698, 0x8320, 0x023d, 0x9880, 0x010a, 22.136 + 0x0a98, 0x8010, 0x0698, 0x8002, 0x9880, 0xb10e, 0x0a98, 0x8020, 0x0698, 22.137 + 0x9b20, 0x023d, 0x100c, 0x9880, 0x010a, 0x0a98, 0x8010, 0x0698, 0x8002, 22.138 + 0x9880, 0xb10e, 0x0a98, 0x8020, 0x0698, 0x8320, 0x023d, 0x9880, 0x010a, 22.139 + 0x8080, 0x0698, 0x8002, 0x9880, 0xb10e, 0x8080, 0x0698, 0x9b20, 0x023d, 22.140 + 0x0a0c, 0x9880, 0x010a, 0x8080, 0x0698, 0x8002, 0x9880, 0xb10e, 0x8080, 22.141 + 0x0698, 0x8320, 0x023d, 0x9880, 0x010a, 0x8080, 0x0698, 0x8002, 0x9880, 22.142 + 0xb10e, 0x8080, 0x0698, 0x9b10, 0x023d, 0x100c, 0x9880, 0x010a, 0x8080, 22.143 + 0x0698, 0x8020, 0x9880, 0xb10e, 0x8080, 0x4183, 0x8301, 0x023d, 0x8880, 22.144 + 0x800c, 0x8080, 0x8080, 0x8080, 0x8080, 0x3d9b, 0x0c02, 0x800a, 0x8080, 22.145 + 0x8080, 0x8080, 0x8080, 0x8080, 0x3d83, 0x8002, 0x8080, 0x8080, 0x8080, 22.146 + 0x8080, 0x8380, 0x013d, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x8080, 0x8080, 22.147 + 0x8080, 0x8080, 0x3d83, 0x8002, 0x9880, 0xb10e, 0x8080, 0x8080, 0x8080, 22.148 + 0x8080, 0x3d9b, 0x0c02, 0x800a, 0x9880, 0xb10e, 0x8080, 0x8080, 0x8080, 22.149 + 0x8380, 0x0135, 0x3d83, 0x8302, 0x043d, 0x9880, 0xb10e, 0x8080, 0x9b80, 22.150 + 0x033d, 0x0c0c, 0x9880, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 0x830a, 0x033d, 22.151 + 0x9880, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 0x9b10, 0x043d, 0x200c, 0x9880, 22.152 + 0xb10e, 0x0980, 0x0000, 0x0000, 0x0040, 0x030a, 0x3c83, 0x8301, 0x023d, 22.153 + 0x3d83, 0x9b03, 0x0625, 0x040c, 0x0a98, 0x8001, 0x8080, 0x9880, 0x100a, 22.154 + 0x0e98, 0x80b1, 0x9b80, 0x023d, 0x0a0c, 0x9880, 0x100a, 0x0a98, 0x8001, 22.155 + 0x8080, 0x9880, 0x100a, 0x0e98, 0x80b1, 0x8380, 0x023d, 0x3d83, 0x9804, 22.156 + 0x100a, 0x0a98, 0x8001, 0x8080, 0x9880, 0x200a, 0x0e98, 0x80b1, 0x3883, 22.157 + 0x9b01, 0x023d, 0x100c, 0x3d83, 0x9803, 0x100a, 0x0a98, 0x8001, 0x8080, 22.158 + 0x3d9b, 0x0c04, 0x980c, 0x200a, 0x0e98, 0x80b1, 0x8380, 0x023d, 0x8080, 22.159 + 0x0a98, 0x8001, 0x8080, 0x8080, 0x0e98, 0x80b1, 0x9b80, 0x023d, 0x0a0c, 22.160 + 0x3d83, 0x8004, 0x0a98, 0x8001, 0x8080, 0x8080, 0x0e98, 0x80b1, 0x3583, 22.161 + 0x8301, 0x023d, 0x3d83, 0x8005, 0x0a98, 0x8001, 0x8080, 0x8080, 0x0e98, 22.162 + 0x80b1, 0x0498, 0x9ba1, 0x023d, 0x100c, 0x8080, 0x0a98, 0x8001, 0x0488, 22.163 + 0x8080, 0x9880, 0xb10e, 0x9880, 0x0204, 0x3d83, 0x8302, 0x033d, 0x9880, 22.164 + 0x010a, 0x9880, 0x0106, 0x8080, 0x9880, 0x010a, 0x8880, 0x9b04, 0x023d, 22.165 + 0x0a0c, 0x8080, 0x0a98, 0x8001, 0x0698, 0x8002, 0x3d9b, 0x0c03, 0x800c, 22.166 + 0x0a98, 0x8001, 0x0488, 0x3d83, 0x8302, 0x043d, 0x9880, 0x010a, 0x9880, 22.167 + 0x0106, 0x8080, 0x9880, 0x010a, 0x8880, 0x9b04, 0x023d, 0x100c, 0x8080, 22.168 + 0x0c88, 0x9880, 0x0206, 0x8380, 0x053d, 0x8080, 0x8880, 0x8304, 0x023d, 22.169 + 0x9880, 0xb10e, 0x8080, 0x0698, 0x8001, 0x8080, 0x8080, 0x0488, 0x3d9b, 22.170 + 0x0c02, 0x830a, 0x033d, 0x0e98, 0x80b1, 0x9880, 0x0206, 0x8080, 0x8080, 22.171 + 0x8880, 0x8304, 0x023d, 0x3d9b, 0x0e04, 0x9892, 0xb10e, 0x8080, 0x0698, 22.172 + 0x8001, 0x0a98, 0x980f, 0xb10e, 0x8080, 0x0488, 0x3d9b, 0x0c02, 0x8010, 22.173 + 0x0e98, 0x80b1, 0x9880, 0x0206, 0x9b80, 0x043d, 0x0c0c, 0x0e98, 0x80b1, 22.174 + 0x9880, 0x2006, 0x3d83, 0x8302, 0x033d, 0x0a98, 0x9b01, 0x0628, 0x040c, 22.175 + 0x9880, 0x0206, 0x8080, 0x0e98, 0x98b1, 0x100a, 0x9880, 0x2006, 0x3d9b, 22.176 + 0x0c02, 0x800a, 0x0a98, 0x9801, 0x100a, 0x9880, 0x0206, 0x8080, 0x0e98, 22.177 + 0x98b1, 0x100a, 0x9880, 0x2006, 0x3d83, 0x8302, 0x043d, 0x0a98, 0x9801, 22.178 + 0x100a, 0x9880, 0x0206, 0x8080, 0x0e98, 0x98b1, 0x200a, 0x9880, 0x2006, 22.179 + 0x3d9b, 0x0c02, 0x8010, 0x0a98, 0x9801, 0x100a, 0x9880, 0x0206, 0x8380, 22.180 + 0x053d, 0x0e98, 0x98b1, 0x200a, 0x9880, 0x2006, 0x3d83, 0x8002, 0x0a98, 22.181 + 0x8001, 0x9880, 0x0206, 0x8080, 0x0e98, 0x80b1, 0x9880, 0x2006, 0x3d9b, 22.182 + 0x0c02, 0x830a, 0x033d, 0x0a98, 0x8001, 0x9880, 0x0206, 0x8080, 0x0e98, 22.183 + 0x80b1, 0x9880, 0x2006, 0x3d83, 0x8302, 0x043d, 0x0a98, 0x8001, 0x9880, 22.184 + 0x0206, 0x8080, 0x0e98, 0x80b1, 0x9880, 0x2006, 0x3d9b, 0x0c02, 0x8310, 22.185 + 0x053d, 0x0a98, 0x8001, 0x9880, 0x0206, 0x9b80, 0x043d, 0x0c0c, 0x0e98, 22.186 + 0x80b1, 0x9880, 0x2006, 0x3d83, 0x8302, 0x033d, 0x0c88, 0x8080, 0x0698, 22.187 + 0x8002, 0x8080, 0x8080, 0x0698, 0x9b20, 0x023d, 0x0a0c, 0x8080, 0x8080, 22.188 + 0x0698, 0x8002, 0x8080, 0x8080, 0x0698, 0x8310, 0x023d, 0x3d83, 0x8004, 22.189 + 0x8080, 0x0698, 0x8020, 0x8080, 0x8080, 0x3d9b, 0x0c01, 0x9b1a, 0x023d, 22.190 + 0x100c, 0x8080, 0x8080, 0x8080, 0x3d83, 0x8005, 0x8080, 0x8380, 0x023d, 22.191 + 0x8080, 0x0e98, 0x80b1, 0x8080, 0x8080, 0x8080, 0x9b80, 0x023d, 0x0a0c, 22.192 + 0x3d83, 0x8003, 0x0e98, 0x80b1, 0x8080, 0x8080, 0x8080, 0x3583, 0x8301, 22.193 + 0x023d, 0x3d83, 0x8004, 0x0e98, 0x80b1, 0x8080, 0x3d9b, 0x0c03, 0x800c, 22.194 + 0x0e98, 0x80b1, 0x9b80, 0x023d, 0x0a0c, 0x3d83, 0x8003, 0x0e98, 0x80b1, 22.195 + 0x9b80, 0x023d, 0x100c, 0x3d9b, 0x0c04, 0x8010, 0x0e98, 0x80b1, 0x0009, 22.196 + 0x0000, 0x4000, 0x0800, 0x8303, 0x013c, 0x3d83, 0x8302, 0x033d, 0x239b, 22.197 + 0x0c06, 0x9804, 0x010a, 0x8080, 0x8080, 0x0a98, 0x9810, 0xb10e, 0x8080, 22.198 + 0x3d9b, 0x0c02, 0x800a, 0x0a98, 0x9810, 0x010a, 0x8080, 0x8080, 0x0a98, 22.199 + 0x9810, 0xb10e, 0x8080, 0x3d83, 0x8302, 0x043d, 0x0a98, 0x9810, 0x010a, 22.200 + 0x8080, 0x8080, 0x0a98, 0x9820, 0xb10e, 0x8380, 0x0138, 0x3d9b, 0x0c02, 22.201 + 0x8010, 0x0a98, 0x9810, 0x010a, 0x8080, 0x9b80, 0x043d, 0x0c0c, 0x0a98, 22.202 + 0x9820, 0xb10e, 0x8080, 0x3d83, 0x8002, 0x9880, 0x010a, 0x8080, 0x8080, 22.203 + 0x9880, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 0x830a, 0x033d, 0x9880, 0x010a, 22.204 + 0x8080, 0x8080, 0x9880, 0xb10e, 0x8380, 0x0135, 0x3d83, 0x8302, 0x043d, 22.205 + 0x9880, 0x010a, 0x8080, 0x8080, 0x9880, 0xb10e, 0x9880, 0xa104, 0x3d9b, 22.206 + 0x0c02, 0x8010, 0x9880, 0x010a, 0x8880, 0x8004, 0x8080, 0x0e98, 0x80b1, 22.207 + 0x0498, 0x8302, 0x023d, 0x3d83, 0x8003, 0x0a98, 0x8001, 0x0698, 0x8001, 22.208 + 0x8080, 0x0a98, 0x8001, 0x0488, 0x3d9b, 0x0c02, 0x800a, 0x9880, 0x010a, 22.209 + 0x9880, 0x0206, 0x9b80, 0x033d, 0x0c0c, 0x9880, 0x010a, 0x8880, 0x8304, 22.210 + 0x023d, 0x3d83, 0x8004, 0x0a98, 0x8001, 0x0698, 0x8001, 0x8080, 0x0a98, 22.211 + 0x8001, 0x0488, 0x3d9b, 0x0c02, 0x8010, 0x8880, 0x800c, 0x0698, 0x8002, 22.212 + 0x3d83, 0x8005, 0x8080, 0x0488, 0x3d83, 0x8002, 0x0e98, 0x80b1, 0x9880, 22.213 + 0x0106, 0x8080, 0x8080, 0x8880, 0x9b04, 0x023d, 0x0a0c, 0x3d83, 0x9803, 22.214 + 0xb10e, 0x8080, 0x0698, 0x8002, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x0488, 22.215 + 0x3d83, 0x8302, 0x043d, 0x0e98, 0x80b1, 0x9880, 0x0106, 0x8080, 0x0e98, 22.216 + 0x80b1, 0x8880, 0x9b04, 0x023d, 0x100c, 0x3d83, 0x9805, 0xb10e, 0x8080, 22.217 + 0x0698, 0x8002, 0x3d9b, 0x0c04, 0x980c, 0xb10e, 0x8080, 0x0698, 0x8320, 22.218 + 0x023d, 0x3d83, 0x9803, 0x010a, 0x269b, 0x0c06, 0x8004, 0x0698, 0x8002, 22.219 + 0x9880, 0xb10e, 0x0a98, 0x8010, 0x0698, 0x9b20, 0x023d, 0x0a0c, 0x9880, 22.220 + 0x010a, 0x0a98, 0x8010, 0x0698, 0x8002, 0x9880, 0xb10e, 0x0a98, 0x8010, 22.221 + 0x0698, 0x8320, 0x023d, 0x3d83, 0x9804, 0x010a, 0x0a98, 0x8010, 0x0698, 22.222 + 0x8002, 0x9880, 0xb10e, 0x0a98, 0x8020, 0x0698, 0x9b20, 0x023d, 0x100c, 22.223 + 0x9880, 0x010a, 0x0a98, 0x8010, 0x0698, 0x8002, 0x3d83, 0x9805, 0xb10e, 22.224 + 0x0a98, 0x8020, 0x0698, 0x8320, 0x023d, 0x9880, 0x010a, 0x8080, 0x0698, 22.225 + 0x8002, 0x9880, 0xb10e, 0x8080, 0x0698, 0x9b20, 0x023d, 0x0a0c, 0x3d83, 22.226 + 0x9803, 0x010a, 0x8080, 0x0698, 0x8002, 0x9880, 0xb10e, 0x8080, 0x0698, 22.227 + 0x8320, 0x023d, 0x3d83, 0x9804, 0x010a, 0x8080, 0x0698, 0x8002, 0x9880, 22.228 + 0xb10e, 0x8080, 0x0698, 0x9b20, 0x023d, 0x100c, 0x3d83, 0x9805, 0x010a, 22.229 + 0x8080, 0x0698, 0x8002, 0x3d9b, 0x0c04, 0x980c, 0xb10e, 0x8080, 0x0698, 22.230 + 0x8320, 0x023d, 0x3d83, 0x8803, 0x800c, 0x9880, 0x0206, 0x8080, 0x8080, 22.231 + 0x9880, 0x2006, 0x3d9b, 0x0c02, 0x800a, 0x8080, 0x9880, 0x0206, 0x8080, 22.232 + 0x8080, 0x9880, 0x1006, 0x3d83, 0x8302, 0x043d, 0x8080, 0x9880, 0x2006, 22.233 + 0x8080, 0x8080, 0x9b80, 0x013d, 0x1a0c, 0x3d9b, 0x0c02, 0x8010, 0x8080, 22.234 + 0x8080, 0x8380, 0x053d, 0x8080, 0x8080, 0x3d83, 0x8002, 0x9880, 0xb10e, 22.235 + 0x8080, 0x8080, 0x8080, 0x8080, 0x3d9b, 0x0c02, 0x830a, 0x033d, 0x9880, 22.236 + 0xb10e, 0x8080, 0x8080, 0x8080, 0x8380, 0x0135, 0x3d83, 0x8302, 0x043d, 22.237 + 0x9880, 0xb10e, 0x8080, 0x9b80, 0x033d, 0x0c0c, 0x9880, 0xb10e, 0x8080, 22.238 + 0x3d9b, 0x0c02, 0x830a, 0x033d, 0x9880, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 22.239 + 0x8310, 0x053d, 0x9880, 0xb10e, 0x0980, 0x0000, 0x0000, 0x0040, 0x026c, 22.240 + 0x3c83, 0x8301, 0x023d, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x9b80, 22.241 + 0x023d, 0x100c, 0x8080, 0x8380, 0x0737, 0x8080, 0x8080, 0x8080, 0x8380, 22.242 + 0x023d, 0x8080, 0x8080, 0x8080, 0x8080, 0x9b80, 0x0737, 0x0c0c, 0x3483, 22.243 + 0x9b01, 0x023d, 0x100c, 0x8080, 0x8080, 0x9b80, 0x023d, 0x0a0c, 0x8080, 22.244 + 0x8080, 0x8380, 0x023d, 0x8080, 0x8380, 0x0737, 0x8080, 0x8080, 0x8080, 22.245 + 0x9b80, 0x023d, 0x0a0c, 0x8080, 0x8080, 0x8080, 0x8080, 0x9b80, 0x0737, 22.246 + 0x0c0c, 0x3483, 0x8301, 0x023d, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.247 + 0x0498, 0x9ba1, 0x023d, 0x100c, 0x8080, 0x9b80, 0x0737, 0x050c, 0x0488, 22.248 + 0x8080, 0x8080, 0x9880, 0x0204, 0x3d83, 0x8002, 0x8080, 0x9880, 0x0106, 22.249 + 0x8080, 0x8080, 0x8880, 0x9b04, 0x023d, 0x0a0c, 0x8080, 0x8380, 0x0737, 22.250 + 0x0698, 0x8002, 0x8080, 0x8080, 0x0488, 0x3d83, 0x8002, 0x8080, 0x9880, 22.251 + 0x0106, 0x8080, 0x8080, 0x379b, 0x0c07, 0x880c, 0x9b04, 0x023d, 0x100c, 22.252 + 0x8080, 0x8080, 0x0698, 0x9b02, 0x023d, 0x0a0c, 0x8080, 0x8080, 0x0488, 22.253 + 0x3d83, 0x8002, 0x8080, 0x3783, 0x9807, 0x0106, 0x8080, 0x8080, 0x8880, 22.254 + 0x9b04, 0x023d, 0x0a0c, 0x8080, 0x8080, 0x0698, 0x8002, 0x8080, 0x9b80, 22.255 + 0x0737, 0x0c0c, 0x0488, 0x3d83, 0x8002, 0x8080, 0x9880, 0x0106, 0x8080, 22.256 + 0x8080, 0x8880, 0x9b04, 0x023d, 0x100c, 0x8080, 0x9b80, 0x0737, 0x050c, 22.257 + 0x8080, 0x8080, 0x8080, 0x3683, 0x8301, 0x023d, 0x8080, 0x8080, 0x8080, 22.258 + 0x8080, 0x8080, 0x0a98, 0x9b0f, 0x023d, 0x0a0c, 0x8080, 0x8380, 0x0737, 22.259 + 0x0c98, 0x800a, 0x8080, 0x8080, 0x8380, 0x023d, 0x8080, 0x8080, 0x9b80, 22.260 + 0x023d, 0x0a0c, 0x8080, 0x9b80, 0x0737, 0x0c0c, 0x9b80, 0x023d, 0x100c, 22.261 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8380, 0x023d, 0x8080, 0x8380, 22.262 + 0x0737, 0x8080, 0x8080, 0x8080, 0x9b80, 0x023d, 0x0a0c, 0x8080, 0x8080, 22.263 + 0x8080, 0x8080, 0x9b80, 0x0737, 0x0c0c, 0x8380, 0x023d, 0x8080, 0x8080, 22.264 + 0x8080, 0x8080, 0x8080, 0x9b80, 0x023d, 0x100c, 0x8080, 0x9b80, 0x0737, 22.265 + 0x050c, 0x9b80, 0x023d, 0x0a0c, 0x8080, 0x8080, 0x3483, 0x8301, 0x023d, 22.266 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x0a98, 0x9b0f, 0x023d, 0x0a0c, 22.267 + 0x8080, 0x8380, 0x0737, 0x0c98, 0x800a, 0x8080, 0x8080, 0x8380, 0x023d, 22.268 + 0x8080, 0x8080, 0x8080, 0x8080, 0x9b80, 0x0737, 0x0c0c, 0x9b80, 0x023d, 22.269 + 0x100c, 0x8080, 0x8080, 0x9b80, 0x023d, 0x0a0c, 0x8080, 0x8080, 0x8380, 22.270 + 0x023d, 0x8080, 0x8380, 0x0738, 0x8080, 0x8080, 0x8080, 0x9b80, 0x023d, 22.271 + 0x0a0c, 0x8080, 0x8080, 0x9b80, 0x023d, 0x100c, 0x8080, 0x9b80, 0x0738, 22.272 + 0x0c0c, 0x349b, 0x0e01, 0x83b1, 0x023d, 0x8080, 0x8080, 0x0a98, 0x8001, 22.273 + 0x8080, 0x8080, 0x0e98, 0x83b1, 0x023d, 0x8080, 0x9b80, 0x0738, 0x050c, 22.274 + 0x0a98, 0x8001, 0x8080, 0x8080, 0x0009, 0x0000, 0x4000, 0xde00, 0x8302, 22.275 + 0x013c, 0x3d83, 0x8302, 0x033d, 0x259b, 0x0c06, 0x9804, 0x010a, 0x8080, 22.276 + 0x8080, 0x0a98, 0x9810, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 0x8010, 0x0a98, 22.277 + 0x9810, 0x010a, 0x8080, 0x9b80, 0x033d, 0x0c0c, 0x0a98, 0x9810, 0xb10e, 22.278 + 0x8080, 0x3d83, 0x8302, 0x043d, 0x0a98, 0x9810, 0x010a, 0x8080, 0x8080, 22.279 + 0x0a98, 0x9820, 0xb10e, 0x8380, 0x0134, 0x3d9b, 0x0c02, 0x830a, 0x033d, 22.280 + 0x0a98, 0x9810, 0x010a, 0x8080, 0x3d9b, 0x0c02, 0x9b10, 0x043d, 0x0c0c, 22.281 + 0x0a98, 0x9820, 0xb10e, 0x8080, 0x3d83, 0x8002, 0x9880, 0x010a, 0x8080, 22.282 + 0x9b80, 0x033d, 0x0c0c, 0x9880, 0xb10e, 0x8080, 0x3d9b, 0x0c02, 0x830a, 22.283 + 0x043d, 0x9880, 0x010a, 0x8080, 0x8080, 0x9880, 0xb10e, 0x8380, 0x0134, 22.284 + 0x3d83, 0x8302, 0x053d, 0x9880, 0x010a, 0x8080, 0x9b80, 0x043d, 0x0c0c, 22.285 + 0x9880, 0xb10e, 0x9880, 0xa104, 0x3d9b, 0x0c02, 0x8010, 0x9880, 0x010a, 22.286 + 0x8880, 0x8004, 0x8080, 0x0e98, 0x80b1, 0x0498, 0x8302, 0x023d, 0x3d83, 22.287 + 0x8003, 0x0a98, 0x8001, 0x0698, 0x8001, 0x8080, 0x0a98, 0x8001, 0x0488, 22.288 + 0x3d9b, 0x0c02, 0x800a, 0x9880, 0x010a, 0x9880, 0x0206, 0x9b80, 0x033d, 22.289 + 0x0c0c, 0x9880, 0x010a, 0x8880, 0x8304, 0x023d, 0x3d83, 0x8004, 0x0a98, 22.290 + 0x8001, 0x0698, 0x8001, 0x8080, 0x0a98, 0x8001, 0x0488, 0x3d9b, 0x0c02, 22.291 + 0x8010, 0x8880, 0x800c, 0x0698, 0x9b02, 0x023d, 0x0a0c, 0x3d83, 0x8005, 22.292 + 0x8080, 0x0488, 0x3d83, 0x8002, 0x0e98, 0x80b1, 0x9880, 0x0106, 0x8080, 22.293 + 0x8080, 0x8880, 0x9b04, 0x023d, 0x100c, 0x3d83, 0x9803, 0xb10e, 0x8080, 22.294 + 0x0698, 0x8002, 0x8080, 0x8080, 0x0488, 0x3d83, 0x8302, 0x043d, 0x0e98, 22.295 + 0x80b1, 0x9880, 0x0106, 0x9880, 0x0f0a, 0x0e98, 0x80b1, 0x8880, 0x9b04, 22.296 + 0x023d, 0x0a0c, 0x9880, 0xb10e, 0x8080, 0x0698, 0x8002, 0x3a9b, 0x0c04, 22.297 + 0x980a, 0xb10e, 0x8080, 0x3683, 0x8301, 0x023d, 0x3d83, 0x9803, 0x010a, 22.298 + 0x8080, 0x8080, 0x9880, 0xb10e, 0x8080, 0x0a98, 0x9b0f, 0x023d, 0x100c, 22.299 + 0x9880, 0x010a, 0x8080, 0x0c98, 0x800a, 0x9880, 0xb10e, 0x8080, 0x8380, 22.300 + 0x023d, 0x3d83, 0x9804, 0x010a, 0x8080, 0x9b80, 0x023d, 0x0a0c, 0x9880, 22.301 + 0xb10e, 0x8080, 0x9b80, 0x023d, 0x100c, 0x3d83, 0x9804, 0x010a, 0x8080, 22.302 + 0x8080, 0x3d83, 0x9805, 0xb10e, 0x8080, 0x8380, 0x023d, 0x9880, 0x010a, 22.303 + 0x8080, 0x8080, 0x3d9b, 0x0c04, 0x980c, 0xb10e, 0x8080, 0x9b80, 0x023d, 22.304 + 0x0a0c, 0x3d83, 0x9803, 0x010a, 0x8080, 0x8080, 0x9880, 0xb10e, 0x8080, 22.305 + 0x8380, 0x023d, 0x3d83, 0x9804, 0x010a, 0x8080, 0x8080, 0x9880, 0xb10e, 22.306 + 0x8080, 0x9b80, 0x023d, 0x190c, 0x3d83, 0x9805, 0x010a, 0x8080, 0x9b80, 22.307 + 0x023d, 0x0a0c, 0x3d9b, 0x0c04, 0x980c, 0xb10e, 0x8080, 0x3483, 0x8301, 22.308 + 0x023d, 0x3d83, 0x8803, 0x800c, 0x8080, 0x8080, 0x8080, 0x9880, 0x0f0a, 22.309 + 0x3d9b, 0x0c02, 0x800a, 0x8080, 0x9880, 0x0a0c, 0x9b80, 0x033d, 0x0c0c, 22.310 + 0x8080, 0x8080, 0x3d83, 0x8302, 0x043d, 0x8080, 0x8080, 0x8080, 0x8080, 22.311 + 0x8080, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x8080, 0x8380, 0x053d, 0x8080, 22.312 + 0x8080, 0x3d83, 0x8002, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x9b80, 22.313 + 0x053d, 0x0f0c, 0x8080, 0x8080, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x8080, 22.314 + 0x8080, 0x8080, 0x8080, 0x9b80, 0x053d, 0x050c, 0x8080, 0x8080, 0x3d9b, 22.315 + 0x0c02, 0x800a, 0x8080, 0x8080, 0x8080, 0x8080, 0x0980, 0x0000, 0x0000, 22.316 + 0x0040, 0x02f7, 0x3283, 0x8301, 0x023d, 0x3183, 0x8308, 0x092b, 0x8080, 22.317 + 0x3e9b, 0x0301, 0x8008, 0x8080, 0x8080, 0x0388, 0x3d9b, 0x0c02, 0x8010, 22.318 + 0x8080, 0x3783, 0x8807, 0x8003, 0x319b, 0x0c08, 0x800c, 0x8080, 0x0388, 22.319 + 0x3d83, 0x8302, 0x043d, 0x8080, 0x8880, 0x8003, 0x8080, 0x9b80, 0x0737, 22.320 + 0x0c0c, 0x0388, 0x3d9b, 0x0c02, 0x8310, 0x033d, 0x8080, 0x9880, 0x010a, 22.321 + 0x3d9b, 0x0c02, 0x9b0a, 0x043d, 0x0c0c, 0x8080, 0x8880, 0x8303, 0x023d, 22.322 + 0x8080, 0x8380, 0x0737, 0x0a98, 0x8001, 0x3d9b, 0x0c03, 0x800c, 0x8080, 22.323 + 0x0388, 0x3d9b, 0x0c02, 0x830a, 0x043d, 0x8080, 0x9880, 0x010a, 0x8080, 22.324 + 0x8080, 0x379b, 0x0c07, 0x880c, 0x8303, 0x023d, 0x3183, 0x8008, 0x8080, 22.325 + 0x0598, 0x8001, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x0388, 0x3d9b, 0x0c02, 22.326 + 0x8010, 0x8080, 0x379b, 0x0c07, 0x9805, 0x010a, 0x8080, 0x8080, 0x9880, 22.327 + 0x1005, 0x3d83, 0x8302, 0x0831, 0x8080, 0x9880, 0x0105, 0x8080, 0x8080, 22.328 + 0x9880, 0x1005, 0x3d9b, 0x0c02, 0x800a, 0x8080, 0x3783, 0x9807, 0x0105, 22.329 + 0x9b80, 0x0831, 0x0c0c, 0x8080, 0x9880, 0x1005, 0x3d83, 0x8302, 0x043d, 22.330 + 0x8080, 0x9880, 0x010a, 0x8080, 0x8080, 0x379b, 0x0c07, 0x980c, 0x1005, 22.331 + 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x9880, 0x0105, 0x3d9b, 0x0c02, 0x830a, 22.332 + 0x053d, 0x8080, 0x9880, 0x1005, 0x3d83, 0x8002, 0x8080, 0x3783, 0x9807, 22.333 + 0x0105, 0x8080, 0x8080, 0x9880, 0x1005, 0x3d9b, 0x0c02, 0x830a, 0x0831, 22.334 + 0x8080, 0x9880, 0x0105, 0x8080, 0x8080, 0x379b, 0x0c07, 0x980c, 0x1005, 22.335 + 0x3d83, 0x8302, 0x043d, 0x8080, 0x9880, 0x0105, 0x9880, 0x0f0a, 0x8080, 22.336 + 0x9880, 0x1005, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x379b, 0x0c07, 0x9805, 22.337 + 0x0105, 0x9b80, 0x043a, 0x1c0c, 0x8080, 0x9b80, 0x0138, 0xa404, 0x3d83, 22.338 + 0x8302, 0x0831, 0x8080, 0x8880, 0x8004, 0x8080, 0x8080, 0x0488, 0x3d9b, 22.339 + 0x0c02, 0x800a, 0x8080, 0x3783, 0x8807, 0x8004, 0x8080, 0x8080, 0x0488, 22.340 + 0x3d83, 0x8302, 0x043d, 0x8080, 0x8880, 0x9b04, 0x023d, 0x0a0c, 0x8080, 22.341 + 0x9b80, 0x0737, 0x0c0c, 0x0488, 0x3d9b, 0x0c02, 0x8310, 0x043d, 0x8080, 22.342 + 0x8880, 0x8004, 0x3d83, 0x8005, 0x8080, 0x0488, 0x3d83, 0x8002, 0x8080, 22.343 + 0x3783, 0x8807, 0x8004, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x0488, 0x3d9b, 22.344 + 0x0c02, 0x830a, 0x0831, 0x8080, 0x8880, 0x8004, 0x8080, 0x9b80, 0x0737, 22.345 + 0x0c0c, 0x0488, 0x3d83, 0x8302, 0x043d, 0x8080, 0x8880, 0x8004, 0x8080, 22.346 + 0x8080, 0x0488, 0x3d9b, 0x0c02, 0x9b10, 0x053d, 0x0f0a, 0x8080, 0x379b, 22.347 + 0x0c07, 0x8805, 0x9b04, 0x023d, 0x0a0c, 0x3d9b, 0x0c04, 0x800c, 0x8080, 22.348 + 0x3b83, 0x8301, 0x023d, 0x3183, 0x8008, 0x8080, 0x8080, 0x8080, 0x8080, 22.349 + 0x9b80, 0x023d, 0x0a0c, 0x8080, 0x8380, 0x0737, 0x8080, 0x319b, 0x0c08, 22.350 + 0x800c, 0x8080, 0x0498, 0x83a2, 0x023d, 0x3d83, 0x8004, 0x8080, 0x0488, 22.351 + 0x8080, 0x8080, 0x379b, 0x0c07, 0x880c, 0x9b04, 0x023d, 0x100c, 0x8080, 22.352 + 0x8080, 0x0488, 0x3d9b, 0x0c02, 0x830a, 0x053d, 0x8080, 0x9880, 0x0106, 22.353 + 0x3d83, 0x8002, 0x8080, 0x3883, 0x8807, 0x8004, 0x8080, 0x8080, 0x0698, 22.354 + 0x9b01, 0x023d, 0x0a0c, 0x3183, 0x8008, 0x8080, 0x0488, 0x3d9b, 0x0c02, 22.355 + 0x8010, 0x8080, 0x389b, 0x0c07, 0x980c, 0x0106, 0x3d83, 0x9b02, 0x043d, 22.356 + 0x930e, 0x8080, 0x8880, 0x8004, 0x319b, 0x0c08, 0x800c, 0x8080, 0x0698, 22.357 + 0x8301, 0x023d, 0x3a83, 0x8004, 0x9b80, 0x0738, 0x050c, 0x0488, 0x9b80, 22.358 + 0x043d, 0x200c, 0x8080, 0x0980, 0x0000, 0x0000, 0x0040, 0x02ff, 0x3283, 22.359 + 0x8301, 0x023d, 0x3183, 0x8308, 0x092b, 0x8080, 0x3e9b, 0x0301, 0x8008, 22.360 + 0x8080, 0x8080, 0x0388, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x3783, 0x8807, 22.361 + 0x8003, 0x319b, 0x0c08, 0x800c, 0x8080, 0x0388, 0x3d83, 0x8302, 0x043d, 22.362 + 0x8080, 0x8880, 0x8003, 0x8080, 0x9b80, 0x0737, 0x0c0c, 0x0388, 0x3d9b, 22.363 + 0x0c02, 0x8310, 0x033d, 0x8080, 0x9880, 0x010a, 0x3d9b, 0x0c02, 0x9b0a, 22.364 + 0x043d, 0x0c0c, 0x8080, 0x8880, 0x8303, 0x023d, 0x8080, 0x8380, 0x0737, 22.365 + 0x0a98, 0x8001, 0x3d9b, 0x0c03, 0x800c, 0x8080, 0x0388, 0x3d9b, 0x0c02, 22.366 + 0x830a, 0x043d, 0x8080, 0x9880, 0x010a, 0x8080, 0x8080, 0x379b, 0x0c07, 22.367 + 0x880c, 0x8303, 0x023d, 0x319b, 0x0e08, 0x8093, 0x8080, 0x0598, 0x8001, 22.368 + 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x0388, 0x3d9b, 0x0c02, 0x8010, 0x8080, 22.369 + 0x379b, 0x0c07, 0x9805, 0x010a, 0x8080, 0x8080, 0x9880, 0x1005, 0x3d83, 22.370 + 0x8302, 0x0831, 0x8080, 0x9880, 0x0105, 0x8080, 0x8080, 0x9880, 0x1005, 22.371 + 0x3d9b, 0x0c02, 0x800a, 0x8080, 0x3783, 0x9807, 0x0105, 0x9b80, 0x0831, 22.372 + 0x0c0c, 0x8080, 0x9880, 0x1005, 0x3d83, 0x8302, 0x043d, 0x8080, 0x9880, 22.373 + 0x010a, 0x8080, 0x8080, 0x379b, 0x0c07, 0x980c, 0x1005, 0x3d9b, 0x0c02, 22.374 + 0x8010, 0x8080, 0x9880, 0x0105, 0x3d9b, 0x0c02, 0x830a, 0x053d, 0x8080, 22.375 + 0x9880, 0x1005, 0x3d83, 0x8002, 0x8080, 0x3783, 0x9807, 0x0105, 0x8080, 22.376 + 0x8080, 0x9880, 0x1005, 0x3d9b, 0x0c02, 0x830a, 0x0831, 0x8080, 0x9880, 22.377 + 0x0105, 0x8080, 0x8080, 0x379b, 0x0c07, 0x980c, 0x1005, 0x3d83, 0x8302, 22.378 + 0x043d, 0x8080, 0x9880, 0x0105, 0x9880, 0x0f0a, 0x8080, 0x9880, 0x1005, 22.379 + 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x379b, 0x0c07, 0x9805, 0x0105, 0x9b80, 22.380 + 0x043a, 0x1c0c, 0x8080, 0x9b80, 0x0138, 0xa404, 0x3d83, 0x8302, 0x0831, 22.381 + 0x8080, 0x8880, 0x8004, 0x8080, 0x8080, 0x0488, 0x3d9b, 0x0c02, 0x800a, 22.382 + 0x8080, 0x3783, 0x8807, 0x8004, 0x8080, 0x8080, 0x0488, 0x3d83, 0x8302, 22.383 + 0x043d, 0x8080, 0x8880, 0x9b04, 0x023d, 0x0a0c, 0x8080, 0x9b80, 0x0737, 22.384 + 0x0c0c, 0x0488, 0x3d9b, 0x0c02, 0x8310, 0x043d, 0x8080, 0x8880, 0x8004, 22.385 + 0x3d83, 0x8005, 0x8080, 0x0488, 0x3d83, 0x8002, 0x8080, 0x3783, 0x8807, 22.386 + 0x8004, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x0488, 0x3d9b, 0x0c02, 0x830a, 22.387 + 0x0831, 0x8080, 0x8880, 0x8004, 0x8080, 0x9b80, 0x0737, 0x0c0c, 0x0488, 22.388 + 0x3d83, 0x8302, 0x043d, 0x8080, 0x8880, 0x8004, 0x8080, 0x8080, 0x0488, 22.389 + 0x3d9b, 0x0c02, 0x8310, 0x053d, 0x8080, 0x379b, 0x0c07, 0x8805, 0x9b04, 22.390 + 0x023d, 0x0a0c, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x3b83, 0x8301, 0x023d, 22.391 + 0x3183, 0x8008, 0x8080, 0x8080, 0x8080, 0x8080, 0x9b80, 0x023d, 0x0a0c, 22.392 + 0x8080, 0x8380, 0x0737, 0x8080, 0x319b, 0x0c08, 0x800c, 0x8080, 0x0498, 22.393 + 0x83a2, 0x023d, 0x3d83, 0x8004, 0x8080, 0x0488, 0x8080, 0x8080, 0x379b, 22.394 + 0x0c07, 0x880c, 0x9b04, 0x023d, 0x100c, 0x8080, 0x8080, 0x0488, 0x3d9b, 22.395 + 0x0c02, 0x830a, 0x053d, 0x8080, 0x9880, 0x0106, 0x3d83, 0x8002, 0x8080, 22.396 + 0x3883, 0x8807, 0x8004, 0x8080, 0x8080, 0x0698, 0x9b01, 0x023d, 0x0a0c, 22.397 + 0x3183, 0x8008, 0x8080, 0x0488, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x389b, 22.398 + 0x0c07, 0x980c, 0x0106, 0x3d83, 0x9b02, 0x043d, 0x930e, 0x0298, 0x8005, 22.399 + 0x8880, 0x8004, 0x319b, 0x0c08, 0x980c, 0x0502, 0x8080, 0x0698, 0x8301, 22.400 + 0x023d, 0x3183, 0x9808, 0x0502, 0x9b80, 0x0738, 0x050c, 0x0488, 0x9b80, 22.401 + 0x043d, 0x200c, 0x0298, 0x8005, 0x0980, 0x0000, 0x0000, 0x0040, 0x03f2, 22.402 + 0x3283, 0x8301, 0x023d, 0x3183, 0x9b08, 0x092b, 0x0c0a, 0x1f9b, 0x0409, 22.403 + 0x80a4, 0x8080, 0x9a80, 0x0a09, 0x880d, 0x8004, 0x9b80, 0x023d, 0x100c, 22.404 + 0x9a80, 0x0a09, 0x880e, 0x8304, 0x0737, 0x8080, 0x319b, 0x0c08, 0x9a0c, 22.405 + 0x0a09, 0x880f, 0x8004, 0x4a83, 0x8301, 0x023d, 0x3d83, 0x9a04, 0x0a09, 22.406 + 0x880c, 0x8004, 0x8080, 0x0c88, 0x099a, 0x0d0a, 0x0488, 0x379b, 0x0c07, 22.407 + 0x830c, 0x0132, 0x3d9b, 0x0c02, 0x8010, 0x099a, 0x0e0a, 0x0488, 0x8080, 22.408 + 0x3d9b, 0x0c02, 0x9b0a, 0x043d, 0x0c0c, 0x099a, 0x0f0a, 0x0488, 0x9880, 22.409 + 0xa204, 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x0488, 0x3783, 0x8807, 0x8004, 22.410 + 0x9a80, 0x0a09, 0x880d, 0x8004, 0x0488, 0x3d9b, 0x0c02, 0x830a, 0x0831, 22.411 + 0x099a, 0x0e0a, 0x0488, 0x8880, 0x8004, 0x9a80, 0x0a09, 0x880f, 0x9b04, 22.412 + 0x0737, 0x0c0c, 0x3e83, 0x8301, 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x880c, 22.413 + 0x8004, 0x8080, 0x319b, 0x0c08, 0x9a0c, 0x0a09, 0x880d, 0x8004, 0x9b80, 22.414 + 0x023d, 0x100c, 0x3183, 0x9a08, 0x0a09, 0x880e, 0x8304, 0x0737, 0x8080, 22.415 + 0x9a80, 0x0a09, 0x880f, 0x8004, 0x4a83, 0x8301, 0x023d, 0x3183, 0x9a08, 22.416 + 0x0a09, 0x880c, 0x8004, 0x8080, 0x319b, 0x0c08, 0x9a0c, 0x0a09, 0x880d, 22.417 + 0x9b04, 0x0737, 0x0c0c, 0x4183, 0x9b01, 0x023d, 0x0a0c, 0x9a80, 0x0a09, 22.418 + 0x880e, 0x8304, 0x073a, 0x8080, 0x319b, 0x0c08, 0x9a0c, 0x0a09, 0x880f, 22.419 + 0x8004, 0x8380, 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x880c, 0x9b04, 0x0738, 22.420 + 0xc20e, 0x8080, 0x9a80, 0x0a09, 0x880d, 0x9b04, 0x0738, 0x0c0c, 0x4b83, 22.421 + 0x9b01, 0x023d, 0x100c, 0x9a80, 0x0a09, 0x880e, 0x8004, 0x9b80, 0x023d, 22.422 + 0x0a0c, 0x3d9b, 0x0c04, 0x9a0c, 0x0a09, 0x880f, 0x8004, 0x3f83, 0x8301, 22.423 + 0x023d, 0x9a80, 0x0a09, 0x880c, 0x8304, 0x0738, 0x8080, 0x9a80, 0x0a09, 22.424 + 0x880d, 0x8004, 0x9b80, 0x023d, 0x0a0c, 0x3183, 0x9a08, 0x0a09, 0x880e, 22.425 + 0x8004, 0x8080, 0x9a80, 0x0a09, 0x880f, 0x9b04, 0x0738, 0x0c0c, 0x489b, 22.426 + 0x0401, 0x83a2, 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x880c, 0x8004, 0x0488, 22.427 + 0x9b80, 0x0831, 0x0c0c, 0x099a, 0x0d0a, 0x0488, 0x8880, 0x9b04, 0x023d, 22.428 + 0x100c, 0x9a80, 0x0a09, 0x880e, 0x8304, 0x0735, 0x0298, 0x8010, 0x3d9b, 22.429 + 0x0c04, 0x9a0c, 0x0a09, 0x880f, 0x8004, 0x3283, 0x8301, 0x023d, 0x3183, 22.430 + 0x9a08, 0x0a09, 0x880c, 0x9b04, 0x0735, 0x0c0c, 0x8080, 0x9a80, 0x0a09, 22.431 + 0x880d, 0x8004, 0x9b80, 0x023d, 0x0a0c, 0x9a80, 0x0a09, 0x880e, 0x8304, 22.432 + 0x0737, 0x8080, 0x319b, 0x0c08, 0x9a0c, 0x0a09, 0x880f, 0x8004, 0x4a83, 22.433 + 0x8301, 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x880c, 0x8004, 0x9b80, 0x023d, 22.434 + 0x0a0c, 0x9a80, 0x0a09, 0x880d, 0x9b04, 0x0737, 0x0c0c, 0x3283, 0x9b01, 22.435 + 0x023d, 0x100c, 0x9a80, 0x0a09, 0x880e, 0x8004, 0x8080, 0x3d9b, 0x0c04, 22.436 + 0x9a0c, 0x0a09, 0x880f, 0x8004, 0x0498, 0x83a2, 0x023d, 0x9a80, 0x0a09, 22.437 + 0x880c, 0x8304, 0x0737, 0x0488, 0x8080, 0x099a, 0x0d0a, 0x0488, 0x9880, 22.438 + 0x0404, 0x3d9b, 0x0c02, 0x830a, 0x0831, 0x099a, 0x0e0a, 0x0488, 0x8880, 22.439 + 0x8004, 0x9a80, 0x0a09, 0x880f, 0x9b04, 0x0737, 0x0c0c, 0x3e83, 0x8301, 22.440 + 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x880c, 0x8004, 0x8080, 0x319b, 0x0c08, 22.441 + 0x9a0c, 0x0a09, 0x880d, 0x8004, 0x9b80, 0x023d, 0x100c, 0x3183, 0x9a08, 22.442 + 0x0a09, 0x880e, 0x9b04, 0x0737, 0x0109, 0x9b80, 0x023d, 0x0a0c, 0x3d9b, 22.443 + 0x0c04, 0x9a0c, 0x0a09, 0x880f, 0x8004, 0x4a83, 0x8301, 0x023d, 0x3183, 22.444 + 0x9a08, 0x0a09, 0x880c, 0x8004, 0x8080, 0x319b, 0x0c08, 0x9a0c, 0x0a09, 22.445 + 0x880d, 0x9b04, 0x0737, 0x0c0c, 0x4583, 0x9b01, 0x023d, 0x0a0c, 0x9a80, 22.446 + 0x0a09, 0x880e, 0x8304, 0x073e, 0x8080, 0x319b, 0x0c08, 0x9a0c, 0x0a09, 22.447 + 0x880f, 0x8004, 0x8380, 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x880c, 0x9b04, 22.448 + 0x073e, 0x0c0c, 0x8080, 0x9a80, 0x0a09, 0x880d, 0x9b04, 0x0738, 0x0c0c, 22.449 + 0x5083, 0x9b01, 0x023d, 0x100c, 0x3183, 0x9a08, 0x0a09, 0x880e, 0x8004, 22.450 + 0x9b80, 0x023d, 0x0a0c, 0x3d9b, 0x0c04, 0x9a0c, 0x0a09, 0x880f, 0x9b04, 22.451 + 0x0738, 0x0c0c, 0x4483, 0x8301, 0x023d, 0x3183, 0x9a08, 0x0a09, 0x880c, 22.452 + 0x8304, 0x073d, 0x8080, 0x9a80, 0x0a09, 0x880d, 0x8004, 0x9b80, 0x023d, 22.453 + 0x0a0c, 0x3183, 0x9a08, 0x0a09, 0x880e, 0x8004, 0x9b80, 0x023d, 0x100c, 22.454 + 0x9a80, 0x0a09, 0x880f, 0x9b04, 0x073d, 0x0c0c, 0x489b, 0x0401, 0x83a4, 22.455 + 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x880c, 0x8004, 0x0488, 0x8080, 0x099a, 22.456 + 0x0d0a, 0x0488, 0x8880, 0x8304, 0x023d, 0x3183, 0x9a08, 0x0a09, 0x880e, 22.457 + 0x8304, 0x0738, 0x0298, 0x8010, 0x3d9b, 0x0c04, 0x9a0c, 0x0a09, 0x880f, 22.458 + 0x8004, 0x0009, 0x0000, 0x4000, 0xcf00, 0x8302, 0x013e, 0x3d83, 0x8302, 22.459 + 0x033a, 0x2b83, 0x9b09, 0x062c, 0x100c, 0x9880, 0x300c, 0x8080, 0x099a, 22.460 + 0x0a0a, 0x0a98, 0x8010, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x980e, 0x100a, 22.461 + 0x9880, 0x100c, 0x8080, 0x099a, 0x0f0a, 0x0a98, 0x8010, 0x0c88, 0x3d83, 22.462 + 0x8002, 0x099a, 0x0c0a, 0x0a98, 0x8010, 0x8080, 0x9a80, 0x0a09, 0x980d, 22.463 + 0x100a, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x0a98, 0x8010, 0x8080, 0x9a80, 22.464 + 0x0a09, 0x980a, 0x100a, 0x8080, 0x3d83, 0x8302, 0x043d, 0x0982, 0x0a98, 22.465 + 0x8010, 0x8080, 0x9a80, 0x0a09, 0x800a, 0x8080, 0x8080, 0x099a, 0x0e0a, 22.466 + 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800f, 0x8080, 0x3d83, 0x8002, 0x099a, 22.467 + 0x0c0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800d, 0x8380, 0x013c, 0x8380, 22.468 + 0x053d, 0x099a, 0x0e0a, 0x8080, 0x0c98, 0x8010, 0x9a80, 0x0a09, 0x800a, 22.469 + 0x8380, 0x013e, 0x3d83, 0x8302, 0x033a, 0x0982, 0x8080, 0x0c98, 0x8030, 22.470 + 0x9a80, 0x0a09, 0x800a, 0x9880, 0x200c, 0x8080, 0x099a, 0x0e0a, 0x8080, 22.471 + 0x0c98, 0x8010, 0x9a80, 0x0a09, 0x800f, 0x8880, 0x830c, 0x023d, 0x9a80, 22.472 + 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x8080, 0x9a80, 22.473 + 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 22.474 + 0x3d83, 0x8204, 0x8009, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 22.475 + 0x9a80, 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x3c83, 22.476 + 0x8301, 0x023d, 0x3d83, 0x8205, 0x8009, 0x9880, 0x200c, 0x8080, 0x099a, 22.477 + 0x0d0a, 0x8080, 0x0c98, 0x9b10, 0x023d, 0x200c, 0x9a80, 0x0a09, 0x800e, 22.478 + 0x8880, 0x800c, 0x9a80, 0x0a09, 0x800a, 0x8380, 0x013e, 0x3d83, 0x8302, 22.479 + 0x033a, 0x0982, 0x8080, 0x0c98, 0x8030, 0x9a80, 0x0a09, 0x800a, 0x9080, 22.480 + 0x8020, 0x9a80, 0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 0x099a, 0x0f0a, 22.481 + 0x8080, 0x0c88, 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x8080, 0x8080, 0x9a80, 22.482 + 0x0a09, 0x800d, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 22.483 + 0x0a09, 0x800a, 0x8080, 0x3d83, 0x8302, 0x043d, 0x0982, 0x8080, 0x8080, 22.484 + 0x9a80, 0x0a09, 0x800a, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 22.485 + 0x9a80, 0x0a09, 0x800f, 0x8080, 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x8080, 22.486 + 0x8080, 0x9a80, 0x0a09, 0x800d, 0x8380, 0x013c, 0x8380, 0x053d, 0x0982, 22.487 + 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800a, 0x8380, 0x013e, 0x3d83, 22.488 + 0x8302, 0x033a, 0x0982, 0x8080, 0x0c98, 0x8030, 0x9a80, 0x0a09, 0x800a, 22.489 + 0x9880, 0x200c, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 22.490 + 0x0f0a, 0x8080, 0x3e83, 0x8301, 0x023d, 0x9a80, 0x0a09, 0x800c, 0x9880, 22.491 + 0x200c, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x0c98, 0x8010, 0x9a80, 0x0a09, 22.492 + 0x800e, 0x8880, 0x800c, 0x9a80, 0x0a09, 0x800a, 0x8080, 0x3d83, 0x8302, 22.493 + 0x043d, 0x0982, 0x0a98, 0x8001, 0x8080, 0x9a80, 0x0a09, 0x980a, 0x010a, 22.494 + 0x8380, 0x013c, 0x8380, 0x053d, 0x099a, 0x0e0a, 0x0a98, 0x8001, 0x0c98, 22.495 + 0x8020, 0x9a80, 0x0a09, 0x980f, 0x010a, 0x9880, 0x100c, 0x3d83, 0x8002, 22.496 + 0x099a, 0x0c0a, 0x0a98, 0x8001, 0x0c88, 0x8080, 0x099a, 0x0d0a, 0x0a98, 22.497 + 0x8001, 0x3c83, 0x8001, 0x9a80, 0x0a09, 0x980e, 0x010a, 0x9880, 0x100c, 22.498 + 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8001, 0x0009, 0x0000, 0x4000, 0xf100, 22.499 + 0x8302, 0x0132, 0x3d83, 0x8302, 0x0831, 0x2b83, 0x8009, 0x9b80, 0x013e, 22.500 + 0x0803, 0x8080, 0x8080, 0x9880, 0x010a, 0x3d9b, 0x0c02, 0x8010, 0x8080, 22.501 + 0x3783, 0x8807, 0x8003, 0x319b, 0x0c08, 0x800c, 0x8080, 0x0388, 0x3d83, 22.502 + 0x8302, 0x043d, 0x8080, 0x8880, 0x8003, 0x8080, 0x9b80, 0x0737, 0x0c0c, 22.503 + 0x0388, 0x3d9b, 0x0c02, 0x8310, 0x033d, 0x8080, 0x9880, 0x010a, 0x3d9b, 22.504 + 0x0c02, 0x9b0a, 0x043d, 0x0c0c, 0x8080, 0x8880, 0x8303, 0x023d, 0x8080, 22.505 + 0x8380, 0x0737, 0x0a98, 0x8001, 0x3d9b, 0x0c03, 0x800c, 0x8080, 0x0388, 22.506 + 0x3d9b, 0x0c02, 0x8310, 0x043d, 0x8080, 0x9880, 0x010a, 0x8080, 0x8080, 22.507 + 0x379b, 0x0c07, 0x880c, 0x8303, 0x023d, 0x319b, 0x0e08, 0x8093, 0x8080, 22.508 + 0x0598, 0x8001, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x0388, 0x3d9b, 0x0c02, 22.509 + 0x8010, 0x8080, 0x379b, 0x0c07, 0x9805, 0x010a, 0x8080, 0x8080, 0x9880, 22.510 + 0x1005, 0x3d83, 0x8302, 0x0831, 0x8080, 0x9880, 0x0105, 0x8080, 0x8080, 22.511 + 0x9880, 0x1005, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x3783, 0x9807, 0x0105, 22.512 + 0x9b80, 0x0831, 0x0c0c, 0x8080, 0x9880, 0x1005, 0x3d83, 0x8302, 0x043d, 22.513 + 0x8080, 0x9880, 0x010a, 0x8080, 0x8080, 0x379b, 0x0c07, 0x980c, 0x1005, 22.514 + 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x9880, 0x0105, 0x3d9b, 0x0c02, 0x830a, 22.515 + 0x053d, 0x8080, 0x9880, 0x1005, 0x3d83, 0x8002, 0x8080, 0x3783, 0x9807, 22.516 + 0x0105, 0x8080, 0x8080, 0x9880, 0x1005, 0x3d9b, 0x0c02, 0x8310, 0x0831, 22.517 + 0x8080, 0x9880, 0x0105, 0x8080, 0x8080, 0x379b, 0x0c07, 0x980c, 0x1005, 22.518 + 0x3d83, 0x8302, 0x043d, 0x8080, 0x9880, 0x0105, 0x9880, 0x0f0a, 0x8080, 22.519 + 0x9880, 0x1005, 0x3d9b, 0x0c02, 0x8010, 0x8080, 0x379b, 0x0c07, 0x9805, 22.520 + 0x0105, 0x9b80, 0x043a, 0x1c0c, 0x8080, 0x9b80, 0x0138, 0xa404, 0x3d83, 22.521 + 0x8302, 0x0831, 0x8080, 0x8880, 0x8004, 0x8080, 0x8080, 0x0488, 0x3d9b, 22.522 + 0x0c02, 0x8010, 0x8080, 0x3783, 0x8807, 0x8004, 0x8080, 0x8080, 0x0488, 22.523 + 0x3d83, 0x8302, 0x043d, 0x8080, 0x8880, 0x9b04, 0x023d, 0x0a0c, 0x8080, 22.524 + 0x9b80, 0x0737, 0x0c0c, 0x0488, 0x3d9b, 0x0c02, 0x8310, 0x043d, 0x8080, 22.525 + 0x8880, 0x8004, 0x3d83, 0x8005, 0x8080, 0x0488, 0x3d83, 0x8002, 0x8080, 22.526 + 0x3783, 0x8807, 0x8004, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x0488, 0x3d9b, 22.527 + 0x0c02, 0x8310, 0x0831, 0x8080, 0x8880, 0x8004, 0x8080, 0x9b80, 0x0737, 22.528 + 0x0c0c, 0x0488, 0x3d83, 0x8302, 0x043d, 0x8080, 0x8880, 0x8004, 0x8080, 22.529 + 0x8080, 0x0488, 0x3d9b, 0x0c02, 0x8310, 0x053d, 0x8080, 0x379b, 0x0c07, 22.530 + 0x8805, 0x9b04, 0x023d, 0x0a0c, 0x3d9b, 0x0c04, 0x800c, 0x8080, 0x3c83, 22.531 + 0x8301, 0x023d, 0x3183, 0x8008, 0x8080, 0x8080, 0x8080, 0x9b80, 0x0737, 22.532 + 0x030c, 0x0a98, 0x9b03, 0x023d, 0x100c, 0x9880, 0x030a, 0x8080, 0x0a98, 22.533 + 0x8003, 0x319b, 0x0c08, 0x980c, 0x030a, 0x8080, 0x0498, 0x83a2, 0x023d, 22.534 + 0x9880, 0x030a, 0x9b80, 0x0737, 0x010c, 0x0488, 0x8080, 0x0a98, 0x8003, 22.535 + 0x0c98, 0x980c, 0x050a, 0x3d9b, 0x0c02, 0x9b10, 0x043d, 0x300c, 0x0a98, 22.536 + 0x8003, 0x8880, 0x8004, 0x9880, 0x010a, 0x8080, 0x0698, 0x8301, 0x023d, 22.537 + 0x9880, 0x010a, 0x8080, 0x0488, 0x9b80, 0x043d, 0x200c, 0x8080, 0x9880, 22.538 + 0x0106, 0x8080, 0x8080, 0x8880, 0x8004, 0x8080, 0x9880, 0x0c0c, 0x8380, 22.539 + 0x023d, 0x3d9b, 0x0c04, 0x8010, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.540 + 0x8080, 0x9880, 0x050c, 0x8080, 0x3d9b, 0x0c04, 0x8003, 0x8080, 0x0009, 22.541 + 0x0000, 0x4000, 0xf000, 0x8303, 0x0132, 0x3d83, 0x8302, 0x0831, 0x2b9b, 22.542 + 0x0a09, 0x9b0c, 0x091f, 0xa404, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x0488, 22.543 + 0x8080, 0x3d9b, 0x0c02, 0x8010, 0x099a, 0x0e0a, 0x0488, 0x3783, 0x8007, 22.544 + 0x9b80, 0x0831, 0x0c0c, 0x099a, 0x0f0a, 0x0488, 0x8380, 0x014a, 0x3d83, 22.545 + 0x8302, 0x043d, 0x099a, 0x0c0a, 0x0488, 0x8080, 0x8880, 0x9a0c, 0x0a09, 22.546 + 0x880d, 0x9b04, 0x0737, 0x0c0c, 0x3283, 0x9b01, 0x023d, 0x100c, 0x9a80, 22.547 + 0x0a09, 0x880e, 0x8004, 0x9b80, 0x023d, 0x0a0c, 0x3d9b, 0x0c04, 0x9a0c, 22.548 + 0x0a09, 0x880f, 0x8004, 0x0498, 0x83a2, 0x023d, 0x9a80, 0x0a09, 0x880c, 22.549 + 0x8304, 0x0737, 0x0488, 0x8080, 0x099a, 0x0d0a, 0x0488, 0x8880, 0x9b04, 22.550 + 0x023d, 0x100c, 0x3183, 0x9a08, 0x0a09, 0x880e, 0x8004, 0x0488, 0x8080, 22.551 + 0x099a, 0x0f0a, 0x0488, 0x379b, 0x0c07, 0x830c, 0x013e, 0x3d83, 0x8302, 22.552 + 0x043d, 0x099a, 0x0c0a, 0x0488, 0x8080, 0x9b80, 0x0831, 0x0c0c, 0x099a, 22.553 + 0x0d0a, 0x0488, 0x8080, 0x3d9b, 0x0c02, 0x8310, 0x0831, 0x099a, 0x0e0a, 22.554 + 0x0488, 0x3783, 0x8007, 0x8080, 0x099a, 0x0f0a, 0x0488, 0x8380, 0x014a, 22.555 + 0x3d83, 0x8302, 0x0831, 0x099a, 0x0c0a, 0x0488, 0x8080, 0x9b80, 0x0831, 22.556 + 0x0c0c, 0x099a, 0x0d0a, 0x0488, 0x379b, 0x0c07, 0x830c, 0x0141, 0x3d9b, 22.557 + 0x0c02, 0x8010, 0x099a, 0x0e0a, 0x0488, 0x3a83, 0x8007, 0x9b80, 0x0831, 22.558 + 0x0c0c, 0x099a, 0x0f0a, 0x0488, 0x8080, 0x3d83, 0x8302, 0x043d, 0x099a, 22.559 + 0x0c0a, 0x0488, 0x389b, 0x0e07, 0x80c2, 0x8080, 0x099a, 0x0d0a, 0x0488, 22.560 + 0x389b, 0x0c07, 0x830c, 0x014b, 0x3d9b, 0x0c02, 0x8010, 0x099a, 0x0e0a, 22.561 + 0x0488, 0x8080, 0x3d9b, 0x0c02, 0x9b0a, 0x043d, 0x0c0c, 0x099a, 0x0f0a, 22.562 + 0x0488, 0x8380, 0x013f, 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x0488, 0x3883, 22.563 + 0x8007, 0x8080, 0x099a, 0x0d0a, 0x0488, 0x8080, 0x3d9b, 0x0c02, 0x8310, 22.564 + 0x0831, 0x099a, 0x0e0a, 0x0488, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x0488, 22.565 + 0x389b, 0x0c07, 0x9b0c, 0x0148, 0xa204, 0x3d83, 0x8302, 0x043d, 0x099a, 22.566 + 0x0c0a, 0x0488, 0x8880, 0x8004, 0x319b, 0x0c08, 0x9a0c, 0x0a09, 0x880d, 22.567 + 0x8004, 0x0488, 0x3d9b, 0x0c02, 0x8010, 0x099a, 0x0e0a, 0x0488, 0x3583, 22.568 + 0x9807, 0x1002, 0x9b80, 0x043d, 0x0c0c, 0x099a, 0x0f0a, 0x0488, 0x8380, 22.569 + 0x0132, 0x3d83, 0x8302, 0x0831, 0x099a, 0x0c0a, 0x0488, 0x359b, 0x0c07, 22.570 + 0x800c, 0x8080, 0x099a, 0x0d0a, 0x0488, 0x8080, 0x3d9b, 0x0c02, 0x8010, 22.571 + 0x099a, 0x0e0a, 0x0488, 0x3783, 0x8007, 0x9b80, 0x0831, 0x0c0c, 0x099a, 22.572 + 0x0f0a, 0x0488, 0x8380, 0x014a, 0x3d83, 0x8302, 0x043d, 0x099a, 0x0c0a, 22.573 + 0x0488, 0x8080, 0x3d9b, 0x0c02, 0x800a, 0x099a, 0x0d0a, 0x0488, 0x379b, 22.574 + 0x0c07, 0x830c, 0x0132, 0x3d9b, 0x0c02, 0x8010, 0x099a, 0x0e0a, 0x0488, 22.575 + 0x8080, 0x9b80, 0x043d, 0x0c0c, 0x099a, 0x0f0a, 0x0488, 0x9880, 0xa204, 22.576 + 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x0488, 0x3783, 0x8807, 0x8004, 0x9a80, 22.577 + 0x0a09, 0x880d, 0x8004, 0x0498, 0x9b04, 0x023d, 0x100c, 0x3183, 0x9a08, 22.578 + 0x0a09, 0x880e, 0x8004, 0x0488, 0x8080, 0x099a, 0x0f0a, 0x0488, 0x379b, 22.579 + 0x0c07, 0x830c, 0x013e, 0x3d83, 0x8302, 0x043d, 0x099a, 0x0c0a, 0x0488, 22.580 + 0x8080, 0x9b80, 0x0831, 0x0c0c, 0x099a, 0x0d0a, 0x0488, 0x8080, 0x3d9b, 22.581 + 0x0c02, 0x8310, 0x0831, 0x099a, 0x0e0a, 0x0488, 0x379b, 0x0907, 0x8001, 22.582 + 0x3d9b, 0x0c02, 0x9b0a, 0x043d, 0x0c0c, 0x099a, 0x0f0a, 0x0488, 0x8380, 22.583 + 0x014a, 0x3d83, 0x8302, 0x0831, 0x099a, 0x0c0a, 0x0488, 0x8080, 0x8080, 22.584 + 0x099a, 0x0d0a, 0x0488, 0x379b, 0x0c07, 0x9b0c, 0x0139, 0x010a, 0x3d9b, 22.585 + 0x0c02, 0x8010, 0x099a, 0x0e0a, 0x0488, 0x8080, 0x9b80, 0x0831, 0x0c0c, 22.586 + 0x099a, 0x0f0a, 0x0488, 0x9880, 0x010a, 0x3d83, 0x8002, 0x099a, 0x0c0a, 22.587 + 0x0488, 0x379b, 0x0c07, 0x9807, 0x010a, 0x8080, 0x099a, 0x0d0a, 0x0488, 22.588 + 0x0c98, 0x980c, 0x010a, 0x3d9b, 0x0c02, 0x8010, 0x099a, 0x0e0a, 0x0488, 22.589 + 0x9880, 0x010a, 0x8080, 0x099a, 0x0f0a, 0x0488, 0x379b, 0x0c07, 0x9804, 22.590 + 0x010a, 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x0488, 0x9880, 0x010a, 0x8080, 22.591 + 0x099a, 0x0d0a, 0x0488, 0x9880, 0x010a, 0x3d9b, 0x0c02, 0x8010, 0x099a, 22.592 + 0x0e0a, 0x0488, 0x9880, 0x010a, 0x3d9b, 0x0c02, 0x800a, 0x099a, 0x0f0a, 22.593 + 0x0488, 0x379b, 0x0c07, 0x9802, 0x010a, 0x3d9b, 0x0c02, 0x9b10, 0x043d, 22.594 + 0x100c, 0x099a, 0x0c0a, 0x0488, 0x9880, 0x010a, 0x9b80, 0x043d, 0x200c, 22.595 + 0x099a, 0x0d0a, 0x0488, 0x9880, 0x010a, 0x3d9b, 0x0c02, 0x9b10, 0x043d, 22.596 + 0x300c, 0x099a, 0x0e0a, 0x0488, 0x9880, 0x010a, 0x9b80, 0x043d, 0x400c, 22.597 + 0x099a, 0x0f0a, 0x0488, 0x0980, 0x0000, 0x0000, 0x0040, 0x02cb, 0x3e83, 22.598 + 0x8301, 0x023d, 0x3a83, 0x8303, 0x092b, 0x2a9b, 0x0c06, 0x8010, 0x0c98, 22.599 + 0x8030, 0x9a80, 0x0a09, 0x980a, 0x100a, 0x9880, 0x200c, 0x8080, 0x099a, 22.600 + 0x0e0a, 0x0a98, 0x8010, 0x0c98, 0x8010, 0x9a80, 0x0a09, 0x980f, 0x100a, 22.601 + 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 0x980c, 0x100a, 0x8080, 0x8080, 22.602 + 0x099a, 0x0d0a, 0x0a98, 0x8010, 0x8080, 0x9a80, 0x0a09, 0x980e, 0x100a, 22.603 + 0x8080, 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8010, 0x8380, 0x023d, 0x3d83, 22.604 + 0x8204, 0x9809, 0x100a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 22.605 + 0x9a80, 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 22.606 + 0x023d, 0x9a80, 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 22.607 + 0x3c83, 0x8001, 0x3d83, 0x9a05, 0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 22.608 + 0x099a, 0x0a0a, 0x8080, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 22.609 + 0x9880, 0x300c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 22.610 + 0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x0c88, 22.611 + 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800d, 22.612 + 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800a, 22.613 + 0x8080, 0x3d83, 0x8302, 0x043d, 0x0982, 0x8080, 0x8080, 0x9a80, 0x0a09, 22.614 + 0x800a, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 22.615 + 0x800f, 0x8380, 0x013c, 0x3d83, 0x8302, 0x053d, 0x0982, 0x8080, 0x0c98, 22.616 + 0x8020, 0x9a80, 0x0a09, 0x800d, 0x9880, 0x100c, 0x3d9b, 0x0c02, 0x8020, 22.617 + 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x3e83, 22.618 + 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 0x9880, 0x300c, 0x8080, 0x099a, 22.619 + 0x0a0a, 0x8080, 0x2090, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c98, 0x8010, 22.620 + 0x9a80, 0x0a09, 0x800f, 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 0x800c, 22.621 + 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800e, 22.622 + 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 0x3d83, 0x8204, 22.623 + 0x8009, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 22.624 + 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 0x023d, 0x9a80, 22.625 + 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x3c83, 0x8001, 22.626 + 0x3d83, 0x8205, 0x8009, 0x9880, 0x200c, 0x8080, 0x099a, 0x0a0a, 0x8080, 22.627 + 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 0x9880, 0x300c, 0x8080, 22.628 + 0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800e, 0x8880, 22.629 + 0x800c, 0x9a80, 0x0a09, 0x800f, 0x8380, 0x013e, 0x3d83, 0x8002, 0x099a, 22.630 + 0x0c0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800d, 0x9880, 0x100c, 22.631 + 0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 0x0a0a, 0x8080, 22.632 + 0x8380, 0x023d, 0x3d83, 0x8204, 0x9809, 0x010a, 0x8080, 0x8080, 0x099a, 22.633 + 0x0a0a, 0x0a98, 0x8001, 0x4183, 0x8001, 0x3d83, 0x9a05, 0x0a09, 0x980e, 22.634 + 0x010a, 0x9880, 0x200c, 0x8080, 0x099a, 0x0f0a, 0x0a98, 0x8001, 0x0c98, 22.635 + 0x8010, 0x9a80, 0x0a09, 0x980c, 0x010a, 0x8880, 0x800c, 0x9a80, 0x0a09, 22.636 + 0x980d, 0x010a, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x0a98, 0x8001, 0x0c98, 22.637 + 0x8010, 0x9a80, 0x0a09, 0x980a, 0x010a, 0x0980, 0x0000, 0x0000, 0x0040, 22.638 + 0x02d7, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8303, 0x092b, 0x2c9b, 0x0c06, 22.639 + 0x8010, 0x0c98, 0x8030, 0x9a80, 0x0a09, 0x980a, 0x100a, 0x9880, 0x200c, 22.640 + 0x8080, 0x099a, 0x0e0a, 0x0a98, 0x8010, 0x0c98, 0x8010, 0x9a80, 0x0a09, 22.641 + 0x980f, 0x100a, 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 0x980c, 0x100a, 22.642 + 0x8080, 0x8080, 0x099a, 0x0d0a, 0x0a98, 0x8010, 0x8080, 0x9a80, 0x0a09, 22.643 + 0x980e, 0x100a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8010, 0x8380, 22.644 + 0x023d, 0x3d83, 0x8204, 0x9809, 0x100a, 0x8080, 0x8080, 0x099a, 0x0a0a, 22.645 + 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 22.646 + 0x8080, 0x8380, 0x023d, 0x9a80, 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 22.647 + 0x0d0a, 0x8080, 0x3c83, 0x8001, 0x3d83, 0x9a05, 0x0a09, 0x800e, 0x9880, 22.648 + 0x100c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x3e83, 0x8301, 0x023d, 0x3a83, 22.649 + 0x8203, 0x8009, 0x9880, 0x300c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x0c98, 22.650 + 0x8020, 0x9a80, 0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 0x099a, 0x0f0a, 22.651 + 0x8080, 0x0c88, 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x8080, 0x8080, 0x9a80, 22.652 + 0x0a09, 0x800d, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 22.653 + 0x0a09, 0x800a, 0x8080, 0x3d83, 0x8302, 0x043d, 0x0982, 0x8080, 0x8080, 22.654 + 0x9a80, 0x0a09, 0x800a, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 22.655 + 0x9a80, 0x0a09, 0x800f, 0x8380, 0x013c, 0x3d83, 0x8302, 0x053d, 0x0982, 22.656 + 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800d, 0x9880, 0x100c, 0x3d9b, 22.657 + 0x0c02, 0x8020, 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 0x0a0a, 22.658 + 0x8080, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 0x9880, 0x300c, 22.659 + 0x8080, 0x099a, 0x0a0a, 0x8080, 0x2090, 0x8080, 0x099a, 0x0e0a, 0x8080, 22.660 + 0x0c98, 0x8010, 0x9a80, 0x0a09, 0x800f, 0x8880, 0x830c, 0x023d, 0x9a80, 22.661 + 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x8080, 0x9a80, 22.662 + 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 22.663 + 0x3d83, 0x8204, 0x8009, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 22.664 + 0x9a80, 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 22.665 + 0x023d, 0x9a80, 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 22.666 + 0x3c83, 0x8001, 0x3d83, 0x8205, 0x8009, 0x9880, 0x200c, 0x8080, 0x099a, 22.667 + 0x0a0a, 0x8080, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 0x9880, 22.668 + 0x300c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 22.669 + 0x800e, 0x8880, 0x800c, 0x9a80, 0x0a09, 0x800f, 0x8380, 0x013e, 0x3d83, 22.670 + 0x8002, 0x099a, 0x0c0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800d, 22.671 + 0x9880, 0x100c, 0x3d80, 0x3004, 0x930e, 0x099a, 0x0e0a, 0x8080, 0x0c88, 22.672 + 0x9880, 0x200c, 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 0x3d83, 0x8204, 22.673 + 0x9809, 0x010a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8001, 0x3c83, 22.674 + 0x8001, 0x3d83, 0x9a05, 0x0a09, 0x980e, 0x010a, 0x9880, 0x200c, 0x8080, 22.675 + 0x099a, 0x0f0a, 0x0a98, 0x8001, 0x0c98, 0x8310, 0x023d, 0x3d83, 0x9a04, 22.676 + 0x0a09, 0x980c, 0x010a, 0x8880, 0x800c, 0x9a80, 0x0a09, 0x980d, 0x010a, 22.677 + 0x8380, 0x013c, 0x8080, 0x099a, 0x0e0a, 0x0a98, 0x8001, 0x0c98, 0x8010, 22.678 + 0x9a80, 0x0a09, 0x980a, 0x010a, 0x0980, 0x0000, 0x0000, 0x0040, 0x02dd, 22.679 + 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8303, 0x092b, 0x2f9b, 0x0c06, 0x8010, 22.680 + 0x0c98, 0x8030, 0x9a80, 0x0a09, 0x980a, 0x100a, 0x9880, 0x200c, 0x8080, 22.681 + 0x099a, 0x0e0a, 0x0a98, 0x8010, 0x0c98, 0x8010, 0x9a80, 0x0a09, 0x980f, 22.682 + 0x100a, 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 0x980c, 0x100a, 0x8080, 22.683 + 0x8080, 0x099a, 0x0d0a, 0x0a98, 0x8010, 0x8080, 0x9a80, 0x0a09, 0x980e, 22.684 + 0x100a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8010, 0x8380, 0x023d, 22.685 + 0x3d83, 0x8204, 0x9809, 0x100a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 22.686 + 0x8080, 0x9a80, 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 22.687 + 0x8380, 0x023d, 0x9a80, 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 22.688 + 0x8080, 0x3c83, 0x8001, 0x3d83, 0x9a05, 0x0a09, 0x800e, 0x9880, 0x100c, 22.689 + 0x8080, 0x099a, 0x0a0a, 0x8080, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 22.690 + 0x8009, 0x9880, 0x300c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 22.691 + 0x9a80, 0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 0x099a, 0x0f0a, 0x8080, 22.692 + 0x0c88, 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 22.693 + 0x800d, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 22.694 + 0x800a, 0x8080, 0x3d83, 0x8302, 0x043d, 0x0982, 0x8080, 0x8080, 0x9a80, 22.695 + 0x0a09, 0x800a, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 22.696 + 0x0a09, 0x800f, 0x8380, 0x013c, 0x3d83, 0x8302, 0x053d, 0x0982, 0x8080, 22.697 + 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800d, 0x9880, 0x100c, 0x3d9b, 0x0c02, 22.698 + 0x8020, 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 0x0a0a, 0x8080, 22.699 + 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 0x9880, 0x300c, 0x8080, 22.700 + 0x099a, 0x0a0a, 0x8080, 0x2090, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c98, 22.701 + 0x8010, 0x9a80, 0x0a09, 0x800f, 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 22.702 + 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 22.703 + 0x800e, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 0x3d83, 22.704 + 0x8204, 0x8009, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 0x9a80, 22.705 + 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 0x023d, 22.706 + 0x9a80, 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x0a98, 0x8001, 22.707 + 0x3c83, 0x8001, 0x3d83, 0x8205, 0x9809, 0x010a, 0x9880, 0x200c, 0x8080, 22.708 + 0x099a, 0x0a0a, 0x0a98, 0x8001, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 22.709 + 0x9b09, 0x0631, 0x100c, 0x9880, 0x300c, 0x8080, 0x099a, 0x0a0a, 0x0a98, 22.710 + 0x8010, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x980e, 0x100a, 0x8880, 0x800c, 22.711 + 0x9a80, 0x0a09, 0x980f, 0x100a, 0x8380, 0x013e, 0x3d83, 0x8002, 0x099a, 22.712 + 0x0c0a, 0x0a98, 0x8010, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x980d, 0x100a, 22.713 + 0x9880, 0x100c, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 22.714 + 0x0a0a, 0x8080, 0x8380, 0x023d, 0x3d83, 0x8204, 0x8009, 0x8080, 0x8080, 22.715 + 0x099a, 0x0a0a, 0x8080, 0x3c83, 0x8001, 0x3d83, 0x9a05, 0x0a09, 0x800e, 22.716 + 0x9880, 0x200c, 0x8080, 0x099a, 0x0f0a, 0x0a98, 0x8001, 0x0c98, 0x8310, 22.717 + 0x023d, 0x9a80, 0x0a09, 0x980c, 0x010a, 0x8880, 0x800c, 0x9a80, 0x0a09, 22.718 + 0x980d, 0x010a, 0x8380, 0x013c, 0x8080, 0x099a, 0x0e0a, 0x0a98, 0x8001, 22.719 + 0x0c98, 0x8010, 0x9a80, 0x0a09, 0x980a, 0x010a, 0x0980, 0x0000, 0x0000, 22.720 + 0x0040, 0x02e9, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x9b03, 0x092b, 0x050a, 22.721 + 0x2c9b, 0x0c06, 0x8010, 0x0c98, 0x8030, 0x9a80, 0x0a09, 0x980a, 0x100a, 22.722 + 0x9880, 0x200c, 0x8080, 0x099a, 0x0e0a, 0x0a98, 0x8010, 0x0c98, 0x8010, 22.723 + 0x9a80, 0x0a09, 0x980f, 0x100a, 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 22.724 + 0x980c, 0x100a, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x0a98, 0x8010, 0x8080, 22.725 + 0x9a80, 0x0a09, 0x980e, 0x100a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x0a98, 22.726 + 0x8010, 0x8380, 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x9805, 0x100a, 0x8080, 22.727 + 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800e, 0x8080, 22.728 + 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 0x023d, 0x9a80, 0x0a09, 0x800c, 22.729 + 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x3c83, 0x8001, 0x3d83, 0x9a05, 22.730 + 0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x3e83, 22.731 + 0x8301, 0x023d, 0x3a83, 0x9a03, 0x0a09, 0x8005, 0x9880, 0x300c, 0x8080, 22.732 + 0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800e, 0x9880, 22.733 + 0x100c, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x0c88, 0x3d83, 0x8002, 0x099a, 22.734 + 0x0c0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800d, 0x8080, 0x8080, 0x099a, 22.735 + 0x0e0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800a, 0x8080, 0x3d83, 0x8302, 22.736 + 0x043d, 0x099a, 0x050a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800a, 0x8080, 22.737 + 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800f, 0x8380, 22.738 + 0x013c, 0x3d83, 0x8302, 0x053d, 0x099a, 0x0c0a, 0x8080, 0x0c98, 0x8020, 22.739 + 0x9a80, 0x0a09, 0x800d, 0x9880, 0x100c, 0x3d9b, 0x0c02, 0x8020, 0x099a, 22.740 + 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x3e83, 0x8301, 22.741 + 0x023d, 0x3a83, 0x9a03, 0x0a09, 0x8005, 0x9880, 0x300c, 0x8080, 0x099a, 22.742 + 0x0a0a, 0x8080, 0x2090, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c98, 0x8010, 22.743 + 0x9a80, 0x0a09, 0x800f, 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 0x800c, 22.744 + 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800e, 22.745 + 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 0x3d83, 0x9a04, 22.746 + 0x0a09, 0x8005, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 0x9a80, 22.747 + 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 0x023d, 22.748 + 0x9a80, 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x3c83, 22.749 + 0x8001, 0x3d83, 0x9a05, 0x0a09, 0x800e, 0x9880, 0x200c, 0x8080, 0x099a, 22.750 + 0x0a0a, 0x8080, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x9a03, 0x0a09, 0x8005, 22.751 + 0x9880, 0x300c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 22.752 + 0x0a09, 0x800e, 0x8880, 0x800c, 0x9a80, 0x0a09, 0x800f, 0x8380, 0x013e, 22.753 + 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 22.754 + 0x800d, 0x9880, 0x100c, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 22.755 + 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 0x3d83, 0x9a04, 0x0a09, 0x9805, 22.756 + 0x010a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8001, 0x3c83, 0x8001, 22.757 + 0x3d83, 0x9a05, 0x0a09, 0x980e, 0x010a, 0x9880, 0x200c, 0x8080, 0x099a, 22.758 + 0x0f0a, 0x0a98, 0x8001, 0x0c98, 0x8310, 0x023d, 0x9a80, 0x0a09, 0x980c, 22.759 + 0x010a, 0x8880, 0x800c, 0x9a80, 0x0a09, 0x980d, 0x010a, 0x0298, 0x8304, 22.760 + 0x013c, 0x8080, 0x099a, 0x0e0a, 0x0a98, 0x9801, 0x0402, 0x0c98, 0x8010, 22.761 + 0x9a80, 0x0a09, 0x980a, 0x010a, 0x0298, 0x0904, 0x0000, 0x0000, 0x0040, 22.762 + 0x01e1, 0x8380, 0x023d, 0x319b, 0x0f08, 0x8403, 0x8410, 0x8410, 0x8010, 22.763 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8380, 22.764 + 0x0143, 0x3d83, 0x8002, 0x8080, 0x8480, 0x8030, 0x8080, 0x8080, 0x2084, 22.765 + 0x8080, 0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 0x8380, 0x023d, 0x3183, 22.766 + 0x8008, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.767 + 0x8080, 0x8080, 0x4383, 0x8301, 0x023d, 0x8080, 0x8080, 0x3084, 0x8080, 22.768 + 0x8080, 0x8480, 0x8020, 0x8080, 0x8080, 0x1084, 0x8080, 0x8080, 0x8080, 22.769 + 0x3d83, 0x8302, 0x0831, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.770 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8380, 0x0143, 0x3d83, 0x8002, 0x8080, 22.771 + 0x8480, 0x8030, 0x8080, 0x8080, 0x2084, 0x8080, 0x8080, 0x8480, 0x8010, 22.772 + 0x8080, 0x8080, 0x8380, 0x023d, 0x3183, 0x8008, 0x8080, 0x8080, 0x8080, 22.773 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x4383, 0x8301, 22.774 + 0x023d, 0x8080, 0x8080, 0x3084, 0x8080, 0x8080, 0x8480, 0x9b20, 0x023d, 22.775 + 0x200c, 0x8080, 0x8080, 0x1084, 0x8080, 0x8080, 0x8080, 0x3d83, 0x8302, 22.776 + 0x0831, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.777 + 0x8080, 0x8080, 0x8380, 0x0143, 0x3d83, 0x8002, 0x8080, 0x8480, 0x8030, 22.778 + 0x8080, 0x8080, 0x2084, 0x8080, 0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 22.779 + 0x8380, 0x023d, 0x3183, 0x8008, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.780 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x4383, 0x8301, 0x023d, 0x8080, 22.781 + 0x8080, 0x3084, 0x8080, 0x8080, 0x8480, 0x8020, 0x8080, 0x8080, 0x1084, 22.782 + 0x8080, 0x8080, 0x8080, 0x3d83, 0x8302, 0x0831, 0x8080, 0x8080, 0x8080, 22.783 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8380, 0x013e, 22.784 + 0x3d83, 0x8002, 0x8080, 0x8480, 0x8030, 0x8080, 0x8080, 0x2084, 0x8080, 22.785 + 0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 0x8380, 0x023d, 0x3183, 0x8008, 22.786 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.787 + 0x8080, 0x4183, 0x8301, 0x023d, 0x8080, 0x8080, 0x3084, 0x8080, 0x8080, 22.788 + 0x8480, 0x8020, 0x8080, 0x8080, 0x1084, 0x8080, 0x8080, 0x0980, 0x0000, 22.789 + 0x0000, 0x0040, 0x021a, 0x8380, 0x023d, 0x319b, 0x0f08, 0x8703, 0x0855, 22.790 + 0x8030, 0x0a98, 0x8007, 0x8080, 0x8080, 0x0a98, 0x8007, 0x8080, 0x8080, 22.791 + 0x0a98, 0x8007, 0x8080, 0x5587, 0x2008, 0x8880, 0x830c, 0x0143, 0x3d83, 22.792 + 0x8002, 0x8080, 0x8480, 0x8030, 0x8080, 0x8080, 0x2084, 0x8080, 0x8080, 22.793 + 0x8480, 0x8010, 0x8080, 0x8080, 0x8380, 0x023d, 0x3183, 0x8008, 0x8080, 22.794 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.795 + 0x4383, 0x8301, 0x023d, 0x8080, 0x8080, 0x3084, 0x8080, 0x8080, 0x8480, 22.796 + 0x8020, 0x8380, 0x073c, 0x8080, 0x1084, 0x8080, 0x8080, 0x8080, 0x3d83, 22.797 + 0x8302, 0x0831, 0x8080, 0x8080, 0x8080, 0x3c87, 0x1507, 0x8080, 0x8080, 22.798 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x4383, 0x8301, 0x023d, 0x8380, 22.799 + 0x073c, 0x8080, 0x3084, 0x8080, 0x8080, 0x8480, 0x8020, 0x8080, 0x8080, 22.800 + 0x1084, 0x8080, 0x3c87, 0x1507, 0x8080, 0x8380, 0x023d, 0x3183, 0x8008, 22.801 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.802 + 0x8080, 0x4383, 0x8301, 0x023d, 0x8780, 0x0855, 0x8030, 0x8480, 0x8030, 22.803 + 0x8080, 0x8080, 0x2084, 0x3d9b, 0x0c02, 0x8020, 0x5587, 0x3008, 0x8080, 22.804 + 0x1084, 0x8080, 0x5587, 0x2008, 0x8080, 0x8380, 0x023d, 0x3183, 0x8708, 22.805 + 0x0855, 0x8030, 0x8080, 0x8080, 0x5587, 0x2008, 0x8080, 0x8080, 0x8080, 22.806 + 0x8080, 0x8080, 0x8080, 0x8080, 0x4383, 0x8301, 0x023d, 0x8780, 0x0855, 22.807 + 0x8020, 0x8480, 0x8030, 0x8080, 0x8080, 0x2084, 0x8080, 0x8080, 0x8480, 22.808 + 0x8010, 0x8080, 0x8080, 0x8380, 0x023d, 0x3183, 0x8008, 0x8080, 0x8080, 22.809 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x4383, 22.810 + 0x8301, 0x023d, 0x8080, 0x8080, 0x3084, 0x8080, 0x8080, 0x8480, 0x8020, 22.811 + 0x8380, 0x073c, 0x8080, 0x1084, 0x8080, 0x8080, 0x8080, 0x3d83, 0x8302, 22.812 + 0x0831, 0x8080, 0x8080, 0x8080, 0x3c87, 0x1507, 0x8080, 0x8080, 0x8080, 22.813 + 0x8080, 0x8080, 0x8080, 0x8080, 0x3e83, 0x8301, 0x023d, 0x8380, 0x073c, 22.814 + 0x8080, 0x3084, 0x8080, 0x8080, 0x8480, 0x8020, 0x8080, 0x8080, 0x1084, 22.815 + 0x8080, 0x3c87, 0x1507, 0x8080, 0x8380, 0x023d, 0x3183, 0x8008, 0x8080, 22.816 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.817 + 0x4183, 0x8301, 0x023d, 0x8780, 0x0855, 0x8030, 0x8480, 0x8030, 0x8080, 22.818 + 0x8080, 0x2084, 0x8080, 0x5587, 0x3008, 0x8080, 0x1084, 0x8080, 0x5587, 22.819 + 0x2008, 0x8080, 0x0009, 0x0000, 0x4000, 0x6a00, 0x8002, 0x3d83, 0x9b02, 22.820 + 0x0831, 0x030f, 0x5587, 0x3008, 0x8380, 0x0644, 0x8080, 0x8080, 0x8480, 22.821 + 0x8015, 0x8080, 0x8080, 0x1084, 0x8080, 0x8780, 0x0855, 0x8020, 0x5087, 22.822 + 0x2006, 0x4383, 0x8301, 0x023d, 0x8080, 0x8480, 0x8415, 0x8030, 0x8080, 22.823 + 0x8480, 0x8410, 0x8020, 0x8080, 0x8080, 0x1084, 0x8080, 0x8080, 0x8080, 22.824 + 0x3d83, 0x8302, 0x0831, 0x8080, 0x4483, 0x8006, 0x8080, 0x8080, 0x1584, 22.825 + 0x8080, 0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 0x5087, 0x2006, 0x4383, 22.826 + 0x8301, 0x023d, 0x8080, 0x8480, 0x8415, 0x8030, 0x8080, 0x8480, 0x8410, 22.827 + 0x8020, 0x8380, 0x073c, 0x8380, 0x0644, 0x1084, 0x8080, 0x8080, 0x1584, 22.828 + 0x8380, 0x023d, 0x3183, 0x8008, 0x8480, 0x8010, 0x8080, 0x3c87, 0x1507, 22.829 + 0x8780, 0x0650, 0x8020, 0x8080, 0x8080, 0x1584, 0x8080, 0x8080, 0x8480, 22.830 + 0x8310, 0x0143, 0x3d83, 0x8002, 0x3c83, 0x8007, 0x3f83, 0x8406, 0x8030, 22.831 + 0x8080, 0x8480, 0x8415, 0x8020, 0x8080, 0x8480, 0x8410, 0x8010, 0x8780, 22.832 + 0x073c, 0x8015, 0x4b87, 0x2006, 0x8380, 0x023d, 0x3183, 0x8008, 0x8480, 22.833 + 0x8015, 0x8080, 0x8080, 0x1084, 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 22.834 + 0x8380, 0x063f, 0x4383, 0x8301, 0x023d, 0x8780, 0x0855, 0x8030, 0x1584, 22.835 + 0x3084, 0x8080, 0x8080, 0x1084, 0x2084, 0x3d9b, 0x0c02, 0x8020, 0x5587, 22.836 + 0x3008, 0x8780, 0x064b, 0x8420, 0x8010, 0x8780, 0x0855, 0x8020, 0x1584, 22.837 + 0x8380, 0x023d, 0x3183, 0x8708, 0x0855, 0x8030, 0x4283, 0x8006, 0x8080, 22.838 + 0x5587, 0x2008, 0x8480, 0x8015, 0x8080, 0x8080, 0x1084, 0x8080, 0x8080, 22.839 + 0x8780, 0x064e, 0x8320, 0x0143, 0x3d83, 0x8002, 0x5587, 0x2008, 0x8480, 22.840 + 0x8415, 0x8030, 0x8080, 0x8480, 0x8410, 0x8020, 0x8080, 0x8080, 0x1084, 22.841 + 0x8080, 0x8080, 0x8080, 0x3d83, 0x8302, 0x0831, 0x8080, 0x4283, 0x8006, 22.842 + 0x8080, 0x8080, 0x1584, 0x8080, 0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 22.843 + 0x4e87, 0x2006, 0x4383, 0x8301, 0x023d, 0x8080, 0x8480, 0x8415, 0x8030, 22.844 + 0x8080, 0x8480, 0x8410, 0x8020, 0x8380, 0x073c, 0x8380, 0x0642, 0x1084, 22.845 + 0x8080, 0x8080, 0x1584, 0x8380, 0x023d, 0x3183, 0x8008, 0x8480, 0x8010, 22.846 + 0x8080, 0x3c87, 0x1507, 0x8780, 0x064e, 0x8020, 0x8080, 0x8080, 0x1584, 22.847 + 0x8080, 0x8080, 0x8480, 0x8310, 0x013e, 0x3d83, 0x8002, 0x3c83, 0x8007, 22.848 + 0x3d83, 0x8406, 0x8030, 0x8080, 0x8480, 0x8415, 0x8020, 0x8080, 0x8480, 22.849 + 0x8410, 0x8010, 0x8780, 0x073c, 0x8015, 0x4987, 0x2006, 0x8380, 0x023d, 22.850 + 0x3183, 0x8008, 0x8480, 0x8015, 0x8080, 0x8080, 0x1084, 0x8080, 0x8080, 22.851 + 0x8080, 0x8080, 0x8080, 0x8080, 0x4183, 0x8301, 0x023d, 0x8780, 0x0855, 22.852 + 0x8030, 0x3d83, 0x8406, 0x8030, 0x8080, 0x8480, 0x8415, 0x8020, 0x8780, 22.853 + 0x0855, 0x8030, 0x1084, 0x1084, 0x8080, 0x5587, 0x2008, 0x8780, 0x0649, 22.854 + 0x0920, 0x0000, 0x0000, 0x0040, 0x0260, 0x8380, 0x023d, 0x319b, 0x0f08, 22.855 + 0x8703, 0x0855, 0x8030, 0x4483, 0x8006, 0x8080, 0x8080, 0x1584, 0x8080, 22.856 + 0x8080, 0x8480, 0x8010, 0x8080, 0x5587, 0x2008, 0x8780, 0x0650, 0x8320, 22.857 + 0x0143, 0x3d83, 0x8002, 0x8080, 0x1584, 0x3084, 0x8080, 0x8080, 0x1084, 22.858 + 0x2084, 0x8080, 0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 0x8380, 0x023d, 22.859 + 0x3183, 0x8008, 0x8380, 0x0644, 0x8080, 0x8080, 0x8480, 0x8015, 0x8080, 22.860 + 0x8080, 0x1084, 0x8080, 0x8080, 0x8780, 0x0650, 0x8320, 0x0143, 0x3d83, 22.861 + 0x8002, 0x8080, 0x1584, 0x3084, 0x8080, 0x8080, 0x1084, 0x2084, 0x8080, 22.862 + 0x3c83, 0x8007, 0x4483, 0x8406, 0x8010, 0x8080, 0x8480, 0x8015, 0x3d83, 22.863 + 0x8302, 0x0831, 0x8080, 0x1084, 0x8080, 0x8080, 0x8780, 0x0650, 0x8020, 22.864 + 0x8080, 0x8080, 0x1584, 0x8080, 0x8080, 0x8480, 0x8310, 0x0143, 0x3d83, 22.865 + 0x8002, 0x3c83, 0x8007, 0x3f83, 0x8406, 0x8030, 0x8080, 0x8480, 0x8415, 22.866 + 0x8020, 0x8080, 0x8480, 0x8410, 0x8010, 0x8080, 0x8780, 0x064b, 0x8020, 22.867 + 0x3d83, 0x8302, 0x0831, 0x8080, 0x1584, 0x8080, 0x8080, 0x8480, 0x8010, 22.868 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x3f83, 0x8306, 0x0143, 0x3d83, 22.869 + 0x8002, 0x5587, 0x3008, 0x8480, 0x8415, 0x8030, 0x8080, 0x8480, 0x8410, 22.870 + 0x9b20, 0x023d, 0x200c, 0x8780, 0x0855, 0x8030, 0x4b87, 0x2006, 0x1084, 22.871 + 0x8080, 0x5587, 0x2008, 0x8480, 0x8015, 0x3d83, 0x8302, 0x0831, 0x5587, 22.872 + 0x3008, 0x8380, 0x0642, 0x8080, 0x8780, 0x0855, 0x8020, 0x1584, 0x8080, 22.873 + 0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 0x4e87, 0x2006, 0x4383, 0x8301, 22.874 + 0x023d, 0x8780, 0x0855, 0x8020, 0x1584, 0x3084, 0x8080, 0x8080, 0x1084, 22.875 + 0x2084, 0x8080, 0x8080, 0x8480, 0x8010, 0x8080, 0x8080, 0x8380, 0x023d, 22.876 + 0x3183, 0x8008, 0x8380, 0x0642, 0x8080, 0x8080, 0x8480, 0x8015, 0x8080, 22.877 + 0x8080, 0x1084, 0x8080, 0x8080, 0x8780, 0x064e, 0x8320, 0x0143, 0x3d83, 22.878 + 0x8002, 0x8080, 0x1584, 0x3084, 0x8080, 0x8080, 0x1084, 0x2084, 0x8080, 22.879 + 0x3c83, 0x8007, 0x4283, 0x8406, 0x8010, 0x8080, 0x8480, 0x8015, 0x3d83, 22.880 + 0x8302, 0x0831, 0x8080, 0x1084, 0x8080, 0x8080, 0x8780, 0x064e, 0x8020, 22.881 + 0x8080, 0x8080, 0x1584, 0x8080, 0x8080, 0x8480, 0x8310, 0x013e, 0x3d83, 22.882 + 0x8002, 0x3c83, 0x8007, 0x3d83, 0x8406, 0x8030, 0x8080, 0x8480, 0x8415, 22.883 + 0x8020, 0x8080, 0x8480, 0x8410, 0x8010, 0x8080, 0x8780, 0x0649, 0x8020, 22.884 + 0x3d83, 0x8302, 0x0831, 0x8080, 0x1584, 0x8080, 0x8080, 0x8480, 0x8010, 22.885 + 0x8080, 0x8080, 0x8080, 0x8080, 0x8080, 0x8380, 0x0141, 0x3d83, 0x8002, 22.886 + 0x5587, 0x3008, 0x8380, 0x063d, 0x3084, 0x8080, 0x8080, 0x1584, 0x2084, 22.887 + 0x8080, 0x5587, 0x3008, 0x8480, 0x9c10, 0x0b10, 0x8019, 0x8780, 0x0855, 22.888 + 0x8020, 0x4987, 0x2006, 0x0009, 0x0000, 0x4000, 0xe400, 0x8302, 0x013e, 22.889 + 0x3d83, 0x8302, 0x033a, 0x2b83, 0x9b09, 0x062f, 0x100c, 0x0c88, 0x0c98, 22.890 + 0x8030, 0x9a80, 0x0a09, 0x980a, 0x100a, 0x9880, 0x200c, 0x8080, 0x099a, 22.891 + 0x0e0a, 0x0a98, 0x8010, 0x0c98, 0x8010, 0x9a80, 0x0a09, 0x980f, 0x100a, 22.892 + 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 0x980c, 0x100a, 0x8080, 0x8080, 22.893 + 0x099a, 0x0d0a, 0x0a98, 0x8010, 0x8080, 0x9a80, 0x0a09, 0x980e, 0x100a, 22.894 + 0x8080, 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8010, 0x8380, 0x023d, 0x3d83, 22.895 + 0x8204, 0x9809, 0x100a, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 22.896 + 0x9a80, 0x0a09, 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 22.897 + 0x023d, 0x9a80, 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 22.898 + 0x3c83, 0x8001, 0x3d83, 0x9a05, 0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 22.899 + 0x099a, 0x0a0a, 0x8080, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 22.900 + 0x9880, 0x300c, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 22.901 + 0x0a09, 0x800e, 0x9880, 0x100c, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x0c88, 22.902 + 0x3d83, 0x8002, 0x099a, 0x0c0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800d, 22.903 + 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800a, 22.904 + 0x8080, 0x3d83, 0x8302, 0x043d, 0x0982, 0x8080, 0x8080, 0x9a80, 0x0a09, 22.905 + 0x800a, 0x8080, 0x8080, 0x099a, 0x0e0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 22.906 + 0x800f, 0x8380, 0x013c, 0x3d83, 0x8302, 0x053d, 0x0982, 0x8080, 0x0c98, 22.907 + 0x8020, 0x9a80, 0x0a09, 0x980d, 0x010a, 0x9880, 0x100c, 0x3d9b, 0x0c02, 22.908 + 0x8020, 0x099a, 0x0e0a, 0x0a98, 0x8001, 0x0c88, 0x8080, 0x099a, 0x0a0a, 22.909 + 0x0a98, 0x8001, 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x9b09, 0x062a, 22.910 + 0x100c, 0x9880, 0x300c, 0x8080, 0x099a, 0x0a0a, 0x0a98, 0x8010, 0x2090, 22.911 + 0x8080, 0x099a, 0x0e0a, 0x0a98, 0x8010, 0x0c98, 0x8010, 0x9a80, 0x0a09, 22.912 + 0x980f, 0x100a, 0x8880, 0x830c, 0x023d, 0x9a80, 0x0a09, 0x980c, 0x100a, 22.913 + 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 0x800e, 22.914 + 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8380, 0x023d, 0x3d83, 0x8204, 22.915 + 0x8009, 0x8080, 0x8080, 0x099a, 0x0a0a, 0x8080, 0x8080, 0x9a80, 0x0a09, 22.916 + 0x800e, 0x8080, 0x8080, 0x099a, 0x0f0a, 0x8080, 0x8380, 0x023d, 0x9a80, 22.917 + 0x0a09, 0x800c, 0x8080, 0x8080, 0x099a, 0x0d0a, 0x8080, 0x3c83, 0x8001, 22.918 + 0x3d83, 0x8205, 0x8009, 0x9880, 0x200c, 0x8080, 0x099a, 0x0a0a, 0x8080, 22.919 + 0x3e83, 0x8301, 0x023d, 0x3a83, 0x8203, 0x8009, 0x9880, 0x300c, 0x8080, 22.920 + 0x099a, 0x0a0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800e, 0x8880, 22.921 + 0x800c, 0x9a80, 0x0a09, 0x800f, 0x8380, 0x013e, 0x3d83, 0x8002, 0x099a, 22.922 + 0x0c0a, 0x8080, 0x0c98, 0x8020, 0x9a80, 0x0a09, 0x800d, 0x9880, 0x100c, 22.923 + 0x8080, 0x099a, 0x0e0a, 0x8080, 0x0c88, 0x8080, 0x099a, 0x0a0a, 0x8080, 22.924 + 0x8380, 0x023d, 0x3d83, 0x8204, 0x9809, 0x010a, 0x8080, 0x8080, 0x099e, 22.925 + 0x0a40, 0x980a, 0x010a, 0x8380, 0x0141, 0x9b80, 0x043d, 0x1002, 0x099e, 22.926 + 0x0a30, 0x980e, 0x010a, 0x9880, 0x1002, 0x3d87, 0x2002, 0x0298, 0x9e10, 22.927 + 0x2009, 0x0f0a, 0x0a98, 0x8001, 0x0298, 0x8010, 0x0298, 0x8410, 0x9810, 22.928 + 0x010a, 0x9880, 0x1002, 0x8080, 0x9880, 0x010a, 0x9c80, 0x0220, 0x8010, 22.929 + 0x8080, 0x0a98, 0x8001, 0x159c, 0x1002, 0x8080, 0x9880, 0x010a, 0x0780, 22.930 + 0x0001, 0x7300, 0x6275, 0x3162, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.931 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0028, 0x0000, 0x0000, 0x0000, 22.932 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.933 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.934 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.935 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.936 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.937 + 0x0000, 0x0000, 0x0020, 0x0007, 0x0006, 0x0022, 0x000c, 0x0038, 0x0004, 22.938 + 0x0053, 0x0008, 0x006c, 0x0004, 0x006c, 0x0000, 0x0000, 0x0000, 0x0000, 22.939 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 22.940 + 0x0028, 0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 0x0020, 0x00a0, 22.941 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.942 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 22.943 + 0x0000, 0x0000, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.944 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x054c, 0x0000, 0x0468, 0x0000, 22.945 + 0x00e2, 0x0000, 0x0040, 0x8001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.946 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xff01, 22.947 + 0x00ff, 0xfbfe, 0xf7f5, 0xf8f2, 0x03b2, 0xfe1a, 0x1201, 0xfeff, 0x0102, 22.948 + 0xfeff, 0x0005, 0x0102, 0x02ff, 0x0607, 0x0707, 0x0608, 0x0607, 0x0305, 22.949 + 0x0505, 0x0205, 0x0206, 0x0604, 0x0401, 0x0206, 0x0403, 0xfeff, 0xff00, 22.950 + 0x0003, 0xffff, 0xfefd, 0xfdfd, 0xfafd, 0xfcfe, 0x00fc, 0xfdfe, 0xf8fd, 22.951 + 0xfcf8, 0xfcfe, 0x0001, 0xfffc, 0xffff, 0x02fc, 0x01ff, 0x0103, 0x0101, 22.952 + 0x03ff, 0x0403, 0x0905, 0x0504, 0x0204, 0x0406, 0x0805, 0x0102, 0x0704, 22.953 + 0x0303, 0x0301, 0x0100, 0x0005, 0x0303, 0x04ff, 0x00ff, 0xfd02, 0x01ff, 22.954 + 0xfefe, 0xfbfe, 0xfbfe, 0xfefd, 0xfefa, 0xf8fe, 0xfcfb, 0xfdfc, 0xfafb, 22.955 + 0xfefc, 0xfffe, 0xfdfc, 0x01fd, 0xfefd, 0xfffd, 0xff02, 0x00ff, 0x0000, 22.956 + 0x0000, 0x0301, 0x0404, 0x0505, 0x0205, 0x0305, 0x0402, 0x0406, 0x0504, 22.957 + 0x0204, 0x0404, 0x0103, 0x02ff, 0x0102, 0x0103, 0x0500, 0xfe01, 0x0200, 22.958 + 0xff01, 0x0000, 0x00ff, 0xfeff, 0xfffc, 0xfcfe, 0xfdfe, 0xfbfb, 0xfbfb, 22.959 + 0xfdfc, 0xfdfb, 0xfcfc, 0xfcfc, 0xfdfb, 0xfefb, 0xfdfe, 0xfefe, 0xffff, 22.960 + 0xfffd, 0xfffe, 0xfe01, 0xffff, 0x0100, 0x0100, 0x0200, 0x0301, 0x0502, 22.961 + 0x0404, 0x0404, 0x0304, 0x0203, 0x0403, 0x0403, 0x0403, 0x0104, 0x0105, 22.962 + 0x0204, 0x0300, 0x0301, 0x0001, 0x0202, 0x0301, 0x0100, 0x0001, 0x00ff, 22.963 + 0x01ff, 0xfeff, 0xffff, 0xfdff, 0xfdfe, 0xfdff, 0xfefe, 0xfbfd, 0xfcfc, 22.964 + 0xfcfb, 0xfbfb, 0xfcfd, 0xfcfb, 0xfdfc, 0xfdfd, 0xfdfe, 0xfefe, 0xfdfe, 22.965 + 0xfefe, 0xfffd, 0xfdff, 0xff00, 0xfe00, 0xff00, 0x0000, 0x0201, 0x0100, 22.966 + 0x0300, 0x0203, 0x0404, 0x0303, 0x0203, 0x0304, 0x0403, 0x0305, 0x0303, 22.967 + 0x0403, 0x0503, 0x0303, 0x0303, 0x0203, 0x0300, 0x0102, 0x0102, 0x0202, 22.968 + 0x0201, 0x0002, 0x0100, 0x0100, 0x0200, 0xff00, 0xff00, 0xfe00, 0xfeff, 22.969 + 0xfeff, 0xfefd, 0xfdfd, 0xfdfd, 0xfdfe, 0xfdfc, 0xfcfd, 0xfcfc, 0xfdfd, 22.970 + 0xfbfc, 0xfcfc, 0xfcfc, 0xfdfc, 0xfefe, 0xfefd, 0xfefe, 0xfffd, 0xfdfe, 22.971 + 0xfeff, 0xfefe, 0xff00, 0xfe01, 0xff00, 0x00ff, 0x0100, 0x0100, 0x0002, 22.972 + 0x0101, 0x0202, 0x0303, 0x0303, 0x0203, 0x0304, 0x0403, 0x0303, 0x0304, 22.973 + 0x0403, 0x0303, 0x0304, 0x0303, 0x0304, 0x0204, 0x0203, 0x0202, 0x0103, 22.974 + 0x0202, 0x0202, 0x0201, 0x0201, 0x0201, 0x0000, 0x0200, 0x0000, 0x0100, 22.975 + 0x0000, 0xff00, 0xff00, 0xffff, 0xfeff, 0xfdfe, 0xfefe, 0xfdfe, 0xfefd, 22.976 + 0xfdfd, 0xfcfe, 0xfdfd, 0xfdfd, 0xfdfc, 0xfcfc, 0xfcfc, 0xfcfd, 0xfdfc, 22.977 + 0xfcfd, 0xfefd, 0xfdfd, 0xfefe, 0xfefe, 0xfffd, 0xfdfe, 0xfe00, 0xfffe, 22.978 + 0xfffe, 0x00fe, 0xff00, 0xff00, 0x0000, 0x0000, 0x0100, 0x0001, 0x0101, 22.979 + 0x0201, 0x0301, 0x0302, 0x0302, 0x0303, 0x0303, 0x0303, 0x0303, 0x0403, 22.980 + 0x0303, 0x0303, 0x0304, 0x0403, 0x0303, 0x0403, 0x0303, 0x0303, 0x0203, 22.981 + 0x0203, 0x0202, 0x0202, 0x0202, 0x0201, 0x0201, 0x0201, 0x0101, 0x0201, 22.982 + 0x0000, 0x0000, 0x0000, 0x0102, 0x0000, 0x00ff, 0xfe00, 0xff00, 0xff00, 22.983 + 0xfefe, 0xfeff, 0xfefe, 0xfdfe, 0xfdfe, 0xfefe, 0xfdfd, 0xfdfd, 0xfdfe, 22.984 + 0xfcfd, 0xfdfd, 0xfdfd, 0xfcfc, 0xfcfd, 0xfcfd, 0xfcfd, 0xfdfd, 0xfdfd, 22.985 + 0xfdfd, 0xfdfe, 0xfefe, 0xfefe, 0xfefe, 0xfeff, 0xfeff, 0xfefe, 0xffff, 22.986 + 0xfffe, 0x00ff, 0xff00, 0xff01, 0x0000, 0x0000, 0x0100, 0x01ff, 0x0100, 22.987 + 0x0101, 0x0201, 0x0201, 0x0202, 0x0103, 0x0303, 0x0203, 0x0303, 0x0303, 22.988 + 0x0303, 0x0303, 0x0303, 0x0403, 0x0303, 0x0403, 0x0303, 0x0303, 0x0403, 22.989 + 0x0402, 0x0303, 0x0402, 0x0302, 0x0203, 0x0202, 0x0202, 0x0202, 0x0201, 22.990 + 0x0201, 0x0300, 0x0201, 0x0101, 0x0101, 0x0101, 0x0100, 0x0000, 0x0000, 22.991 + 0x0100, 0x00ff, 0x0000, 0x00ff, 0x00ff, 0x00ff, 0xffff, 0xfffe, 0xfffe, 22.992 + 0xfefe, 0xfefe, 0xfefd, 0xfdfe, 0xfefe, 0xfefd, 0xfdfd, 0xfdfe, 0xfdfd, 22.993 + 0xfdfd, 0xfdfd, 0xfdfd, 0xfcfd, 0xfdfd, 0xfdfc, 0xfdfd, 0xfdfc, 0xfdfd, 22.994 + 0xfefc, 0xfdfd, 0xfefe, 0xfefd, 0xfefe, 0xfffe, 0xfffd, 0xfefe, 0xffff, 22.995 + 0xfffe, 0xfffe, 0xfe00, 0xffff, 0xfe00, 0x01ff, 0x0000, 0x0000, 0x0000, 22.996 + 0x0001, 0x0100, 0x0100, 0x0101, 0x0100, 0x0101, 0x0102, 0x0202, 0x0102, 22.997 + 0x0104, 0x0302, 0x0303, 0x0302, 0x0303, 0x0402, 0x0203, 0x0303, 0x0304, 22.998 + 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 0x0303, 22.999 + 0x0303, 0x0202, 0x0303, 0x0202, 0x0203, 0x0201, 0x0202, 0x0201, 0x0102, 22.1000 + 0x0101, 0x0002, 0x0102, 0x0101, 0x0001, 0x0101, 0x0000, 0x0001, 0x0000, 22.1001 + 0x0000, 0x00ff, 0x0000, 0xff00, 0xff00, 0xff00, 0xffff, 0xfe00, 0xffff, 22.1002 + 0xfeff, 0xfeff, 0xfeff, 0xfefe, 0xfefe, 0xfdfe, 0xfefe, 0xfefd, 0xfdfe, 22.1003 + 0xfdfe, 0xfefd, 0xfefd, 0xfdfd, 0xfefd, 0xfefc, 0xfdfd, 0xfdfd, 0xfdfd, 22.1004 + 0xfcfe, 0xfcfe, 0xfdfe, 0xfdfd, 0xfdfd, 0xfdfe, 0xfefd, 0xfdfe, 0xfefe, 22.1005 + 0xfefe, 0xfefe, 0xffff, 0xfffe, 0xfffe, 0xfffe, 0xffff, 0xffff, 0x00ff, 22.1006 + 0xffff, 0xff00, 0x00ff, 0x00ff, 0x0000, 0x0001, 0x0000, 0x0101, 0x0000, 22.1007 + 0x0101, 0x0000, 0x0101, 0x0101, 0x0201, 0x0101, 0x0201, 0x0301, 0x0200, 22.1008 + 0x0202, 0x0202, 0x0203, 0x0203, 0x0203, 0x0203, 0x0303, 0x0302, 0x0302, 22.1009 + 0x0302, 0x0303, 0x0302, 0x0302, 0x0203, 0x0203, 0x0203, 0x0203, 0x0203, 22.1010 + 0x0203, 0x0203, 0x0202, 0x0203, 0x0202, 0x0202, 0x0202, 0x0102, 0x0201, 22.1011 + 0x0102, 0x0102, 0x0200, 0x0101, 0x0101, 0x0100, 0x0001, 0x0101, 0x0100, 22.1012 + 0x0100, 0x0000, 0x0000, 0x0100, 0xff00, 0xff00, 0xff01, 0xff00, 0x0000, 22.1013 + 0xffff, 0xff00, 0x00ff, 0x00fe, 0xffff, 0xffff, 0xffff, 0xffff, 0xfefe, 22.1014 + 0xffff, 0xfefe, 0xfeff, 0xfefe, 0xfeff, 0xfefe, 0xfefe, 0xfefe, 0xfefe, 22.1015 + 0xfefe, 0xfdfe, 0xfefe, 0xfefe, 0xfffd, 0xfefd, 0xfdfe, 0xfefe, 0xfefe, 22.1016 + 0xfefd, 0xfdfe, 0xfefe, 0xfdfe, 0xfefe, 0xfefe, 0xfefe, 0xfefe, 0xfefe, 22.1017 + 0xfeff, 0xfffe, 0xfeff, 0xffff, 0xfffe, 0xffff, 0x00ff, 0xffff, 0x00ff, 22.1018 + 0xffff, 0x00ff, 0x00ff, 0xff00, 0x0000, 0x0000, 0x00ff, 0x0000, 0x0001, 22.1019 + 0x0000, 0x0001, 0x0001, 0x0101, 0x0100, 0x0001, 0x0002, 0x0100, 0x0101, 22.1020 + 0x0101, 0x0201, 0x0101, 0x0201, 0x0201, 0x0201, 0x0201, 0x0202, 0x0202, 22.1021 + 0x0102, 0x0202, 0x0202, 0x0103, 0x0202, 0x0203, 0x0202, 0x0202, 0x0202, 22.1022 + 0x0002, 0x0107, 0x0000, 0x6863, 0x3168, 0x0000, 0x0000, 0x0000, 0x0000, 22.1023 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x2800, 0x0000, 0x0000, 22.1024 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1025 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1026 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1027 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1028 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1029 + 0x0000, 0x0000, 0x0000, 0x2000, 0x2800, 0x2000, 0x5000, 0x2000, 0x7800, 22.1030 + 0x2000, 0xa000, 0x2000, 0xa000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1031 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1032 + 0x2000, 0x2800, 0x2000, 0x5000, 0x2000, 0x7800, 0x2000, 0xa000, 0x2000, 22.1033 + 0xa000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1034 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0001, 0x0000, 0x0000, 22.1035 + 0x0000, 0x0000, 0x0000, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1036 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1a00, 0x0002, 0x0000, 22.1037 + 0x0000, 0x0000, 0x0000, 0x4000, 0x0000, 0x0080, 0x0000, 0x0000, 0x0000, 22.1038 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1039 + 0x0000, 0xfc00, 0xfc05, 0xd518, 0x1a15, 0x00d9, 0xf519, 0xc71b, 0xd138, 22.1040 + 0x0522, 0x65b1, 0x15cf, 0x3ada, 0x15d0, 0xb80e, 0x7280, 0x948e, 0x001b, 22.1041 + 0x28f4, 0xd4f0, 0x9367, 0x9979, 0x6ce5, 0x13a6, 0x9d4e, 0xa45c, 0xea41, 22.1042 + 0x03fb, 0x51d5, 0x6db0, 0xfd96, 0xe23b, 0x2d03, 0x49b6, 0x31ba, 0xf4f8, 22.1043 + 0x1bff, 0x40c3, 0xc502, 0x121d, 0x26ca, 0xe227, 0x08e4, 0x0e08, 0xf208, 22.1044 + 0x33d7, 0xbd10, 0xce46, 0xcc27, 0x50f8, 0x0dbc, 0x0717, 0x01e7, 0x0a09, 22.1045 + 0xe2f3, 0x8b51, 0xc880, 0xf6f5, 0xe61a, 0xf32b, 0x35cb, 0xe505, 0x0509, 22.1046 + 0x65cf, 0x6498, 0x28a6, 0x070d, 0x2dca, 0x0ce0, 0xf212, 0xe80e, 0x20f3, 22.1047 + 0xb31e, 0xd345, 0xd320, 0xe432, 0x2503, 0x48b3, 0x46c7, 0x17c6, 0xe3fe, 22.1048 + 0x151a, 0x49cb, 0x32b8, 0xf2ee, 0x0c0f, 0x35ce, 0x36dd, 0x11c4, 0xd512, 22.1049 + 0x0c2f, 0x51bd, 0xeac5, 0x1625, 0xc2f5, 0xc254, 0xdd49, 0x07e6, 0xbf27, 22.1050 + 0x3028, 0xf8b6, 0x1714, 0x0ff8, 0x15d0, 0xbf30, 0xed22, 0xf210, 0xfe09, 22.1051 + 0xfa0a, 0x09f3, 0x0bfe, 0xf5fa, 0x1104, 0xecfa, 0xff11, 0x09f7, 0xf9fd, 22.1052 + 0xb52c, 0xca45, 0xe334, 0x13ec, 0xed14, 0x4ee1, 0x02b4, 0xc92b, 0xd43f, 22.1053 + 0xcc28, 0xe137, 0x0312, 0xffdf, 0xb543, 0xb944, 0xf128, 0xfc13, 0x20e7, 22.1054 + 0x33d7, 0xffde, 0xfb19, 0x34d4, 0x58c9, 0x50a7, 0xdbdb, 0x5006, 0x02c0, 22.1055 + 0x25f7, 0x28d9, 0xddef, 0xef2b, 0xfa0d, 0x3be9, 0x11c7, 0xf000, 0xae3f, 22.1056 + 0xaa56, 0xde43, 0xfd08, 0xedff, 0xef23, 0xe908, 0xe623, 0x3bea, 0xf1e1, 22.1057 + 0xf81a, 0xfefd, 0xee0e, 0xfc0c, 0xec04, 0x0317, 0xedf5, 0x091a, 0x31da, 22.1058 + 0x4ec0, 0x10c6, 0xf80a, 0x04fb, 0xf703, 0x0e0b, 0x0adb, 0xb72b, 0xbc44, 22.1059 + 0xc058, 0x1aff, 0xc401, 0xb665, 0x0214, 0xf901, 0xf617, 0x3bd3, 0x31d7, 22.1060 + 0x08d2, 0xf41d, 0x27d3, 0xe914, 0x0af5, 0x18ff, 0xdde6, 0xd04d, 0x27fb, 22.1061 + 0xf5e7, 0x2108, 0xf1d8, 0xc040, 0xc237, 0xcb49, 0x23f8, 0x00f1, 0x010a, 22.1062 + 0x26dc, 0xef01, 0x05fd, 0x1107, 0x32cd, 0x1bde, 0x06ec, 0xc31b, 0xcb3d, 22.1063 + 0xec29, 0xdb1b, 0x040e, 0xe607, 0xfc19, 0xe8fe, 0x0220, 0xdefa, 0xdc2d, 22.1064 + 0xc92f, 0x55f7, 0x479b, 0x3bd8, 0x1fc1, 0x00fa, 0x1cf5, 0x01e5, 0xf316, 22.1065 + 0x18f5, 0xe6f0, 0xc03c, 0xda35, 0xc133, 0x0721, 0x2ae1, 0x04e0, 0x22fb, 22.1066 + 0xdcf2, 0xf82d, 0x66d0, 0x329d, 0x11e8, 0x0cf8, 0x0cea, 0x1ff2, 0x26e2, 22.1067 + 0x07cd, 0xdf2d, 0xfd06, 0x36f1, 0x0dc4, 0xeb1a, 0xcb14, 0xcd46, 0x021c, 22.1068 + 0xeaf9, 0x010e, 0xcd21, 0xcc2b, 0x2711, 0x1dd2, 0x09f4, 0x0700, 0x0001, 22.1069 + 0x6200, 0x3164, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1070 + 0x0000, 0x0000, 0x0000, 0x0001, 0x0028, 0x0000, 0x0000, 0x0000, 0x0000, 22.1071 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1072 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1073 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1074 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1075 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1076 + 0x0000, 0x0020, 0x0028, 0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 22.1077 + 0x0020, 0x00a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1078 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0028, 22.1079 + 0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 0x0020, 0x00a0, 0x0000, 22.1080 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1081 + 0x0000, 0x0000, 0x0000, 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1082 + 0x0000, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1083 + 0x0000, 0x0000, 0x0000, 0x0000, 0x14f6, 0x0000, 0x0000, 0x0000, 0x0000, 22.1084 + 0x0000, 0x0040, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1085 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0101, 22.1086 + 0x0000, 0xff00, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 0x0000, 0x0000, 22.1087 + 0x00fe, 0x0000, 0x0000, 0x0000, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0000, 22.1088 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1089 + 0x0001, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0x0100, 0x01ff, 0x00ff, 22.1090 + 0x0000, 0x0001, 0x0000, 0x2201, 0x0f4c, 0x0000, 0xeffa, 0xf0ef, 0xf4f4, 22.1091 + 0xf2f7, 0xf3f0, 0xf2f6, 0xe6ef, 0xedeb, 0x00f0, 0x0000, 0x0000, 0x0000, 22.1092 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x090a, 0x0f0c, 0x0c09, 22.1093 + 0x080d, 0x070a, 0x080b, 0x0a0b, 0x090a, 0x070c, 0x090a, 0x070c, 0x070c, 22.1094 + 0x0807, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1095 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1096 + 0x0000, 0xf4fa, 0xeff4, 0xf0f9, 0xf4f6, 0xf4f4, 0xf5f8, 0xf6fa, 0xfcf6, 22.1097 + 0xfef2, 0xf8f7, 0xfbfc, 0xfef6, 0xfcf9, 0xf9ff, 0xfdfd, 0x00f7, 0xfd01, 22.1098 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1099 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 22.1100 + 0x0601, 0x0001, 0x0afc, 0x04fe, 0x0004, 0x0402, 0x0402, 0x0402, 0x07fd, 22.1101 + 0xfc06, 0xfd0d, 0xf70d, 0xfb0e, 0x0304, 0x0305, 0x0701, 0xfe03, 0xfe07, 22.1102 + 0x0009, 0x0005, 0x0404, 0x0202, 0x0402, 0x0402, 0x0102, 0x0702, 0x09ff, 22.1103 + 0x04fa, 0x0402, 0xfe04, 0xfe07, 0x0106, 0xff03, 0x0405, 0x0afe, 0xfffb, 22.1104 + 0x0007, 0x0204, 0x0402, 0x09fe, 0x11f9, 0x04f4, 0xff00, 0xfd06, 0x0806, 22.1105 + 0x0af5, 0x09fb, 0x05f8, 0x0201, 0xfc00, 0x0004, 0xf808, 0xfc09, 0xf506, 22.1106 + 0x0211, 0x01f8, 0x0105, 0x02fe, 0x0100, 0xfa02, 0x0006, 0xfdfd, 0xfc04, 22.1107 + 0x06f7, 0xfb03, 0xf905, 0xfb05, 0xfc02, 0x01fc, 0xfefd, 0xf900, 0xfd01, 22.1108 + 0x08fb, 0x06f1, 0x00f5, 0xfb00, 0xfcfe, 0xfefd, 0x06f8, 0x01f3, 0x00fa, 22.1109 + 0xfef9, 0xfafd, 0xf902, 0xfbfd, 0xfcfa, 0xfa00, 0xfbfc, 0xfafe, 0xf9ff, 22.1110 + 0xfdfc, 0x00fa, 0x04f5, 0x00f9, 0xfbfc, 0xfdfd, 0xfcfe, 0xfefe, 0xfdfd, 22.1111 + 0xf901, 0xfdff, 0xfeff, 0xfefe, 0xf902, 0xff00, 0x00fd, 0xfb00, 0xff00, 22.1112 + 0xfefe, 0xff00, 0xff00, 0x00fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1113 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0001, 0x0101, 0x0100, 22.1114 + 0x0002, 0x0101, 0x0100, 0x0201, 0x0101, 0x0101, 0x0201, 0x0102, 0x0201, 22.1115 + 0x0102, 0x0301, 0x0202, 0x0102, 0x0203, 0x0103, 0x0204, 0x0203, 0x0401, 22.1116 + 0x0302, 0x0202, 0x0203, 0x0302, 0x0303, 0x0202, 0x0303, 0x0204, 0x0304, 22.1117 + 0x0203, 0x0303, 0x0303, 0x0204, 0x0304, 0x0203, 0x0302, 0x0402, 0x0202, 22.1118 + 0x0203, 0x0302, 0x0302, 0x0202, 0x0203, 0x0302, 0x0302, 0x0202, 0x0203, 22.1119 + 0x0301, 0x0201, 0x0201, 0x0101, 0x0202, 0x0101, 0x0002, 0x0201, 0x0001, 22.1120 + 0x0001, 0x0101, 0x0002, 0x0000, 0x0001, 0x0000, 0x0001, 0x0100, 0x0100, 22.1121 + 0x0000, 0x0002, 0x0000, 0x0100, 0x0000, 0x0001, 0x0000, 0x0100, 0x0000, 22.1122 + 0x0001, 0x0100, 0x0000, 0x0200, 0x0000, 0x00fe, 0xff00, 0x0000, 0xff00, 22.1123 + 0xff00, 0xff00, 0xff00, 0x0000, 0xfffd, 0xffff, 0xfe00, 0xffff, 0xffff, 22.1124 + 0xfffe, 0xffff, 0xfdfe, 0xfeff, 0xfefd, 0xfdff, 0xfcfe, 0xfcfe, 0xfcfe, 22.1125 + 0xfdfe, 0xfcfc, 0xfcfe, 0xfefd, 0xfcfb, 0xfcfd, 0xfbfd, 0xfdfc, 0xfcfd, 22.1126 + 0xfcfc, 0xfcfc, 0xfbfd, 0xfdfc, 0xfefb, 0xfcfb, 0xfcfd, 0xfcfd, 0xfefc, 22.1127 + 0xfdfc, 0xfdfc, 0xfefd, 0xfefc, 0xfdfd, 0xfcfe, 0xfcfe, 0xfefe, 0xfefd, 22.1128 + 0xfdff, 0xfdfe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1129 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1130 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 22.1131 + 0x0101, 0x0301, 0x0101, 0x0301, 0x0101, 0x0102, 0x0203, 0x0301, 0x0102, 22.1132 + 0x0103, 0x0102, 0x0203, 0x0201, 0x0202, 0x0203, 0x0301, 0x0201, 0x0203, 22.1133 + 0x0302, 0x0102, 0x0203, 0x0302, 0x0302, 0x0302, 0x0203, 0x0303, 0x0203, 22.1134 + 0x0303, 0x0303, 0x0303, 0x0402, 0x0402, 0x0202, 0x0204, 0x0203, 0x0402, 22.1135 + 0x0302, 0x0202, 0x0103, 0x0202, 0x0202, 0x0103, 0x0201, 0x0103, 0x0202, 22.1136 + 0x0202, 0x0203, 0x0202, 0x0102, 0x0103, 0x0201, 0x0102, 0x0101, 0x0101, 22.1137 + 0x0102, 0x0100, 0x0001, 0x0001, 0x0000, 0x0002, 0x0000, 0xff01, 0x0100, 22.1138 + 0x0001, 0x0101, 0x0200, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 22.1139 + 0x0000, 0x0100, 0x0000, 0x00ff, 0x0000, 0x0000, 0xffff, 0x0000, 0xfe00, 22.1140 + 0x0000, 0xff00, 0xff00, 0xffff, 0xfffe, 0x00ff, 0xffff, 0xfffe, 0xffff, 22.1141 + 0xfefe, 0xfffe, 0xfffd, 0xfdfe, 0xfeff, 0xfdfe, 0xfcff, 0xfefe, 0xfefd, 22.1142 + 0xfcfe, 0xfcff, 0xfdfe, 0xfefd, 0xfefd, 0xfdfc, 0xfcfd, 0xfcfc, 0xfbfe, 22.1143 + 0xfcfd, 0xfcfe, 0xfdfd, 0xfcfd, 0xfcfd, 0xfdfc, 0xfcfe, 0xfdfc, 0xfefc, 22.1144 + 0xfdfc, 0xfdfd, 0xfdfd, 0xfdfe, 0xfdfe, 0xfefe, 0xfefd, 0xfdfe, 0xffff, 22.1145 + 0xfffd, 0xfffe, 0xfffd, 0xffff, 0xfdff, 0xffff, 0xfffd, 0xffff, 0x00ff, 22.1146 + 0x00fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1147 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0101, 0x0100, 0x0201, 22.1148 + 0x0100, 0x0101, 0x0103, 0x0101, 0x0301, 0x0101, 0x0302, 0x0201, 0x0102, 22.1149 + 0x0202, 0x0102, 0x0302, 0x0201, 0x0301, 0x0102, 0x0203, 0x0302, 0x0302, 22.1150 + 0x0202, 0x0203, 0x0302, 0x0302, 0x0202, 0x0203, 0x0202, 0x0103, 0x0104, 22.1151 + 0x0302, 0x0302, 0x0202, 0x0203, 0x0202, 0x0202, 0x0202, 0x0202, 0x0103, 22.1152 + 0x0204, 0x0203, 0x0301, 0x0201, 0x0302, 0x0102, 0x0103, 0x0302, 0x0101, 22.1153 + 0x0301, 0x0101, 0x0101, 0x0102, 0x0101, 0x0301, 0x0201, 0x0201, 0x0101, 22.1154 + 0x0101, 0x0102, 0x0100, 0x0001, 0x0201, 0x0100, 0x0100, 0x0100, 0x0000, 22.1155 + 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0200, 0x0100, 0x0000, 0x0001, 22.1156 + 0x0000, 0x0000, 0x0001, 0x0100, 0x0000, 0x0002, 0x0000, 0xfe00, 0x0002, 22.1157 + 0x0000, 0x0000, 0x0000, 0x00fe, 0x0000, 0x0000, 0xffff, 0xff00, 0xfeff, 22.1158 + 0xff00, 0xffff, 0xffff, 0xfffd, 0xfdfe, 0xffff, 0xfffd, 0xfcfe, 0xfeff, 22.1159 + 0xfefc, 0xfdfd, 0xfdfe, 0xfcfe, 0xfdfe, 0xfefd, 0xfdfd, 0xfefc, 0xfdfc, 22.1160 + 0xfcfc, 0xfbfe, 0xfcfd, 0xfcfe, 0xfcfd, 0xfcfd, 0xfdfc, 0xfdfc, 0xfefc, 22.1161 + 0xfdfc, 0xfefc, 0xfefc, 0xfefd, 0xfefc, 0xfcfe, 0xfdfe, 0xfffe, 0xfdff, 22.1162 + 0xfeff, 0xfdff, 0xffff, 0xfffd, 0xffff, 0xfeff, 0xffff, 0x00ff, 0xffff, 22.1163 + 0xfe00, 0xffff, 0x0000, 0x00ff, 0xff00, 0x0000, 0x0000, 0x00fe, 0x0000, 22.1164 + 0x0000, 0x0000, 0x0000, 0x0002, 0x0101, 0x0000, 0x0001, 0x0201, 0x0001, 22.1165 + 0x0101, 0x0001, 0x0100, 0x0200, 0x0001, 0x0101, 0x0201, 0x0101, 0x0101, 22.1166 + 0x0102, 0x0101, 0x0202, 0x0101, 0x0101, 0x0103, 0x0101, 0x0103, 0x0102, 22.1167 + 0x0103, 0x0301, 0x0202, 0x0202, 0x0201, 0x0102, 0x0302, 0x0201, 0x0301, 22.1168 + 0x0202, 0x0202, 0x0302, 0x0102, 0x0203, 0x0302, 0x0102, 0x0203, 0x0301, 22.1169 + 0x0202, 0x0202, 0x0302, 0x0201, 0x0203, 0x0301, 0x0202, 0x0202, 0x0202, 22.1170 + 0x0202, 0x0301, 0x0101, 0x0103, 0x0101, 0x0201, 0x0102, 0x0101, 0x0202, 22.1171 + 0x0101, 0x0102, 0x0101, 0x0201, 0x0102, 0x0101, 0x0102, 0x0101, 0x0201, 22.1172 + 0x0101, 0x0101, 0x0200, 0x0101, 0x0100, 0x0001, 0x0001, 0x0002, 0x0001, 22.1173 + 0x0000, 0x0100, 0x0000, 0x0000, 0x0001, 0x0000, 0xff00, 0x0000, 0x0000, 22.1174 + 0x00ff, 0x0000, 0x00ff, 0x00fe, 0xff00, 0xff00, 0xff00, 0x00ff, 0xfeff, 22.1175 + 0xff00, 0xffff, 0xff00, 0xfffe, 0xffff, 0xfeff, 0xffff, 0xffff, 0xfffd, 22.1176 + 0xffff, 0xfeff, 0xfeff, 0xfdff, 0xfeff, 0xfdff, 0xfeff, 0xfefe, 0xfdfe, 22.1177 + 0xfeff, 0xfcff, 0xfdff, 0xfffe, 0xfefd, 0xfdfd, 0xfdfe, 0xfdfd, 0xfefd, 22.1178 + 0xfefd, 0xfefd, 0xfefc, 0xfdfd, 0xfdfe, 0xfcfe, 0xfefe, 0xfefc, 0xfefd, 22.1179 + 0xfcff, 0xfefe, 0xfefd, 0xfefd, 0xfdfe, 0xfcfe, 0xfeff, 0xfdff, 0xfffe, 22.1180 + 0xfefd, 0xfdff, 0xffff, 0xfdff, 0xffff, 0xffff, 0xfffe, 0xffff, 0xff00, 22.1181 + 0x00ff, 0xfe00, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1182 + 0x0000, 0x0001, 0x0002, 0x0100, 0x0000, 0x0001, 0x0001, 0x0001, 0x0201, 22.1183 + 0x0101, 0x0100, 0x0201, 0x0101, 0x0101, 0x0102, 0x0101, 0x0202, 0x0101, 22.1184 + 0x0101, 0x0202, 0x0101, 0x0300, 0x0101, 0x0101, 0x0103, 0x0101, 0x0103, 22.1185 + 0x0202, 0x0102, 0x0301, 0x0201, 0x0103, 0x0302, 0x0202, 0x0301, 0x0302, 22.1186 + 0x0202, 0x0202, 0x0302, 0x0202, 0x0202, 0x0302, 0x0202, 0x0203, 0x0301, 22.1187 + 0x0102, 0x0203, 0x0302, 0x0302, 0x0202, 0x0103, 0x0102, 0x0203, 0x0301, 22.1188 + 0x0201, 0x0202, 0x0201, 0x0102, 0x0102, 0x0102, 0x0101, 0x0201, 0x0101, 22.1189 + 0x0101, 0x0001, 0x0102, 0x0101, 0x0100, 0x0002, 0x0001, 0x0101, 0x0100, 22.1190 + 0x0000, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe00, 0x0000, 22.1191 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ff, 0xff00, 0xff00, 0x0000, 22.1192 + 0x00ff, 0xfe00, 0x0002, 0x0000, 0x00fe, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 22.1193 + 0xfe00, 0xff00, 0x00ff, 0xffff, 0xfd00, 0xff00, 0xffff, 0xfeff, 0xffff, 22.1194 + 0xfefe, 0xfeff, 0xfdff, 0xfffe, 0xfefd, 0xfdff, 0xfeff, 0xfefe, 0xfefe, 22.1195 + 0xfffd, 0xfdfe, 0xfefe, 0xfffc, 0xfefd, 0xfdfe, 0xfefe, 0xfdfd, 0xfdfd, 22.1196 + 0xfefd, 0xfdfe, 0xfdfe, 0xfefe, 0xfdfd, 0xfefd, 0xfdfe, 0xfeff, 0xfefd, 22.1197 + 0xfdfe, 0xfeff, 0xfefe, 0xfdff, 0xfeff, 0xfdff, 0xffff, 0xfdff, 0xfffe, 22.1198 + 0xfdff, 0xffff, 0xfefe, 0xfeff, 0xfeff, 0x00ff, 0xffff, 0x00ff, 0xfffe, 22.1199 + 0x0000, 0x00ff, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 22.1200 + 0x0000, 0x0001, 0x0000, 0x0001, 0x0200, 0x0100, 0x0001, 0x0101, 0x0200, 22.1201 + 0x0101, 0x0100, 0x0201, 0x0001, 0x0102, 0x0201, 0x0101, 0x0101, 0x0103, 22.1202 + 0x0101, 0x0203, 0x0202, 0x0202, 0x0102, 0x0201, 0x0202, 0x0102, 0x0103, 22.1203 + 0x0301, 0x0101, 0x0301, 0x0201, 0x0301, 0x0201, 0x0103, 0x0302, 0x0102, 22.1204 + 0x0302, 0x0201, 0x0203, 0x0301, 0x0202, 0x0202, 0x0202, 0x0202, 0x0102, 22.1205 + 0x0202, 0x0103, 0x0202, 0x0201, 0x0103, 0x0102, 0x0301, 0x0101, 0x0201, 22.1206 + 0x0102, 0x0301, 0x0101, 0x0202, 0x0101, 0x0301, 0x0101, 0x0101, 0x0000, 22.1207 + 0x0103, 0x0001, 0x0101, 0x0002, 0x0001, 0x0001, 0x0100, 0x0000, 0x0001, 22.1208 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1209 + 0x0000, 0x0000, 0xff00, 0x0100, 0x0000, 0x00ff, 0x0000, 0x00ff, 0x0000, 22.1210 + 0xff00, 0xff00, 0x0000, 0x00fe, 0xff00, 0x0000, 0x00ff, 0x0000, 0x00ff, 22.1211 + 0x0000, 0xfdff, 0x0000, 0x00ff, 0xffff, 0xfeff, 0xff00, 0xffff, 0xfeff, 22.1212 + 0xfffe, 0xffff, 0xfffd, 0xfefe, 0xfffe, 0xfefd, 0xfffe, 0xfefd, 0xfefd, 22.1213 + 0xfefc, 0xfdfe, 0xfefe, 0xfefc, 0xfefd, 0xfcfe, 0xfdfe, 0xfffe, 0xfefd, 22.1214 + 0xfcfe, 0xfdfe, 0xfcfe, 0xfdff, 0xfefe, 0xfdfe, 0xfdfe, 0xfffe, 0xfdfe, 22.1215 + 0xfdfe, 0xfeff, 0xfdff, 0xffff, 0xfefe, 0xfffe, 0xfeff, 0xfffe, 0xff00, 22.1216 + 0xfffe, 0xff00, 0x00ff, 0xffff, 0xfe00, 0x0000, 0xff00, 0xff00, 0xff00, 22.1217 + 0x0000, 0x00ff, 0x0000, 0xfe00, 0x0000, 0xff00, 0x0000, 0x0000, 0x0000, 22.1218 + 0x0000, 0x0000, 0x0100, 0x0200, 0x0000, 0x0101, 0x0100, 0x0201, 0x0101, 22.1219 + 0x0100, 0x0101, 0x0102, 0x0100, 0x0101, 0x0102, 0x0101, 0x0201, 0x0201, 22.1220 + 0x0101, 0x0202, 0x0301, 0x0201, 0x0201, 0x0102, 0x0202, 0x0102, 0x0103, 22.1221 + 0x0302, 0x0201, 0x0301, 0x0201, 0x0301, 0x0201, 0x0202, 0x0201, 0x0102, 22.1222 + 0x0302, 0x0201, 0x0301, 0x0101, 0x0202, 0x0201, 0x0201, 0x0102, 0x0301, 22.1223 + 0x0101, 0x0202, 0x0201, 0x0201, 0x0101, 0x0301, 0x0101, 0x0201, 0x0102, 22.1224 + 0x0101, 0x0201, 0x0201, 0x0001, 0x0103, 0x0100, 0x0101, 0x0102, 0x0102, 22.1225 + 0x0200, 0x0101, 0x0101, 0x0300, 0x0001, 0x0001, 0x0001, 0x0201, 0x0100, 22.1226 + 0x0000, 0x0001, 0x0001, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1227 + 0x0000, 0x00ff, 0x0000, 0x00ff, 0x0000, 0x0000, 0xff00, 0xff00, 0x0000, 22.1228 + 0x00fe, 0x00ff, 0x00ff, 0xff00, 0xff00, 0xfd00, 0x0000, 0xff00, 0xffff, 22.1229 + 0xff00, 0xfffe, 0xffff, 0xfeff, 0xffff, 0x00ff, 0xffff, 0xfd00, 0xffff, 22.1230 + 0xfeff, 0xfffe, 0xfeff, 0xfeff, 0xffff, 0xfefd, 0xfffd, 0xfdfe, 0xfeff, 22.1231 + 0xfdff, 0xfffe, 0xfffd, 0xfffe, 0xfefd, 0xfdff, 0xfffe, 0xfefd, 0xfdff, 22.1232 + 0xfffe, 0xfdfe, 0xfeff, 0xfefe, 0xffff, 0xfffd, 0xfeff, 0xfefe, 0xfdff, 22.1233 + 0xfeff, 0xfdff, 0xfefe, 0xfefe, 0xffff, 0xfefe, 0xfdff, 0xfeff, 0xfdff, 22.1234 + 0xffff, 0xffff, 0xfefe, 0xffff, 0xfffd, 0x00ff, 0xffff, 0xfffe, 0xff00, 22.1235 + 0xff00, 0x00ff, 0x00fe, 0x00ff, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0100, 22.1236 + 0x0000, 0x0100, 0x0200, 0x0100, 0x0100, 0x0001, 0x0201, 0x0101, 0x0001, 22.1237 + 0x0101, 0x0102, 0x0001, 0x0301, 0x0101, 0x0002, 0x0103, 0x0101, 0x0301, 22.1238 + 0x0101, 0x0201, 0x0101, 0x0301, 0x0201, 0x0101, 0x0202, 0x0101, 0x0202, 22.1239 + 0x0101, 0x0203, 0x0301, 0x0101, 0x0301, 0x0101, 0x0302, 0x0201, 0x0301, 22.1240 + 0x0201, 0x0200, 0x0003, 0x0301, 0x0002, 0x0202, 0x0200, 0x0202, 0x0101, 22.1241 + 0x0101, 0x0103, 0x0201, 0x0300, 0x0201, 0x0102, 0x0201, 0x0200, 0x0102, 22.1242 + 0x0101, 0x0102, 0x0003, 0x0103, 0x0100, 0x0103, 0x0100, 0x0201, 0x0102, 22.1243 + 0x0001, 0x0101, 0x0200, 0x0001, 0x0102, 0x0000, 0x0103, 0x0100, 0x0200, 22.1244 + 0x04fe, 0x0100, 0x02ff, 0x02fe, 0x0200, 0x01fd, 0x0000, 0xfe02, 0xff01, 22.1245 + 0x0000, 0x0000, 0xff00, 0x0000, 0x03fd, 0x00ff, 0x00fe, 0xfe00, 0xfe02, 22.1246 + 0xff00, 0xff00, 0xfd00, 0x0000, 0x00ff, 0x01fe, 0xfefe, 0x0000, 0x00fe, 22.1247 + 0xffff, 0xfd01, 0xffff, 0x00fd, 0xfd01, 0x00ff, 0xfffe, 0xfffe, 0xfe00, 22.1248 + 0x00ff, 0x00fd, 0x00fd, 0x00ff, 0xfd00, 0xfe00, 0x00ff, 0xfffe, 0x01fd, 22.1249 + 0xfcff, 0x00ff, 0xfefe, 0xfffe, 0x00fb, 0xffff, 0xfefd, 0x03fb, 0x00fa, 22.1250 + 0xfefe, 0xfefe, 0xfefe, 0xfffd, 0x00fb, 0xfdff, 0xfb00, 0xf902, 0xfb03, 22.1251 + 0xfefd, 0xfdff, 0xffff, 0xfcff, 0xfdff, 0xfc02, 0xfd00, 0xfeff, 0xffff, 22.1252 + 0xfeff, 0xfffe, 0xffff, 0x02fd, 0x02fb, 0x00fe, 0xfeff, 0xfc03, 0xff01, 22.1253 + 0x00ff, 0xff01, 0x01ff, 0x00ff, 0xfe01, 0x0001, 0x0000, 0x0000, 0x02fe, 22.1254 + 0x03ff, 0x01ff, 0x01fe, 0x0001, 0x05fe, 0x05fc, 0x04fd, 0x01ff, 0x02ff, 22.1255 + 0xfd03, 0x0100, 0xfe04, 0x0001, 0xfe03, 0x0401, 0xfe02, 0x0102, 0x0001, 22.1256 + 0x0102, 0xff01, 0x0501, 0x01ff, 0xff03, 0xfc08, 0xff03, 0xfe04, 0x0004, 22.1257 + 0x0401, 0x0200, 0x0201, 0x0101, 0xfb06, 0x0604, 0x05fd, 0x0000, 0x0104, 22.1258 + 0x0201, 0x0301, 0x0600, 0x01ff, 0x0201, 0x0300, 0x0101, 0x0202, 0x0201, 22.1259 + 0x0300, 0x0102, 0x0103, 0x0002, 0x0302, 0x0101, 0x0103, 0x0201, 0x0002, 22.1260 + 0x0102, 0x0101, 0x0103, 0x0101, 0x0200, 0x0101, 0x0101, 0x0200, 0x0001, 22.1261 + 0x0002, 0x0101, 0x0000, 0x0102, 0x0101, 0x0300, 0x0100, 0x0100, 0x0100, 22.1262 + 0x0000, 0x0001, 0x0000, 0x0003, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 22.1263 + 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 0x0000, 22.1264 + 0x00ff, 0xfd00, 0x0000, 0xffff, 0xff00, 0x00ff, 0xfe00, 0xff00, 0xff00, 22.1265 + 0xff00, 0x00ff, 0x00fe, 0x00ff, 0xffff, 0xff00, 0xfeff, 0xffff, 0x00ff, 22.1266 + 0xfeff, 0xffff, 0xffff, 0xfffe, 0xfffe, 0xfeff, 0xfeff, 0xfeff, 0xfffe, 22.1267 + 0xfeff, 0xfeff, 0xffff, 0xfefe, 0xffff, 0xfffd, 0xfefe, 0xfeff, 0xffff, 22.1268 + 0xfefd, 0xfeff, 0xfefe, 0xfefe, 0xfffe, 0xfffd, 0xfefe, 0xfffe, 0xfffd, 22.1269 + 0xfefe, 0xfefe, 0xfdff, 0xfffe, 0xfffd, 0xfeff, 0xfdff, 0xffff, 0xfffd, 22.1270 + 0xffff, 0xfeff, 0xffff, 0xffff, 0xfeff, 0xffff, 0xffff, 0x00fe, 0xffff, 22.1271 + 0xff00, 0xff00, 0x0000, 0xfe00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1272 + 0x0000, 0x0200, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0100, 0x0200, 22.1273 + 0x0001, 0x0101, 0x0100, 0x0200, 0x0101, 0x0001, 0x0101, 0x0102, 0x0101, 22.1274 + 0x0201, 0x0101, 0x0101, 0x0102, 0x0100, 0x0101, 0x0201, 0x0101, 0x0001, 22.1275 + 0x0201, 0x0002, 0x0101, 0x0003, 0x0101, 0x0101, 0x0102, 0x0102, 0x0102, 22.1276 + 0x0101, 0x0201, 0x0101, 0x0102, 0x0102, 0x0101, 0x0103, 0x0101, 0x0201, 22.1277 + 0x0101, 0x0101, 0x0301, 0x0101, 0x0301, 0x0101, 0x0201, 0x0102, 0x0101, 22.1278 + 0x0102, 0x0101, 0x0201, 0x0102, 0x0201, 0x0102, 0x0200, 0x0300, 0x0101, 22.1279 + 0x0201, 0x0102, 0x0201, 0x0101, 0x0101, 0x0201, 0x0001, 0x0101, 0x0100, 22.1280 + 0x0200, 0x0001, 0x0001, 0x0100, 0x0000, 0x0001, 0x0200, 0x0001, 0x0100, 22.1281 + 0x0000, 0x0000, 0x0100, 0x0000, 0xff00, 0x0000, 0x0000, 0x00ff, 0xfd00, 22.1282 + 0x0000, 0xff00, 0xff00, 0xff00, 0xff00, 0xfe00, 0xff00, 0x0000, 0x00ff, 22.1283 + 0xffff, 0x00fe, 0xffff, 0xff00, 0xffff, 0x00fe, 0xffff, 0x00ff, 0xfeff, 22.1284 + 0xffff, 0xff00, 0xfdff, 0xff00, 0xffff, 0xfeff, 0xffff, 0xffff, 0xfffe, 22.1285 + 0xffff, 0xfeff, 0xffff, 0xffff, 0xfeff, 0xfeff, 0xfeff, 0xffff, 0xfefe, 22.1286 + 0xffff, 0xfffe, 0xfefe, 0xffff, 0xfffe, 0xfeff, 0xfffe, 0xffff, 0xfefe, 22.1287 + 0xfeff, 0xfeff, 0xffff, 0xfefe, 0xfeff, 0xfdff, 0xffff, 0xfdff, 0xffff, 22.1288 + 0xffff, 0xfffd, 0xffff, 0xfeff, 0xffff, 0xffff, 0xfffe, 0xffff, 0xff00, 22.1289 + 0x00fe, 0xffff, 0x00ff, 0xffff, 0x00fe, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 22.1290 + 0x00fe, 0x0000, 0x0000, 0x0000, 0x00ff, 0x0000, 0x0000, 0x0001, 0x0000, 22.1291 + 0x0200, 0x0000, 0x0001, 0x0100, 0x0000, 0x0001, 0x0001, 0x0003, 0x0001, 22.1292 + 0x0100, 0x0001, 0x0201, 0x0001, 0x0101, 0x0201, 0x0101, 0x0101, 0x0102, 22.1293 + 0x0102, 0x0201, 0x0201, 0x0201, 0x0101, 0x0202, 0x0101, 0x0102, 0x0103, 22.1294 + 0x0101, 0x0102, 0x0101, 0x0201, 0x0101, 0x0101, 0x0201, 0x0101, 0x0101, 22.1295 + 0x0102, 0x0101, 0x0301, 0x0101, 0x0301, 0x0101, 0x0101, 0x0102, 0x0201, 22.1296 + 0x0102, 0x0101, 0x0202, 0x0101, 0x0101, 0x0102, 0x0101, 0x0201, 0x0101, 22.1297 + 0x0101, 0x0100, 0x0102, 0x0101, 0x0201, 0x0101, 0x0001, 0x0201, 0x0101, 22.1298 + 0x0001, 0x0101, 0x0200, 0x0100, 0x0100, 0x0000, 0x0100, 0x0000, 0x0001, 22.1299 + 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x00fe, 0x0000, 0x0000, 0x0000, 22.1300 + 0x0000, 0xff00, 0x0000, 0x00ff, 0x0000, 0xff00, 0x0000, 0x0000, 0xff00, 22.1301 + 0x0000, 0x00fe, 0x0000, 0x00ff, 0x00ff, 0x00ff, 0xff00, 0xff00, 0x00fe, 22.1302 + 0xffff, 0x00ff, 0xfeff, 0xff00, 0xffff, 0xff00, 0xfffe, 0x00ff, 0xffff, 22.1303 + 0x00ff, 0xfffd, 0xffff, 0xfffe, 0xffff, 0xfeff, 0xffff, 0x00ff, 0xffff, 22.1304 + 0xfffe, 0xfffe, 0xfffe, 0xffff, 0xfeff, 0xfffe, 0xfefe, 0xfffe, 0xfffd, 22.1305 + 0xfffe, 0xfffe, 0xfffe, 0xfdff, 0xffff, 0xfffd, 0xffff, 0xfffd, 0xffff, 22.1306 + 0xffff, 0xfffd, 0xffff, 0xfffe, 0xffff, 0xfeff, 0xffff, 0xfeff, 0xfffe, 22.1307 + 0x00ff, 0xffff, 0xfffe, 0xff00, 0x00ff, 0xfeff, 0x00ff, 0xff00, 0xff00, 22.1308 + 0xff00, 0x0000, 0x00ff, 0x00fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1309 + 0x0000, 0x0000, 0x0000, 0x0200, 0x0001, 0x0000, 0x0001, 0x0100, 0x0000, 22.1310 + 0x0100, 0x0000, 0x0001, 0x0002, 0x0101, 0x0100, 0x0001, 0x0002, 0x0101, 22.1311 + 0x0100, 0x0201, 0x0101, 0x0101, 0x0100, 0x0102, 0x0101, 0x0201, 0x0101, 22.1312 + 0x0100, 0x0201, 0x0102, 0x0101, 0x0102, 0x0101, 0x0201, 0x0201, 0x0201, 22.1313 + 0x0101, 0x0101, 0x0103, 0x0101, 0x0103, 0x0101, 0x0301, 0x0101, 0x0301, 22.1314 + 0x0101, 0x0202, 0x0101, 0x0202, 0x0201, 0x0101, 0x0102, 0x0101, 0x0201, 22.1315 + 0x0101, 0x0101, 0x0002, 0x0101, 0x0001, 0x0101, 0x0002, 0x0101, 0x0101, 22.1316 + 0x0002, 0x0101, 0x0100, 0x0100, 0x0200, 0x0001, 0x0001, 0x0100, 0x0000, 22.1317 + 0x0001, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1318 + 0x0000, 0xff00, 0x0000, 0x0000, 0x0000, 0x00ff, 0x0000, 0x0000, 0x0000, 22.1319 + 0x0000, 0xff00, 0x0000, 0x0000, 0x00ff, 0x0000, 0xff00, 0x0000, 0x0000, 22.1320 + 0xfe00, 0x0000, 0xff00, 0x0000, 0x00ff, 0x0000, 0xff00, 0xff00, 0xfe00, 22.1321 + 0xff00, 0xff00, 0xff00, 0x00ff, 0x00fe, 0xffff, 0xffff, 0x00ff, 0xfefe, 22.1322 + 0xffff, 0xfefe, 0xffff, 0xfffd, 0xfeff, 0xfffe, 0xfffe, 0xfffd, 0xfefe, 22.1323 + 0xfffe, 0xfefe, 0xfffe, 0xfffd, 0xfeff, 0xfffd, 0xfffe, 0xfffd, 0xfdff, 22.1324 + 0xfeff, 0xfeff, 0xfeff, 0xffff, 0xfefe, 0xffff, 0xfffe, 0xffff, 0xfeff, 22.1325 + 0xffff, 0xffff, 0xfeff, 0xff00, 0xff00, 0x00ff, 0x0000, 0xfeff, 0xff00, 22.1326 + 0xff00, 0x0000, 0x0000, 0x00ff, 0x0000, 0x00ff, 0x0000, 0x0000, 0xfe00, 22.1327 + 0x0000, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, 22.1328 + 0x0002, 0x0100, 0x0000, 0x0001, 0x0001, 0x0000, 0x0001, 0x0002, 0x0100, 22.1329 + 0x0000, 0x0101, 0x0100, 0x0200, 0x0001, 0x0101, 0x0100, 0x0001, 0x0102, 22.1330 + 0x0100, 0x0101, 0x0102, 0x0101, 0x0201, 0x0101, 0x0101, 0x0201, 0x0101, 22.1331 + 0x0101, 0x0102, 0x0101, 0x0201, 0x0101, 0x0101, 0x0001, 0x0103, 0x0101, 22.1332 + 0x0102, 0x0101, 0x0201, 0x0201, 0x0101, 0x0102, 0x0101, 0x0201, 0x0100, 22.1333 + 0x0101, 0x0201, 0x0101, 0x0100, 0x0101, 0x0200, 0x0101, 0x0101, 0x0102, 22.1334 + 0x0001, 0x0101, 0x0102, 0x0001, 0x0101, 0x0100, 0x0102, 0x0001, 0x0101, 22.1335 + 0x0200, 0x0100, 0x0001, 0x0101, 0x0200, 0x0001, 0x0101, 0x0100, 0x0100, 22.1336 + 0x0000, 0x0002, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ff, 22.1337 + 0x0000, 0xfe00, 0xff00, 0x0000, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0xfe00, 22.1338 + 0xff00, 0x0000, 0xff00, 0x0000, 0xff00, 0x0000, 0x00ff, 0x0000, 0xfe00, 22.1339 + 0x0000, 0x0000, 0xff00, 0xff00, 0xff00, 0x00ff, 0x00fe, 0x00ff, 0xffff, 22.1340 + 0xffff, 0xfd00, 0xff00, 0xffff, 0xfffe, 0xffff, 0xfeff, 0xffff, 0xfeff, 22.1341 + 0xfefe, 0xffff, 0xfffd, 0xffff, 0xfffd, 0xfeff, 0xfffe, 0xfeff, 0xfffe, 22.1342 + 0xfffe, 0xfffe, 0xfffe, 0xfeff, 0xfffe, 0xfeff, 0xffff, 0xffff, 0xfefe, 22.1343 + 0xffff, 0x00ff, 0xfffe, 0xff00, 0xff00, 0xfeff, 0xff00, 0xff00, 0xff00, 22.1344 + 0x0000, 0x00ff, 0xfe00, 0xff00, 0xff00, 0xff00, 0xff00, 0xff00, 0x0000, 22.1345 + 0x00fe, 0x00ff, 0xff00, 0x0000, 0x00ff, 0xff00, 0x0000, 0xfe00, 0x0000, 22.1346 + 0xff00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ff, 0x0100, 0x0000, 22.1347 + 0x0000, 0x0100, 0x0000, 0x0000, 0x0002, 0x0001, 0x0001, 0x0001, 0x0201, 22.1348 + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0102, 0x0101, 0x0201, 0x0100, 22.1349 + 0x0001, 0x0101, 0x0102, 0x0101, 0x0301, 0x0100, 0x0101, 0x0103, 0x0201, 22.1350 + 0x0102, 0x0101, 0x0301, 0x0100, 0x0101, 0x0301, 0x0101, 0x0001, 0x0002, 22.1351 + 0x0101, 0x0101, 0x0201, 0x0101, 0x0101, 0x0200, 0x0101, 0x0100, 0x0201, 22.1352 + 0x0101, 0x01ff, 0x0101, 0x0100, 0x0002, 0x02fe, 0x0001, 0x0101, 0x0000, 22.1353 + 0x0001, 0x0002, 0x0001, 0x0100, 0x0100, 0x0100, 0x00ff, 0x0001, 0x0002, 22.1354 + 0x0000, 0x0100, 0x0000, 0x0001, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 22.1355 + 0x0000, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x00ff, 22.1356 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ff, 0xff00, 0x0000, 22.1357 + 0xff00, 0x0000, 0xff00, 0xfe00, 0x0000, 0xff00, 0x00ff, 0x00ff, 0xff00, 22.1358 + 0xfe00, 0xffff, 0x0000, 0xffff, 0xfe00, 0x0000, 0xfffe, 0x0000, 0x00fe, 22.1359 + 0x00fe, 0xffff, 0xff00, 0x00ff, 0xfffe, 0xff00, 0x00ff, 0xfeff, 0xff00, 22.1360 + 0xff00, 0xffff, 0xff00, 0x0000, 0xfffe, 0xffff, 0xff00, 0xfe00, 0x00ff, 22.1361 + 0x00ff, 0xffff, 0x0000, 0x00fe, 0xffff, 0x0000, 0x00ff, 0x00ff, 0x00ff, 22.1362 + 0x00fe, 0xffff, 0x0000, 0x00ff, 0x00ff, 0x00fe, 0x00ff, 0xff00, 0xff00, 22.1363 + 0x0000, 0x00ff, 0xfe00, 0x0000, 0x0000, 0x00ff, 0x0000, 0xff00, 0x0001, 22.1364 + 0x00ff, 0x0000, 0x0100, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1365 + 0x0100, 0x0000, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, 0x0002, 0x0000, 22.1366 + 0x0001, 0x0000, 0x0000, 0x0100, 0x0100, 0x0000, 0x0100, 0x0000, 0x0002, 22.1367 + 0x0001, 0x0001, 0x0001, 0x0100, 0x0200, 0x0100, 0x0100, 0x0100, 0x0100, 22.1368 + 0x0000, 0x0001, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0100, 22.1369 + 0x0100, 0x0100, 0x0100, 0x0200, 0x0000, 0x0100, 0x0000, 0x0001, 0x0000, 22.1370 + 0x0001, 0x0000, 0x0001, 0x0000, 0x0100, 0x01ff, 0x0000, 0x0000, 0x0000, 22.1371 + 0x0002, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, 22.1372 + 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, 0x0000, 22.1373 + 0x0000, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x01ff, 22.1374 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 22.1375 + 0x0000, 0x0000, 0xfe00, 0x0000, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 22.1376 + 0xff00, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 0x0000, 0x00ff, 0x0000, 22.1377 + 0xfe00, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 0x00ff, 0x0000, 0x0000, 22.1378 + 0xff00, 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 0x00ff, 0x0000, 0x0000, 22.1379 + 0x0000, 0xfe00, 0x0000, 0x0000, 0x0000, 0x00ff, 0x0000, 0x0000, 0x0000, 22.1380 + 0x0000, 0x0000, 0xff00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1381 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 22.1382 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1383 + 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0107, 0x0000, 22.1384 + 0x6473, 0x0031, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1385 + 0x0000, 0x0000, 0x0100, 0x2800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1386 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1387 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1388 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1389 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1390 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1391 + 0x2000, 0x2800, 0x2000, 0x5000, 0x2000, 0x7800, 0x2000, 0xa000, 0x2000, 22.1392 + 0xa000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1393 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 0x2800, 0x2000, 22.1394 + 0x5000, 0x2000, 0x7800, 0x2000, 0xa000, 0x2000, 0xa000, 0x0000, 0x0000, 22.1395 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1396 + 0x0000, 0x0000, 0x0100, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1397 + 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1398 + 0x0000, 0x0000, 0x0000, 0x0e00, 0x000b, 0x0000, 0x0000, 0x0000, 0x0000, 22.1399 + 0x4000, 0x0000, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1400 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b00, 0xfafb, 0xff00, 22.1401 + 0x0000, 0x0100, 0x0000, 0x0000, 0x0000, 0xf833, 0xdbe3, 0xf8e6, 0x2113, 22.1402 + 0x121f, 0xd400, 0x0000, 0x2b00, 0x4095, 0x0000, 0x0000, 0x0000, 0x0000, 22.1403 + 0x0000, 0x0000, 0x0000, 0x7308, 0xe7cf, 0xf5ff, 0xbaec, 0x08be, 0xce4e, 22.1404 + 0x00d3, 0x2102, 0x5171, 0xc6fe, 0x0dd8, 0x1616, 0xf305, 0x1538, 0x0000, 22.1405 + 0xaab1, 0xce19, 0x0030, 0x4eb7, 0x0204, 0x930d, 0xfe70, 0xc900, 0xd9f2, 22.1406 + 0xba3e, 0xad44, 0x0305, 0x02f1, 0x3b04, 0x3849, 0xbeea, 0x17d7, 0x1c22, 22.1407 + 0x3af6, 0x0ee6, 0x0045, 0xb000, 0x3818, 0x14ec, 0x0ee4, 0x000e, 0x0cf3, 22.1408 + 0xb3f0, 0x43e3, 0x0bc4, 0x2595, 0x3637, 0x82e9, 0x3e17, 0xf89c, 0x03ef, 22.1409 + 0xc93c, 0x0213, 0xea0f, 0xffed, 0x0000, 0x4f00, 0xd9fd, 0x30de, 0xa76f, 22.1410 + 0x96ea, 0x2014, 0x7e00, 0x5ed1, 0x4bf7, 0x2dd2, 0x5e3f, 0x7a52, 0xf3a9, 22.1411 + 0xcb08, 0x72b0, 0x1463, 0x1b10, 0xf95e, 0xc2df, 0xceb3, 0x3a06, 0xe7e7, 22.1412 + 0xa422, 0xc691, 0x7d59, 0x04fd, 0x6a22, 0xbdb7, 0x280b, 0x1d36, 0x35b7, 22.1413 + 0xcbc2, 0x562f, 0x066f, 0x3eec, 0x595c, 0xf5f8, 0x28f5, 0x0316, 0x27d9, 22.1414 + 0x425b, 0x16fb, 0x68e6, 0xbbfc, 0x2304, 0xca8d, 0xe259, 0xf6b7, 0xeeb6, 22.1415 + 0xb7a6, 0x1e0d, 0x19cb, 0xbc40, 0xb666, 0xb413, 0x2a6a, 0x698f, 0xa20a, 22.1416 + 0xf7e7, 0x76f5, 0xddd4, 0xef03, 0x8cd4, 0x7e50, 0x0f1d, 0x13c4, 0x3952, 22.1417 + 0xe0e4, 0x02fc, 0x19cd, 0x0b37, 0x5425, 0x872e, 0x61d6, 0x592f, 0x033c, 22.1418 + 0x28ee, 0x0b91, 0xcd1a, 0x6377, 0x21ed, 0xc592, 0x84e0, 0x01d3, 0xfc19, 22.1419 + 0x1703, 0x9176, 0xfcf1, 0xc259, 0xdc2d, 0x2f20, 0xddde, 0x3edb, 0x8da6, 22.1420 + 0x0bb0, 0x42a8, 0x128a, 0xeaf3, 0xe6a1, 0xbcca, 0x551b, 0x4058, 0x23f8, 22.1421 + 0x2e8a, 0x8234, 0xff1c, 0x40f9, 0xe1f5, 0x6c8d, 0xf2f6, 0xdc4c, 0xcd3b, 22.1422 + 0xdc9d, 0x103a, 0xba53, 0x6179, 0xdfeb, 0x5100, 0xd531, 0xe7bc, 0x7935, 22.1423 + 0x7b71, 0xc8ac, 0x78f6, 0x36b4, 0xc401, 0xf41c, 0x284f, 0x10dd, 0x93d3, 22.1424 + 0x366d, 0xe746, 0xfb87, 0x5544, 0x2da9, 0x9fef, 0x8406, 0x6ade, 0xe769, 22.1425 + 0x0003, 0x221b, 0x9bf9, 0x370b, 0xee0a, 0x10dd, 0x21a4, 0x4ecf, 0xa9d5, 22.1426 + 0x5005, 0x5bf3, 0xcb1d, 0x30e1, 0x16a3, 0x0a2f, 0x1cbd, 0xfa1b, 0xef30, 22.1427 + 0x31ff, 0xa9f1, 0x04d4, 0x6656, 0x1cbb, 0x82fb, 0xfd71, 0x2ff4, 0xc61e, 22.1428 + 0xe0fd, 0x084a, 0xa0fc, 0xe848, 0x0e0e, 0x47da, 0xc9c7, 0xdf05, 0x3925, 22.1429 + 0xebc6, 0x45cf, 0xf21c, 0xe7ff, 0x50da, 0xead1, 0xd911, 0x5a13, 0xc5f2, 22.1430 + 0x0cea, 0xde1c, 0x4234, 0x3fd3, 0x2e9d, 0xede6, 0xe257, 0x35c4, 0xf1f2, 22.1431 + 0x17f0, 0x17f1, 0xd3fb, 0x7901, 0xcdfc, 0xfded, 0x16c6, 0xf416, 0x232a, 22.1432 + 0xc1da, 0x1612, 0xdae3, 0xf360, 0x70b0, 0xfdfc, 0x15d9, 0xe7cd, 0x55f2, 22.1433 + 0xd129, 0xb93a, 0x27e9, 0xbdeb, 0x0059, 0x10e1, 0x2ed6, 0xde10, 0xf70a, 22.1434 + 0xba08, 0xba6a, 0x1402, 0xd3fe, 0x212f, 0xe4b8, 0x1b5d, 0x09e1, 0x0f12, 22.1435 + 0x2ebf, 0x15c2, 0x05f7, 0x4511, 0xefc4, 0xe723, 0x0919, 0x34cf, 0xe6cc, 22.1436 + 0x1222, 0xe837, 0xeeeb, 0xf810, 0xd2ee, 0xf829, 0xf6d9, 0xe360, 0xe3fe, 22.1437 + 0x1a0e, 0x0ccd, 0x18fc, 0x0502, 0x0afa, 0xdbf8, 0xd82d, 0xef12, 0x20f3, 22.1438 + 0xc824, 0x2b16, 0xe2f1, 0xf602, 0xb630, 0x4630, 0x1dca, 0xf6d3, 0x14f9, 22.1439 + 0x000c, 0x55f9, 0xab01, 0xc91e, 0x1cb7, 0xf94e, 0x043b, 0xfcd5, 0xdaf9, 22.1440 + 0x0ae1, 0x0c08, 0x0b3b, 0xcff9, 0x1fe3, 0x0f17, 0xe9bc, 0x1507, 0x1e12, 22.1441 + 0xf400, 0x0eff, 0x04d4, 0xec06, 0x2105, 0xdeee, 0xf328, 0x030c, 0x43dc, 22.1442 + 0xe7fc, 0xe817, 0xe607, 0xfbfb, 0xf50d, 0xd04d, 0x321d, 0xd2f3, 0x0cd7, 22.1443 + 0x201b, 0x47a2, 0xdd0e, 0x1fdd, 0x37dc, 0xec1c, 0xd8d6, 0x2a1f, 0x0107, 22.1444 + 0xe7fd, 0x22df, 0xdd30, 0xf0d9, 0x0623, 0x12e7, 0x151f, 0xe3e8, 0x47cd, 22.1445 + 0xda0b, 0x2809, 0xdcf0, 0xfe08, 0x0def, 0x270c, 0xd702, 0xe00a, 0x011b, 22.1446 + 0x14f9, 0x1acc, 0x400f, 0xc5de, 0x2b0e, 0xf7de, 0x03ff, 0x2204, 0xc539, 22.1447 + 0x16e7, 0xf4ed, 0xf003, 0x1cf7, 0x0bf0, 0xe727, 0x11fd, 0x23ef, 0xf8de, 22.1448 + 0xed0d, 0xe321, 0xfd01, 0xf011, 0x001f, 0x36b3, 0xdb16, 0x18e9, 0x000c, 22.1449 + 0x0af5, 0xfcfe, 0x2523, 0x00b3, 0x2dfd, 0xdb01, 0xfeff, 0xf1ef, 0x2720, 22.1450 + 0xef1a, 0xe5d5, 0x0b14, 0x34f3, 0x09f3, 0xfcc4, 0xfc1f, 0x070d, 0x1ae0, 22.1451 + 0xfeee, 0xeb0e, 0xe710, 0xe73a, 0xe708, 0x0807, 0xfae8, 0x3200, 0xf619, 22.1452 + 0xf3d2, 0x1eff, 0xbf2c, 0x17ef, 0x2cd0, 0xe939, 0x1bce, 0xed03, 0x2fe8, 22.1453 + 0x1df2, 0xc105, 0x33fd, 0x13de, 0x14e6, 0x022b, 0x0ce9, 0xcff2, 0xee06, 22.1454 + 0x142e, 0x27f1, 0xfdf0, 0xfff5, 0xf6f1, 0x1e03, 0xf5ed, 0xf903, 0x150d, 22.1455 + 0x03d3, 0x2c0c, 0xdef3, 0x0ddd, 0xfe19, 0x0630, 0xeddf, 0x0207, 0x0118, 22.1456 + 0xdc0c, 0x02d4, 0x2428, 0xf9ff, 0x01e2, 0x22f7, 0xed04, 0x1af0, 0x03ef, 22.1457 + 0xf9ff, 0xeb19, 0x09ec, 0x0112, 0xd314, 0x000f, 0x00ed, 0xf71f, 0xfa21, 22.1458 + 0xe7fb, 0x0204, 0x20dd, 0x12f9, 0xf103, 0xf504, 0x010d, 0x39c8, 0xfff5, 22.1459 + 0x0710, 0x0ff2, 0xfaeb, 0x08fa, 0x12fa, 0x0cfa, 0xe7f0, 0x071c, 0xfd0a, 22.1460 + 0xf6fc, 0xcf19, 0x0c03, 0x1405, 0xf207, 0x01e4, 0x121c, 0xf906, 0x0ad6, 22.1461 + 0xfd01, 0x050b, 0x02e6, 0xf027, 0x11e4, 0x1a15, 0xe5dd, 0xf901, 0xfe19, 22.1462 + 0x1610, 0xfbd8, 0x1cf5, 0xfd03, 0xfaf0, 0xde19, 0x2401, 0xd90d, 0x0402, 22.1463 + 0x1513, 0xe701, 0xfcea, 0x17fd, 0xf516, 0xfe0b, 0xfbe3, 0xf821, 0x13f5, 22.1464 + 0xdbf9, 0xeb0a, 0x2312, 0xfcf7, 0xeaff, 0x1301, 0x020e, 0xe5f9, 0xe511, 22.1465 + 0xf922, 0xf905, 0x0bf7, 0xf7fd, 0xf203, 0xf705, 0xf61c, 0x0424, 0xfcdf, 22.1466 + 0x08fb, 0x12ff, 0xf7f1, 0x1af5, 0xda22, 0xeeec, 0x1c21, 0x14e6, 0xe1f5, 22.1467 + 0x040b, 0x0a03, 0xf100, 0x12ef, 0x02fa, 0x1009, 0xe025, 0x11d3, 0xe81d, 22.1468 + 0x0afc, 0xf71a, 0x04f8, 0x0efb, 0xf4ea, 0x08fb, 0x1afe, 0x0803, 0xe1e9, 22.1469 + 0x1a1f, 0xf0ce, 0x20fd, 0xec20, 0xf2f2, 0xfa0e, 0xf4ff, 0x0e0f, 0x04f7, 22.1470 + 0x26e2, 0xd915, 0xfefc, 0x1908, 0xe90c, 0xfd04, 0x0dea, 0x110e, 0xfde9, 22.1471 + 0xf619, 0xefe8, 0x270e, 0x000f, 0xeedf, 0x270e, 0x03e8, 0x0ae3, 0x15e8, 22.1472 + 0xf013, 0xfd01, 0x03e3, 0xee0e, 0x1614, 0x02fe, 0x07d0, 0xef24, 0xfde8, 22.1473 + 0x1e1c, 0x1ade, 0xcdef, 0x3608, 0xfe07, 0x29df, 0xdc12, 0xeef5, 0xf900, 22.1474 + 0x0e25, 0xfd0f, 0x07e2, 0xeb0a, 0xf8fb, 0x0116, 0x0708, 0x07de, 0xf115, 22.1475 + 0x19f8, 0x05ee, 0xfb03, 0x1111, 0xc906, 0x0002, 0x05f2, 0x0a0e, 0xfffb, 22.1476 + 0x1c08, 0xe9d0, 0x1706, 0xde0e, 0x0d0b, 0x15f3, 0x0b06, 0xe6fe, 0xe706, 22.1477 + 0x3bf9, 0xd2ff, 0xfd09, 0x1a15, 0xdde0, 0x070e, 0xf813, 0x1d20, 0xd9e1, 22.1478 + 0x02f3, 0xf717, 0x150d, 0x02f4, 0x1101, 0xdddd, 0x2e0c, 0x08f0, 0xf80c, 22.1479 + 0x0fd6, 0x00fb, 0x1a14, 0xd6e5, 0x1309, 0x1501, 0x08e8, 0xd804, 0x2319, 22.1480 + 0xecef, 0x0aff, 0x0df8, 0x091f, 0xf9d7, 0x01f9, 0xfb0b, 0x041f, 0xf4fe, 22.1481 + 0x04f0, 0x0414, 0xecf0, 0x1912, 0xfdec, 0xdbfa, 0x0f11, 0xff13, 0xf5fb, 22.1482 + 0xfd11, 0x04d4, 0xf418, 0x1af2, 0x0d04, 0x020c, 0xe2e9, 0x0bfc, 0x180c, 22.1483 + 0xfaf6, 0x10f1, 0x0cff, 0xf801, 0xeefd, 0x0f1b, 0xe901, 0xee0c, 0xf5f5, 22.1484 + 0x0816, 0x0606, 0xedf5, 0x1d0a, 0xffe5, 0xf9f6, 0xfd15, 0x13ff, 0xfff4, 22.1485 + 0xf3ee, 0x060b, 0x1206, 0xf5fb, 0x04f0, 0x0c03, 0x0709, 0xfaea, 0x06f8, 22.1486 + 0xfe05, 0x0d14, 0xf208, 0xf6f4, 0x0b0a, 0xf1f8, 0xee1c, 0x0afb, 0xf208, 22.1487 + 0xfdf0, 0x0b04, 0x08fa, 0xf6f5, 0x04ff, 0x170a, 0xf5fd, 0xe7fb, 0xfa13, 22.1488 + 0xda0b, 0xfd2f, 0x11fa, 0xeced, 0x1202, 0xf902, 0xf70f, 0xfd0d, 0x18e7, 22.1489 + 0x00fe, 0xfd09, 0xf010, 0x0308, 0xf306, 0xf4fa, 0x0414, 0x0fef, 0x06f0, 22.1490 + 0xfff5, 0x16fa, 0x10e6, 0x0401, 0x0002, 0xf508, 0xdcfa, 0x130e, 0x0802, 22.1491 + 0x06e2, 0xf90e, 0xf911, 0xe617, 0xfff6, 0x15f6, 0xf8fe, 0x0010, 0x24ee, 22.1492 + 0xe8f8, 0xfd09, 0xff05, 0x15f7, 0x0cf9, 0x0af6, 0x06ff, 0xfbf1, 0xf915, 22.1493 + 0x0bf9, 0xf3f9, 0x0ffc, 0x0007, 0xecfd, 0x0008, 0xf20d, 0x17e5, 0xec02, 22.1494 + 0x0d09, 0x10f7, 0xe40b, 0x07ed, 0x0709, 0x0500, 0x06fa, 0xf702, 0xfd0b, 22.1495 + 0x00f4, 0xfefa, 0x0210, 0xf713, 0x03ff, 0xf5fd, 0x150a, 0xeff8, 0xfc02, 22.1496 + 0x000b, 0xf614, 0x04f6, 0x05f4, 0xf904, 0x0a06, 0xfbf0, 0xf909, 0xea15, 22.1497 + 0x0cf3, 0x0205, 0xf3f8, 0xfafa, 0x0403, 0xfe10, 0xfdfe, 0xfc06, 0x05f2, 22.1498 + 0xfc06, 0x0cf6, 0x080a, 0xf6fc, 0x0613, 0x02fa, 0xf6fd, 0xfa0b, 0x16f5, 22.1499 + 0xfd0d, 0x06ec, 0xf705, 0xfd0b, 0xfd01, 0x01fd, 0xfcfe, 0x17f4, 0x00f7, 22.1500 + 0xf8f2, 0x0305, 0xf8fe, 0x030a, 0x0707, 0x02f1, 0xf4fb, 0xfb07, 0xff08, 22.1501 + 0x07fd, 0x01fe, 0x0b11, 0xffec, 0xf00c, 0xf901, 0x1101, 0xf7fe, 0x0c0e, 22.1502 + 0xf9f6, 0x0102, 0x02f5, 0x0505, 0xffff, 0x01ff, 0xfd00, 0xf4ff, 0x0e02, 22.1503 + 0xfef7, 0xf2ff, 0x0909, 0x0302, 0xfdf9, 0x1407, 0xecf2, 0x0301, 0xfc07, 22.1504 + 0x0b03, 0xfefc, 0x0ef4, 0xf801, 0x0dfa, 0xfefc, 0xfe0b, 0xe904, 0x0c0d, 22.1505 + 0x03fc, 0xf6fd, 0x0301, 0x0af8, 0xf801, 0xff01, 0xff0b, 0x0bec, 0xfafb, 22.1506 + 0x0d0f, 0xfefa, 0xf304, 0xf902, 0x03f9, 0x0704, 0xfffe, 0xfffb, 0x0ff9, 22.1507 + 0x0407, 0xee06, 0xfb00, 0x020e, 0xf6f4, 0x0f00, 0xfe05, 0x03fc, 0xfeef, 22.1508 + 0x0709, 0x04f9, 0xfc02, 0x0a02, 0xfbff, 0xf9f9, 0xf908, 0xfe12, 0xfafa, 22.1509 + 0x07fe, 0x0510, 0xf2fd, 0x0301, 0xf303, 0x0004, 0x0af3, 0x050c, 0xf7f1, 22.1510 + 0x11fc, 0xfc00, 0xff06, 0x08fb, 0xfcfb, 0x0aff, 0xfafc, 0xfe07, 0xfbf4, 22.1511 + 0xf609, 0xfc1a, 0x01ee, 0x0208, 0x0007, 0xffef, 0x0005, 0x0603, 0xf9fe, 22.1512 + 0x0905, 0xfdff, 0xf206, 0x0cfb, 0x0207, 0xf600, 0x0305, 0x0000, 0xfefb, 22.1513 + 0x0004, 0x0afd, 0x05f1, 0xf6ff, 0x0afe, 0xf40b, 0x07f8, 0x0205, 0x03f7, 22.1514 + 0x06fd, 0xf100, 0x0009, 0x04f8, 0xff04, 0x0000, 0x07fc, 0x0600, 0xef03, 22.1515 + 0x00fd, 0x080a, 0xfcf9, 0x0204, 0x0103, 0x0604, 0xf8fa, 0x00ff, 0x000b, 22.1516 + 0x03f5, 0xf30a, 0x0601, 0x00fe, 0x00fa, 0xfe12, 0xfdea, 0x0705, 0xfffc, 22.1517 + 0x010b, 0xf2fb, 0x07ff, 0x0300, 0x09fb, 0x07f9, 0x00f6, 0xf907, 0x09f7, 22.1518 + 0x050d, 0xf6f8, 0x0704, 0xff07, 0xfaf7, 0xfa03, 0x0805, 0xfcf9, 0x0404, 22.1519 + 0xfc03, 0x06fd, 0x05fb, 0x0206, 0x02f5, 0x09fc, 0x00ff, 0xfefe, 0xff01, 22.1520 + 0xfe07, 0xf8fa, 0x0704, 0x07f7, 0xfb03, 0xf702, 0x12fb, 0xfbfb, 0x02fe, 22.1521 + 0xff02, 0xfbfc, 0x0e0b, 0xf8f8, 0xfefe, 0xfffb, 0x0703, 0x07ff, 0xf609, 22.1522 + 0xfcf9, 0x0302, 0x0206, 0x06fe, 0xef06, 0x04ff, 0x0102, 0xfc02, 0xfd05, 22.1523 + 0x02f8, 0x0703, 0x02fb, 0xfc04, 0xff00, 0x07f4, 0x0703, 0x05f7, 0xfd01, 22.1524 + 0x0002, 0xf9fc, 0x0afb, 0xfb05, 0x03fe, 0xf906, 0x06f3, 0x0407, 0xf900, 22.1525 + 0x05fa, 0x0200, 0xfdfe, 0xfc0f, 0xfff5, 0xfe07, 0x01fb, 0x0507, 0xf805, 22.1526 + 0x07fa, 0xff07, 0x0100, 0x01fe, 0x11f4, 0xfffa, 0xfbff, 0x0309, 0x04f6, 22.1527 + 0x0302, 0xfef3, 0xff05, 0x0200, 0x03ff, 0xfd00, 0x00fd, 0x0304, 0xf7f8, 22.1528 + 0xff04, 0x0901, 0x00fe, 0xfef5, 0x0202, 0x0a04, 0xf5fa, 0x000e, 0x0000, 22.1529 + 0xfd04, 0xfd02, 0x0801, 0xfdfd, 0xfef9, 0x020d, 0x02ff, 0xfbf9, 0x0502, 22.1530 + 0xff05, 0xfefb, 0xfc03, 0x0102, 0x02fc, 0xfefe, 0x02fd, 0xfd03, 0x03f8, 22.1531 + 0x0509, 0x00fa, 0xf800, 0xfff6, 0x0112, 0x04f9, 0x0203, 0xfd00, 0xfa05, 22.1532 + 0xfa01, 0xfd07, 0x08f9, 0xfb0a, 0x02fb, 0x0700, 0xfbf9, 0x000b, 0xfb06, 22.1533 + 0x05f4, 0xf906, 0x0501, 0x00fd, 0x0100, 0xf900, 0x0101, 0x0000, 0xfd02, 22.1534 + 0x0302, 0x01fe, 0xfefe, 0xff04, 0x01ff, 0xf9ff, 0x0b01, 0x00fc, 0xff00, 22.1535 + 0xfffa, 0x0003, 0x0201, 0xfd06, 0xfaff, 0x0306, 0xfffa, 0x0201, 0x0307, 22.1536 + 0x00ff, 0xfefa, 0xfafe, 0x0606, 0x05fb, 0xff00, 0xfbfe, 0xfd09, 0x06fe, 22.1537 + 0xfcfe, 0x00fd, 0xff00, 0x03ff, 0xfd02, 0xff03, 0x00ff, 0x00fd, 0x0001, 22.1538 + 0x0404, 0x00fb, 0xfe03, 0x00ff, 0x02ff, 0x0403, 0xf9fb, 0x09fe, 0x05fc, 22.1539 + 0xfa03, 0x04fc, 0x0301, 0xffff, 0x01fc, 0x0301, 0x0003, 0xfefe, 0xfffd, 22.1540 + 0x0201, 0xfe01, 0xfc00, 0x03ff, 0x00fe, 0x0000, 0xfb04, 0x06ff, 0x0005, 22.1541 + 0xf9ff, 0x05fc, 0x0201, 0xfb06, 0xfefb, 0x0203, 0x0000, 0x0001, 0x0502, 22.1542 + 0xfdfb, 0xfe01, 0x0601, 0xfdfe, 0x01ff, 0x01fe, 0xfd03, 0x02fd, 0xfe02, 22.1543 + 0x0002, 0xff00, 0x05fb, 0xfd03, 0x00fc, 0x00fd, 0xff05, 0xfd03, 0x0201, 22.1544 + 0xfefd, 0x0300, 0x0201, 0x00ff, 0x02fd, 0xfe04, 0x00fe, 0x0000, 0x0101, 22.1545 + 0x01ff, 0x01ff, 0x0005, 0xff00, 0xfffd, 0x0300, 0x01ff, 0x0002, 0xfdfb, 22.1546 + 0x0201, 0x0100, 0x00fd, 0x0101, 0xfe01, 0xfc00, 0x02ff, 0xff01, 0x0003, 22.1547 + 0xfefe, 0x01fd, 0x0003, 0x02ff, 0xfe00, 0x0301, 0xffff, 0xfd02, 0x03ff, 22.1548 + 0x0100, 0xff01, 0x0002, 0x02ff, 0xfeff, 0x0300, 0x0104, 0xfdfe, 0xfffe, 22.1549 + 0x0101, 0xff01, 0x00ff, 0x0301, 0xfffd, 0x01fe, 0x01ff, 0xff00, 0xfefd, 22.1550 + 0x0200, 0x0201, 0xfe00, 0xfffe, 0x0302, 0xff01, 0xfefd, 0x0401, 0x0001, 22.1551 + 0x02fe, 0x0000, 0x0100, 0xff00, 0x0000, 0x0001, 0x0201, 0xff00, 0x0001, 22.1552 + 0xffff, 0xfe02, 0x03fe, 0xfeff, 0x0000, 0x0000, 0x0000, 0x0001, 0xff00, 22.1553 + 0x00fe, 0x0001, 0xfd00, 0x0101, 0x0000, 0x0001, 0xffff, 0xfe01, 0x0103, 22.1554 + 0x01ff, 0x00fe, 0x0000, 0x0000, 0x0102, 0x01ff, 0xfd02, 0x0100, 0x0300, 22.1555 + 0xffff, 0x01ff, 0x0001, 0x00fe, 0x0100, 0x0100, 0x00fd, 0x01ff, 0x0000, 22.1556 + 0x0000, 0x0100, 0xfeff, 0x0001, 0xff01, 0x00ff, 0x0100, 0x0000, 0xff01, 22.1557 + 0x0000, 0x0000, 0xff01, 0x0100, 0x0000, 0x0301, 0x00ff, 0x0700, 0x0001, 22.1558 + 0x6200, 0x3264, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1559 + 0x0000, 0x0000, 0x0000, 0x0001, 0x0028, 0x0000, 0x0000, 0x0000, 0x0000, 22.1560 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1561 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1562 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1563 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1564 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1565 + 0x0000, 0x0020, 0x0028, 0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 22.1566 + 0x0020, 0x00a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1567 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0028, 22.1568 + 0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 0x0020, 0x00a0, 0x0000, 22.1569 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1570 + 0x0000, 0x0000, 0x0000, 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1571 + 0x0000, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1572 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000, 22.1573 + 0x0000, 0x0040, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1574 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 22.1575 + 0xffff, 0x0000, 0x0000, 0xfe00, 0x00fe, 0x0101, 0xfbfe, 0xfffd, 0xfe00, 22.1576 + 0xfefd, 0xffff, 0xfdff, 0xfdfe, 0xfdfd, 0xfcfd, 0xfbfb, 0x00fe, 0xfc00, 22.1577 + 0xfafa, 0xfdfc, 0xfcfb, 0xfefe, 0xfcfd, 0xfcfc, 0xfffd, 0xfeff, 0xfefd, 22.1578 + 0xfffe, 0x0000, 0x0000, 0x0200, 0x0302, 0x0604, 0x0a09, 0x0608, 0x0506, 22.1579 + 0x0706, 0x0808, 0x0809, 0x0608, 0x0304, 0x0403, 0x0504, 0x0707, 0x0606, 22.1580 + 0x0505, 0x0506, 0x0505, 0x0304, 0x0303, 0x0003, 0xfdfe, 0x00fe, 0xffff, 22.1581 + 0xfdff, 0xfcfc, 0xfdfd, 0xfdfd, 0xfafb, 0xfafa, 0xfcfb, 0xfbfb, 0xfcfc, 22.1582 + 0xfdfd, 0xfdfe, 0xfdfd, 0xfdfd, 0xfcfb, 0xfffe, 0xfeff, 0x0000, 0x0102, 22.1583 + 0x02ff, 0x0304, 0x0203, 0x0202, 0x0404, 0x0203, 0x0705, 0x0508, 0x0606, 22.1584 + 0x0605, 0x0707, 0x0607, 0x0706, 0x0405, 0x0404, 0x0405, 0x0003, 0x0200, 22.1585 + 0x0103, 0x0101, 0x0001, 0x0000, 0x0000, 0x0000, 0xff00, 0xffff, 0xfeff, 22.1586 + 0xfbfb, 0xfafa, 0xf9f9, 0xf8f8, 0xf8f9, 0xf7f7, 0xf8f7, 0xf8f8, 0xfafa, 22.1587 + 0xf9fa, 0xf8f9, 0xf9f8, 0xfafa, 0xfbfa, 0xfafb, 0xfcfa, 0xfdfd, 0xfdfd, 22.1588 + 0xfefd, 0xfefe, 0xffff, 0xfefe, 0xfffe, 0x0100, 0x0201, 0x0302, 0x0504, 22.1589 + 0x0605, 0x0707, 0x0505, 0x0707, 0x0807, 0x0808, 0x0808, 0x0605, 0x0606, 22.1590 + 0x0706, 0x0808, 0x0707, 0x0507, 0x0404, 0x0506, 0x0403, 0x0404, 0x0103, 22.1591 + 0x0202, 0x0202, 0x0002, 0xfeff, 0xffff, 0xffff, 0xfdff, 0xfcfd, 0xfbfb, 22.1592 + 0xf9fb, 0xf9f9, 0xf9fa, 0xf9f9, 0xf8f9, 0xfafa, 0xf9fa, 0xf9f9, 0xf7f9, 22.1593 + 0xf8f8, 0xf8f8, 0xf9f8, 0xf9f9, 0xfafa, 0xfbfa, 0xfdfc, 0x0000, 0x0000, 22.1594 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1595 + 0x0000, 0x0000, 0x0401, 0x0404, 0x0605, 0x0807, 0x0808, 0x0807, 0x0a08, 22.1596 + 0x150f, 0x1318, 0x090c, 0x0808, 0x0707, 0x0607, 0x0607, 0x0304, 0x0102, 22.1597 + 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1598 + 0x0000, 0x0000, 0x0000, 0xff00, 0xffff, 0xfdff, 0xfbfd, 0xfbfb, 0xf9f9, 22.1599 + 0xf9f9, 0xf8f9, 0xf9f8, 0xf9f9, 0xf8f8, 0xfaf9, 0xfbfb, 0xfafa, 0xf9f9, 22.1600 + 0xf8f7, 0xfafa, 0xfafa, 0xfbfc, 0xf9f9, 0xfcfb, 0xfdfd, 0xfcfb, 0xfffc, 22.1601 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1602 + 0x0000, 0x0302, 0x0303, 0x0404, 0x0404, 0x0505, 0x0605, 0x0b09, 0x0d0e, 22.1603 + 0x0b0d, 0x090b, 0x0809, 0x0707, 0x0607, 0x0706, 0x0606, 0x0707, 0x0505, 22.1604 + 0x0405, 0x0304, 0x0203, 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1605 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 22.1606 + 0xfdff, 0xfcfd, 0xfbfc, 0xfbfb, 0xfbfb, 0xfbfb, 0xfbfb, 0xfafb, 0xf9fa, 22.1607 + 0xf9f9, 0xfafa, 0xfafa, 0xfafb, 0xfafa, 0xfafa, 0xf9fa, 0xfafa, 0xf9f9, 22.1608 + 0xf8f9, 0xf8f8, 0xfaf9, 0xfcfb, 0xfffd, 0x0000, 0x0000, 0x0000, 0x0000, 22.1609 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1610 + 0x0200, 0x0402, 0x0404, 0x0504, 0x0405, 0x0404, 0x0504, 0x0606, 0x0606, 22.1611 + 0x0605, 0x0606, 0x0707, 0x0505, 0x0404, 0x0705, 0x0707, 0x0506, 0x0605, 22.1612 + 0x0604, 0x0505, 0x0504, 0x0504, 0x0504, 0x0302, 0x0300, 0x01ff, 0x00fe, 22.1613 + 0x00fd, 0x00fd, 0x00fe, 0x00fd, 0x00fd, 0x00fe, 0x00fd, 0x00fe, 0x00fd, 22.1614 + 0x00fd, 0x00fe, 0x00fc, 0xfffd, 0xfefc, 0xfefd, 0xfdfc, 0xfefc, 0xfefc, 22.1615 + 0xfefc, 0xfefd, 0xfefd, 0xfefd, 0xfefe, 0xfefd, 0xfffe, 0xfffe, 0xfeff, 22.1616 + 0xffff, 0xfeff, 0xff00, 0xfe00, 0xff01, 0xff01, 0xff02, 0xff02, 0x0002, 22.1617 + 0x0002, 0x0003, 0x0002, 0x0107, 0x0000, 0x7273, 0x3274, 0x0000, 0x0000, 22.1618 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x2800, 22.1619 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1620 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1621 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1622 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1623 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1624 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 0x2800, 0x2000, 0x5000, 22.1625 + 0x2000, 0x7800, 0x2000, 0xa000, 0x2000, 0xa000, 0x0000, 0x0000, 0x0000, 22.1626 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1627 + 0x0000, 0x0000, 0x2000, 0x2800, 0x2000, 0x5000, 0x2000, 0x7800, 0x2000, 22.1628 + 0xa000, 0x2000, 0xa000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1629 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0001, 22.1630 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x0000, 0x0000, 0x0000, 22.1631 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5800, 22.1632 + 0x0011, 0x0e00, 0x0001, 0x4400, 0x0010, 0x4000, 0x0200, 0x0080, 0x0000, 22.1633 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1634 + 0x0000, 0x0000, 0x0100, 0x2c1d, 0xe8fd, 0xe7e8, 0x07fa, 0x0101, 0xfa02, 22.1635 + 0x02fe, 0x01f2, 0x0d0e, 0xf8f3, 0x0911, 0xf2f0, 0x06fd, 0x1006, 0x050e, 22.1636 + 0x01fe, 0x02fd, 0xf5e5, 0x00f3, 0x0a02, 0xf209, 0x09ff, 0x080f, 0xfff9, 22.1637 + 0xf108, 0x04e0, 0xfef6, 0x0d07, 0x0e1e, 0x0a06, 0xe8ff, 0xf7f9, 0x05fc, 22.1638 + 0xffff, 0xfbfb, 0x07fb, 0xf105, 0x13f7, 0x0416, 0x0003, 0xe7ee, 0xf6f3, 22.1639 + 0x100c, 0xfd18, 0xf9f7, 0x1c15, 0xeafd, 0x16fc, 0xfa01, 0xeff7, 0xfbf4, 22.1640 + 0x0d06, 0xf808, 0xfcf2, 0xfcfb, 0xfb04, 0x00ed, 0x2f19, 0xfd10, 0xecfd, 22.1641 + 0x03df, 0x0d06, 0xf903, 0x0cfc, 0xeffb, 0x03fc, 0xf4ff, 0x0c03, 0x0eff, 22.1642 + 0xfa11, 0x03f9, 0xf0fb, 0x06fb, 0x0907, 0x06fd, 0xf9fd, 0xfbf6, 0x150f, 22.1643 + 0x0409, 0xe300, 0x06fd, 0x0202, 0x00f8, 0xf7f7, 0xfef5, 0xfc02, 0x09f8, 22.1644 + 0x0f20, 0xfbf8, 0xe9ff, 0xedfe, 0x0ef9, 0x141b, 0xfb0a, 0x00fc, 0x00f6, 22.1645 + 0xf7eb, 0x030f, 0x1001, 0xf202, 0xfef7, 0x0906, 0xfc0d, 0x02f1, 0x0911, 22.1646 + 0xf4f7, 0xeafa, 0x1006, 0x0e15, 0xf5ee, 0x04ff, 0xe401, 0x02f2, 0x04fe, 22.1647 + 0x0005, 0x07f9, 0x1a0b, 0x0313, 0xecf6, 0x00f1, 0x0bf9, 0x0101, 0x0003, 22.1648 + 0x06fb, 0x0606, 0xfd02, 0x09fa, 0xf909, 0xf8fe, 0xfdf9, 0x08ed, 0x110b, 22.1649 + 0xfe09, 0xfefa, 0xf2f9, 0x00ec, 0x1005, 0xff07, 0xf4f3, 0x161b, 0xfe09, 22.1650 + 0xeff8, 0xfdf6, 0x05f3, 0xff03, 0x01fc, 0x0e1b, 0xfcff, 0xf3fb, 0xf0fc, 22.1651 + 0x11f9, 0x040d, 0xfdff, 0xf1f5, 0x0701, 0x070f, 0x0407, 0x0200, 0xecf2, 22.1652 + 0x07f8, 0x0807, 0x050c, 0x09fd, 0x0200, 0xedf8, 0xfef1, 0x0a17, 0x0004, 22.1653 + 0xf9ec, 0x0104, 0x08fc, 0x0006, 0x00f9, 0xfbfc, 0xee0a, 0x1105, 0xf71b, 22.1654 + 0xfdf8, 0x06f3, 0xfffb, 0xfa00, 0xfdfa, 0x0300, 0x0801, 0xf9fb, 0x0ced, 22.1655 + 0x1026, 0xf609, 0xf1ea, 0x0007, 0x09fc, 0xfd05, 0x0203, 0xf9fb, 0x00f7, 22.1656 + 0x11fd, 0xfb07, 0x00f8, 0x0a01, 0xfc09, 0xf8e9, 0x06f7, 0x0819, 0xfe00, 22.1657 + 0xf9fc, 0x1106, 0xfefb, 0xeff6, 0xfb01, 0x120b, 0xfe00, 0xf4f7, 0x03f5, 22.1658 + 0x0a08, 0xfa00, 0x0803, 0xf7fb, 0x07f6, 0x0909, 0x0301, 0xf90c, 0x0104, 22.1659 + 0x0101, 0xe9f1, 0x0001, 0x0f1a, 0xf402, 0xeeeb, 0x0800, 0x00fd, 0xf603, 22.1660 + 0x0a01, 0x05fe, 0x0e10, 0x09fa, 0xf80f, 0xed00, 0xfdf3, 0x04fd, 0x0005, 22.1661 + 0xfe02, 0x00ff, 0xfffc, 0xfbfd, 0x18fb, 0xfd0f, 0xe2f9, 0x02ed, 0x0c0d, 22.1662 + 0x1513, 0xfbfe, 0x00fa, 0xeafc, 0x06f6, 0x1106, 0x000d, 0xf007, 0x01fb, 22.1663 + 0xebfe, 0x02ff, 0x05fa, 0x0204, 0xfd00, 0x0000, 0x2900, 0xff0f, 0xeef3, 22.1664 + 0xf9fb, 0xfd05, 0x0002, 0x01f1, 0x0808, 0xfe04, 0xf9fc, 0x05f7, 0xfd05, 22.1665 + 0xf9f3, 0x0a04, 0xfb04, 0x130a, 0x1004, 0xf1fe, 0xf6ef, 0xfc04, 0x1006, 22.1666 + 0xf801, 0xffe9, 0x040a, 0x0001, 0xf3fa, 0x03fc, 0x0e0b, 0x0501, 0xecf8, 22.1667 + 0x051d, 0xf105, 0x0801, 0xfcf8, 0x0300, 0xf2fa, 0x0403, 0x0804, 0xfafe, 22.1668 + 0x060d, 0xfd06, 0xefe3, 0x0df6, 0x040f, 0x0a00, 0xfa01, 0x0005, 0x01f8, 22.1669 + 0x0305, 0x0c02, 0x0b0d, 0xe6ee, 0xfcfb, 0x03f4, 0x0807, 0x03fe, 0xf902, 22.1670 + 0x04f7, 0x0203, 0x1a01, 0xfc08, 0xf2f0, 0x0efc, 0x0f00, 0xebfd, 0x0302, 22.1671 + 0xf904, 0x00f8, 0x03fc, 0x100c, 0xf901, 0xfbf0, 0x0501, 0x0302, 0x110c, 22.1672 + 0xfdfc, 0xedf2, 0x00f8, 0x0405, 0x1120, 0xf2f7, 0xfbee, 0xf5fb, 0x04ff, 22.1673 + 0x0402, 0x0904, 0xff08, 0xf8ff, 0x02ee, 0x1123, 0xeefd, 0xf9f1, 0x03f8, 22.1674 + 0x0108, 0x07ff, 0x0218, 0xfbfb, 0xfdf7, 0x02fe, 0xfa06, 0xf2f6, 0x090a, 22.1675 + 0xff06, 0xf1f9, 0x010c, 0xfb05, 0xf2f6, 0x0905, 0x1208, 0x0314, 0xf3f7, 22.1676 + 0xfbf8, 0x04ff, 0xf3fc, 0x0100, 0x02fc, 0x0a05, 0x0006, 0x1805, 0xf404, 22.1677 + 0xecf5, 0xfe05, 0xf9ff, 0x04f3, 0x0e04, 0xff01, 0xfd09, 0x04fa, 0x0c05, 22.1678 + 0xf6f1, 0xfaf3, 0x0b12, 0x0c00, 0x0c02, 0xe9f7, 0xfbf1, 0x05fc, 0x0505, 22.1679 + 0x0e10, 0xfcfc, 0xf9ed, 0xff08, 0xff0d, 0x00fe, 0xfe04, 0xfafa, 0xf6f5, 22.1680 + 0x0d09, 0x1620, 0xf2f7, 0xfad8, 0x08fa, 0xfb04, 0x0208, 0x0208, 0x0202, 22.1681 + 0x0009, 0x0b04, 0xfc00, 0xfbf8, 0x02e9, 0xfa05, 0x07f9, 0x0411, 0xfbfe, 22.1682 + 0xf1f7, 0x05f4, 0x1e09, 0xfd22, 0xdcf4, 0x09ee, 0x0004, 0x03fc, 0x0a06, 22.1683 + 0xfc00, 0xfcfd, 0xffef, 0x1c05, 0xfe1f, 0xef02, 0xf5fd, 0xe3f5, 0x15ff, 22.1684 + 0x040b, 0xf800, 0xfdf3, 0x0b03, 0x0e09, 0xf808, 0xee05, 0x030e, 0xf405, 22.1685 + 0x06f5, 0xfcf2, 0x0705, 0xfbf9, 0xf903, 0x1104, 0xffff, 0xebf4, 0x0309, 22.1686 + 0xfcfd, 0x0d07, 0x020b, 0x0101, 0x05f4, 0xfd05, 0x0e08, 0xfbf8, 0xfaeb, 22.1687 + 0xfd04, 0x01fb, 0x0007, 0x0301, 0x0b02, 0xfb01, 0xf2ff, 0x1109, 0xfcfe, 22.1688 + 0x08eb, 0x0307, 0x04fb, 0xfe05, 0xf7f3, 0xf8f8, 0x0603, 0x1d15, 0xfc10, 22.1689 + 0xdfe6, 0x15f0, 0xf904, 0x00f6, 0x0108, 0x0305, 0x00fd, 0x0b03, 0x1706, 22.1690 + 0xfa1d, 0xe002, 0xfeda, 0x05ec, 0x100a, 0x0102, 0xf8fa, 0x01f2, 0x0204, 22.1691 + 0x0a09, 0xfb0e, 0xf4ff, 0x1709, 0xf309, 0x0a03, 0x09f3, 0xef02, 0xeee5, 22.1692 + 0x0af8, 0x1a10, 0xf907, 0xe4f6, 0x02fc, 0xfc00, 0x1b0e, 0xf8fe, 0xeafc, 22.1693 + 0x0f03, 0x0204, 0x190c, 0xf90e, 0xe6f2, 0xf6f1, 0xfcf2, 0x0e0a, 0x080e, 22.1694 + 0x040d, 0xf8f3, 0xf5f3, 0x1610, 0xf7fc, 0xf2f2, 0x070a, 0xfe00, 0x0411, 22.1695 + 0x0aff, 0xee01, 0x05ff, 0xf50d, 0x11fe, 0xffee, 0xf004, 0xfa01, 0xfaef, 22.1696 + 0x0304, 0x0506, 0xfd01, 0x0404, 0x0a03, 0x1e1e, 0xee02, 0xdfeb, 0x0d01, 22.1697 + 0xfafe, 0xf8ee, 0x0504, 0x0404, 0x00ff, 0x0301, 0xff0e, 0xfefe, 0x0d02, 22.1698 + 0xf500, 0xfdf7, 0x0611, 0xf7fb, 0xfde5, 0x0f12, 0x0506, 0xf20e, 0xf4e8, 22.1699 + 0x0df1, 0xff07, 0x0a15, 0xfaf6, 0xf9f0, 0x040d, 0xfbfd, 0x1e04, 0xfc11, 22.1700 + 0xf7f8, 0x07db, 0x080b, 0x0006, 0x0a00, 0xde03, 0xf903, 0x0ef6, 0x0a08, 22.1701 + 0xf302, 0xfbf8, 0x07fb, 0x0000, 0x060d, 0xffff, 0xf6fd, 0x17fe, 0x000b, 22.1702 + 0x080d, 0xf904, 0xe7f0, 0xfbdf, 0x0bfe, 0x010e, 0x0203, 0xf8fe, 0x0302, 22.1703 + 0x0a03, 0x172c, 0xeef7, 0xc7ea, 0x0e04, 0x03ff, 0x0cfe, 0x0512, 0x00fb, 22.1704 + 0xf6fc, 0x02f2, 0x0b15, 0x0202, 0xf209, 0xf9fe, 0x0cf4, 0x0110, 0xf3f7, 22.1705 + 0xf5f0, 0x0e09, 0x0306, 0x0608, 0x08fb, 0xf6f8, 0x0500, 0xee01, 0x00f7, 22.1706 + 0x0300, 0x0105, 0xf7fc, 0x1e08, 0xfd10, 0xfcfc, 0xf5d4, 0x010a, 0x0701, 22.1707 + 0x1505, 0x0102, 0x0a06, 0xfff7, 0x02fe, 0xf4ef, 0x050a, 0x02eb, 0xffff, 22.1708 + 0x0f09, 0xfc00, 0xf700, 0x0afb, 0xfc0b, 0x02fb, 0x0103, 0xf200, 0x0be8, 22.1709 + 0x0417, 0xfcfe, 0xf8f7, 0x02f1, 0x0a0c, 0x0806, 0x1225, 0xf6f6, 0xcef3, 22.1710 + 0x0de9, 0xfc01, 0x0405, 0x0100, 0x0404, 0x0500, 0x0b07, 0x0916, 0x0e01, 22.1711 + 0xd7ff, 0x02ef, 0x07f9, 0xfb17, 0xf7f0, 0xf100, 0x1202, 0xfd07, 0x0405, 22.1712 + 0xfbfb, 0xeffb, 0x0d09, 0x0007, 0x0903, 0x00f5, 0xf701, 0xf8ed, 0x1f0e, 22.1713 + 0x021b, 0xf3f9, 0xdce5, 0x0a05, 0x0a04, 0xfd0b, 0xf700, 0xf6fc, 0x0904, 22.1714 + 0xfffd, 0x0d0e, 0x0317, 0xefea, 0xfdf8, 0x17f5, 0xfd0b, 0x0a02, 0xfdf7, 22.1715 + 0x0407, 0xfdf5, 0x0007, 0xf1f9, 0xfcf1, 0x09fb, 0x0209, 0x06fc, 0x0b06, 22.1716 + 0x020e, 0x0c04, 0x0c0e, 0x01f4, 0xe3f1, 0xf5da, 0x09fa, 0xfe08, 0x04fb, 22.1717 + 0x0408, 0x0905, 0xfe00, 0x0f07, 0x0d12, 0xeaff, 0x00f3, 0x0df5, 0xf812, 22.1718 + 0xf3f0, 0xfb03, 0x10f9, 0xf804, 0x0208, 0x07ff, 0xf7f9, 0xfbfd, 0x0504, 22.1719 + 0xe9f9, 0x0800, 0xff00, 0x0a0c, 0x1810, 0x0221, 0xf9f5, 0xdeda, 0x04fc, 22.1720 + 0x110a, 0xf502, 0x05fc, 0xf3f6, 0x040a, 0x01fc, 0x040e, 0x0006, 0xebf8, 22.1721 + 0x00f6, 0x1f11, 0xfa19, 0x0500, 0xe3f6, 0x09fa, 0x03f0, 0xf508, 0x00fd, 22.1722 + 0xf4fa, 0x01fb, 0x050a, 0xfffb, 0x0505, 0x0604, 0x0c11, 0x2306, 0xfe09, 22.1723 + 0xebf5, 0xe2de, 0xfaf7, 0x090b, 0xfdfe, 0xfd00, 0x0cff, 0x0509, 0x1300, 22.1724 + 0x0a15, 0xeefb, 0xdbec, 0x08f5, 0x1213, 0x0602, 0x0b07, 0xf1f9, 0x00fe, 22.1725 + 0x08fc, 0x0605, 0xfbfd, 0xf0f2, 0x09fc, 0xf3fb, 0x02fe, 0x0403, 0x0302, 22.1726 + 0x0c01, 0x1324, 0xf808, 0xf7f7, 0xf2ed, 0x130d, 0xef04, 0xf8e9, 0x01f6, 22.1727 + 0xfc00, 0x07fe, 0x0714, 0x0107, 0xf6f4, 0xfae9, 0x0f09, 0x0515, 0x030e, 22.1728 + 0xfbfd, 0xfef4, 0x0e05, 0xff00, 0xeef9, 0xf5f5, 0x03f7, 0x0505, 0x05fb, 22.1729 + 0x0107, 0x0e02, 0x040a, 0x1706, 0xf403, 0xedf6, 0xe5f3, 0x07eb, 0x1918, 22.1730 + 0xf9fd, 0x03fc, 0xfb04, 0x01fc, 0x161a, 0xff05, 0xf0f9, 0xdde6, 0xfff6, 22.1731 + 0x1818, 0x0107, 0x02fd, 0xf5fd, 0x06f8, 0x0c18, 0x0611, 0xf70d, 0xebee, 22.1732 + 0xeef1, 0x04f7, 0x05fb, 0xfcff, 0x04ff, 0x0909, 0x191d, 0x0109, 0xedf3, 22.1733 + 0xeceb, 0x110a, 0xfa0a, 0xf6f5, 0x0006, 0x06fc, 0xfe00, 0x0605, 0x030a, 22.1734 + 0xedf5, 0xfbe4, 0x1207, 0x1417, 0xfc09, 0xf800, 0xe8e2, 0x0bfb, 0x0818, 22.1735 + 0xfdfe, 0x09ff, 0x00e8, 0x0502, 0xfe09, 0x00f6, 0x0616, 0xfeff, 0x17ff, 22.1736 + 0xfa0d, 0xeef9, 0xeefb, 0xf9da, 0x0d0a, 0xfe00, 0x0902, 0x0709, 0x0c0f, 22.1737 + 0x1d13, 0xfc02, 0xdaef, 0xebe1, 0x05ec, 0x0f0d, 0x080f, 0x0300, 0xf7fe, 22.1738 + 0x02f5, 0x1411, 0x0cfd, 0x0000, 0xe5f1, 0x06f9, 0xff01, 0x0401, 0xff08, 22.1739 + 0xf9f1, 0x0d06, 0x151e, 0xff04, 0xf3f3, 0xedf1, 0x0dfd, 0xfa06, 0xf2f4, 22.1740 + 0xfffb, 0x0b02, 0x0502, 0x161e, 0x0000, 0xeff6, 0xebea, 0x0df5, 0x1723, 22.1741 + 0xfb07, 0xfaf7, 0xe1ea, 0x0efc, 0x0823, 0xfbf9, 0xf200, 0xfbe6, 0x0a09, 22.1742 + 0x1004, 0x120f, 0x080d, 0xfafe, 0xf8f3, 0x0008, 0xf8fe, 0xe4f3, 0xf8e1, 22.1743 + 0x0a0c, 0x0306, 0x0005, 0x0004, 0x0f0a, 0x1d13, 0xf40c, 0xf4f3, 0xe3ec, 22.1744 + 0x00fc, 0x090b, 0x0405, 0x0103, 0xf6ff, 0xfbe8, 0x1f0b, 0x0512, 0xfc04, 22.1745 + 0xd8ea, 0xf4f2, 0x0400, 0x150a, 0x01ff, 0x0b0f, 0x0702, 0x250e, 0xf40b, 22.1746 + 0x00eb, 0xeaf5, 0xfcea, 0xfc00, 0xfcf0, 0x0bfe, 0x0606, 0x08fa, 0x1316, 22.1747 + 0xfdff, 0xf7fb, 0xf6e6, 0x1612, 0x1817, 0x0103, 0xe1ee, 0xe7de, 0x0cf9, 22.1748 + 0x0b1b, 0x0000, 0xf1fa, 0xfde6, 0x0e0b, 0x0b01, 0x0b1b, 0x0408, 0xfafa, 22.1749 + 0x02f5, 0x111b, 0xff05, 0xe5f7, 0xdbd9, 0x0bfe, 0xfd04, 0x000b, 0x0e05, 22.1750 + 0x070b, 0x110d, 0xf214, 0xe0f2, 0xeaee, 0x08f8, 0x1105, 0x1115, 0x0610, 22.1751 + 0xf700, 0xeaf2, 0x1ff1, 0x0418, 0xf1f8, 0xdde8, 0xf8ea, 0x0a0c, 0x0f0e, 22.1752 + 0x0407, 0x0005, 0x0001, 0x260d, 0x020d, 0x0e10, 0xe4e8, 0xf6ea, 0xe8f9, 22.1753 + 0x07db, 0x0a08, 0x0103, 0x0805, 0x180f, 0xfb02, 0xf6ff, 0xfbe2, 0x0d15, 22.1754 + 0x0d14, 0x0206, 0xeff4, 0xfbf5, 0x05f4, 0x1114, 0xe4fe, 0xedf7, 0xf5e4, 22.1755 + 0x0b0a, 0x1e0d, 0x0b0e, 0x0102, 0xeffc, 0xeff2, 0x1826, 0xff04, 0xe101, 22.1756 + 0xf2e8, 0x0905, 0x0504, 0x030b, 0x0bff, 0xff00, 0x06fb, 0xfc12, 0xeee5, 22.1757 + 0xe5f9, 0x0400, 0x1406, 0x0910, 0x060f, 0xf700, 0xf3ef, 0x1f18, 0x0215, 22.1758 + 0xf3ff, 0xc2da, 0x02d4, 0x0b0e, 0x0e09, 0x0412, 0x0304, 0x00fd, 0x1f0a, 22.1759 + 0x131e, 0xff0f, 0xdde0, 0xebe7, 0xf7f3, 0x1205, 0x0615, 0xfe01, 0xf1f8, 22.1760 + 0x1b05, 0xf905, 0xfcfd, 0x0beb, 0x0301, 0x100d, 0xfb00, 0xf7f1, 0xfcfd, 22.1761 + 0xf7f5, 0x150c, 0x0d09, 0xf006, 0xffdf, 0x06fb, 0x0a10, 0x0400, 0x00fa, 22.1762 + 0xe9fa, 0xfdec, 0x2325, 0x040c, 0xe606, 0xf3de, 0xfbf8, 0xfd06, 0x2207, 22.1763 + 0x052a, 0xf9fc, 0x00fb, 0xeefc, 0xf6ec, 0xddff, 0x08fb, 0x0a05, 0x0917, 22.1764 + 0x0e0b, 0xfc02, 0x06f9, 0x04fa, 0xfe19, 0xf4f8, 0xe3d2, 0x0205, 0x1210, 22.1765 + 0x040c, 0xf302, 0xfcf9, 0xf9f9, 0x2304, 0x1d32, 0xf802, 0xe1dc, 0xdbee, 22.1766 + 0x03de, 0x0e04, 0x0d17, 0x0203, 0x0aff, 0x1a0c, 0x0518, 0xf3fa, 0xf9e6, 22.1767 + 0xf4f6, 0x13fd, 0xf002, 0x0208, 0xfafb, 0xf4fc, 0x1703, 0x0504, 0xf907, 22.1768 + 0xf7db, 0x0fff, 0x1030, 0x0602, 0xf704, 0xdfdf, 0xf9ec, 0x2414, 0x0b0d, 22.1769 + 0xe112, 0xf2e5, 0xf8f1, 0x0305, 0x240a, 0x0615, 0xf4fa, 0xf4f5, 0x19f3, 22.1770 + 0x0614, 0xeaff, 0x00f6, 0xfaf6, 0x030d, 0x0904, 0x0104, 0x0706, 0xf7ee, 22.1771 + 0x0708, 0xe9fb, 0xe2e4, 0x08ff, 0x0e06, 0x0e0d, 0x1605, 0x000c, 0xfcfd, 22.1772 + 0x1502, 0x0d30, 0xf5f5, 0xd8d8, 0xe4e1, 0x04ed, 0x0609, 0x1217, 0xfa0d, 22.1773 + 0x01f9, 0x1104, 0x0417, 0x0b04, 0xf803, 0xf7fa, 0x0301, 0xf3f3, 0xf607, 22.1774 + 0xf2f9, 0xf9f2, 0x0b04, 0x0816, 0xf7ff, 0xfbe7, 0x150e, 0x0a0c, 0xff01, 22.1775 + 0xe4fc, 0x02ea, 0x090c, 0x271c, 0x0d17, 0xddf3, 0xe7da, 0xe9ee, 0x15f9, 22.1776 + 0x1b1e, 0x0109, 0xf5f3, 0xebe8, 0x1706, 0x0515, 0xebfb, 0x04fa, 0x15fd, 22.1777 + 0x121c, 0x0d0b, 0x0002, 0xea01, 0xe6e0, 0x09f5, 0xf9ee, 0xf2fa, 0x03fd, 22.1778 + 0x0c02, 0x0814, 0x0a04, 0x0104, 0xf8f6, 0x2d08, 0x232e, 0xf704, 0xcdda, 22.1779 + 0xe4df, 0xebe5, 0x0604, 0x170c, 0x0512, 0x00fc, 0x09fe, 0x1510, 0x0812, 22.1780 + 0xf6e6, 0xf5f6, 0x00eb, 0x120d, 0x0d1b, 0x0005, 0xfaf2, 0xf0e8, 0xfb06, 22.1781 + 0xeff8, 0x0cf0, 0x0c1b, 0x05fe, 0xfb02, 0xf6e9, 0x03f8, 0x0a01, 0x1b15, 22.1782 + 0x0f21, 0xf1fe, 0xfbee, 0xf2f3, 0x11ef, 0xff12, 0xf6f5, 0xe6f6, 0x04ed, 22.1783 + 0x100a, 0x0619, 0xeafa, 0x0003, 0xfff8, 0x1118, 0x080b, 0x1811, 0xf50c, 22.1784 + 0xf1f4, 0xe8e2, 0xf208, 0xe5f1, 0x00f8, 0x0903, 0x1213, 0x0605, 0xff03, 22.1785 + 0xfd00, 0x2312, 0x1417, 0xea07, 0xdbcb, 0xf9fb, 0xfa00, 0x0d0e, 0x1406, 22.1786 + 0xf4fc, 0xe9f3, 0x01f9, 0x230e, 0xfd1d, 0xf2e8, 0xe4fc, 0x16e4, 0x0e14, 22.1787 + 0x110c, 0xfdfe, 0xfbf9, 0xfa01, 0x150f, 0xf2f9, 0x11f1, 0xf505, 0xf4ea, 22.1788 + 0xeafc, 0x0603, 0x0600, 0x0903, 0x1e12, 0x0821, 0xe9f1, 0xf8eb, 0xf3f0, 22.1789 + 0x1efb, 0x0d1a, 0x010a, 0xeddd, 0xf7fb, 0x08f8, 0xf908, 0xfaf7, 0x0402, 22.1790 + 0x00fa, 0x1c10, 0x0b09, 0x031b, 0xf3f7, 0xe4eb, 0x0ad3, 0x0413, 0x0205, 22.1791 + 0x0509, 0x0401, 0x00ff, 0xf2f9, 0xfbf7, 0x0e05, 0x151a, 0x1e19, 0xd1f8, 22.1792 + 0xf0df, 0xf6f8, 0xf8f7, 0x0b01, 0x0f0f, 0x0410, 0x0305, 0xfd03, 0x250f, 22.1793 + 0xeefe, 0xead5, 0xe8df, 0x1301, 0x171a, 0x0e0d, 0xfbff, 0xf401, 0xeaf3, 22.1794 + 0x0b07, 0x00fb, 0x1ffe, 0x0417, 0xf200, 0xf9e9, 0xf804, 0xfbf2, 0xfdf0, 22.1795 + 0x2111, 0x032a, 0xeef8, 0xfeed, 0xf7f5, 0x0400, 0x0209, 0xe806, 0xfced, 22.1796 + 0x1809, 0x130e, 0xf91c, 0xedfb, 0xf3f7, 0xebef, 0x18fc, 0x1018, 0xfd21, 22.1797 + 0xf7f9, 0xd1e3, 0x0dec, 0xff0a, 0xf907, 0x0604, 0x0708, 0x120b, 0x0907, 22.1798 + 0xf802, 0x1001, 0x0406, 0x0001, 0xeee3, 0xeff3, 0x02fb, 0xf2fb, 0x0afa, 22.1799 + 0x0f0f, 0xf701, 0x02fb, 0x090b, 0x320f, 0x010e, 0xddec, 0xf4e8, 0x00fe, 22.1800 + 0x080d, 0x01fe, 0x03fc, 0xfbfc, 0xeff1, 0x0f05, 0x0c00, 0x0508, 0xfb01, 22.1801 + 0xe5f7, 0x05fa, 0x140d, 0x070e, 0x0800, 0x0c0c, 0xf71c, 0xe7e8, 0xf7db, 22.1802 + 0x0109, 0xfcfb, 0x0104, 0xf5fb, 0xfef9, 0x0f00, 0x0411, 0x030f, 0xfa06, 22.1803 + 0x0bfd, 0xfcfe, 0x1b04, 0x1711, 0xed02, 0xd4de, 0xf6e6, 0xfced, 0x080e, 22.1804 + 0x0112, 0x0afc, 0x0902, 0xf8fd, 0x06ff, 0x0a0b, 0x130d, 0x1416, 0x05fd, 22.1805 + 0xf4fe, 0xdbf3, 0xf3ef, 0xe3ea, 0x09f9, 0x0b0c, 0x0009, 0x0502, 0x1612, 22.1806 + 0x0d14, 0xf100, 0xe0e6, 0xfcfb, 0x1701, 0x182b, 0x0906, 0xf103, 0xecec, 22.1807 + 0xd8dd, 0x0ff4, 0x1511, 0xf70d, 0xee01, 0x01f8, 0x00f8, 0x0a07, 0x0109, 22.1808 + 0x08fc, 0x1316, 0x1a25, 0xfaff, 0xf2eb, 0x00fd, 0xe2e4, 0xe6d8, 0x0c02, 22.1809 + 0xfc01, 0x1705, 0x0a1b, 0x120a, 0xfef9, 0xf7ea, 0x00fa, 0x1a07, 0x1a22, 22.1810 + 0x0013, 0xe0e1, 0xecf0, 0xefec, 0xf804, 0x0102, 0x0df3, 0x0702, 0xfb0a, 22.1811 + 0x1002, 0x0a0d, 0xfc0d, 0xfefe, 0x15f7, 0xfd08, 0xfb00, 0x0509, 0xeaf3, 22.1812 + 0xf4fb, 0xfcfb, 0xf1f2, 0x04fb, 0x2214, 0x010f, 0xf0fe, 0xf5f7, 0xf8ee, 22.1813 + 0x0e03, 0x131b, 0x0505, 0xfc07, 0x08fc, 0xeff6, 0x07fb, 0x0e0f, 0xddfd, 22.1814 + 0xe9d6, 0x0801, 0xfffd, 0x1104, 0x0211, 0x0c06, 0x0908, 0x0814, 0x02fe, 22.1815 + 0xeefb, 0x0007, 0xfbf5, 0xf6ec, 0x0000, 0xf701, 0xfffc, 0x0305, 0x0a0d, 22.1816 + 0x0302, 0xeff5, 0x0dfc, 0x1a0e, 0xfe1b, 0xeff5, 0xf6f3, 0xebf1, 0x08f7, 22.1817 + 0x1221, 0x070b, 0xebf9, 0xfbf9, 0xedf3, 0x05f6, 0x1415, 0xf307, 0xfff3, 22.1818 + 0x1c0a, 0xff0e, 0x0100, 0xf1f7, 0xedf4, 0xfdfd, 0x1805, 0x0b07, 0x0403, 22.1819 + 0x0d13, 0xe9f5, 0xefde, 0xf701, 0xfcee, 0x1406, 0x151c, 0x0612, 0xfef9, 22.1820 + 0xedfb, 0xf4ee, 0x0fff, 0x0c13, 0xfc10, 0xfbe9, 0x00fd, 0xf1fc, 0xf9f0, 22.1821 + 0x07f9, 0x0506, 0x0d08, 0x170f, 0x050b, 0x000b, 0xeeed, 0xe6db, 0xf9fc, 22.1822 + 0x04fa, 0x1611, 0x0c21, 0x110b, 0xf901, 0xf1f4, 0xe2df, 0x04f4, 0x181d, 22.1823 + 0x0012, 0xfdee, 0x0602, 0xefef, 0x0aeb, 0x0409, 0x0b0c, 0xf0fb, 0x110c, 22.1824 + 0x0c14, 0xfff8, 0xf70b, 0xddf5, 0xffe1, 0x0f0a, 0x071c, 0x0705, 0xf2f8, 22.1825 + 0xe9fe, 0xfcf5, 0xfbf7, 0x070c, 0x170c, 0x0909, 0x0314, 0xff01, 0xf3fa, 22.1826 + 0xe6ea, 0xf5f7, 0x1706, 0xfe0e, 0x0204, 0x0000, 0xf3f2, 0x0d16, 0xfffb, 22.1827 + 0xf0fb, 0xfbf2, 0x04fd, 0x0e0e, 0x060e, 0x0605, 0xf9fc, 0xf9f9, 0x17f5, 22.1828 + 0x0702, 0xf813, 0xefe2, 0xf6dc, 0x0008, 0x06f3, 0x1309, 0x060f, 0x0b0b, 22.1829 + 0x0cfc, 0x0e0d, 0xf70a, 0x0de6, 0xff01, 0xe503, 0x02e1, 0xfefb, 0xe9fd, 22.1830 + 0x06fa, 0x100d, 0x0610, 0xeffe, 0x0af2, 0x0908, 0x0805, 0x07f5, 0x0409, 22.1831 + 0xfd08, 0x05ff, 0x0217, 0xe9f4, 0xebf9, 0xe9ed, 0x08fc, 0xfb01, 0x0c07, 22.1832 + 0x0b20, 0x0000, 0xfaff, 0xff09, 0xfaf9, 0xf5fa, 0x0d16, 0x1612, 0xf204, 22.1833 + 0xf1fd, 0xfdeb, 0xf7dd, 0xff0b, 0x030e, 0x06f4, 0xf2fe, 0x0405, 0x040e, 22.1834 + 0xfafb, 0xfe09, 0x05fc, 0x1707, 0x191f, 0x0f16, 0xeff9, 0xbddb, 0xfdcc, 22.1835 + 0xfdff, 0x08f3, 0x0f14, 0x1111, 0x0909, 0x0504, 0x0407, 0xf3fd, 0x03ef, 22.1836 + 0x0ffd, 0x1119, 0x05fc, 0xf7fb, 0xe400, 0xe9d7, 0x1007, 0x0000, 0x0005, 22.1837 + 0x09f7, 0x1106, 0xfa1c, 0x03f3, 0xfaed, 0xfa09, 0x05fc, 0x2b13, 0x0d1a, 22.1838 + 0xef03, 0xe0d7, 0xf0ed, 0xedf5, 0x10fb, 0x0c0e, 0xfd12, 0x0af5, 0x100b, 22.1839 + 0xfa03, 0xeaf9, 0x05f4, 0x0a10, 0xfb0a, 0x1b0e, 0x0312, 0xeff3, 0xfef0, 22.1840 + 0xdef7, 0x03f2, 0xe8ff, 0x0afc, 0x0d12, 0x0002, 0x0306, 0x05fd, 0x0205, 22.1841 + 0x1005, 0x0d23, 0x01fc, 0xdafa, 0xf9ee, 0xfbfe, 0xeef2, 0x01ec, 0x120f, 22.1842 + 0xfcff, 0x1209, 0x051a, 0xfdfd, 0xef00, 0x07fd, 0x05fa, 0x0102, 0xff00, 22.1843 + 0xff01, 0x03fc, 0x1007, 0xf7ff, 0xf1f9, 0xf2e8, 0x0e04, 0xff09, 0xfffc, 22.1844 + 0x03f3, 0x0b05, 0x0804, 0x1a0d, 0x020f, 0xf1ff, 0xe2d8, 0x1bff, 0xfe12, 22.1845 + 0x0afb, 0x0805, 0xdbf1, 0x08f7, 0x0609, 0xff05, 0xfefc, 0xfdec, 0x130f, 22.1846 + 0x0608, 0x0609, 0xfbfe, 0xf1f8, 0x06f7, 0x0a0c, 0x0407, 0xfa02, 0xf0ee, 22.1847 + 0x01ec, 0xfffc, 0xf9fb, 0x0e02, 0x0710, 0x0f07, 0x172b, 0xfa04, 0xd7e0, 22.1848 + 0xf5d9, 0x0401, 0xf800, 0x1911, 0x0e14, 0xfcff, 0xfdfb, 0x02fd, 0xfbfd, 22.1849 + 0xf4f6, 0x01f3, 0x0b04, 0x030b, 0x0508, 0xecfe, 0xf7f4, 0x0801, 0x0205, 22.1850 + 0x150c, 0xfa12, 0x0cf8, 0xfc0a, 0xd5e4, 0xfeee, 0xf90b, 0x0605, 0x200d, 22.1851 + 0x081c, 0xfc03, 0xdde6, 0x01fa, 0xfefe, 0xfcf5, 0x140f, 0x010a, 0x090d, 22.1852 + 0x0b08, 0xee04, 0xefdc, 0xebf4, 0x0604, 0x1a0c, 0x070b, 0x0302, 0xf8f9, 22.1853 + 0xfc01, 0x02f0, 0x03fe, 0x0305, 0xedfe, 0x220e, 0xff05, 0xf7f8, 0xfcf7, 22.1854 + 0xfbf0, 0x0b09, 0x220d, 0xfb08, 0xebf0, 0xeedf, 0x050c, 0xedfd, 0x08f6, 22.1855 + 0x1210, 0x00fe, 0x1616, 0x141c, 0xfc04, 0xeff9, 0xd0d6, 0x07ff, 0x0014, 22.1856 + 0x02fc, 0xfb00, 0x02ee, 0x0606, 0x090e, 0x0706, 0xff00, 0xfeef, 0x0611, 22.1857 + 0xf9f7, 0x0507, 0x0207, 0xf9f7, 0x05ed, 0x0d1d, 0xef00, 0xedf4, 0x01f1, 22.1858 + 0x0308, 0x0400, 0x0700, 0xf700, 0x09fd, 0x0708, 0x030e, 0x0904, 0xf802, 22.1859 + 0xffee, 0x0203, 0xfcf8, 0xfd00, 0xeafa, 0xfdfa, 0x0cfb, 0x040b, 0x0812, 22.1860 + 0xedfd, 0x0df2, 0xfd09, 0xfdf6, 0x0c0d, 0x0c14, 0x0c06, 0x120a, 0xe2ed, 22.1861 + 0xf5ea, 0xe4e6, 0x03f6, 0x0004, 0x0002, 0x1814, 0x000c, 0x0a07, 0x1201, 22.1862 + 0x0100, 0xfbf6, 0xedee, 0x1213, 0x070d, 0xe0f2, 0xf8ed, 0xfeec, 0xfb04, 22.1863 + 0x1705, 0x0d09, 0x080e, 0x05f1, 0x0209, 0xf5ec, 0xf9f9, 0x0607, 0x02fa, 22.1864 + 0x2809, 0x0f23, 0xf0fe, 0xe0e8, 0xfbd3, 0x000c, 0xfbf9, 0x01f8, 0x0a11, 22.1865 + 0x0700, 0x0b14, 0xfa03, 0xf903, 0xf3fa, 0x04ec, 0x171a, 0x1417, 0xfdf7, 22.1866 + 0xe4f7, 0xe2de, 0x08fa, 0x000a, 0x0404, 0xf403, 0x0eff, 0x0a0e, 0xfc03, 22.1867 + 0x04fc, 0x0404, 0x0000, 0x1811, 0xf405, 0xf710, 0xdced, 0xecf5, 0xffee, 22.1868 + 0xf500, 0x1807, 0x0505, 0x0a0b, 0x1118, 0x0908, 0xeef9, 0xe9e0, 0x06ff, 22.1869 + 0x0818, 0xedfd, 0x1006, 0xfd02, 0xf600, 0xfbf9, 0x06fb, 0x0310, 0xeeeb, 22.1870 + 0x0409, 0x04fd, 0xfffc, 0x0d0b, 0xf8f5, 0x0d04, 0x1417, 0xf900, 0xeaff, 22.1871 + 0x0ff5, 0x010a, 0xf7f6, 0xe2dc, 0x0712, 0x04fd, 0x0001, 0x1605, 0x0008, 22.1872 + 0x0001, 0xfbf8, 0x150a, 0x000e, 0xf3f4, 0xf5fb, 0x00ef, 0x080c, 0x0112, 22.1873 + 0xf4f1, 0xf3f2, 0x06f2, 0x0512, 0x00fd, 0x0802, 0x0916, 0x0404, 0x0705, 22.1874 + 0xf902, 0xf7fb, 0xe5ea, 0xfef9, 0x0f10, 0x000a, 0x0001, 0xef01, 0x07ff, 22.1875 + 0x030c, 0xfb07, 0xf4fb, 0xf6f1, 0x0e00, 0x0f1d, 0xf6f0, 0xf800, 0x05f2, 22.1876 + 0xf803, 0x1200, 0x171a, 0xfd12, 0xe9e1, 0xeeef, 0xff03, 0xfbfd, 0xf8fe, 22.1877 + 0x1204, 0x0603, 0x1f22, 0xf905, 0xecf9, 0x02e8, 0xff01, 0xfefd, 0x01ee, 22.1878 + 0x0c14, 0xff01, 0xe9f8, 0x0fff, 0xfe02, 0xf507, 0xfbeb, 0x210e, 0x0720, 22.1879 + 0x00f8, 0xe4f4, 0xffea, 0xf9f9, 0x0c10, 0x04f7, 0xfb12, 0x0801, 0xfe0a, 22.1880 + 0xf2f0, 0x07fd, 0x0409, 0xfafe, 0x0eef, 0x0914, 0x0400, 0x07f0, 0x0001, 22.1881 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1882 + 0x0000, 0x0000, 0x0000, 0x0001, 0x0028, 0x0000, 0x0000, 0x0000, 0x0000, 22.1883 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1884 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1885 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1886 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1887 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1888 + 0x0000, 0x0020, 0x0028, 0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 22.1889 + 0x0020, 0x00a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1890 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0028, 22.1891 + 0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 0x0020, 0x00a0, 0x0000, 22.1892 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1893 + 0x0000, 0x0000, 0x0000, 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1894 + 0x0000, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1895 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0a89, 0x0000, 0x0000, 0x0000, 0x0000, 22.1896 + 0x0000, 0x0032, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1897 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x44d7, 22.1898 + 0xde87, 0xe03d, 0x0639, 0x06ea, 0xa8c0, 0x2e4b, 0x0c40, 0x202c, 0xd7c9, 22.1899 + 0x5d29, 0x3356, 0x1e8b, 0xab17, 0xaf04, 0x65b3, 0x58d5, 0x30d3, 0x459b, 22.1900 + 0xb322, 0x4d23, 0x6790, 0xa709, 0xad10, 0x2573, 0x1c98, 0x31b9, 0xfef2, 22.1901 + 0xf8ec, 0xc642, 0x028b, 0xdffd, 0xebb4, 0x37a7, 0xf239, 0x06dc, 0xf15b, 22.1902 + 0xc6ba, 0xd82f, 0x57c5, 0x00a9, 0xff01, 0x0000, 0x0000, 0x521c, 0x0092, 22.1903 + 0xf44c, 0x7d4f, 0x6292, 0x8c00, 0x6da7, 0x7886, 0x1361, 0x3e44, 0x002b, 22.1904 + 0x477b, 0x8d7e, 0x721a, 0x6d7a, 0xa300, 0x26fb, 0x003c, 0x1f42, 0x5c2c, 22.1905 + 0xe317, 0xe38c, 0x1353, 0x6dc0, 0x709e, 0x000d, 0xadc6, 0xfcaa, 0x2e3d, 22.1906 + 0x807c, 0x8f81, 0xebf2, 0x0594, 0x00fb, 0x5700, 0x23ed, 0xcccd, 0x1238, 22.1907 + 0xed1e, 0x3339, 0x5d91, 0xe81f, 0xa9ad, 0x16dd, 0x6dc7, 0xa527, 0x7500, 22.1908 + 0x5105, 0x092c, 0x7f81, 0xcd00, 0xe305, 0xe9c1, 0x5030, 0xca9c, 0xc039, 22.1909 + 0xd235, 0x03e2, 0x39f4, 0xa913, 0x00ee, 0x1c00, 0x479f, 0x0cfe, 0x4328, 22.1910 + 0x2695, 0x1a51, 0x6003, 0x4600, 0xd7e3, 0x3910, 0xc525, 0x111e, 0x1b12, 22.1911 + 0x53f0, 0xebfa, 0x0408, 0x003c, 0x11ef, 0x79f6, 0x0091, 0x0000, 0x0000, 22.1912 + 0xc9ee, 0x45ea, 0xbafa, 0x49e8, 0xb02a, 0xede3, 0x0609, 0xfa00, 0x03da, 22.1913 + 0xc201, 0x09f6, 0x00e4, 0x4400, 0xf9c3, 0xe917, 0xa65a, 0x872a, 0xee61, 22.1914 + 0x0000, 0x0b00, 0x0275, 0x007e, 0x2a5c, 0xb6c4, 0x0000, 0x451b, 0xf5c7, 22.1915 + 0x1305, 0x1e1a, 0xd714, 0x0622, 0x0c08, 0x0b00, 0xf607, 0x76ee, 0xaf00, 22.1916 + 0x2615, 0x0016, 0x1ddf, 0x0004, 0x0000, 0x0000, 0x12ee, 0x0000, 0x0000, 22.1917 + 0x0000, 0xff00, 0x43be, 0xc000, 0xdef7, 0x0166, 0xf99e, 0xdae2, 0x3d54, 22.1918 + 0x158e, 0xd5fe, 0xf932, 0x0cdc, 0xd1de, 0xf323, 0xe3f0, 0x0000, 0x0000, 22.1919 + 0x0000, 0x0000, 0x0000, 0xdf21, 0x0000, 0x0000, 0x1d00, 0xe9fa, 0x5600, 22.1920 + 0x7238, 0x0106, 0x0f11, 0xff1e, 0x180b, 0xea0d, 0x3bf9, 0xf1f4, 0x0208, 22.1921 + 0x280b, 0xbd4b, 0x3edd, 0x1c03, 0xdcf8, 0x08ea, 0x350e, 0xce00, 0x110f, 22.1922 + 0x1bf7, 0x0000, 0xbaf1, 0xfcd8, 0x453c, 0xa100, 0x67c5, 0xd0e3, 0x9981, 22.1923 + 0xe3f2, 0x0306, 0x0a00, 0xeffe, 0xdd37, 0x42dc, 0x0be0, 0xf723, 0xfede, 22.1924 + 0x230a, 0xa640, 0x0710, 0xfff3, 0x1ff2, 0xb950, 0x2cf7, 0x29f3, 0xc0e3, 22.1925 + 0x0110, 0x1bed, 0xd121, 0xfcef, 0xf8fa, 0xfd02, 0x05e3, 0x00fb, 0xde05, 22.1926 + 0x23d1, 0xfae4, 0xde37, 0x06d3, 0x00fa, 0x2a00, 0xdef8, 0x0b13, 0xe931, 22.1927 + 0x00c8, 0x0000, 0x4500, 0x00bb, 0x6c36, 0x0588, 0x4bef, 0x1015, 0x00c3, 22.1928 + 0x7336, 0xbab1, 0x0694, 0x00db, 0x229f, 0x2df8, 0xb83f, 0x04e9, 0xfcdd, 22.1929 + 0x0b04, 0x0fe8, 0xe1f6, 0xe9e7, 0x1ed6, 0x50b4, 0xe218, 0x0d05, 0x18ee, 22.1930 + 0xec09, 0xc80f, 0x3701, 0xdd3d, 0x00ae, 0x0000, 0x0600, 0xfb23, 0x0cfe, 22.1931 + 0x0d21, 0x0ed3, 0x120d, 0x080d, 0x0709, 0x08fe, 0x080c, 0x120a, 0xfe0e, 22.1932 + 0x0300, 0x1e16, 0xcdf4, 0x0044, 0x0000, 0x11ef, 0x0000, 0x0000, 0x0000, 22.1933 + 0x0000, 0x0000, 0x0000, 0x0000, 0x05fb, 0xff00, 0xd701, 0x0029, 0xe600, 22.1934 + 0x39bb, 0xdedd, 0xe62b, 0x3e89, 0xf34a, 0xf7bc, 0x08d7, 0x1709, 0xeff7, 22.1935 + 0x1edb, 0xeae3, 0x00f9, 0x2400, 0x00dc, 0x0200, 0x00fe, 0x7200, 0xc3cb, 22.1936 + 0x0c00, 0xc034, 0x4c02, 0x0edc, 0x01fb, 0x0c49, 0xff9e, 0x1d0e, 0x35fb, 22.1937 + 0xbdfd, 0xfd1a, 0x0def, 0x2729, 0xdccb, 0xf12d, 0x0200, 0x1dea, 0x271f, 22.1938 + 0xc9e7, 0x0624, 0xf80b, 0x020c, 0xdd00, 0x4c2a, 0xeeba, 0x0cd9, 0x080a, 22.1939 + 0x47f2, 0xf9fb, 0xcbe6, 0xd056, 0xd2f6, 0x223e, 0x12c5, 0xcd12, 0x46f8, 22.1940 + 0xc51e, 0xf622, 0x12dd, 0x0202, 0xbb14, 0x392d, 0x00ea, 0xdf16, 0xc0fd, 22.1941 + 0x2c29, 0x06e8, 0xf3e2, 0xf735, 0xd4ee, 0xfa1e, 0xf703, 0xfb1a, 0x1ed6, 22.1942 + 0x12f3, 0xbe3a, 0xe506, 0x1908, 0xf6f3, 0xd836, 0x09d6, 0xfce8, 0xf7e6, 22.1943 + 0x27f8, 0xd117, 0xe8e2, 0xdc2e, 0x37fc, 0xd2f1, 0x0700, 0x00f9, 0x0700, 22.1944 + 0x00f9, 0x1798, 0x4a69, 0xe00c, 0x32b2, 0xe765, 0x5301, 0xc4c5, 0x1368, 22.1945 + 0x1e6e, 0x3c07, 0xf209, 0xc817, 0xe5fa, 0xe831, 0xeb1b, 0xf7d8, 0xc148, 22.1946 + 0x3cdd, 0x22d3, 0xf717, 0x28b1, 0xfefc, 0xc529, 0xf9fc, 0x41d9, 0x9734, 22.1947 + 0xe90b, 0xf90c, 0x2200, 0xe10b, 0x1920, 0x2ac0, 0xde36, 0x1105, 0xfc07, 22.1948 + 0x1105, 0x0608, 0x16fa, 0xe818, 0x1913, 0x05f7, 0x0713, 0x0ff1, 0xf726, 22.1949 + 0x1dec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1950 + 0x0000, 0xe400, 0x0517, 0xe300, 0xd21d, 0xe000, 0xdd01, 0x1ff7, 0xf8e9, 22.1951 + 0x14d8, 0x00fb, 0x19dd, 0xf4f8, 0xe9df, 0x22eb, 0xcc10, 0x3b00, 0x00c5, 22.1952 + 0x0000, 0x0000, 0x0000, 0x0000, 0x2222, 0x44bc, 0xecd1, 0x00ff, 0x2222, 22.1953 + 0x4112, 0x5b0f, 0x614d, 0xbbca, 0x2c0d, 0x0d21, 0xdbec, 0xee05, 0xfd13, 22.1954 + 0x1dfe, 0xce17, 0xe914, 0x22c5, 0x1c09, 0xe915, 0xe450, 0x0505, 0xe0ea, 22.1955 + 0x28d5, 0x050d, 0x4334, 0xc1aa, 0x8fb2, 0xffc8, 0xfb42, 0x0ee5, 0xe600, 22.1956 + 0x25fe, 0xfef7, 0x21df, 0x19da, 0x3816, 0xb3f2, 0x1f4b, 0x30c3, 0xcafe, 22.1957 + 0xf315, 0xfc00, 0xe235, 0x08c5, 0xff60, 0x2791, 0xf720, 0x14cd, 0x00d7, 22.1958 + 0xc88a, 0x14b1, 0x120c, 0x2fcc, 0x85f9, 0x2833, 0xd644, 0x4be3, 0xd3a0, 22.1959 + 0xd461, 0x3fe2, 0xe10a, 0xc0f0, 0xd133, 0x3bd3, 0xa074, 0xdafd, 0x1eda, 22.1960 + 0x0c4f, 0x1f9c, 0x1723, 0x3b94, 0xf4f6, 0x1013, 0xf0c6, 0x3e60, 0x10c7, 22.1961 + 0x17e6, 0x16e0, 0xe81e, 0x3403, 0xe9e9, 0x1df2, 0xbd3a, 0x31f0, 0xeff0, 22.1962 + 0xd9f0, 0x152c, 0x0dd4, 0xcc00, 0x4600, 0xbbd2, 0x35fa, 0x1eda, 0xe624, 22.1963 + 0x18e3, 0x3d1b, 0x068d, 0xfb03, 0x51ea, 0xb964, 0x01ad, 0xec18, 0x0e04, 22.1964 + 0xec2a, 0xc523, 0x2bee, 0x0d0d, 0xecfa, 0xfc1d, 0xfe11, 0x010b, 0x0c00, 22.1965 + 0x0108, 0xfc1a, 0x0f15, 0xf6fb, 0x0b03, 0x1b01, 0xf203, 0x1b02, 0xd700, 22.1966 + 0x0029, 0x01ff, 0xfb00, 0x0005, 0x0000, 0x06fa, 0x0000, 0xe400, 0xec08, 22.1967 + 0x0028, 0x05f5, 0xf4f7, 0xf0d0, 0x0700, 0xe915, 0xefe5, 0xf4fc, 0xf300, 22.1968 + 0xea05, 0xe9e9, 0xda05, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1969 + 0x0000, 0xd729, 0x0000, 0x0000, 0x1700, 0x38e9, 0xb22b, 0x1411, 0x3ef9, 22.1970 + 0xcfe1, 0x017c, 0x2eab, 0xeaf6, 0x343d, 0xfbd6, 0x56d0, 0xa317, 0x07e7, 22.1971 + 0x0a22, 0x39f4, 0x16b5, 0x3313, 0xc8d8, 0xfd1b, 0xfaf6, 0x1019, 0xda07, 22.1972 + 0x2df6, 0x3fb4, 0xe52c, 0xd4f3, 0x0fe5, 0x1549, 0xc8e1, 0x17f2, 0x0df8, 22.1973 + 0xf811, 0x0e06, 0xd517, 0x34f7, 0xfbf4, 0xf319, 0x0d01, 0xc620, 0x1323, 22.1974 + 0x34ca, 0x0908, 0xf206, 0x10d0, 0x0fdd, 0xb83d, 0xd043, 0x04d9, 0x1601, 22.1975 + 0xd807, 0xf8f4, 0x2af5, 0xea11, 0x04f8, 0xd700, 0xff14, 0x0019, 0xc8d4, 22.1976 + 0xdb35, 0x3fea, 0x2bb0, 0xb218, 0xb64a, 0x570b, 0x06bc, 0xca25, 0x80ed, 22.1977 + 0x29a1, 0xaf3d, 0x40df, 0x312e, 0xecd2, 0x866a, 0x0d3c, 0x3be0, 0xce07, 22.1978 + 0xf01b, 0x0adc, 0x3dfd, 0x09c9, 0xfdea, 0xe813, 0x00e9, 0xda12, 0xec02, 22.1979 + 0x3307, 0xfcaa, 0x0009, 0xeafc, 0x0b1d, 0xfbe9, 0xf6f8, 0xf10f, 0x120f, 22.1980 + 0x33d9, 0xc711, 0xf317, 0xd318, 0x2f26, 0x2fe5, 0x04cb, 0xf426, 0xf13d, 22.1981 + 0x18e8, 0xf603, 0xfa10, 0x0516, 0x2bfa, 0xb41c, 0x2c0d, 0x0f07, 0xf3d9, 22.1982 + 0x0051, 0x06da, 0xf300, 0x0d04, 0x001c, 0x0000, 0xf300, 0x000d, 0x16d8, 22.1983 + 0xfb12, 0xc905, 0x1126, 0xf9df, 0xbd0e, 0x3528, 0x03cf, 0xe5f9, 0x23d2, 22.1984 + 0xf8ea, 0xcf5d, 0x1dc0, 0xf5fa, 0x08eb, 0xee09, 0xf2ef, 0xe6ed, 0xef17, 22.1985 + 0xf600, 0xffe9, 0x0000, 0xf907, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.1986 + 0x0600, 0x52fa, 0xbbf3, 0xf92d, 0x36da, 0x3902, 0xabeb, 0xdc5c, 0x2828, 22.1987 + 0x2ba0, 0x1b35, 0x2da7, 0xdbf9, 0xed40, 0x2fdd, 0xcc0c, 0xf15e, 0xe413, 22.1988 + 0x0bf2, 0xc158, 0x00fb, 0x31ef, 0x05d5, 0xbb2e, 0x0311, 0x4ff5, 0x0885, 22.1989 + 0xf427, 0xeafb, 0xfb1e, 0xffdf, 0xe01b, 0x120d, 0xd80f, 0x3f07, 0xc7e2, 22.1990 + 0x0a20, 0xc3f9, 0x243f, 0xc121, 0xc717, 0xf633, 0x20dc, 0x8862, 0x2821, 22.1991 + 0xfec1, 0xf13d, 0x55ae, 0x9545, 0x0dfa, 0x1033, 0xf7b4, 0xf100, 0x6506, 22.1992 + 0xebbf, 0xc916, 0xdd13, 0x0619, 0xe404, 0xeffd, 0x08e2, 0x22e0, 0xc300, 22.1993 + 0xb14f, 0xff2e, 0x0001, 0x1ef3, 0xf2f0, 0xde03, 0x3e22, 0x05c0, 0x242f, 22.1994 + 0x50b5, 0xbb1c, 0x3008, 0xeff5, 0xe177, 0x36a4, 0xc61f, 0xfb26, 0x3f16, 22.1995 + 0xbdc4, 0xfe34, 0xddf4, 0x01fc, 0x2900, 0xf3cb, 0xe8f0, 0xc13f, 0x09f0, 22.1996 + 0x11ea, 0xb02d, 0xf312, 0x10eb, 0x110e, 0xf5f8, 0xf912, 0x02d9, 0xca4c, 22.1997 + 0x1f06, 0x0fcf, 0x0d13, 0x01ff, 0xdb2a, 0x0329, 0xfb00, 0xe316, 0x0b17, 22.1998 + 0xef12, 0x3408, 0x1ee3, 0xdd03, 0x1a0b, 0x0831, 0xe301, 0xf607, 0x1604, 22.1999 + 0x0df9, 0xe400, 0x001c, 0x0ff1, 0xe500, 0x20fa, 0xbd01, 0x211e, 0xdd04, 22.2000 + 0x07f0, 0xf3e3, 0xf149, 0x26b8, 0xddee, 0xf4ed, 0xf235, 0xf0f3, 0x11fb, 22.2001 + 0x37c3, 0xf3e5, 0xc6e6, 0xdc3f, 0x0f16, 0x0ec1, 0xe72b, 0xb727, 0x0c06, 22.2002 + 0x1ef9, 0x44d7, 0x08be, 0x0a01, 0xb739, 0x33fb, 0x1f11, 0xc105, 0xfb16, 22.2003 + 0x2cf4, 0x00c2, 0xf570, 0x0fad, 0x122f, 0xeef0, 0x000d, 0x3803, 0xc4d3, 22.2004 + 0x0b11, 0xbf3c, 0xfa1c, 0x4cfb, 0xa3fa, 0xe556, 0x0c00, 0x26eb, 0x09fc, 22.2005 + 0xa112, 0x6b26, 0xf7e1, 0x0e15, 0x688f, 0xd3ee, 0xc143, 0x58d1, 0xe70c, 22.2006 + 0xbb08, 0x09f4, 0x1643, 0xdab6, 0x1f2a, 0xf705, 0xb8bb, 0x5847, 0x9132, 22.2007 + 0x27ef, 0xf70b, 0xecd7, 0x3246, 0xbcd5, 0x51e8, 0xe512, 0xf5d6, 0x3524, 22.2008 + 0xe1d9, 0x0e16, 0xfcea, 0x07f8, 0x08fc, 0x00fe, 0xfc12, 0xbc24, 0x1003, 22.2009 + 0xff1d, 0x0ccb, 0x14e6, 0xe915, 0xd8ea, 0x040d, 0xab24, 0x2d2d, 0xe3f6, 22.2010 + 0xf528, 0x06ac, 0x1024, 0x1af9, 0xd807, 0x172c, 0x1cc7, 0x0f06, 0xce18, 22.2011 + 0x1738, 0x08e0, 0xcff4, 0x63fd, 0xae0e, 0xf344, 0x0ed9, 0xf509, 0xffdf, 22.2012 + 0xd33d, 0x60e3, 0xe4b8, 0xd92b, 0xf02f, 0xba01, 0x3a11, 0x12cf, 0xfcda, 22.2013 + 0x41ee, 0xe202, 0xd4f8, 0x042c, 0x0ce9, 0x1ae2, 0xb737, 0x3bde, 0x1a42, 22.2014 + 0xc6b8, 0x5028, 0xe8e5, 0xaf27, 0x2f28, 0xe8f8, 0x2e00, 0xe213, 0xe50f, 22.2015 + 0x3200, 0x0008, 0x05ef, 0xde3a, 0x24d7, 0x0f2f, 0xbc00, 0x1c28, 0x0000, 22.2016 + 0xc3db, 0x0062, 0xd8e3, 0x3f06, 0xe500, 0x0bc5, 0x0c23, 0xf8cb, 0xd519, 22.2017 + 0x38dd, 0xd4f5, 0x1400, 0x0005, 0x0bcf, 0xf71e, 0xc2e6, 0x3818, 0x188e, 22.2018 + 0xcb50, 0xd23a, 0x0ac1, 0x273b, 0x059f, 0x1105, 0x0812, 0xf2dc, 0xe232, 22.2019 + 0xf516, 0x6c00, 0x1fcf, 0xf616, 0xf2ef, 0x12d1, 0x083c, 0x28b4, 0xc649, 22.2020 + 0x30dd, 0xf2f4, 0x0dfb, 0xf1ff, 0x05f7, 0x08ee, 0x11ef, 0xd4ff, 0xf448, 22.2021 + 0xf130, 0xdcef, 0x36f8, 0xdef6, 0xd346, 0x0be3, 0xed37, 0x06ef, 0x30fe, 22.2022 + 0xb511, 0x020a, 0x171d, 0xeecf, 0x142c, 0x55a9, 0xc2fc, 0x184d, 0xe9c2, 22.2023 + 0x1d1c, 0xef0a, 0xeab8, 0x3f41, 0x1dd8, 0xfed5, 0xda3e, 0xfdb7, 0x0838, 22.2024 + 0x05ff, 0x0eb5, 0xf338, 0xd509, 0x0aee, 0x0121, 0x15f3, 0xcb00, 0x271d, 22.2025 + 0xf0b8, 0x3627, 0xc0d4, 0x4717, 0xe6ee, 0x05f8, 0x13f9, 0xf7fb, 0x02e0, 22.2026 + 0x0001, 0xc14c, 0x6dcb, 0xc2f8, 0xf509, 0x4614, 0xcadc, 0x1ed6, 0x1437, 22.2027 + 0xd2f5, 0xf416, 0x0804, 0xe11e, 0x1f01, 0x03f3, 0xd929, 0x0cf6, 0x00ff, 22.2028 + 0xd429, 0x0cf8, 0xaf45, 0x3ebf, 0xe039, 0xecec, 0x0104, 0x1f04, 0xc6ee, 22.2029 + 0x2018, 0xb612, 0x093a, 0xb2fe, 0x37f2, 0x1d1a, 0xd8f4, 0xd21f, 0x092e, 22.2030 + 0xddec, 0x03ff, 0x1c1c, 0x08f0, 0x11fc, 0xfce4, 0x0ef5, 0xcf2d, 0x26d4, 22.2031 + 0xfdfe, 0x1905, 0xfbfa, 0xff09, 0x0003, 0x02f5, 0x000a, 0x0c05, 0xcf19, 22.2032 + 0x0105, 0x2b07, 0xe209, 0x1fef, 0x00f3, 0xe81e, 0x1101, 0xf7d1, 0x1d02, 22.2033 + 0x0c2d, 0x03d5, 0x0ee6, 0xf414, 0x16fc, 0xdae4, 0x1bfd, 0xef24, 0x03e4, 22.2034 + 0xf6f5, 0x180a, 0xe8f3, 0x09e1, 0x06fe, 0xf8fc, 0xec2a, 0x33cf, 0x1bf5, 22.2035 + 0xd3f9, 0x0df7, 0x1d14, 0xd8ef, 0x2e0b, 0xf1df, 0x1a14, 0xfe04, 0x0100, 22.2036 + 0x0d24, 0xe3e1, 0x0802, 0xe533, 0x16d2, 0x151e, 0x1ac2, 0x070f, 0xf4fc, 22.2037 + 0xeced, 0x1901, 0xfffc, 0xfdfe, 0x0103, 0x12f0, 0xe511, 0x10f8, 0x01fe, 22.2038 + 0x03f1, 0xeff8, 0x210d, 0xe1fd, 0x1aeb, 0xe517, 0x111f, 0x08d9, 0xedf5, 22.2039 + 0x061e, 0xfb19, 0x0bc7, 0x150d, 0x00f9, 0xfa0f, 0xf405, 0xf1f0, 0x150b, 22.2040 + 0x0a0c, 0xfee7, 0x0d19, 0x19d5, 0x160c, 0xe8e5, 0xeffd, 0x301a, 0xf0e4, 22.2041 + 0xf701, 0xe908, 0x1af9, 0xf417, 0xfdef, 0x01ff, 0xf102, 0x1101, 0xfefd, 22.2042 + 0xfdf3, 0x0b06, 0xdcff, 0xf723, 0x14ef, 0xf4db, 0x081f, 0x02fa, 0xf2fc, 22.2043 + 0xfd20, 0x1fe2, 0x0af3, 0xe603, 0xfe05, 0x041b, 0x22e1, 0x02fd, 0xf401, 22.2044 + 0x1800, 0xf9fa, 0x12f2, 0xf118, 0xeb0b, 0x1501, 0xea01, 0x02fb, 0x1d00, 22.2045 + 0xfae3, 0x0006, 0x0100, 0xfcfd, 0xfa03, 0xf500, 0x0a01, 0x0909, 0x0dd4, 22.2046 + 0xf705, 0xff14, 0xfa07, 0x0005, 0x19e1, 0x10ec, 0xe311, 0x0315, 0x0de1, 22.2047 + 0x0616, 0x0ff4, 0xe804, 0x0601, 0x0702, 0x0001, 0x0000, 0x0000, 0x0000, 22.2048 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2049 + 0x0001, 0x0028, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2050 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2051 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2052 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2053 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2054 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0028, 22.2055 + 0x0020, 0x0050, 0x0020, 0x0078, 0x0020, 0x00a0, 0x0020, 0x00a0, 0x0000, 22.2056 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2057 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0028, 0x0020, 0x0050, 0x0020, 22.2058 + 0x0078, 0x0020, 0x00a0, 0x0020, 0x00a0, 0x0000, 0x0000, 0x0000, 0x0000, 22.2059 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2060 + 0x0101, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0080, 0x0000, 22.2061 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2062 + 0x0000, 0x0bca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0040, 0x8000, 22.2063 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2064 + 0x0000, 0x0000, 0x0000, 0xfc00, 0xf8fa, 0xfaf4, 0x2e44, 0x0208, 0x0000, 22.2065 + 0xfe00, 0xfcfe, 0xf6fa, 0xfefe, 0xfcfe, 0xfafc, 0xfcfe, 0xf0fa, 0xfafc, 22.2066 + 0xfef4, 0xf4f6, 0x009e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2067 + 0x8400, 0x105c, 0xf4fe, 0x0002, 0x0002, 0xf600, 0xfcfc, 0xfafc, 0xfafa, 22.2068 + 0xfefe, 0x96fe, 0xeac8, 0x0000, 0x0808, 0x0406, 0x0c06, 0x0610, 0x0410, 22.2069 + 0x1208, 0x3e32, 0x001f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2070 + 0xfd00, 0xfcf8, 0xf8fa, 0xf4fc, 0xa69a, 0x0804, 0x0406, 0x0602, 0x0206, 22.2071 + 0x0804, 0x020c, 0x020a, 0x0c04, 0x1606, 0x0075, 0x0000, 0x0000, 0x0000, 22.2072 + 0x0000, 0xfaf9, 0xf0fc, 0xfafa, 0xfaf8, 0xf6f8, 0xfcfc, 0xf8fc, 0x94e0, 22.2073 + 0x00ee, 0x0000, 0x0000, 0x0000, 0x0600, 0x0404, 0x0c04, 0x0406, 0x0208, 22.2074 + 0x0a04, 0x2004, 0x6536, 0xfaf7, 0xfefc, 0xfa00, 0xfcfe, 0xfcf6, 0xf2fa, 22.2075 + 0xfcfc, 0xf8fc, 0xfcfa, 0xfcfa, 0xf6fc, 0xfefe, 0xfcfa, 0xfe8a, 0x0000, 22.2076 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0a04, 0x0608, 0x0608, 0x0c02, 22.2077 + 0x0406, 0x0406, 0xa806, 0x0003, 0xfaff, 0x00fe, 0xfc00, 0xf6fc, 0xfcfe, 22.2078 + 0xfafa, 0xf6fa, 0xfefc, 0xfafc, 0xfcfa, 0xfefa, 0xf8fc, 0xfcfc, 0xf800, 22.2079 + 0xf8fa, 0x008a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x0a06, 0x0608, 22.2080 + 0x040a, 0x0206, 0x060c, 0x0804, 0x0c06, 0x0204, 0x0804, 0x2e26, 0x0031, 22.2081 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf500, 0xfafa, 0xfcfa, 0xf4fe, 22.2082 + 0xfefc, 0xfafc, 0xfcfa, 0xfcfa, 0xfefc, 0xfcf6, 0xfcfa, 0xf8fc, 0xd4e8, 22.2083 + 0x00c2, 0x0000, 0x0000, 0x0000, 0x0202, 0x0c06, 0x0e02, 0x0606, 0x0a02, 22.2084 + 0x0608, 0x0408, 0x0e02, 0x0602, 0x0804, 0x0804, 0x0406, 0x0206, 0x2e0c, 22.2085 + 0x002b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf6fb, 22.2086 + 0xf4fe, 0xfcfa, 0xf6fe, 0xfcfa, 0xfaf8, 0xfa00, 0xfcf4, 0xf8fc, 0xfafc, 22.2087 + 0xfcf8, 0xfefc, 0xfef6, 0xf4fa, 0xf0b8, 0x0000, 0x0000, 0x0000, 0x0000, 22.2088 + 0x0000, 0x0406, 0x0a04, 0x0e06, 0x0606, 0x0a02, 0x0a04, 0x0606, 0x0602, 22.2089 + 0x060c, 0x0a02, 0x0804, 0x0606, 0x0204, 0x020c, 0x0606, 0x192a, 0x0000, 22.2090 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb00, 0xfcf2, 0xf4fc, 22.2091 + 0xf6fe, 0xfaf8, 0xfafe, 0xfcf2, 0xf4fe, 0xf8fc, 0xfaf8, 0xf8fc, 0xfafc, 22.2092 + 0xfcf8, 0xfefc, 0xfcf6, 0xfafe, 0xfafe, 0xf4fa, 0x00dc, 0x0000, 0x0000, 22.2093 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0602, 0x0610, 0x0c04, 0x0602, 22.2094 + 0x0410, 0x0808, 0x0806, 0x0608, 0x0206, 0x060c, 0x0806, 0x0604, 0x0408, 22.2095 + 0x0204, 0x0606, 0x0006, 0x1404, 0x0015, 0x0000, 0x0000, 0x0000, 0x0000, 22.2096 + 0x0000, 0x0000, 0x0000, 0xfaf5, 0xf6fa, 0xf6fa, 0xf8f8, 0xfcfc, 0xfaf0, 22.2097 + 0xf8fa, 0xfafa, 0xfef2, 0xfafa, 0xf8fa, 0xfef4, 0xfcfc, 0xfef6, 0xf8fc, 22.2098 + 0xfa00, 0xfefa, 0xfc00, 0xfcfe, 0xfc00, 0xfe00, 0x00f0, 0x0000, 0x0000, 22.2099 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0410, 0x0806, 0x0a0c, 0x020e, 22.2100 + 0x0608, 0x0410, 0x0c06, 0x0604, 0x060e, 0x0604, 0x0a08, 0x0a02, 0x0602, 22.2101 + 0x040a, 0x0604, 0x0202, 0x0008, 0x0004, 0x0204, 0x0202, 0x0003, 0x0000, 22.2102 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8f3, 0xf8fc, 22.2103 + 0xf2f6, 0xf2fc, 0xf8fe, 0xf8f0, 0xf4fe, 0xfcfa, 0xfaf0, 0xfcfc, 0xfaf4, 22.2104 + 0xfafa, 0xfefa, 0xfef4, 0xfafc, 0xfefe, 0xfef8, 0xfefe, 0xfefe, 0xfefe, 22.2105 + 0xfe00, 0x0000, 0x0000, 0xfe00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2106 + 0x0000, 0x0000, 0x0e04, 0x0c08, 0x0408, 0x1408, 0x0a08, 0x0608, 0x0212, 22.2107 + 0x0608, 0x0a0a, 0x0a06, 0x0406, 0x060e, 0x0602, 0x0406, 0x040c, 0x0202, 22.2108 + 0x0106, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2109 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8fb, 22.2110 + 0xf8f4, 0xf8ea, 0xfafc, 0xf2f4, 0xf2fc, 0xfafc, 0xfaee, 0xfcfa, 0xfef4, 22.2111 + 0xf8f4, 0xfefa, 0xfaf6, 0xfafa, 0xfefc, 0x00f6, 0xfefc, 0x00fe, 0x0000, 22.2112 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2113 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0e0a, 0x0408, 0x041a, 22.2114 + 0x080a, 0x080a, 0x0a0c, 0x0808, 0x1202, 0x0606, 0x060a, 0x060e, 0x0602, 22.2115 + 0x0408, 0x0808, 0x0302, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2116 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2117 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf700, 0xe8f8, 0xf8fc, 0xfcee, 22.2118 + 0xf4f0, 0xfef8, 0xfcf0, 0xf6f2, 0xfcfa, 0xf0fa, 0xfafa, 0xfcf8, 0xf8f8, 22.2119 + 0xfafc, 0xf6fe, 0xfefe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2120 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2121 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e02, 0x0a0a, 0x1c04, 0x0804, 22.2122 + 0x080c, 0x0e0e, 0x0804, 0x0c06, 0x060a, 0x060a, 0x1006, 0x0404, 0x020a, 22.2123 + 0x060a, 0x0106, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2124 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2125 + 0xff00, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8f3, 0xe8fa, 22.2126 + 0xf6f8, 0xf6f4, 0xf4f4, 0xf8fa, 0xeefc, 0xfaf8, 0xfcf4, 0xf2f8, 0xfcfc, 22.2127 + 0xf8fa, 0xfcf8, 0xfcf8, 0xfefc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2128 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2129 + 0x0000, 0x0600, 0xf802, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0602, 22.2130 + 0x1a08, 0x0608, 0x0e08, 0x0412, 0x0410, 0x1408, 0x0806, 0x060a, 0x1004, 22.2131 + 0x0606, 0x0a04, 0x0608, 0x0606, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 22.2132 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2133 + 0x0000, 0x0000, 0x0000, 0x0000, 0xfb00, 0xfcfa, 0x0efe, 0x0003, 0x0000, 22.2134 + 0x0000, 0x0000, 0x0000, 0xf2f5, 0xf6f2, 0xfaee, 0xeaf8, 0xfcf8, 0xf4f8, 22.2135 + 0xfcf2, 0xfef2, 0xf6f8, 0xfaf4, 0xfaf8, 0xf2fe, 0xfafc, 0xf8fe, 0x0000, 22.2136 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2137 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0406, 0xf402, 22.2138 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a0c, 0x0810, 0x180a, 0x0804, 22.2139 + 0x0c0a, 0x080c, 0x080c, 0x0806, 0x0410, 0x0a06, 0x0806, 0x020c, 0x0806, 22.2140 + 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2141 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2142 + 0x0000, 0xfefd, 0xfafe, 0x00f8, 0x06fc, 0x0013, 0x0000, 0x0000, 0x0000, 22.2143 + 0xf6fd, 0xf6fc, 0xf6e8, 0xf8f2, 0xfaf8, 0xf8ec, 0xf4f8, 0xf4fa, 0xfaf6, 22.2144 + 0xfefa, 0xfeec, 0xf8fa, 0xf4fa, 0xfefc, 0xfcfc, 0x0000, 0x0000, 0x0000, 22.2145 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2146 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0404, 0xf802, 0x00fc, 0x0000, 22.2147 + 0x0000, 0x0000, 0x0000, 0x0a10, 0x1404, 0x1406, 0x080c, 0x1204, 0x1004, 22.2148 + 0x060c, 0x0804, 0x0610, 0x0808, 0x0808, 0x0608, 0x0204, 0x010c, 0x0000, 22.2149 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2150 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb00, 22.2151 + 0xfefe, 0xfcf8, 0xfcfa, 0x0a00, 0x0015, 0x0000, 0x0000, 0x0000, 0xf6f9, 22.2152 + 0xf2f2, 0xecf8, 0xf6fc, 0xf8ec, 0xf0fa, 0xf0fe, 0xfaf6, 0xfafc, 0xfaf0, 22.2153 + 0xf8fa, 0xfcfa, 0xfcf4, 0xfcfc, 0x00fc, 0x0000, 0x0000, 0x0000, 0x0000, 22.2154 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2155 + 0x0000, 0x0000, 0x0000, 0x0400, 0x0204, 0x00f6, 0x0000, 0x0000, 0x0000, 22.2156 + 0x0000, 0x0600, 0x0e0a, 0x0a0a, 0x0418, 0x0a08, 0x0c0c, 0x0c0a, 0x0806, 22.2157 + 0x0612, 0x0c04, 0x0604, 0x0410, 0x0404, 0x0a08, 0x0003, 0x0000, 0x0000, 22.2158 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2159 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd00, 0xf8fc, 22.2160 + 0xf8fe, 0xfefc, 0x0e00, 0x0110, 0x0000, 0x0000, 0x0000, 0xf4f5, 0xf4f6, 22.2161 + 0xf6f6, 0xfcea, 0xf6f6, 0xf8f4, 0xf4f6, 0xf8fa, 0xf4f6, 0xf4fc, 0xf8fe, 22.2162 + 0xfcf4, 0xfafe, 0xf8f8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2163 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2164 + 0x0000, 0x0000, 0x0200, 0xfc06, 0x00fc, 0x0000, 0x0000, 0x0000, 0x0000, 22.2165 + 0x0600, 0x060a, 0x0a18, 0x040a, 0x0e12, 0x0c08, 0x0808, 0x1204, 0x0806, 22.2166 + 0x080a, 0x0210, 0x0606, 0x0808, 0x0a06, 0x0001, 0x0000, 0x0000, 0x0000, 22.2167 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2168 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb00, 0xfafc, 0xfcfe, 22.2169 + 0xf6fc, 0x0400, 0x0d12, 0x0000, 0x0000, 0xfd00, 0xf2fa, 0xfcf8, 0xeaf6, 22.2170 + 0xfcf6, 0xfcee, 0xf4ee, 0xfafa, 0xeefa, 0xf6fa, 0xfafa, 0xfcf2, 0xfafa, 22.2171 + 0xfcfa, 0xfaf8, 0x00fc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2172 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2173 + 0x0000, 0x0200, 0x0004, 0x00fa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2174 + 0x140a, 0x0806, 0x0a0e, 0x120e, 0x0408, 0x1408, 0x0208, 0x0410, 0x0a0e, 22.2175 + 0x0206, 0x0a06, 0x060c, 0x0406, 0x0504, 0x0000, 0x0000, 0x0000, 0x0000, 22.2176 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2177 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb00, 0xfcfe, 0xf6fe, 0xfcfc, 22.2178 + 0x08fe, 0x0b0e, 0x0000, 0x0000, 0x0000, 0xf8fb, 0xeaf8, 0xf6fc, 0xf8f2, 22.2179 + 0xeef2, 0xf8fc, 0xeef8, 0xfef8, 0xfcf2, 0xf0fa, 0xfefa, 0xfef4, 0xf8f6, 22.2180 + 0xfafc, 0xfcfe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2181 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2182 + 0x0000, 0x0006, 0x00fa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a08, 22.2183 + 0x1404, 0x0e0e, 0x080a, 0x1608, 0x0804, 0x080c, 0x1206, 0x0604, 0x0808, 22.2184 + 0x040c, 0x020c, 0x0c06, 0x0106, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2185 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2186 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf6fd, 0xfefe, 0xfef8, 0x0efe, 22.2187 + 0x0408, 0x0003, 0x0000, 0x0000, 0xf100, 0xf6f8, 0xeefc, 0xe8fc, 0xf6f8, 22.2188 + 0xeefe, 0xf8f4, 0xf8f6, 0xeefa, 0xfafe, 0xf6fa, 0xfaf8, 0xfef6, 0xf8fc, 22.2189 + 0x00f6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2190 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2191 + 0x0202, 0x00fc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x0612, 22.2192 + 0x0a12, 0x0806, 0x0816, 0x080e, 0x1204, 0x0808, 0x0e02, 0x060a, 0x060a, 22.2193 + 0x0206, 0x040e, 0x0906, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2194 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2195 + 0x0000, 0x0000, 0x0000, 0x0000, 0xfcfd, 0xfcfc, 0xfefc, 0x0602, 0x0706, 22.2196 + 0x0000, 0x0000, 0x0000, 0xfb00, 0xf4f6, 0xf4f6, 0xfaee, 0xf8f8, 0xf8ea, 22.2197 + 0xf8f4, 0xeefc, 0xfaf8, 0xf4fc, 0xf4fc, 0xfcf8, 0xfefa, 0xfcf2, 0xfafc, 22.2198 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2199 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0202, 22.2200 + 0x00fc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0612, 0x080a, 22.2201 + 0x0418, 0x0e0a, 0x0c08, 0x0410, 0x0a08, 0x0e08, 0x060a, 0x0404, 0x0610, 22.2202 + 0x0a02, 0x0a04, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2203 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2204 + 0x0000, 0x0000, 0x0000, 0xfb00, 0xf8fe, 0x02fe, 0x0602, 0x0007, 0x0000, 22.2205 + 0x0000, 0x0000, 0xfd00, 0xf4f4, 0xf8f2, 0xf6f8, 0xfcea, 0xf4f6, 0xf8f8, 22.2206 + 0xfcee, 0xf6f8, 0xf6fa, 0xfaf4, 0xfcfc, 0xfaf2, 0xf6fe, 0xfcfe, 0x00fc, 22.2207 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2208 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x0402, 0xfa00, 22.2209 + 0xfc00, 0x0000, 0x0000, 0x0000, 0x0a04, 0x080e, 0x040a, 0x0814, 0x0a08, 22.2210 + 0x0408, 0x0812, 0x0406, 0x080c, 0x0806, 0x0604, 0x020c, 0x0604, 0x0602, 22.2211 + 0x0206, 0x0204, 0x0204, 0x0402, 0x0200, 0x0004, 0x0200, 0xff01, 0xff01, 22.2212 + 0x0000, 0x00fe, 0x00fe, 0x00fe, 0x00fc, 0xfefe, 0xfefe, 0xfcfe, 0x00fe, 22.2213 + 0xfefa, 0xfefe, 0xfcfe, 0xfefc, 0xfe00, 0x0000, 0xfefe, 0x0000, 0xfefc, 22.2214 + 0xfc00, 0xfc00, 0xfef8, 0xfefc, 0xfafa, 0xfcfe, 0xfefc, 0xfefa, 0xfefc, 22.2215 + 0xfcfc, 0xfcfe, 0xfe00, 0xfefc, 0xfefe, 0xfefe, 0xfefe, 0xfe00, 0xfefe, 22.2216 + 0xfe00, 0x0000, 0x00fe, 0xfe00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2217 + 0x0000, 0x0002, 0x0000, 0x0002, 0x0000, 0x0002, 0x0002, 0x0000, 0x0000, 22.2218 + 0x0000, 0x0000, 0x0002, 0x0200, 0x0200, 0x0400, 0x0200, 0x0200, 0x0004, 22.2219 + 0x0200, 0x0002, 0x0002, 0x0002, 0x0202, 0x0000, 0x0002, 0x0002, 0x0002, 22.2220 + 0x0200, 0x0200, 0x0000, 0x0200, 0x0000, 0x0000, 0x0002, 0x0000, 0x0200, 22.2221 + 0x02fe, 0xfe00, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2222 + 0x0000, 0x0000, 0x02fe, 0xfe00, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 22.2223 + 0x0000, 0x00fe, 0x0000, 0x0000, 0x0000, 0x00fe, 0x0000, 0x0000, 0x02fe, 22.2224 + 0x00fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe00, 0x0200, 0x00fe, 22.2225 + 0xfe00, 0x0000, 0x0200, 0x0200, 0x0000, 0x02fe, 0x0000, 0xfe00, 0x0200, 22.2226 + 0x0000, 0x02fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe00, 22.2227 + 0xfe02, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0000, 0x0000, 22.2228 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2229 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2230 + 0x0000, 0x0200, 0x02fe, 0x0000, 0xfe00, 0x0000, 0x0000, 0x0200, 0x02fe, 22.2231 + 0x00fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2232 + 0x0107, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2233 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x2800, 0x0000, 0x0000, 0x0000, 22.2234 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2235 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2236 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2237 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2238 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2239 + 0x0000, 0x0000, 0x2000, 0x2800, 0x2000, 0x5000, 0x2000, 0x7800, 0x2000, 22.2240 + 0xa000, 0x2000, 0xa000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2241 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2000, 22.2242 + 0x2800, 0x2000, 0x5000, 0x2000, 0x7800, 0x2000, 0xa000, 0x2000, 0xa000, 22.2243 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2244 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0001, 0x0000, 0x0000, 0x0000, 22.2245 + 0x0000, 0x0000, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2246 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9600, 0x000f, 0x1400, 0x0003, 22.2247 + 0x8200, 0x000c, 0x3500, 0x0200, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 22.2248 + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 22.2249 + 0x0a00, 0x02f3, 0x0200, 0x05ff, 0xf605, 0x06f5, 0x08f9, 0x090a, 0xf4fb, 22.2250 + 0xf50a, 0xfef7, 0xff1e, 0x00fb, 0xe9fd, 0x0802, 0x06ff, 0xfd10, 0xfff4, 22.2251 + 0xfc05, 0xffff, 0xf8fc, 0xfffe, 0x0d0b, 0xfe04, 0xf1ff, 0xf4f4, 0x1004, 22.2252 + 0x0402, 0x04fc, 0xedfd, 0x070d, 0xff00, 0xf800, 0x0a03, 0x0aff, 0xf804, 22.2253 + 0x06fb, 0x04fc, 0x0b0f, 0xf4f6, 0xeffe, 0x0dfa, 0xfe07, 0x0207, 0xee02, 22.2254 + 0x0600, 0x0509, 0xee01, 0xfd01, 0x10ff, 0x000a, 0xfcff, 0xf4fe, 0x14f7, 22.2255 + 0x0109, 0xf4fb, 0xf202, 0x06fd, 0xfff9, 0x0209, 0x09f7, 0xf9fc, 0x03ff, 22.2256 + 0xf2f9, 0x0200, 0x090d, 0xff04, 0xf501, 0xfcfd, 0x0b08, 0x06fd, 0x0106, 22.2257 + 0xfd06, 0xf7ff, 0x0702, 0x0e02, 0xfcf3, 0x01f8, 0x01f5, 0xf812, 0xfb12, 22.2258 + 0x03f8, 0x07ef, 0x0c02, 0xf205, 0xfb08, 0x05ff, 0xfd04, 0xf206, 0xf3f3, 22.2259 + 0x0a01, 0x0b0a, 0x03f2, 0xfcfd, 0x05f2, 0xfd08, 0xed00, 0xfb08, 0x1205, 22.2260 + 0xfd06, 0xeb09, 0x0209, 0xfb0a, 0xf70a, 0xeffb, 0x0b02, 0x0209, 0xfe03, 22.2261 + 0xf101, 0xfc04, 0x0004, 0x0201, 0xfdf9, 0x0308, 0xfd07, 0xec08, 0x08ef, 22.2262 + 0x0705, 0x0807, 0xeffb, 0x09f9, 0x1405, 0xfe06, 0xf5fc, 0xfdf9, 0x0103, 22.2263 + 0x01fe, 0x0505, 0x0701, 0x0907, 0xeb05, 0xeaff, 0x04f8, 0x080b, 0x0306, 22.2264 + 0xfbfa, 0xfffd, 0x03fa, 0xfaf3, 0x0702, 0x0008, 0xef06, 0x07fc, 0x0d01, 22.2265 + 0x05f8, 0xeafd, 0x0607, 0x0902, 0x1106, 0xf908, 0xf000, 0xf502, 0xf6f9, 22.2266 + 0xfb09, 0x0bff, 0x0d0b, 0xf608, 0xeafe, 0xfd07, 0x0313, 0x03fb, 0x07ec, 22.2267 + 0x0604, 0x04ff, 0xf9f8, 0x02fd, 0xfb02, 0xff08, 0xf9ff, 0xfef9, 0x10f6, 22.2268 + 0x05fc, 0xf00a, 0xf8fb, 0x06fb, 0xf90a, 0x0402, 0x0e06, 0x0005, 0xf7f0, 22.2269 + 0x03f3, 0x0e0e, 0xfafe, 0xf201, 0x050d, 0x070d, 0x0af5, 0xfff3, 0x00f7, 22.2270 + 0x03fa, 0x0c02, 0x06ff, 0xfc06, 0x0101, 0xf3f1, 0x08f6, 0x1409, 0xff0b, 22.2271 + 0xf201, 0xfff3, 0xf908, 0xf102, 0x06f8, 0x0508, 0x070e, 0xfe02, 0x00fc, 22.2272 + 0x01ef, 0xf5f2, 0xfa0e, 0x070e, 0x10fd, 0x0804, 0xf7f5, 0xeaf9, 0xffff, 22.2273 + 0x0008, 0x06ff, 0x0806, 0x0809, 0xeaf6, 0xeff4, 0x0b0f, 0x130a, 0x02fb, 22.2274 + 0x01fb, 0xf2fe, 0xf708, 0x0901, 0x0df9, 0x08f5, 0xf902, 0x0003, 0x0502, 22.2275 + 0x0f04, 0xfcfd, 0xeaee, 0x0cf8, 0x13ff, 0x0301, 0x03f3, 0xf50f, 0xfa06, 22.2276 + 0x07f1, 0x0101, 0x0204, 0xf5f9, 0x1405, 0x0df8, 0xf4fc, 0xf7fd, 0xf801, 22.2277 + 0x10fd, 0x0500, 0x0804, 0xfa05, 0x0301, 0xeafc, 0xf8f6, 0x0507, 0x091d, 22.2278 + 0x010f, 0xf0f6, 0x01fd, 0x04ee, 0x05f0, 0x0b03, 0x0812, 0x0106, 0xf600, 22.2279 + 0xf1f5, 0x0208, 0x0fff, 0xfd04, 0xfe08, 0x0206, 0xee09, 0xeeee, 0xf6fa, 22.2280 + 0x100f, 0x08fe, 0xf00b, 0x01ff, 0xf6f6, 0x07f5, 0xff00, 0x0114, 0xff03, 22.2281 + 0x0bf2, 0xfff9, 0x0508, 0xff06, 0xf4fe, 0xfefc, 0x0602, 0xff0a, 0x08f6, 22.2282 + 0x10fd, 0x00fd, 0xf4f6, 0x07fb, 0x0b04, 0xfb07, 0x00ff, 0x08fd, 0xfa01, 22.2283 + 0xfa04, 0xfd09, 0x0bea, 0xfffd, 0xfe10, 0xff05, 0x07f3, 0xfbf9, 0xf0f9, 22.2284 + 0xee05, 0x0d1c, 0x1407, 0xf4fd, 0xf8ff, 0xf2ef, 0x05fd, 0x0cfd, 0x0720, 22.2285 + 0xf9f8, 0xf3f9, 0xfbfc, 0xfa01, 0x1100, 0x1204, 0x06f4, 0xff02, 0xfa0f, 22.2286 + 0xf4fc, 0xfcf0, 0x0f04, 0x0d06, 0x0df6, 0xf8ff, 0xe810, 0xf6fb, 0x0fed, 22.2287 + 0x1df8, 0x0af5, 0xf60b, 0xf30f, 0xfdf5, 0x0cfd, 0x0b04, 0xf4ff, 0xff04, 22.2288 + 0xfafe, 0x04fc, 0x0ff0, 0x0e02, 0xea0d, 0xeefd, 0x0109, 0x08fc, 0xf8fc, 22.2289 + 0x080e, 0xfe09, 0xf8f0, 0x08ee, 0x0b01, 0xff00, 0xff06, 0xf905, 0x0df9, 22.2290 + 0x09f0, 0xfb05, 0xe401, 0xfd07, 0x170b, 0x010d, 0x00f6, 0x07f3, 0xfaee, 22.2291 + 0xfa03, 0x1312, 0x110d, 0xf7f6, 0xe6ff, 0xf5fd, 0x0afd, 0x20ff, 0x0705, 22.2292 + 0xf3fc, 0xf8f1, 0xf9fe, 0xf4fd, 0x0006, 0x0d11, 0x0501, 0xecf9, 0x050e, 22.2293 + 0xf9fd, 0x0af0, 0x06f5, 0x050f, 0x0504, 0x08f3, 0x06f6, 0xf5f9, 0xf903, 22.2294 + 0x060c, 0xfa02, 0x0208, 0x06f1, 0x08f5, 0x06ed, 0x090e, 0x0208, 0xf901, 22.2295 + 0x02f5, 0x04f7, 0x0b02, 0x0d09, 0xfb02, 0xfef3, 0x09ea, 0x03ff, 0xf009, 22.2296 + 0xf810, 0x030d, 0x0cf3, 0xfaeb, 0xfdfe, 0xfd0b, 0xfd07, 0xfd02, 0x030d, 22.2297 + 0xfafe, 0x0501, 0xfae0, 0x1403, 0x11f5, 0xf419, 0xfdf6, 0xe7fe, 0x0a07, 22.2298 + 0x02fd, 0x000d, 0xfe16, 0xfe04, 0xf0f1, 0xf4f4, 0x050f, 0x0809, 0x060a, 22.2299 + 0xfaf3, 0xf102, 0xf60a, 0x05fd, 0x0efa, 0x0604, 0x0007, 0xf104, 0xfe03, 22.2300 + 0x0205, 0x04ee, 0xfc01, 0x0ef9, 0x010a, 0xf7fd, 0xf3f3, 0x0200, 0x16f7, 22.2301 + 0x0108, 0x02fb, 0xf403, 0xfa08, 0x0400, 0x0dff, 0x0af7, 0xf209, 0xf9fc, 22.2302 + 0x01f9, 0x10fe, 0x0cfe, 0x0206, 0xf6f5, 0xfb09, 0x0af5, 0x03f5, 0x06ff, 22.2303 + 0x09f8, 0xf410, 0xf408, 0xfd02, 0xfefb, 0xf809, 0x0709, 0x0206, 0x0000, 22.2304 + 0x0bfc, 0xf4f4, 0xf7ff, 0x0502, 0x0211, 0x020b, 0xf002, 0xfeea, 0x05f4, 22.2305 + 0xf908, 0x0511, 0xf806, 0x0dee, 0x04f6, 0xf601, 0xfb08, 0x0708, 0x18f3, 22.2306 + 0x01e9, 0x0303, 0xf701, 0xfa0c, 0xf601, 0xf507, 0x070d, 0x12ff, 0x08f1, 22.2307 + 0xf4f6, 0xf5fc, 0x0e14, 0xfe01, 0x0204, 0xfff9, 0x03fb, 0x15f0, 0x08fd, 22.2308 + 0x0908, 0xf8f7, 0x07f6, 0xf7ef, 0xf112, 0xf911, 0x0e0b, 0xfff6, 0xfbec, 22.2309 + 0xf6fb, 0x0eff, 0x060a, 0x050c, 0xe5fd, 0xff01, 0x0208, 0xf606, 0x08fb, 22.2310 + 0x0ae9, 0x1d02, 0xe901, 0xf914, 0xffe9, 0x11fe, 0x0bf3, 0x0507, 0xf80e, 22.2311 + 0xf105, 0xfa05, 0x04eb, 0x19f3, 0x0505, 0xed0f, 0xf207, 0xfbfd, 0x18fd, 22.2312 + 0x09ff, 0xfd01, 0xf310, 0x05f7, 0xfdff, 0x08f7, 0x0308, 0xf8fa, 0xfdfe, 22.2313 + 0xfcfd, 0x0206, 0x0af1, 0x00f9, 0x0001, 0xf506, 0x0601, 0xfe0e, 0xf60c, 22.2314 + 0xf5fd, 0xf4ff, 0xfc11, 0x0417, 0xff03, 0xf2fa, 0xfdec, 0x0307, 0xfe07, 22.2315 + 0xfe12, 0x12ff, 0xf8e7, 0x01f2, 0x0202, 0x061a, 0xfaf9, 0x0bf6, 0xfbfd, 22.2316 + 0x07fb, 0x00f8, 0xf615, 0x0812, 0xfdfd, 0x0cf8, 0xf8e2, 0x05fc, 0xfe17, 22.2317 + 0xf202, 0x09f8, 0x0afa, 0xfdf8, 0xfbee, 0xff09, 0x0b16, 0x04f2, 0x01fd, 22.2318 + 0x03f8, 0x01fd, 0xf7fc, 0x040d, 0x1102, 0xfffe, 0xfc02, 0xdafa, 0x0e1c, 22.2319 + 0x0502, 0x11f7, 0x05e1, 0xf30c, 0xf70a, 0x13ef, 0x0005, 0xf30c, 0xeafc, 22.2320 + 0x1101, 0x1405, 0x06f6, 0x01f4, 0x0bfa, 0xfdfb, 0xfc21, 0xf20e, 0xf1fb, 22.2321 + 0x10e7, 0x0604, 0x0bff, 0xfcf7, 0xf708, 0xeb08, 0x06ef, 0x0700, 0xfb0a, 22.2322 + 0xf714, 0xf70d, 0x01f7, 0x09dc, 0x0bfb, 0xf61e, 0xf518, 0x0bfa, 0x07f2, 22.2323 + 0xf4ec, 0x11fb, 0x060b, 0x000c, 0xfbfa, 0xf9fa, 0xfff3, 0x0703, 0xfe10, 22.2324 + 0xeaff, 0x0204, 0x12ff, 0xfb0e, 0xf0e8, 0x0e07, 0x020e, 0x0108, 0x03f7, 22.2325 + 0x02fc, 0xf7f6, 0xfa02, 0x050e, 0x01fa, 0xf9f9, 0x02f7, 0xf6f7, 0x0d20, 22.2326 + 0x06fc, 0xe8fe, 0x08ef, 0x150b, 0xf013, 0xf0f2, 0x0402, 0x1104, 0x0af4, 22.2327 + 0xf608, 0xf7fe, 0xec09, 0x0112, 0x0f03, 0x01f1, 0x0205, 0x00fd, 0xe6fe, 22.2328 + 0x11f9, 0x1cfd, 0xfbfb, 0xf708, 0xfc08, 0x01ef, 0x11e2, 0x100c, 0x010d, 22.2329 + 0x02fc, 0xff02, 0xf1f5, 0x02ec, 0x1bfb, 0x1120, 0xe8f9, 0xeff1, 0xf0fe, 22.2330 + 0x0d08, 0xfc0c, 0xfb10, 0x00ec, 0x16fd, 0x0806, 0xf0f9, 0xfaeb, 0x0a04, 22.2331 + 0xf820, 0xf90c, 0x13f7, 0x03ee, 0xfdf9, 0xf902, 0x10fd, 0xf7f7, 0x020c, 22.2332 + 0xec07, 0x0eff, 0x07f9, 0x01fe, 0xfeec, 0x0cfa, 0x1415, 0xf4ff, 0xfbfc, 22.2333 + 0x0804, 0xf405, 0xf104, 0x0c02, 0xf902, 0x00fa, 0x0dfd, 0x0202, 0xf7f6, 22.2334 + 0xf9fd, 0xf9ff, 0x00ff, 0x12fb, 0x100e, 0xf7f7, 0x01fc, 0xfe01, 0xf3f9, 22.2335 + 0x06f0, 0x1010, 0x0813, 0x03ef, 0xffff, 0xf1f7, 0x01fb, 0x0c0b, 0x031a, 22.2336 + 0xf0f8, 0xfaeb, 0xfe05, 0x0502, 0x01fe, 0x10ff, 0xfbf3, 0x0002, 0x0210, 22.2337 + 0xec05, 0x0e00, 0x0ef7, 0xfc01, 0xf8f2, 0xfd1a, 0xf316, 0xfeee, 0x01ec, 22.2338 + 0x0512, 0xfa05, 0xf203, 0x0402, 0x00ef, 0xfa0e, 0x050a, 0xf5f9, 0x10fd, 22.2339 + 0x0c04, 0xf1fd, 0xf001, 0x0f0b, 0xf900, 0xfdfd, 0x0efa, 0xfffd, 0xf805, 22.2340 + 0x0005, 0x050e, 0x01e2, 0xf5fb, 0x0814, 0xfb08, 0x05f7, 0xf806, 0x10fe, 22.2341 + 0x04f9, 0xff04, 0xf7e6, 0xf90f, 0x1a0c, 0xf807, 0x02f1, 0xfff1, 0xf7fe, 22.2342 + 0xf4fd, 0x1610, 0x0d0e, 0xe9f2, 0xf4f8, 0xf3fa, 0x1609, 0x0c0a, 0xfc0e, 22.2343 + 0xf0f0, 0x00fb, 0xf911, 0x0402, 0x07f0, 0x0bfd, 0xf00c, 0xec09, 0x150b, 22.2344 + 0x0ef1, 0xf6f2, 0x01fd, 0xef0e, 0x0901, 0x08f8, 0xfc0a, 0xfcf5, 0xf6f9, 22.2345 + 0x060d, 0x0eff, 0x0a02, 0x0507, 0xf1f6, 0xf4ff, 0x120b, 0xf80f, 0xfff0, 22.2346 + 0x0802, 0xfff6, 0xfa00, 0x0f08, 0xef0a, 0xf8f0, 0xfbe8, 0x1008, 0x09fe, 22.2347 + 0x0609, 0xfd04, 0xea06, 0xf500, 0x050c, 0x0d02, 0xfff5, 0xfe13, 0xdf02, 22.2348 + 0xfe01, 0x14fb, 0x06fa, 0xf7f0, 0x1d00, 0x0e00, 0xeaf5, 0xf7f4, 0x050a, 22.2349 + 0x0c05, 0xfefb, 0x0b0b, 0x03f5, 0x07fc, 0x0302, 0xe902, 0xfb02, 0x1b09, 22.2350 + 0xeefe, 0xe9fe, 0x0204, 0x0909, 0xf9fd, 0x07f5, 0x020a, 0x07f5, 0xfdf7, 22.2351 + 0xf70b, 0xf60f, 0x0bf0, 0x13fc, 0xfbfd, 0xfd01, 0xfc0f, 0xfb02, 0xf4ef, 22.2352 + 0x0e10, 0xff01, 0xf20f, 0x0ef2, 0xf70b, 0x0bfb, 0x06f5, 0xfb10, 0xe2fc, 22.2353 + 0x02ec, 0x0b06, 0x0b16, 0x06f5, 0xfaff, 0xf2fc, 0xf308, 0x1206, 0xff04, 22.2354 + 0x0afa, 0x0001, 0xfc03, 0xf0f4, 0x0bfd, 0x0a19, 0x0005, 0xf7e4, 0x0007, 22.2355 + 0x06ef, 0xfefd, 0xff0c, 0x0102, 0xfff4, 0x0c0c, 0xfe02, 0xfdfc, 0x0cef, 22.2356 + 0xf801, 0x06f9, 0x0105, 0x090d, 0xeaf9, 0x0cf8, 0xfe02, 0x0903, 0xf9fa, 22.2357 + 0x0514, 0xf6e3, 0xffff, 0x0e06, 0xf605, 0xf503, 0x0c03, 0xfc0e, 0x0202, 22.2358 + 0x0ef8, 0x0005, 0xe000, 0xf603, 0x0a02, 0x0bf4, 0x0e05, 0xf701, 0xfbfd, 22.2359 + 0xf9fd, 0xf20a, 0xf7fc, 0x0a00, 0x1b09, 0xfdef, 0xf6f6, 0x0811, 0xfb22, 22.2360 + 0xe8ee, 0x0bf4, 0x1ef4, 0x0c12, 0xe803, 0xe8f8, 0x01e6, 0x1b12, 0xfd0c, 22.2361 + 0xf6f7, 0x01f6, 0xfe0e, 0xf8fb, 0x08f0, 0x110b, 0x010b, 0xfef3, 0xf9fa, 22.2362 + 0x0e03, 0x0801, 0xfd0b, 0xe8f6, 0x00fd, 0x1602, 0xfe05, 0xf4f4, 0xfe0d, 22.2363 + 0xfa13, 0x04fc, 0xfbf0, 0x0206, 0x0801, 0x05f5, 0xfbfb, 0x03ed, 0x1dfa, 22.2364 + 0x0f10, 0xf5fe, 0xebf4, 0x0a06, 0x07f8, 0xfa09, 0xfe02, 0xfdfb, 0x12f7, 22.2365 + 0x0408, 0xf70d, 0xf5f8, 0x08eb, 0xf3fd, 0x050a, 0x0804, 0x0601, 0xf7f3, 22.2366 + 0xff07, 0x0215, 0xfff7, 0x0a05, 0xffff, 0xec09, 0xf7fd, 0xfd00, 0xff12, 22.2367 + 0x00f6, 0x09fa, 0x11ee, 0x0613, 0xfefc, 0xeff1, 0xf5f9, 0x140a, 0xf0fc, 22.2368 + 0xfffd, 0x0a10, 0x120a, 0xfbfa, 0xfde4, 0xf508, 0x1c0d, 0xfcfc, 0xfcf7, 22.2369 + 0xf6f2, 0x0012, 0x060d, 0xfafa, 0xf9f2, 0x0907, 0x03f6, 0xf80b, 0xfdf7, 22.2370 + 0xfef8, 0x0af9, 0x0215, 0x0211, 0xfb06, 0x01f7, 0xfaff, 0x03f5, 0xfb05, 22.2371 + 0x060c, 0xf80b, 0x08f1, 0x03f9, 0x03f9, 0x0506, 0xfcfc, 0xf7ff, 0x07f8, 22.2372 + 0x0105, 0x0307, 0xf0fd, 0x07fe, 0xf70f, 0x020a, 0x04fc, 0x03ef, 0x0afd, 22.2373 + 0x01fa, 0xf7fd, 0xfeec, 0x1010, 0x0a06, 0xf607, 0x01e2, 0x0400, 0x140c, 22.2374 + 0xf7f0, 0xedf2, 0x13f7, 0x1c18, 0x070f, 0xd903, 0x03ec, 0x02ff, 0xf405, 22.2375 + 0x06ff, 0x1402, 0x0dfb, 0xdeed, 0x0307, 0x1508, 0x0e0e, 0x03ed, 0xe7fa, 22.2376 + 0xfbfb, 0xf40a, 0x1003, 0xfcf2, 0x0709, 0x0a06, 0xf308, 0x0cfb, 0x07fd, 22.2377 + 0x02fa, 0xf6f5, 0xf80d, 0x030c, 0x01ff, 0x0ff9, 0xe7f7, 0xf5ff, 0x1502, 22.2378 + 0x1208, 0xfbf1, 0xdcff, 0xf4fc, 0x0b07, 0x2615, 0xfd0e, 0xeaf6, 0xfef2, 22.2379 + 0x1009, 0xfc09, 0xfc04, 0xfbfc, 0xecf7, 0x03f5, 0x1812, 0x0b0f, 0xf8f2, 22.2380 + 0x04ef, 0xf0fb, 0x0003, 0x1102, 0x0dfc, 0xfd00, 0x09f6, 0x00fd, 0xfaf8, 22.2381 + 0x0003, 0x050a, 0xf8ee, 0x0308, 0xf916, 0xec08, 0xf2f6, 0x0ef7, 0x050e, 22.2382 + 0x09f0, 0x1016, 0xf401, 0xeaec, 0x03da, 0x0e06, 0x1424, 0x011c, 0xedf8, 22.2383 + 0xeadb, 0x18ff, 0x0a0c, 0xee15, 0xeefa, 0x09fc, 0x03f2, 0x0306, 0xff22, 22.2384 + 0xe80a, 0xf0ea, 0x24fd, 0xfcf9, 0x040e, 0xf5f0, 0xfd10, 0x0ce6, 0x13fe, 22.2385 + 0x060c, 0xfc05, 0xef03, 0xfbf6, 0x0700, 0x0d06, 0xf118, 0xe6f6, 0xfff2, 22.2386 + 0x1f06, 0x0004, 0x0103, 0xf501, 0xf1fc, 0xf6df, 0x23ed, 0x121b, 0xef26, 22.2387 + 0xedff, 0xf5e7, 0x16f1, 0x1c08, 0xfe1b, 0xe6fc, 0xf8f1, 0x0a00, 0x02fc, 22.2388 + 0x030b, 0x030a, 0xec02, 0x0af1, 0x050e, 0x01f4, 0xe2f9, 0x1105, 0x03f8, 22.2389 + 0x0110, 0x0ffc, 0xf714, 0xfaea, 0xf9f2, 0xfa0d, 0x1013, 0x030e, 0xfafa, 22.2390 + 0xeeda, 0x01f0, 0x111e, 0x0b03, 0xf301, 0x0103, 0xeaf2, 0x0bfa, 0x1808, 22.2391 + 0xfd11, 0xecff, 0xfafa, 0x0a01, 0x0408, 0x0507, 0xf4f9, 0xe0f2, 0x13f2, 22.2392 + 0x080c, 0x0118, 0xfd01, 0xee00, 0x07f4, 0xfb17, 0x070e, 0xe5f5, 0x17e0, 22.2393 + 0x0d0b, 0x011b, 0xf3fe, 0xfef9, 0x0102, 0xedf3, 0x0af9, 0x0a0c, 0x0f1c, 22.2394 + 0xf9f6, 0xedeb, 0xffdf, 0x051f, 0x1924, 0x00f1, 0x00e4, 0xf1ef, 0xed0a, 22.2395 + 0x1607, 0x16fc, 0x06f5, 0xdffc, 0x100d, 0x0501, 0xfe07, 0x07fe, 0xeafe, 22.2396 + 0xf8fa, 0x020d, 0x0a1c, 0xf2f9, 0x06f3, 0x05f4, 0x1005, 0xf613, 0xfe02, 22.2397 + 0xe9dc, 0xffff, 0x1018, 0x0118, 0x0de9, 0xf7f6, 0xf50c, 0x06f7, 0x0604, 22.2398 + 0x070b, 0xe8f9, 0xf208, 0xfdf5, 0x0109, 0x1209, 0xfb05, 0xfff1, 0xf7e9, 22.2399 + 0x0110, 0x0a07, 0x0908, 0xf702, 0xecfd, 0x12fd, 0x0a06, 0x03ff, 0xebf4, 22.2400 + 0x0b0a, 0x07f3, 0xf40c, 0xe901, 0x030a, 0x03f8, 0xff05, 0xfd01, 0x0e0c, 22.2401 + 0x0ef8, 0xeeed, 0xf3e8, 0x1014, 0x1e1a, 0xfb10, 0xf5e0, 0xfef5, 0x0d02, 22.2402 + 0x0103, 0xf902, 0xf010, 0xf905, 0x03fb, 0x08f2, 0xf8ff, 0x090b, 0xeb02, 22.2403 + 0xedfc, 0x0209, 0x230e, 0xf7ef, 0xfef4, 0x0fe9, 0x0d0d, 0x0d11, 0xef03, 22.2404 + 0xef02, 0x05ec, 0x06fe, 0xf509, 0xee06, 0x0712, 0x1301, 0xfbf1, 0xfd07, 22.2405 + 0x14fa, 0xf1fa, 0xf8fb, 0x0bf8, 0x00fc, 0x1004, 0xfffd, 0xf70e, 0x0ae5, 22.2406 + 0xf9fb, 0x050b, 0x040e, 0x0c0a, 0xf0f2, 0xefeb, 0x080c, 0x1113, 0xe904, 22.2407 + 0xfaf6, 0x020a, 0x0d07, 0x07e4, 0xf501, 0xf202, 0xfc09, 0x0609, 0x0b05, 22.2408 + 0xf20f, 0xfa04, 0xf2e8, 0xfff8, 0x2019, 0xfd05, 0xe1ec, 0x09fa, 0x1a09, 22.2409 + 0xf303, 0x04f3, 0x0106, 0x03fd, 0xf9f8, 0x0405, 0x02f9, 0x0707, 0x0009, 22.2410 + 0xff03, 0xfef3, 0x1c01, 0xf702, 0xfee9, 0x0101, 0x010c, 0xecf6, 0x140f, 22.2411 + 0x010b, 0xfce9, 0xf1dc, 0x0b1a, 0x10fd, 0x0501, 0xf404, 0xebfd, 0xfb06, 22.2412 + 0x1211, 0x0216, 0xf5e8, 0xfff4, 0x0110, 0x04f6, 0x0c05, 0xf9ef, 0xf6f5, 22.2413 + 0x1906, 0x150b, 0xf5ff, 0xfffb, 0xf708, 0xf5f0, 0x0afa, 0x1802, 0xf405, 22.2414 + 0x00f5, 0xfd09, 0xf419, 0xeef6, 0x0e06, 0xf704, 0xfa04, 0xfe02, 0x0ef6, 22.2415 + 0x03ee, 0xff07, 0xe910, 0xfafd, 0x16ef, 0x0b11, 0xe613, 0xf9fd, 0x02f5, 22.2416 + 0xfa07, 0x0505, 0x1315, 0xfcfe, 0xedec, 0xfdfb, 0x0209, 0x0001, 0xf2fd, 22.2417 + 0xfd01, 0xf901, 0x0e0f, 0x0206, 0xeaf7, 0xfffd, 0x1603, 0xfefd, 0x01ff, 22.2418 + 0xf010, 0x0007, 0x02f1, 0x15f6, 0xec13, 0xfe11, 0x0b06, 0xfbf8, 0xf2f1, 22.2419 + 0x0401, 0x0612, 0xf8ff, 0xf0f8, 0x120b, 0xfaf3, 0x07f2, 0xf6fd, 0xf919, 22.2420 + 0x00f2, 0x0a01, 0x0ffb, 0xef1b, 0xfa19, 0xefea, 0x01f7, 0x1210, 0xf811, 22.2421 + 0xf4f5, 0x0bdf, 0xff14, 0xfa08, 0x08f7, 0x0f07, 0xf9fa, 0xf4f2, 0x03fe, 22.2422 + 0x140e, 0xf7fc, 0xfdfd, 0x09f4, 0xff05, 0xfd1a, 0x0af6, 0x06f5, 0x03f5, 22.2423 + 0xf007, 0xf3f9, 0x2003, 0xff06, 0xf2f4, 0xebf4, 0x1006, 0x1908, 0xfcf8, 22.2424 + 0xf7fc, 0x0b01, 0x02ed, 0xf213, 0x0104, 0xf90f, 0x10f9, 0xfef7, 0x04fc, 22.2425 + 0x06f9, 0xf2ff, 0xe903, 0xfaff, 0x1018, 0x0b03, 0x0600, 0x01f1, 0xe8ff, 22.2426 + 0x04fa, 0x0b08, 0x1505, 0xf9e9, 0xf903, 0xf216, 0xf705, 0x07fe, 0x0904, 22.2427 + 0x0301, 0xf001, 0x0301, 0xf700, 0x1208, 0xf103, 0xf7f0, 0x07f0, 0x1014, 22.2428 + 0xf803, 0xecf6, 0x0bf8, 0x040e, 0xfa00, 0xf310, 0xff0b, 0x0bff, 0x01f6, 22.2429 + 0x0b04, 0x08f4, 0xfefc, 0xf7ef, 0xfdf4, 0x1816, 0xf60d, 0xea06, 0xfbf4, 22.2430 + 0x1afe, 0xff04, 0xf5fe, 0xf305, 0xf510, 0x12f0, 0x00ef, 0x0d0a, 0x1901, 22.2431 + 0xf400, 0xf8fb, 0xf8f5, 0x0409, 0x10f6, 0xf1fb, 0x0912, 0xf507, 0xfbf0, 22.2432 + 0x09f1, 0x0607, 0xf115, 0xfaff, 0x10ec, 0x0709, 0xfa0d, 0xe70f, 0x0ff7, 22.2433 + 0x13e0, 0x040c, 0x09fa, 0xf002, 0xfafc, 0xf4f2, 0x0cf7, 0x0a10, 0xf205, 22.2434 + 0xfd09, 0x05f9, 0x13ff, 0x0fee, 0xfdfe, 0xf70f, 0xf404, 0x0cfc, 0x0bf8, 22.2435 + 0xfb07, 0xea15, 0x010b, 0x03e8, 0x0501, 0xf503, 0xec08, 0x0f04, 0xf706, 22.2436 + 0xf407, 0x08ef, 0x08fa, 0x0315, 0xf803, 0xf7f5, 0xfb01, 0xff04, 0xf718, 22.2437 + 0xff03, 0x08f5, 0x0a00, 0x0602, 0xf8ed, 0x06f4, 0xfefa, 0xf70e, 0x100e, 22.2438 + 0x0703, 0xee0b, 0xf6fc, 0xf9f3, 0x0715, 0x16ef, 0xf505, 0x07f3, 0xf7f1, 22.2439 + 0x0607, 0x02fd, 0xff0e, 0x0afc, 0x04fb, 0xfaf9, 0x0b06, 0x10e9, 0xfef6, 22.2440 + 0xf800, 0xe612, 0xfd09, 0x0efb, 0x060a, 0x0cf9, 0xf3e4, 0x0a08, 0x0406, 22.2441 + 0x0612, 0xfee7, 0x12f5, 0xfffb, 0xf52c, 0xf6fa, 0x04e9, 0x07ea, 0x00f4, 22.2442 + 0x0906, 0x0e00, 0xf404, 0xf600, 0x09f5, 0x0807, 0x1107, 0xec08, 0xfbf8, 22.2443 + 0x02f3, 0x0e03, 0xf20c, 0x0518, 0x00f7, 0xee03, 0xecfe, 0x0c05, 0x0f05, 22.2444 + 0x00fb, 0xf705, 0x03fb, 0x02f4, 0xfdf6, 0xf60b, 0x0603, 0xff06, 0x0bfb, 22.2445 + 0xf508, 0xf512, 0x01f8, 0xf3eb, 0x110c, 0x0c0e, 0x030d, 0xeef2, 0xf1ec, 22.2446 + 0x01f7, 0x0e12, 0x0214, 0xf0fb, 0x01f6, 0x0907, 0x1101, 0x04f0, 0xf400, 22.2447 + 0x01fc, 0xfa08, 0xfe03, 0xfd11, 0xf909, 0xf70a, 0xf6ed, 0x0b01, 0x000e, 22.2448 + 0xf104, 0x02f2, 0x06f7, 0x010c, 0x0b01, 0xfdfc, 0xf7f5, 0xfcfc, 0x0117, 22.2449 + 0xfb08, 0x0403, 0x05f7, 0xf902, 0xe0fc, 0x1909, 0x1605, 0xf409, 0xf5f2, 22.2450 + 0xf7e5, 0x0303, 0x180c, 0x0010, 0xfdf6, 0xf4e4, 0x060b, 0x0efe, 0x030d, 22.2451 + 0xff08, 0xeb03, 0xf8f5, 0x090a, 0x1106, 0xe9eb, 0xfe05, 0x0b0c, 0x0d06, 22.2452 + 0x0ffc, 0xef00, 0xf0ee, 0xfffd, 0x20f9, 0x0ffb, 0x03fc, 0xf501, 0xe8f4, 22.2453 + 0x0ced, 0x120e, 0x0122, 0xebee, 0x07fd, 0x1806, 0xf7fd, 0x0104, 0xf4f2, 22.2454 + 0x0d04, 0x02fa, 0xf701, 0xeff1, 0x0318, 0x0d09, 0xf5f4, 0xf8f7, 0x1a0f, 22.2455 + 0xe913, 0x01ed, 0xfb06, 0x0f0b, 0xf206, 0x0006, 0xfff6, 0xfefb, 0x14f5, 22.2456 + 0xfe01, 0x0bfd, 0xfef6, 0xffff, 0xe8f0, 0x1117, 0x26fd, 0xec01, 0xf3e5, 22.2457 + 0xf508, 0xff14, 0x1502, 0x09f3, 0xf7f5, 0xed0a, 0x0309, 0x1105, 0xfdf3, 22.2458 + 0x0803, 0xf605, 0x04fb, 0xfffc, 0x14fd, 0xdeef, 0x04fc, 0x010b, 0x0a14, 22.2459 + 0x08f3, 0xf905, 0xf3f7, 0xfb06, 0x0a05, 0x0506, 0xf80a, 0xfdfe, 0xef08, 22.2460 + 0xfe04, 0x12fd, 0x070c, 0xf1f2, 0xf7ff, 0x0808, 0x09fb, 0x00fb, 0xfa08, 22.2461 + 0xf6f5, 0x03ff, 0x0af0, 0xfc03, 0xf311, 0xff03, 0x0005, 0x05f8, 0x030f, 22.2462 + 0xf107, 0x0be7, 0xfd0e, 0x0512, 0xf00c, 0x07f0, 0xf801, 0xf0f9, 0x0015, 22.2463 + 0x09ff, 0x0111, 0xf6ef, 0xfcfd, 0xfe06, 0xff0f, 0x0101, 0xf300, 0x04f5, 22.2464 + 0xfd0f, 0x0609, 0xf6ef, 0x000e, 0x0007, 0xecfd, 0x10f7, 0x13f9, 0xf40f, 22.2465 + 0xecef, 0x000c, 0x0c0a, 0x0601, 0x00f7, 0xf2ef, 0x0004, 0x1207, 0x040b, 22.2466 + 0xfff2, 0xf809, 0xed17, 0x0aee, 0x12ed, 0x1afe, 0xe0ff, 0xf5f2, 0x0000, 22.2467 + 0x1602, 0x0403, 0xfe0a, 0xf0fc, 0xfe00, 0x050e, 0x0106, 0x0df6, 0xfbff, 22.2468 + 0xf90c, 0xf4ef, 0xf910, 0x0a07, 0xfefc, 0x08f5, 0x010b, 0x00ff, 0xfb02, 22.2469 + 0xfa05, 0xebfd, 0xff07, 0x0705, 0x0918, 0x0be2, 0xfff7, 0xedf9, 0x01ff, 22.2470 + 0x0700, 0x0a05, 0xfb0a, 0x10f7, "\374" 22.2471 +END 22.2472 + 22.2473 + 22.2474 +///////////////////////////////////////////////////////////////////////////// 22.2475 +// 22.2476 +// Bitmap 22.2477 +// 22.2478 + 22.2479 +IDB_BITMAP7 BITMAP DISCARDABLE "font_16x16_corrected.bmp" 22.2480 +#endif // French (France) resources 22.2481 +///////////////////////////////////////////////////////////////////////////// 22.2482 + 22.2483 + 22.2484 + 22.2485 +#ifndef APSTUDIO_INVOKED 22.2486 +///////////////////////////////////////////////////////////////////////////// 22.2487 +// 22.2488 +// Generated from the TEXTINCLUDE 3 resource. 22.2489 +// 22.2490 + 22.2491 + 22.2492 +///////////////////////////////////////////////////////////////////////////// 22.2493 +#endif // not APSTUDIO_INVOKED 22.2494 +
23.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 23.2 +++ b/cmn_design.cxx Tue Nov 27 15:23:52 2007 +0100 23.3 @@ -0,0 +1,104 @@ 23.4 +#include "sys_assert.h" 23.5 +#include "mth_vector3.h" 23.6 +#include "gl_header.h" 23.7 +#include "cmn_intro.h" 23.8 +#include "cmn_design.h" 23.9 + 23.10 + 23.11 +void cmnDesignScroller_t::Init(GLuint _texture) 23.12 +{ 23.13 + texture=_texture; 23.14 + uvs[0]=uvs[1]=0; 23.15 + scroll[0]=scroll[1]=1.0; 23.16 +} 23.17 + 23.18 +void cmnDesignScroller_t::Update() 23.19 +{ 23.20 + double dt=Timer->GetFrameTime(); 23.21 + uvs[0]+=scroll[0]*dt; 23.22 + uvs[1]+=scroll[1]*dt; 23.23 +} 23.24 + 23.25 +void cmnDesignScroller_t::Draw() 23.26 +{ 23.27 + cmnPushMatrix(); 23.28 + 23.29 + cmnSetPlanarView(); 23.30 + 23.31 + txtBindTexture2d(texture,0); 23.32 + glMatrixMode(GL_TEXTURE); 23.33 + glTranslatef(uvs[0],uvs[1],0); 23.34 + 23.35 + glBegin(GL_QUADS); 23.36 + 23.37 + glTexCoord2f(0,0); 23.38 + glVertex2f(0,0); 23.39 + 23.40 + glTexCoord2f(0,1); 23.41 + glVertex2f(0,RY); 23.42 + 23.43 + glTexCoord2f(1,1); 23.44 + glVertex2f(RX,RY); 23.45 + 23.46 + glTexCoord2f(1,0); 23.47 + glVertex2f(RX,0); 23.48 + 23.49 + glEnd(); 23.50 + glLoadIdentity(); 23.51 + txtUnBindTexture2d(0); 23.52 + cmnPopMatrix(); 23.53 + glMatrixMode(GL_MODELVIEW); 23.54 +} 23.55 + 23.56 + 23.57 +void cmnDesign_t::Update() 23.58 +{ 23.59 + internalTime+=Timer->GetFrameTime(); 23.60 + for (int i=0;i<nbElements;i++) 23.61 + if (!elements[i]->active) { 23.62 + if (elements[i]->start<=internalTime) 23.63 + elements[i]->active=true; 23.64 + } else 23.65 + elements[i]->Update(); 23.66 +} 23.67 + 23.68 + 23.69 +void cmnDesign_t::Draw() 23.70 +{ 23.71 + for (int i=0;i<nbElements;i++) 23.72 + if (elements[i]->active) 23.73 + elements[i]->Draw(); 23.74 +} 23.75 + 23.76 + 23.77 + 23.78 + 23.79 + 23.80 +void cmnDesignElementTexturedQuad_t::Draw() 23.81 +{ 23.82 + if (texture) { 23.83 + glColor4f(color[0],color[1],color[2],alpha); 23.84 +// glColor4f(1,1,1,1); 23.85 + txtBindTexture2d(texture,0); 23.86 + glBegin(GL_QUADS); 23.87 + glTexCoord2f(0,0); 23.88 + glVertex3f(position[0],position[1],position[2]); 23.89 + glTexCoord2f(0,0.999); 23.90 + glVertex3f(position[0],position[1]+sizey,position[2]); 23.91 + glTexCoord2f(0.999,0.999); 23.92 + glVertex3f(position[0]+sizex,position[1]+sizey,position[2]); 23.93 + glTexCoord2f(0.999,0); 23.94 + glVertex3f(position[0]+sizex,position[1],position[2]); 23.95 + glEnd(); 23.96 + txtUnBindTexture2d(0); 23.97 + } else { 23.98 + SYS_ASSERT(0); 23.99 + glBegin(GL_QUADS); 23.100 + glVertex3f(position[0],position[1],position[2]); 23.101 + glVertex3f(position[0],position[1]+sizey,position[2]); 23.102 + glVertex3f(position[0]+sizex,position[1]+sizey,position[2]); 23.103 + glVertex3f(position[0]+sizex,position[1],position[2]); 23.104 + glEnd(); 23.105 + } 23.106 +} 23.107 +
24.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 24.2 +++ b/cmn_design.h Tue Nov 27 15:23:52 2007 +0100 24.3 @@ -0,0 +1,195 @@ 24.4 +#ifndef CMN_DESIGN_H 24.5 +#define CMN_DESIGN_H 24.6 + 24.7 +#include "cmn_intro.h" 24.8 +#include "cmn_texture.h" 24.9 +#include "mth_vector2.h" 24.10 +#include "mth_vector3.h" 24.11 + 24.12 + 24.13 + 24.14 +struct cmnDesignElement_t 24.15 +{ 24.16 + mth::Vector3_t position; 24.17 + mth::Vector3_t target; 24.18 + float factor; 24.19 + float start; 24.20 +// float start; 24.21 + bool active; 24.22 + 24.23 + virtual void Update() { 24.24 + position+=(target-position)*factor*Timer->GetFrameTime(); 24.25 + 24.26 +#if 0 // put one to debug your position ... 24.27 + cmnPushMatrix(); 24.28 + cmnPushGLState(); 24.29 + cmnSetPlanarView(); 24.30 + glDisable(GL_BLEND); 24.31 + glColor3f(1,1,1); 24.32 + font->Print("Position %f %f %f\n",position[0],position[1],position[2]); 24.33 + cmnPopGLState(); 24.34 + cmnPopMatrix(); 24.35 +#endif 24.36 + } 24.37 + 24.38 + cmnDesignElement_t() {start=1e5;} 24.39 + 24.40 + void Init(float _time,const mth::Vector3_t& _pos,const mth::Vector3_t& _target,float _factor=1.0) { 24.41 + active=false; 24.42 + start=_time; 24.43 + position=_pos; 24.44 + target=_target; 24.45 + factor=_factor; 24.46 + } 24.47 + 24.48 + void Init(float _time) { 24.49 + active=false; 24.50 + start=_time; 24.51 + } 24.52 + 24.53 + virtual void Draw() {} 24.54 +}; 24.55 + 24.56 + 24.57 +struct cmnDesignElementFont_t : public cmnDesignElement_t 24.58 +{ 24.59 + const char* text; 24.60 + float alpha; 24.61 + float endLife; 24.62 + float scalex; 24.63 + float scaley; 24.64 + float alphaFactor; 24.65 + 24.66 + cmnDesignElementFont_t() { factor=1;scalex=scaley=1.0;alphaFactor=-0.1;} 24.67 + 24.68 + void Update() { 24.69 + float dt=Timer->GetFrameTime(); 24.70 + position+=(target-position)*factor*dt; 24.71 + 24.72 + if (active) { 24.73 + alpha+=alphaFactor*dt; 24.74 + endLife-=dt; 24.75 + if (endLife<0) { 24.76 + active=false; 24.77 + start=1e5; 24.78 + } 24.79 + } 24.80 + } 24.81 + 24.82 + void Draw() { 24.83 + if (text) { 24.84 + //text[1]=0; 24.85 + glColor4f(1,1,1,alpha); 24.86 + font->SetScaleX(scalex); 24.87 + font->SetScaleY(scaley); 24.88 + font->Clear(); 24.89 + float t[2]={position[0],position[1]}; 24.90 + font->SetZ(position[2]); 24.91 + font->Print(t[0],t[1],text); 24.92 + font->SetZ(0); 24.93 + font->SetScale(1); 24.94 + } 24.95 + } 24.96 + 24.97 +}; 24.98 + 24.99 + 24.100 + 24.101 +struct cmnDesignElementTexturedQuad_t : public cmnDesignElement_t 24.102 +{ 24.103 + GLuint texture; 24.104 + float sizex,sizey; 24.105 + float alpha; 24.106 + float fadeAlpha; 24.107 + float color[3]; 24.108 +public: 24.109 + 24.110 + void Draw(); 24.111 + cmnDesignElementTexturedQuad_t() { texture=0; alpha=1;fadeAlpha=0; color[0]=color[1]=color[2]=1.0;} 24.112 + void Color(float a,float b,float c) { color[0]=a;color[1]=b;color[2]=c;} 24.113 + void Update() { 24.114 + float dt=Timer->GetFrameTime(); 24.115 + position+=(target-position)*factor*dt; 24.116 + 24.117 + if (active) { 24.118 + alpha-=0.1*fadeAlpha*dt; 24.119 + if (alpha<0) { 24.120 + active=false; 24.121 + start=1e5; 24.122 + } 24.123 + } 24.124 + } 24.125 + 24.126 +}; 24.127 + 24.128 + 24.129 + 24.130 + 24.131 +class cmnDesign_t 24.132 +{ 24.133 + typedef cmnDesignElement_t* ElementPtr_t; 24.134 + double internalTime; 24.135 + cmnDesignElement_t** elements; 24.136 + int nbElements; 24.137 + int maxNbElements; 24.138 + 24.139 +public: 24.140 + 24.141 + 24.142 + cmnDesign_t() { elements=0;maxNbElements= nbElements=0;internalTime=0;} 24.143 + 24.144 + 24.145 + void Init(int _nbElements) { 24.146 + if (elements) 24.147 + delete [] elements; 24.148 + elements=new ElementPtr_t[_nbElements]; 24.149 + maxNbElements=_nbElements; 24.150 + } 24.151 + 24.152 + void InitTime(double _time=0) {internalTime=_time;} 24.153 + 24.154 + void Kill() {} 24.155 + 24.156 + cmnDesignElement_t* Element(int _i) { SYS_ASSERT(_i>=0 && _i<nbElements); return elements[_i];} 24.157 + 24.158 + 24.159 + void AddElement(cmnDesignElement_t* _e) { 24.160 + SYS_ASSERT(nbElements<maxNbElements); 24.161 + elements[nbElements++]=_e; 24.162 + } 24.163 + 24.164 + void Update(); 24.165 + 24.166 + void Draw(); 24.167 + 24.168 +}; 24.169 + 24.170 + 24.171 + 24.172 + 24.173 +class cmnDesignScroller_t 24.174 +{ 24.175 + 24.176 + GLuint texture; 24.177 + 24.178 + float uvs[2]; 24.179 + float scroll[2]; 24.180 + 24.181 +public: 24.182 + 24.183 + 24.184 + cmnDesignScroller_t() {} 24.185 + 24.186 + void Init(GLuint _texture); 24.187 + void ScrollX(float _x) { scroll[0]=_x;} 24.188 + void ScrollY(float _y) { scroll[1]=_y;} 24.189 + void Update(); 24.190 + void Draw(); 24.191 + 24.192 + 24.193 +}; 24.194 + 24.195 + 24.196 + 24.197 + 24.198 +#endif 24.199 \ No newline at end of file
25.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 25.2 +++ b/cmn_intro.cxx Tue Nov 27 15:23:52 2007 +0100 25.3 @@ -0,0 +1,239 @@ 25.4 +#include "cmn_intro.h" 25.5 +#include <windows.h> 25.6 +#include <GL/gl.h> 25.7 +#include <GL/glu.h> 25.8 +#include "cmn_texture.h" 25.9 + 25.10 +// DBUG TIME (Console) 25.11 +#ifdef SOTA_DEBUG_MODE 25.12 +HANDLE stdOut; 25.13 + 25.14 +#include <string.h> 25.15 +void Write2Console(const char * data ) 25.16 +{ 25.17 + WriteConsole( stdOut, data, strlen( data ), NULL, NULL ); 25.18 + WriteConsole( stdOut, "\n", 1, NULL, NULL ); 25.19 +} 25.20 +#endif 25.21 + 25.22 + 25.23 +void cmnClearScreen(float r,float g,float b,float a) 25.24 +{ 25.25 + glClearColor(r,g,b,a); 25.26 + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 25.27 +} 25.28 + 25.29 + 25.30 +void cmnSetFrustrum(float _fov,float _zmin,float _zmax) 25.31 +{ 25.32 + glMatrixMode(GL_PROJECTION); 25.33 + glLoadIdentity(); 25.34 + gluPerspective(_fov,800/600,_zmin,_zmax); 25.35 +} 25.36 + 25.37 + 25.38 +void cmnSetCamera(const mth::Vector3_t& _position,const mth::Vector3_t& _lookat,const mth::Vector3_t& up) 25.39 +{ 25.40 + glMatrixMode(GL_MODELVIEW); 25.41 + glLoadIdentity(); 25.42 + gluLookAt(_position[0],_position[1],_position[2],_lookat[0],_lookat[1],_lookat[2],up[0],up[1],up[2]); 25.43 + 25.44 +} 25.45 + 25.46 + 25.47 +#ifndef FINAL_RELEASE 25.48 +static int cmnPushStateValue=0; 25.49 +void cmnPushGLState() 25.50 +{ 25.51 + glPushAttrib(GL_ALL_ATTRIB_BITS); 25.52 + cmnPushStateValue++; 25.53 +} 25.54 + 25.55 + 25.56 +void cmnPopGLState() 25.57 +{ 25.58 + glPopAttrib(); 25.59 + cmnPushStateValue--; 25.60 + SYS_ASSERT(cmnPushStateValue>=0); 25.61 +} 25.62 + 25.63 + 25.64 +#endif 25.65 + 25.66 + 25.67 + 25.68 + 25.69 +static double cmnTimerGetTime() 25.70 +{ 25.71 + static double SCALE_COUNTER=-1; 25.72 + 25.73 + if (SCALE_COUNTER==-1.0) { 25.74 + LARGE_INTEGER pc; 25.75 + 25.76 + if(!QueryPerformanceFrequency((LARGE_INTEGER *)&pc)) { 25.77 + SYS_ASSERT(0 && "No freqency !!!\n"); 25.78 + } 25.79 + 25.80 + SCALE_COUNTER=1.0/((double)pc.QuadPart); 25.81 + 25.82 + } 25.83 + //unsigned int perf_cnt = pc.QuadPart; 25.84 + 25.85 + //double scale_time = 1.0 / perf_cnt; 25.86 + LARGE_INTEGER ct; 25.87 + double count; 25.88 + if(!QueryPerformanceCounter((LARGE_INTEGER *) &ct)) { 25.89 + SYS_ASSERT(0 && "No timer !!!\n"); 25.90 + return 1; 25.91 + } 25.92 + count=(double)ct.QuadPart; 25.93 + count*=SCALE_COUNTER; 25.94 + return count; 25.95 +} 25.96 + 25.97 + 25.98 + 25.99 +void cmnTimer_t::Init() 25.100 +{ 25.101 + startTime=cmnTimerGetTime(); 25.102 + currentTime=0; 25.103 + frameTime=0; 25.104 +} 25.105 + 25.106 + 25.107 +double cmnTimer_t::GetRealTime() 25.108 +{ 25.109 + return currentTime; //cmnTimerGetTime()-startTime; 25.110 +} 25.111 + 25.112 + 25.113 +double cmnTimer_t::GetFrameTime() 25.114 +{ 25.115 + return frameTime; 25.116 +} 25.117 + 25.118 +void cmnTimer_t::Update() 25.119 +{ 25.120 + double tmp=cmnTimerGetTime()-startTime; //GetRealTime(); 25.121 + frameTime=tmp-currentTime; 25.122 + currentTime=tmp; 25.123 +} 25.124 + 25.125 + 25.126 +void cmnPushMatrix() 25.127 +{ 25.128 + glMatrixMode(GL_PROJECTION); 25.129 + glPushMatrix(); 25.130 + 25.131 + glMatrixMode(GL_MODELVIEW); 25.132 + glPushMatrix(); 25.133 +} 25.134 + 25.135 +void cmnPopMatrix() 25.136 +{ 25.137 + glMatrixMode(GL_MODELVIEW); 25.138 + glPopMatrix(); 25.139 + 25.140 + glMatrixMode(GL_PROJECTION); 25.141 + glPopMatrix(); 25.142 +} 25.143 + 25.144 + 25.145 +void cmnSetPlanarView() 25.146 +{ 25.147 + glMatrixMode(GL_PROJECTION); 25.148 + glLoadIdentity(); 25.149 + glOrtho(0,RX,0,RY,-100,100); 25.150 + glMatrixMode(GL_MODELVIEW); 25.151 + glLoadIdentity(); 25.152 +} 25.153 + 25.154 + 25.155 +void cmnScope(unsigned char alpha, float trans) 25.156 +{ 25.157 + glEnable(GL_BLEND); 25.158 + glBlendFunc(GL_ONE, GL_SRC_ALPHA); 25.159 + 25.160 + glColor4ub(0, 0, 0, alpha); 25.161 + 25.162 + cmnPushMatrix(); 25.163 + glMatrixMode(GL_PROJECTION); 25.164 + glLoadIdentity(); 25.165 + glMatrixMode(GL_MODELVIEW); 25.166 + glLoadIdentity(); 25.167 + 25.168 + glBegin(GL_QUADS); 25.169 + glVertex2f(-1.f, -1.f); 25.170 + glVertex2f(-1.f, -trans); 25.171 + glVertex2f(1.f, -trans); 25.172 + glVertex2f(1.f, -1.f); 25.173 + glEnd(); 25.174 + 25.175 + glBegin(GL_QUADS); 25.176 + glVertex2f(-1.f, trans); 25.177 + glVertex2f(-1.f, 1.f); 25.178 + glVertex2f(1.f, 1.f); 25.179 + glVertex2f(1.f, trans); 25.180 + glEnd(); 25.181 + 25.182 + 25.183 + cmnPopMatrix(); 25.184 + glDisable(GL_BLEND); 25.185 + 25.186 +} 25.187 + 25.188 +void cmnDisplayBackground(GLuint _texture,int _r,int _g,int _b,int _a, int _nbPasses,int _side) 25.189 +{ 25.190 + cmnPushMatrix(); 25.191 + cmnPushGLState(); 25.192 + 25.193 + glMatrixMode(GL_PROJECTION); 25.194 + glLoadIdentity(); 25.195 + 25.196 + glMatrixMode(GL_MODELVIEW); 25.197 + glLoadIdentity(); 25.198 + 25.199 + glDisable(GL_DEPTH_TEST); 25.200 + glShadeModel(GL_SMOOTH); 25.201 + 25.202 +// glEnable(GL_BLEND); 25.203 +// glBlendFunc(GL_ONE,GL_ONE); 25.204 + 25.205 + txtBindTexture2d(_texture,0); 25.206 + glBegin(GL_QUADS); 25.207 + 25.208 + for (int i=0;i<_nbPasses;i++) { 25.209 + 25.210 + glColor4ub(0,0,0,0); 25.211 + glTexCoord2f(0,0); 25.212 + glVertex3f(-1,1,0); 25.213 + 25.214 + if (_side) 25.215 + glColor4ub(0,0,0,0); 25.216 + else 25.217 + glColor4ub(_r,_g,_b,_a); 25.218 + glTexCoord2f(1,0); 25.219 + glVertex3f(1,1,0); 25.220 + 25.221 + glColor4ub(_r,_g,_b,_a); 25.222 + glTexCoord2f(1,1); 25.223 + glVertex3f(1,-1,0); 25.224 + 25.225 + if (_side) 25.226 + glColor4ub(0,0,0,0); 25.227 + else 25.228 + glColor4ub(_r,_g,_b,_a); 25.229 + glTexCoord2f(0,1); 25.230 + glVertex3f(-1,-1,0); 25.231 + } 25.232 + 25.233 + glEnd(); 25.234 + 25.235 + cmnPopGLState(); 25.236 + 25.237 +// txtUnBindTexture2d(0); 25.238 +// glEnable(GL_DEPTH_TEST); 25.239 + 25.240 + cmnPopMatrix(); 25.241 + glMatrixMode(GL_MODELVIEW); 25.242 +}
26.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 26.2 +++ b/cmn_intro.h Tue Nov 27 15:23:52 2007 +0100 26.3 @@ -0,0 +1,85 @@ 26.4 +#ifndef CMN_INTRO_H 26.5 +#define CMN_INTRO_H 26.6 + 26.7 +#include "mth_vector3.h" 26.8 +#include "rdr_font.h" 26.9 + 26.10 + 26.11 +extern rdrFont_t* font; 26.12 + 26.13 + 26.14 + 26.15 + 26.16 +// define common 26.17 +#define RX 800 26.18 +#define RY 600 26.19 + 26.20 + 26.21 + 26.22 +// DBUG TIME (Console) 26.23 +#ifdef SOTA_DEBUG_MODE 26.24 +#include <windows.h> 26.25 +#include <cstring> 26.26 +#include <cstdio> 26.27 +extern HANDLE stdOut; 26.28 +void Write2Console(const char * data ); 26.29 + 26.30 +#endif 26.31 + 26.32 + 26.33 +/** 26.34 + * Clear screen for all effects 26.35 + */ 26.36 +#define DEFAULT_BGCOLOR_R 0 26.37 +#define DEFAULT_BGCOLOR_G 0 26.38 +#define DEFAULT_BGCOLOR_B 0 26.39 +void cmnClearScreen(float r=DEFAULT_BGCOLOR_R,float g=DEFAULT_BGCOLOR_G,float b=DEFAULT_BGCOLOR_B,float a=1.0); 26.40 + 26.41 +void cmnSetCamera(const mth::Vector3_t& _position, 26.42 + const mth::Vector3_t& _lookat, 26.43 + const mth::Vector3_t& _up=mth::Vector3_t(0,1,0)); 26.44 + 26.45 +void cmnSetFrustrum(float _fov=120,float _zmin=0.1,float _zmax=1000); 26.46 + 26.47 +void cmnSetPlanarView(); 26.48 + 26.49 +void cmnDisplayBackground(GLuint _texture,int _r=33,int _g=137,int _b=255,int _a=255, int _nbPasses=2,int _side=0); 26.50 + 26.51 + 26.52 +/// use this in your effect ( at the begin and at the end) 26.53 +#ifndef FINAL_RELEASE 26.54 +void cmnPushGLState(); 26.55 +void cmnPopGLState(); 26.56 +#else 26.57 +#define cmnPushGLState() glPushAttrib(GL_ALL_ATTRIB_BITS) 26.58 +#define cmnPopGLState glPopAttrib 26.59 +#endif 26.60 + 26.61 +void cmnPushMatrix(); 26.62 +void cmnPopMatrix(); 26.63 + 26.64 + 26.65 +void cmnScope(unsigned char alpha=100, float trans=0.68); 26.66 + 26.67 + 26.68 +/// Timer class update it at each frame 26.69 +class cmnTimer_t 26.70 +{ 26.71 + double startTime; 26.72 + double frameTime; 26.73 + double currentTime; 26.74 + 26.75 +public: 26.76 + 26.77 + void Init(); 26.78 + 26.79 + double GetRealTime(); 26.80 + double GetFrameTime(); 26.81 + 26.82 + void Update(); 26.83 +}; 26.84 + 26.85 + 26.86 +extern cmnTimer_t* Timer; 26.87 + 26.88 +#endif
27.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 27.2 +++ b/cmn_shape.cxx Tue Nov 27 15:23:52 2007 +0100 27.3 @@ -0,0 +1,143 @@ 27.4 +#include "cmn_shape.h" 27.5 +#include "sys_assert.h" 27.6 +#include "mth_vector3.h" 27.7 +#include "gl_header.h" 27.8 +#include "cmn_intro.h" 27.9 + 27.10 + 27.11 + 27.12 +void cmnSquareShape_t::Init(int _resx,int _resy) 27.13 +{ 27.14 + 27.15 + Kill(); 27.16 + 27.17 + nbVertexes=_resx*_resy; 27.18 + vertexes=new mth::Vector3_t[nbVertexes+_resy]; // alloc more for vertex array trick 27.19 + normals=new mth::Vector3_t[nbVertexes+_resy]; 27.20 + resx=_resx; 27.21 + resy=_resy; 27.22 + 27.23 +#if 0 27.24 + if (GL_ARB_vertex_buffer_object) { 27.25 + glGen 27.26 + } 27.27 +#endif 27.28 + 27.29 +} 27.30 + 27.31 + 27.32 +void cmnSquareShape_t::Kill() 27.33 +{ 27.34 + if (vertexes) 27.35 + delete [] vertexes; 27.36 + vertexes=0; 27.37 + 27.38 + if (normals) 27.39 + delete [] normals; 27.40 + normals=0; 27.41 + 27.42 + if (indexes) 27.43 + delete [] indexes; 27.44 + indexes=0; 27.45 + 27.46 +} 27.47 + 27.48 + 27.49 +void cmnSquareShape_t::MakeMorphFrom(cmnSquareShape_t& _shape1,cmnSquareShape_t& _shape2,float _t) 27.50 +{ 27.51 + 27.52 + if (_t<1e-3) { 27.53 + memcpy(vertexes,_shape1.vertexes,sizeof(mth::Vector3_t)*nbVertexes); 27.54 + memcpy(normals,_shape1.normals,sizeof(mth::Vector3_t)*nbVertexes); 27.55 + } else if (_t>1.0-1e-3) { 27.56 + memcpy(vertexes,_shape2.vertexes,sizeof(mth::Vector3_t)*nbVertexes); 27.57 + memcpy(normals,_shape2.normals,sizeof(mth::Vector3_t)*nbVertexes); 27.58 + } 27.59 + 27.60 + mth::Vector3_t tmp; 27.61 + float a; 27.62 + for (int i=0;i<nbVertexes;i++) { 27.63 + vertexes[i]=_shape1.vertexes[i]; 27.64 + tmp=_shape2.vertexes[i]; 27.65 + tmp-=vertexes[i]; 27.66 + tmp*=_t; 27.67 + vertexes[i]+=tmp; 27.68 + 27.69 + normals[i]=_shape1.normals[i]; 27.70 + tmp=_shape2.normals[i]; 27.71 + tmp-=normals[i]; 27.72 + tmp*=_t; 27.73 + normals[i]+=tmp; 27.74 + a=normals[i].MagSqr(); 27.75 + if (a>1e-4) 27.76 + normals[i]*=1.0/mth::Sqrt(a); 27.77 + } 27.78 + 27.79 +} 27.80 + 27.81 + 27.82 +void cmnSquareShape_t::FixForVArray() 27.83 +{ 27.84 + 27.85 + int index; 27.86 + 27.87 + 27.88 + for (int i=0;i<resy;i++) { 27.89 + index=0+i*resx; 27.90 + vertexes[nbVertexes+i]=vertexes[index]; 27.91 + normals[nbVertexes+i]=normals[index]; 27.92 + 27.93 + if (uvs) { 27.94 + index=resx-1+i*resx; 27.95 + uvs[nbVertexes+i]=uvs[index]+(uvs[(index-1+resx)%resx]-uvs[(index-2+resx)%resx]); 27.96 + } 27.97 + } 27.98 +} 27.99 + 27.100 + 27.101 + 27.102 +mth::Vector2_t* cmnSquareShape_t::GetNewUVsBuffer() 27.103 +{ 27.104 + return new mth::Vector2_t[nbVertexes+resy]; 27.105 +} 27.106 + 27.107 + 27.108 + 27.109 +void cmnSquareShape_t::EnableArray() 27.110 +{ 27.111 + glEnableClientState(GL_VERTEX_ARRAY); 27.112 + glVertexPointer(3,GL_FLOAT,0,vertexes); 27.113 + 27.114 + glEnableClientState(GL_NORMAL_ARRAY); 27.115 + glNormalPointer(GL_FLOAT,0,normals); 27.116 + 27.117 + if (uvs) { 27.118 + glEnableClientState(GL_TEXTURE_COORD_ARRAY); 27.119 + glTexCoordPointer(2,GL_FLOAT,0,uvs); 27.120 + } 27.121 +} 27.122 + 27.123 +void cmnSquareShape_t::DisableArray() 27.124 +{ 27.125 + glDisableClientState(GL_VERTEX_ARRAY); 27.126 + glDisableClientState(GL_NORMAL_ARRAY); 27.127 + glDisableClientState(GL_TEXTURE_COORD_ARRAY); 27.128 +} 27.129 + 27.130 + 27.131 +cmnSquareShape_t::IndexBuffers_t* cmnSquareShape_t::GetNewIndexBuffer() 27.132 +{ 27.133 + // and fill the indexes buffer 27.134 + indexes=new IndexBuffers_t(resy-1,2*(resx+1)); 27.135 + for (int j=0; j<resy-1; j++) { 27.136 + int curi=0; 27.137 + for (int i=0; i<resx; i++) { 27.138 + indexes->indexes[j][curi++]=i+j*resx; 27.139 + indexes->indexes[j][curi++]=i+(j+1)*resx; 27.140 + } 27.141 + indexes->indexes[j][curi++]=nbVertexes+j+0; 27.142 + indexes->indexes[j][curi++]=nbVertexes+j+1; 27.143 + } 27.144 + 27.145 + return indexes; 27.146 +}
28.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 28.2 +++ b/cmn_shape.h Tue Nov 27 15:23:52 2007 +0100 28.3 @@ -0,0 +1,78 @@ 28.4 +#ifndef CMN_SHAPE_H 28.5 +#define CMN_SHAPE_H 28.6 + 28.7 + 28.8 +#include "cmn_texture.h" 28.9 +#include "mth_vector2.h" 28.10 +#include "mth_vector3.h" 28.11 + 28.12 +/* 28.13 + * miniFMod 28.14 + * include 28.15 + * resource 28.16 + */ 28.17 +#include "minifmod/minifmod.h" 28.18 +extern FMUSIC_MODULE * intro_mod; 28.19 + 28.20 + 28.21 +class cmnSquareShape_t 28.22 +{ 28.23 +public: 28.24 +typedef int* IntPtr_t; 28.25 + 28.26 + struct IndexBuffers_t { 28.27 + int** indexes; 28.28 + int nbBuffers; 28.29 + int sizeOfBuffer; 28.30 + 28.31 + IndexBuffers_t(int _nbBuffers,int _sizeOfBuffers) { 28.32 + sizeOfBuffer=_sizeOfBuffers; 28.33 + nbBuffers=_nbBuffers; 28.34 + 28.35 + indexes=new IntPtr_t[nbBuffers]; 28.36 + indexes[0]=new int[sizeOfBuffer*nbBuffers]; 28.37 + for (int i=1;i<nbBuffers;i++) 28.38 + indexes[i]=&(indexes[0][sizeOfBuffer*i]); 28.39 + } 28.40 + }; 28.41 + 28.42 + 28.43 +protected: 28.44 + 28.45 + mth::Vector3_t* vertexes; 28.46 + mth::Vector3_t* normals; 28.47 + mth::Vector2_t* uvs; // shared data don't manage it 28.48 + IndexBuffers_t* indexes; 28.49 + int nbVertexes; 28.50 + int resx; 28.51 + int resy; 28.52 + 28.53 +public: 28.54 + 28.55 + cmnSquareShape_t() {vertexes=normals=0;uvs=0;indexes=0;} 28.56 + 28.57 + void SetUVs(mth::Vector2_t* _uvs) { uvs=_uvs;} 28.58 + void SetIndexes(IndexBuffers_t* _indexes) { indexes=_indexes;} 28.59 + 28.60 + void Init(int _resx,int _resy); 28.61 + void Kill(); 28.62 + 28.63 + int ResX() const { return resx;} 28.64 + int ResY() const { return resy;} 28.65 + 28.66 + int NbVertexes() { return nbVertexes;} 28.67 + void MakeMorphFrom(cmnSquareShape_t& _shape1,cmnSquareShape_t& _shape2,float _t); 28.68 + mth::Vector3_t* Vertexes() { return vertexes;} 28.69 + void FixForVArray(); 28.70 + 28.71 + mth::Vector2_t* GetNewUVsBuffer(); 28.72 + IndexBuffers_t* GetNewIndexBuffer(); 28.73 + 28.74 + void EnableArray(); 28.75 + void DisableArray(); 28.76 + 28.77 + IndexBuffers_t* Indexes() { return indexes;} 28.78 + 28.79 +}; 28.80 + 28.81 +#endif 28.82 \ No newline at end of file
29.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 29.2 +++ b/cmn_texture.cxx Tue Nov 27 15:23:52 2007 +0100 29.3 @@ -0,0 +1,366 @@ 29.4 +#include "cmn_texture.h" 29.5 +#include "cmn_intro.h" 29.6 +#include "sys_assert.h" 29.7 +#include "mth_perlin.h" 29.8 +#include "gl_header.h" 29.9 + 29.10 +void txtBindTexture2d(GLuint _texture,int _unit) 29.11 +{ 29.12 +// glActiveTextureEXT(GL_TEXTURE0+_unit); 29.13 + glEnable(GL_TEXTURE_2D); 29.14 + glBindTexture(GL_TEXTURE_2D,_texture); 29.15 +} 29.16 + 29.17 +void txtUnBindTexture2d(int _unit) 29.18 +{ 29.19 +// glActiveTextureEXT(GL_TEXTURE0+_unit); 29.20 + glDisable(GL_TEXTURE_2D); 29.21 +} 29.22 + 29.23 + 29.24 +GLuint txtInitTexture(GLenum _internalFormat,int _width,int _height,void* _data,bool _clamp,GLenum _type) 29.25 +{ 29.26 + GLuint id; 29.27 + glGenTextures(1, &id); 29.28 + glBindTexture(GL_TEXTURE_2D, id); 29.29 + glPixelStorei(GL_UNPACK_ALIGNMENT,1); 29.30 + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); //_MIPMAP_LINEAR); 29.31 + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);//_MIPMAP_LINEAR); // _MIPMAP_LINEAR 29.32 + if (_clamp) { 29.33 + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP); //_MIPMAP_LINEAR); 29.34 + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP); //_MIPMAP_LINEAR); 29.35 + } 29.36 + glTexImage2D(GL_TEXTURE_2D, 0, 4, _width, _height, 0, _internalFormat, _type, _data); 29.37 + SYS_ASSERT(id && "No Id ???"); 29.38 + return id; 29.39 +} 29.40 + 29.41 + 29.42 +GLuint txtLoadTextureFromMemory(int _name) 29.43 +{ 29.44 + HBITMAP bkg; 29.45 + BITMAP bmp; 29.46 + GLuint id; 29.47 + 29.48 + bkg = (HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(_name), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION); 29.49 + SYS_ASSERT( bkg && "Texture not found\n"); 29.50 + 29.51 + GetObject(bkg, sizeof(bmp), &bmp); 29.52 + id=txtInitTexture(GL_BGR_EXT,bmp.bmWidth,bmp.bmHeight,bmp.bmBits); 29.53 + DeleteObject(bkg); 29.54 + return id; 29.55 +} 29.56 + 29.57 + 29.58 + 29.59 +// Create an empty texture 29.60 +GLuint txtCreateEmptyTexture(int _width,int _height) 29.61 +{ 29.62 + GLuint id; 29.63 + unsigned char *data; 29.64 + 29.65 + data = (unsigned char *)new GLuint[ ((_width * _height)* 4 * sizeof(unsigned int)) ]; 29.66 + id=txtInitTexture(GL_RGBA,_width,_height,data); 29.67 + delete [] data; 29.68 + return id; 29.69 +} 29.70 + 29.71 + 29.72 + 29.73 + 29.74 +static float F1(float _x,float _y,float _amp,int _freq) 29.75 +{ 29.76 + float amplitude = 1.0; 29.77 + float result = 0.0; 29.78 + float freq=1.0; 29.79 + float x=_x; 29.80 + float y=_y; 29.81 + float persistance; 29.82 + for (int i=0; i<_freq; i++) { 29.83 + freq=(1<<i); 29.84 + persistance=mth::Pow(_amp,i); 29.85 + result += _y+mth::noise2d(_x*freq,_y*freq) * persistance; 29.86 +/* amplitude *= persistance; 29.87 + x *= 2.0; 29.88 + y *= 2.0;*/ 29.89 + } 29.90 + return result; 29.91 +} 29.92 + 29.93 + 29.94 +float Tileable(/*mth::Perlin_t& _p,*/float _x,float _y,float _w,float _h,float _amp,int _freq) 29.95 +{ 29.96 + //return F1(_x, _y, _amp,_freq); 29.97 + return (F1(_x, _y, _amp,_freq)*(_w-_x)*(_h-_y)+ 29.98 + F1(_x-_w, _y, _amp,_freq)*(_x)*(_h-_y)+ 29.99 + F1(_x-_w, _y-_h,_amp,_freq)*(_x)*(_y)+ 29.100 + F1(_x, _y-_h,_amp,_freq)*(_w-_x)*(_y))*1.0/(_w*_h); 29.101 +} 29.102 + 29.103 + 29.104 + 29.105 +GLuint txtCreatePerlin2d(int _width,int _height,float _scaleOnX,float _scaleOnY,float _amp,int _freq,uchar* _keepMap) 29.106 +{ 29.107 + typedef unsigned char uchar; 29.108 + uchar* map=0; 29.109 + if (!_keepMap) 29.110 + map= new uchar[_width*_height*4]; 29.111 + else 29.112 + map=_keepMap; 29.113 + 29.114 + float* data= new float[_width*_height]; 29.115 + 29.116 + //mth::Perlin_t perlin; 29.117 + float maxval=0; 29.118 + int x,y; 29.119 + float value; 29.120 + 29.121 + for (x=0; x<_width; x++) 29.122 + for (y=0; y<_height; y++) { 29.123 + //value = perlin.Perturb(x*_scaleOnX, y*_scaleOnY, 5.2f, 3.5f); 29.124 + value=Tileable(x*_scaleOnX,y*_scaleOnY,_width*_scaleOnX,_height*_scaleOnY,_amp,_freq); 29.125 + data[x+y*_width]=value;//mth::Clamp(value,0,255); 29.126 + maxval=mth::Max(mth::Abs(value),maxval); 29.127 + } 29.128 + 29.129 + 29.130 + for (x=0; x<_width; x++) 29.131 + for (y=0; y<_height; y++) { 29.132 + 29.133 +// value=data[x+y*_width]/maxval*255;///maxval; 29.134 + value=(data[x+y*_width]+maxval)/(2.0*maxval)*255;///maxval; 29.135 + map[(x+y*_width)*4+0] = (uchar)value; 29.136 + map[(x+y*_width)*4+1] = (uchar)value; 29.137 + map[(x+y*_width)*4+2] = (uchar)value; 29.138 + map[(x+y*_width)*4+3] = 255; 29.139 +// map[x+y*_width+3] = 255; 29.140 + } 29.141 + 29.142 + int id=txtInitTexture(GL_RGBA,_width,_height,map);//,GL_UNSIGNED_INT); 29.143 + if (!_keepMap) 29.144 + delete [] map; 29.145 + delete [] data; 29.146 + return id; 29.147 +} 29.148 + 29.149 + 29.150 + 29.151 +void txtGetTextureFromBackBuffer(void* _result,int _cornerX,int _cornerY,int _width,int _height) 29.152 +{ 29.153 + glFlush(); 29.154 + glReadPixels(_cornerX,_cornerY,_width,_height,GL_RGBA,/*GL_UNSIGNED_INT_8_8_8_8*/GL_UNSIGNED_BYTE,_result); 29.155 +} 29.156 + 29.157 + 29.158 +GLuint txtCreateGrid(int _width,int _height,int _sizeofSquare,float _minValue) 29.159 +{ 29.160 + uchar* map= new uchar[_width*_height*4]; 29.161 + 29.162 + int x,y; 29.163 + int xend=_width/_sizeofSquare; 29.164 + int yend=_height/_sizeofSquare; 29.165 + uchar pixel; 29.166 + 29.167 + int base=_minValue*=255; 29.168 + float p; 29.169 + for (x=0; x<xend; x++) 29.170 + for (y=0; y<yend; y++) { 29.171 + p=_minValue+1.0*mth::Rand()/(mth::RANDOM_MAX+1); 29.172 + pixel=(int)(mth::Max(p,1.f)*255); 29.173 + int index=x*_sizeofSquare+(y*_sizeofSquare)*_width; 29.174 + for (int i=0;i<_sizeofSquare;i++) 29.175 + for (int j=0;j<_sizeofSquare;j++) { 29.176 + int idx=(index+i+j*_width)*4; 29.177 + map[idx]=pixel; 29.178 + map[idx+1]=pixel; 29.179 + map[idx+2]=pixel; 29.180 + map[idx+3]=pixel; 29.181 + } 29.182 + } 29.183 + 29.184 + int id=txtInitTexture(GL_RGBA,_width,_height,map);//,GL_UNSIGNED_INT); 29.185 + delete [] map; 29.186 + return id; 29.187 +} 29.188 + 29.189 + 29.190 +GLuint txtCreateObliqueTexture(int _width,int _height,float _angle,const char* _text,char _letter) 29.191 +{ 29.192 + uchar* map= new uchar[_width*_height*4]; 29.193 + 29.194 + cmnClearScreen(0,0,0,1); 29.195 + 29.196 + cmnPushMatrix(); 29.197 + cmnSetPlanarView(); 29.198 + glDisable(GL_CULL_FACE); 29.199 + glDisable(GL_DEPTH_TEST); 29.200 + glDisable(GL_BLEND); 29.201 + 29.202 + float sizex=_height*mth::Tan( (180.0-90.0-_angle)*mth::PI/180.0); 29.203 + float hyp=mth::Sqrt(sizex*sizex+_height*_height); 29.204 + 29.205 + cmnPushMatrix(); 29.206 + if (_text) { 29.207 + glColor4f(1,1,1,1); 29.208 + glTranslatef(font->SizeOfCharX()*1.5,0,0); 29.209 + glRotatef(_angle,0,0,1); 29.210 + int b=strlen(_text); 29.211 + int startx=(hyp-b*font->SizeOfCharX())*.5-font->SizeOfCharX()*0.5; 29.212 + SYS_ASSERT(startx>=0); 29.213 + font->Print(startx,0,_text); 29.214 + } 29.215 + cmnPopMatrix(); 29.216 + 29.217 +#if 1 29.218 + cmnPushMatrix(); 29.219 + if (_letter) { 29.220 + glColor4f(1,1,1,1); 29.221 + //glEnable(GL_BLEND); 29.222 + //glBlendFunc(GL_ONE,GL_ONE); 29.223 + const float OffsetPerCent = 0.10; 29.224 + float startx=_width*OffsetPerCent; 29.225 + float starty=_height*OffsetPerCent; 29.226 + //float sizex=_width-(_width*2*OffsetPerCent); 29.227 + //float sizey=_height-(_height*2*OffsetPerCent); 29.228 + 29.229 + float u,v; 29.230 + font->GetUVsOfChar(_letter,u,v); 29.231 + txtBindTexture2d(font->TextureId(),0); 29.232 + 29.233 + glBegin(GL_QUADS); 29.234 + glTexCoord2f(u,0); 29.235 + glVertex2f(startx,starty); 29.236 + 29.237 + glTexCoord2f(u,1); 29.238 + glVertex2f(sizex+startx,_height-starty); 29.239 + 29.240 + float div=font->SizeOfCharX()*1.0/font->TextureWidth(); 29.241 + glTexCoord2f(u+div,1); 29.242 + glVertex2f(_width-startx,_height-starty); 29.243 + 29.244 + glTexCoord2f(u+div,0); 29.245 + glVertex2f(_width-sizex-startx,starty); 29.246 + glEnd(); 29.247 + txtUnBindTexture2d(0); 29.248 + } 29.249 + cmnPopMatrix(); 29.250 +#endif 29.251 + 29.252 + glEnable(GL_BLEND); 29.253 + glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ONE_MINUS_DST_COLOR); 29.254 + 29.255 + glBegin(GL_QUADS); 29.256 + glVertex2f(0,0); 29.257 + glVertex2f(sizex,_height); 29.258 + glVertex2f(_width,_height); 29.259 + glVertex2f(_width-sizex,0); 29.260 + glEnd(); 29.261 + glFlush(); 29.262 + 29.263 + txtGetTextureFromBackBuffer(map,0,0,_width,_height); 29.264 + int id=txtInitTexture(GL_RGBA,_width,_height,map,true);//,GL_UNSIGNED_INT); 29.265 + delete [] map; 29.266 + return id; 29.267 +} 29.268 + 29.269 + 29.270 + 29.271 +// use it to have letter as texture filtered twice 29.272 +GLuint txtCreateTextureFromLetter(int _width,int _height,char _letter) 29.273 +{ 29.274 + SYS_ASSERT(_letter); 29.275 + uchar* map= new uchar[_width*_height*4]; 29.276 + 29.277 + cmnClearScreen(0,0,0,1); 29.278 + 29.279 + cmnPushMatrix(); 29.280 + cmnSetPlanarView(); 29.281 + glDisable(GL_CULL_FACE); 29.282 + glDisable(GL_DEPTH_TEST); 29.283 + glDisable(GL_BLEND); 29.284 + 29.285 + glColor4f(1,1,1,1); 29.286 + 29.287 + float u,v; 29.288 + font->GetUVsOfChar(_letter,u,v); 29.289 + txtBindTexture2d(font->TextureId(),0); 29.290 + 29.291 + glBegin(GL_QUADS); 29.292 + glTexCoord2f(u,0); 29.293 + glVertex2f(0,0); 29.294 + 29.295 + glTexCoord2f(u,1); 29.296 + glVertex2f(0,_height); 29.297 + 29.298 + float div=font->SizeOfCharX()*1.0/font->TextureWidth(); 29.299 + glTexCoord2f(u+div,1); 29.300 + glVertex2f(_width,_height); 29.301 + 29.302 + glTexCoord2f(u+div,0); 29.303 + glVertex2f(_width,0); 29.304 + glEnd(); 29.305 + txtUnBindTexture2d(0); 29.306 + 29.307 + cmnPopMatrix(); 29.308 + 29.309 + glFlush(); 29.310 + 29.311 + txtGetTextureFromBackBuffer(map,0,0,_width,_height); 29.312 + int id=txtInitTexture(GL_RGBA,_width,_height,map,true);//,GL_UNSIGNED_INT); 29.313 + delete [] map; 29.314 + return id; 29.315 +} 29.316 + 29.317 + 29.318 + 29.319 +#if 1 29.320 +GLuint txtCreateTextureCircular(int _width,int _height,float _radius,int _fade) 29.321 +{ 29.322 + uchar* map= new uchar[_width*_height*4]; 29.323 + 29.324 + cmnClearScreen(0,0,0,1); 29.325 + cmnPushMatrix(); 29.326 + cmnSetPlanarView(); 29.327 + glDisable(GL_CULL_FACE); 29.328 + glDisable(GL_DEPTH_TEST); 29.329 + glDisable(GL_BLEND); 29.330 + glColor4f(1,1,1,1); 29.331 + 29.332 + const int Section=360; 29.333 + const float Radius=mth::Min(_width,_height)*0.5; 29.334 + const float Div=mth::TWOPI/Section; 29.335 + glBegin(GL_TRIANGLE_FAN); 29.336 + if (_fade) 29.337 + glColor3f(1,1,1); 29.338 + glVertex2f(_width*0.5,_height*0.5); 29.339 + for (int i=0;i<Section+1;i++) { 29.340 + float x,y; 29.341 + x=Radius * mth::Sin(-i *Div); 29.342 + y=Radius * mth::Cos(-i *Div); 29.343 + x+=_width*0.5; 29.344 + y+=_height*0.5; 29.345 + if (_fade) 29.346 + glColor3f(0,0,0); 29.347 + glVertex2f(x,y); 29.348 + } 29.349 + glEnd(); 29.350 + 29.351 + cmnPopMatrix(); 29.352 + 29.353 + glFlush(); 29.354 + 29.355 + txtGetTextureFromBackBuffer(map,0,0,_width,_height); 29.356 + int id=txtInitTexture(GL_RGBA,_width,_height,map,true);//,GL_UNSIGNED_INT); 29.357 + delete [] map; 29.358 + return id; 29.359 +} 29.360 +#endif 29.361 + 29.362 + 29.363 + 29.364 +void CopyBackBufferToTexture(GLuint _destination,int _sizex,int _sizey,int _bgOffsetX,int _bgOffsetY,int _txtOffsetX,int _txtOffsetY) 29.365 +{ 29.366 + txtBindTexture2d(_destination,0); 29.367 + glCopyTexSubImage2D(GL_TEXTURE_2D,0,_txtOffsetX,_txtOffsetY,_bgOffsetX,_bgOffsetY,_sizex,_sizey); 29.368 + txtUnBindTexture2d(0); 29.369 +}
30.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 30.2 +++ b/cmn_texture.h Tue Nov 27 15:23:52 2007 +0100 30.3 @@ -0,0 +1,44 @@ 30.4 +#ifndef CMN_TEXTURE_H 30.5 +#define CMN_TEXTURE_H 30.6 + 30.7 +#include "gl_header.h" 30.8 + 30.9 +void txtBindTexture2d(GLuint _texture,int _unit); 30.10 +void txtUnBindTexture2d(int _unit); 30.11 + 30.12 + 30.13 + 30.14 +GLuint txtInitTexture(GLenum _internalFormat,int _width,int _height,void* _data,bool _clamp=false,GLenum _type=GL_UNSIGNED_BYTE); 30.15 + 30.16 + 30.17 +GLuint txtLoadTextureFromMemory(int _name); 30.18 + 30.19 + 30.20 + 30.21 +// Create an empty texture 30.22 +GLuint txtCreateEmptyTexture(int _width,int _height); 30.23 + 30.24 + 30.25 +typedef unsigned char uchar; 30.26 +// defaut value for the back ground of screen1 30.27 +GLuint txtCreatePerlin2d(int _width,int _height,float _scaleOnX=1.0,float _scaleOnY=1.0,float _amp=0.5,int _freq=6,uchar* _map=0); 30.28 + 30.29 +// get a image in rgba format from backbuffer 30.30 +typedef unsigned char uchar; 30.31 +void txtGetTextureFromBackBuffer(void* _result,int _cornerX,int _cornerY,int _width,int _height); 30.32 + 30.33 + 30.34 +GLuint txtCreateGrid(int _width,int _height,int _sizeofSquare,float _minValue); 30.35 + 30.36 + 30.37 +GLuint txtCreateObliqueTexture(int _width,int _height,float _angle,const char* _text=0,char _letter=0); 30.38 + 30.39 + 30.40 +GLuint txtCreateTextureFromLetter(int _width,int _height,char _letter); 30.41 + 30.42 +GLuint txtCreateTextureCircular(int _width,int _height,float _radius,int _fade=0); 30.43 + 30.44 + 30.45 +void CopyBackBufferToTexture(GLuint _destination,int _sizex,int _sizey,int _bgOffsetX=0,int _bgOffsetY=0,int _txtOffsetX=0,int _txtOffsetY=0); 30.46 + 30.47 +#endif 30.48 \ No newline at end of file
31.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 31.2 +++ b/efx_equa.cxx Tue Nov 27 15:23:52 2007 +0100 31.3 @@ -0,0 +1,159 @@ 31.4 +#include "efx_equa.h" 31.5 +#include "gl_header.h" 31.6 +#include "cmn_intro.h" 31.7 + 31.8 +#define FINAL_RELEASE 31.9 + 31.10 +void efxEquaBox_t::Init(const mth::Vector3_t& _pos) 31.11 +{ 31.12 + 31.13 + x.Init(EQUA_SIZE_X/2,0,0); 31.14 + y.Init(0,EQUA_SIZE_Y/2,0); 31.15 + z.Init(0,0,EQUA_DEPTH); 31.16 + z2.Init(0,0,EQUA_DEPTH+EQUA_DEPTH_OFFSET); 31.17 + 31.18 + 31.19 + vertexes[0]=_pos-x+y; 31.20 + vertexes[1]=_pos+x+y; 31.21 + vertexes[2]=_pos+x-y; 31.22 + vertexes[3]=_pos-x-y; 31.23 + 31.24 + vertexes[4]=vertexes[0]+z; 31.25 + vertexes[5]=vertexes[1]+z; 31.26 + vertexes[6]=vertexes[2]+z2; 31.27 + vertexes[7]=vertexes[3]+z2; 31.28 + 31.29 + baseLevel=0; 31.30 +} 31.31 + 31.32 +void efxEquaBox_t::SetDepthLevel(float _level) 31.33 +{ 31.34 + vertexes[4]=vertexes[0]+z *(_level); 31.35 + vertexes[5]=vertexes[1]+z *(_level); 31.36 + vertexes[6]=vertexes[2]+z2*(_level); 31.37 + vertexes[7]=vertexes[3]+z2*(_level); 31.38 + vertexes[4][2]+=baseLevel; 31.39 + vertexes[5][2]+=baseLevel; 31.40 + vertexes[6][2]+=baseLevel; 31.41 + vertexes[7][2]+=baseLevel; 31.42 + level=_level; 31.43 + 31.44 +} 31.45 + 31.46 + 31.47 +void efxEquaBox_t::DrawQuad(int _number,float _nx,float _ny) 31.48 +{ 31.49 + glNormal3f(_nx,_ny,0); 31.50 + glTexCoord2f(0,0); 31.51 + glVertex3fv(vertexes[4+_number]); 31.52 + glTexCoord2f(1,0); 31.53 + glVertex3fv(vertexes[4+(1+_number)%4]); 31.54 + glTexCoord2f(1,1); 31.55 + glVertex3fv(vertexes[0+(1+_number)%4]); 31.56 + glTexCoord2f(0,1); 31.57 + glVertex3fv(vertexes[0+_number]); 31.58 +} 31.59 + 31.60 + 31.61 +void efxEquaBox_t::Draw() 31.62 +{ 31.63 +#ifdef FINAL_RELEASE 31.64 + DrawQuad(0,0,1); 31.65 + DrawQuad(1,1,0); 31.66 + DrawQuad(2,0,-1); 31.67 + DrawQuad(3,-1,0); 31.68 +#else 31.69 + glNormal3f(0,1,0); 31.70 + glVertex3fv(&vertexes[4][0]); 31.71 + glVertex3fv(&vertexes[5][0]); 31.72 + glVertex3fv(&vertexes[1][0]); 31.73 + glVertex3fv(&vertexes[0][0]); 31.74 + 31.75 + glNormal3f(1,0,0); 31.76 + glVertex3fv(&vertexes[5][0]); 31.77 + glVertex3fv(&vertexes[6][0]); 31.78 + glVertex3fv(&vertexes[2][0]); 31.79 + glVertex3fv(&vertexes[1][0]); 31.80 + 31.81 + glNormal3f(0,-1,0); 31.82 + glVertex3fv(&vertexes[6][0]); 31.83 + glVertex3fv(&vertexes[7][0]); 31.84 + glVertex3fv(&vertexes[3][0]); 31.85 + glVertex3fv(&vertexes[2][0]); 31.86 + 31.87 + glNormal3f(-1,0,0); 31.88 + glVertex3fv(&vertexes[7][0]); 31.89 + glVertex3fv(&vertexes[4][0]); 31.90 + glVertex3fv(&vertexes[0][0]); 31.91 + glVertex3fv(&vertexes[3][0]); 31.92 +#endif 31.93 + 31.94 + glNormal3f(0,0.7,0.7); 31.95 + glTexCoord2f(0,0); 31.96 + glVertex3fv(vertexes[7]); 31.97 + glTexCoord2f(1,0); 31.98 + glVertex3fv(vertexes[6]); 31.99 + glTexCoord2f(1,1); 31.100 + glVertex3fv(vertexes[5]); 31.101 + glTexCoord2f(0,1); 31.102 + glVertex3fv(vertexes[4]); 31.103 + 31.104 + 31.105 +} 31.106 + 31.107 + 31.108 +void efxEqua_t::Kill() 31.109 +{ 31.110 + if (box) 31.111 + delete [] box; 31.112 + box=0; 31.113 +} 31.114 + 31.115 + 31.116 + 31.117 +efxEqua_t::efxEqua_t() 31.118 +{ 31.119 + box=0; 31.120 + pos[0]=pos[1]=pos[2]=0; 31.121 +} 31.122 + 31.123 + 31.124 +void efxEqua_t::Init(int _res) 31.125 +{ 31.126 + resolution=_res; 31.127 + Kill(); 31.128 + box=new efxEquaBox_t[resolution*resolution]; 31.129 + 31.130 + mth::Vector3_t pos; 31.131 + for (int i=0;i<resolution;i++) 31.132 + for (int j=0;j<resolution;j++) { 31.133 + pos.Init( (i-resolution*1.0/4)*(EQUA_SIZE_X+EQUA_SIZE_SPACE), 31.134 + (j-resolution*1.0/4)*(EQUA_SIZE_Y+EQUA_SIZE_SPACE), 31.135 + 0); 31.136 + box[i+j*resolution].Init(pos); 31.137 + } 31.138 + 31.139 + 31.140 + lightIntensity=0.9; 31.141 +} 31.142 + 31.143 + 31.144 +void efxEqua_t::SetDepthLevel(int _i,float _level) 31.145 +{ 31.146 + SYS_ASSERT(_i>=0 && _i<resolution*resolution); 31.147 + box[_i].SetDepthLevel(_level); 31.148 +} 31.149 + 31.150 + 31.151 + 31.152 +void efxEqua_t::Draw(/*GLenum _mode*/) 31.153 +{ 31.154 + cmnPushMatrix(); 31.155 + glTranslatef(pos[0],pos[1],pos[2]); 31.156 + glBegin(/*_mode*/ GL_QUADS); 31.157 + for (int i=0;i<resolution*resolution;i++) 31.158 + box[i].Draw(); 31.159 + glEnd(); 31.160 + cmnPopMatrix(); 31.161 +} 31.162 +
32.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 32.2 +++ b/efx_equa.h Tue Nov 27 15:23:52 2007 +0100 32.3 @@ -0,0 +1,76 @@ 32.4 +#ifndef EFX_EQUA_H 32.5 +#define EFX_EQUA_H 32.6 + 32.7 +#include "mth_vector3.h" 32.8 +#include "gl_header.h" 32.9 + 32.10 +#define EQUA_DEPTH 30 32.11 +#define EQUA_SIZE_X 5 32.12 +#define EQUA_SIZE_Y 5 32.13 +#define EQUA_DEPTH_OFFSET 15 // define the size of the top of equa 32.14 +#define EQUA_SIZE_SPACE 4.0 32.15 + 32.16 + 32.17 +struct efxEquaBox_t 32.18 +{ 32.19 + mth::Vector3_t x; 32.20 + mth::Vector3_t y; 32.21 + mth::Vector3_t z; 32.22 + mth::Vector3_t z2; 32.23 + 32.24 + float level; 32.25 + float baseLevel; 32.26 + mth::Vector3_t vertexes[8]; 32.27 + 32.28 + void Init(const mth::Vector3_t& _pos); 32.29 + 32.30 + // between 0-1 32.31 + void SetDepthLevel(float _level); 32.32 + 32.33 + // draw a box 32.34 + void DrawQuad(int _number,float _nx,float _ny); 32.35 + void Draw(); 32.36 + void SetBaseLevel(float _level) { baseLevel=_level;} 32.37 +}; 32.38 + 32.39 + 32.40 + 32.41 +class efxEqua_t 32.42 +{ 32.43 + 32.44 + efxEquaBox_t* box; 32.45 + int resolution; 32.46 + float lightIntensity; 32.47 + float pos[3]; 32.48 + 32.49 +public: 32.50 + 32.51 + efxEqua_t(); 32.52 + 32.53 + void Kill(); 32.54 + 32.55 + int NbElements() { return resolution*resolution;} 32.56 + int ResX() { return resolution;} 32.57 + int ResY() { return resolution;} 32.58 + 32.59 + 32.60 + void SetPosition(float _x,float _y,float _z) { pos[0]=_x;pos[1]=_y;pos[2]=_z;} 32.61 + 32.62 + void SetDepthLevel(int _i,float _level); 32.63 + 32.64 + efxEquaBox_t& GetBox(int _i) { return box[_i];} 32.65 + 32.66 + // init the classe with the number of elements to use 32.67 + void Init(int _resolution); 32.68 + 32.69 + void Update(){} 32.70 + 32.71 + 32.72 + // Draw 32.73 + void Draw(/*GLenum _mode=GL_QUADS*/); 32.74 + 32.75 + 32.76 +}; 32.77 + 32.78 + 32.79 +#endif
33.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 33.2 +++ b/efx_equa2.cxx Tue Nov 27 15:23:52 2007 +0100 33.3 @@ -0,0 +1,49 @@ 33.4 +#include "efx_equa2.h" 33.5 +#include "gl_header.h" 33.6 +#include "cmn_intro.h" 33.7 + 33.8 + 33.9 + 33.10 +void efxEquaBase_t::Draw() 33.11 +{ 33.12 + glPushMatrix(); 33.13 + glTranslatef(position[0],position[1],position[2]); 33.14 + float light[4]; 33.15 + light[3]=1.0; 33.16 + 33.17 + int lineIndex; 33.18 + int index; 33.19 + int rX=resolutionX/2; 33.20 + int rY=resolutionY/2; 33.21 + for (int j=0;j<resolutionY;j++) { 33.22 + lineIndex=resolutionX*j; 33.23 + for (int i=0;i<resolutionX;i++) { 33.24 + index=lineIndex+i; 33.25 + 33.26 + if (elements[index].level>0) { 33.27 + light[0]=219.0/255*elements[index].level; 33.28 + light[1]=127.0/255*elements[index].level; 33.29 + light[2]=13.0/255*elements[index].level; 33.30 + } else { 33.31 + light[0]=1.0; 33.32 + light[1]=1.0; 33.33 + light[2]=1.0; 33.34 + } 33.35 + glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,light); 33.36 + 33.37 + glPushMatrix(); 33.38 + glTranslatef((i-rX)*sizeElementX,elements[index].level,(j-rY)*sizeElementY); 33.39 + glCallList(elements[index].meshId); 33.40 + glPopMatrix(); 33.41 + } 33.42 + } 33.43 + glPopMatrix(); 33.44 +} 33.45 + 33.46 + 33.47 +void efxEquaBase_t::SetGeometry(GLuint _id) 33.48 +{ 33.49 + int nb=NbElements(); 33.50 + for (int i=0;i<nb;i++) 33.51 + elements[i].SetMesh(_id); 33.52 +}
34.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 34.2 +++ b/efx_equa2.h Tue Nov 27 15:23:52 2007 +0100 34.3 @@ -0,0 +1,81 @@ 34.4 +#ifndef EFX_EQUA2_H 34.5 +#define EFX_EQUA2_H 34.6 + 34.7 +#include "mth_vector3.h" 34.8 +#include "gl_header.h" 34.9 + 34.10 +#define EQUA_DEPTH 30 34.11 +#define EQUA_SIZE_X 5 34.12 +#define EQUA_SIZE_Y 5 34.13 +#define EQUA_DEPTH_OFFSET 15 // define the size of the top of equa 34.14 +#define EQUA_SIZE_SPACE 4.0 34.15 + 34.16 + 34.17 + 34.18 +struct efxEquaElement_t 34.19 +{ 34.20 + float level; 34.21 + GLuint meshId; 34.22 + 34.23 +public: 34.24 + 34.25 + efxEquaElement_t() { level=0;meshId=0;} 34.26 + 34.27 + void SetLevel(float _a) { level=_a;} 34.28 + void SetMesh(GLuint _id) {meshId=_id;} 34.29 + 34.30 +}; 34.31 + 34.32 + 34.33 + 34.34 + 34.35 + 34.36 +class efxEquaBase_t 34.37 +{ 34.38 + int resolutionX; 34.39 + int resolutionY; 34.40 + 34.41 + efxEquaElement_t* elements; 34.42 + 34.43 + // it can be positioned -> for shared usage 34.44 + float position[3]; 34.45 + 34.46 + float sizeElementX; 34.47 + float sizeElementY; 34.48 + 34.49 +public: 34.50 + 34.51 + efxEquaBase_t() {elements=0;sizeElementX=sizeElementY=1.0; position[0]=position[1]=position[2]=0;} 34.52 + 34.53 + int NbElements() { return resolutionX*resolutionY;} 34.54 + int ResX() { return resolutionX;} 34.55 + int ResY() { return resolutionY;} 34.56 + 34.57 + 34.58 + void SetPosition(float _x,float _y,float _z) { position[0]=_x;position[1]=_y;position[2]=_z;} 34.59 + 34.60 + void SetDepthLevel(int _i,float _level) {elements[_i].SetLevel(_level);} 34.61 + 34.62 + efxEquaElement_t& GetElement(int _i) { return elements[_i];} 34.63 + 34.64 + // init the classe with the number of elements to use 34.65 + void Init(int _resolutionX,int _resolutionY) { 34.66 + resolutionX=_resolutionX; 34.67 + resolutionY=_resolutionY; 34.68 + if (elements) 34.69 + delete [] elements; 34.70 + elements=new efxEquaElement_t[resolutionY*resolutionX]; 34.71 + } 34.72 + 34.73 + void SetGeometry(GLuint _id); 34.74 + 34.75 + 34.76 + void SetElementSize(float _x,float _y) {sizeElementX=_x;sizeElementY=_y;} 34.77 + 34.78 + void Draw(); 34.79 + 34.80 + 34.81 +}; 34.82 + 34.83 + 34.84 +#endif
35.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 35.2 +++ b/efx_harmonics.cxx Tue Nov 27 15:23:52 2007 +0100 35.3 @@ -0,0 +1,375 @@ 35.4 +/** @file stv_harmonics.cxx 35.5 +* 35.6 +* @brief Sphericals Harmonics Effect 35.7 +* 35.8 +****************************************************************************************************************** 35.9 +* 35.10 +* @author Stv based on Paul Bourke's web site (http://astronomy.swin.edu.au/~pbourke/surfaces/sphericalh/) 35.11 +* 35.12 +* @date Created 2003/09 35.13 +* 35.14 +* @version $Id: efx_harmonics.cxx,v 1.9 2004/01/17 09:49:49 psc80 Exp $ 35.15 +* 35.16 +*****************************************************************************************************************/ 35.17 + 35.18 +#include "efx_harmonics.h" 35.19 +#include "mth_vector3.h" 35.20 +#include "sys_assert.h" 35.21 + 35.22 +#include "gl_header.h" 35.23 + 35.24 +//109056 -> 38912 35.25 +#if 0 35.26 +void efxSphericalShape_t::Init(int _resolution) 35.27 +{ 35.28 + 35.29 + Kill(); 35.30 + vertexes=new mth::Vector3_t[_resolution*_resolution]; 35.31 + normals=new mth::Vector3_t[_resolution*_resolution]; 35.32 + 35.33 + resolution=_resolution; 35.34 +} 35.35 + 35.36 + 35.37 +void efxSphericalShape_t::Kill() 35.38 +{ 35.39 + if (vertexes) 35.40 + delete [] vertexes; 35.41 + vertexes=0; 35.42 + 35.43 + if (normals) 35.44 + delete [] normals; 35.45 + normals=0; 35.46 + 35.47 +} 35.48 +#endif 35.49 +mth::Vector3_t efxSphericalShape_t::ComputeVertex(double _theta, double _phi,double _scale) 35.50 +{ 35.51 + double radius = 0; 35.52 + mth::Vector3_t v_output; 35.53 + 35.54 + radius += mth::Pow(mth::Sin(params[0]*_phi),params[1]); 35.55 + radius += mth::Pow(mth::Cos(params[2]*_phi),params[3]); 35.56 + radius += mth::Pow(mth::Sin(params[4]*_theta),params[5]); 35.57 + radius += mth::Pow(mth::Cos(params[6]*_theta),params[7]); 35.58 + radius*=_scale; 35.59 + 35.60 + v_output[0] = float(radius * mth::Sin(_phi) * mth::Cos(_theta)); 35.61 + v_output[1] = float(radius * mth::Cos(_phi)); 35.62 + v_output[2] = float(radius * mth::Sin(_phi) * mth::Sin(_theta)); 35.63 + 35.64 + return v_output; 35.65 + 35.66 +} 35.67 + 35.68 + 35.69 +mth::Vector3_t efxSphericalShape_t::ComputeNormal(const mth::Vector3_t& _a,const mth::Vector3_t& _b, const mth::Vector3_t& _c) 35.70 +{ 35.71 + mth::Vector3_t vNorm; 35.72 + mth::Vector3_t v1 = _b - _a; 35.73 + mth::Vector3_t v2 = _c - _a; 35.74 + 35.75 + vNorm=v1.Cross(v2); 35.76 + vNorm.Normalize(); 35.77 + 35.78 + return vNorm; 35.79 +} 35.80 + 35.81 + 35.82 +void efxSphericalShape_t::Params(int _a0,int _a1,int _a2,int _a3,int _a4,int _a5,int _a6,int _a7) 35.83 +{ 35.84 + params[0] = _a0; 35.85 + params[1] = _a1; 35.86 + params[2] = _a2; 35.87 + params[3] = _a3; 35.88 + params[4] = _a4; 35.89 + params[5] = _a5; 35.90 + params[6] = _a6; 35.91 + params[7] = _a7; 35.92 +} 35.93 + 35.94 +void efxSphericalShape_t::RandomizeParams() 35.95 +{ 35.96 + for (int i=0; i<2; i++) 35.97 + for (int s=0; s<8; s++) { 35.98 + params[s] = (int)(6*mth::Rand()/mth::RANDOM_MAX+1); 35.99 + params[s]=6; 35.100 + } 35.101 + //params[s] =mth::Rand()%6; 35.102 + params[0]=2; 35.103 + params[1]=4; 35.104 + params[2]=6; 35.105 + params[3]=2; 35.106 + params[4]=4; 35.107 + params[5]=6; 35.108 + params[6]=2; 35.109 + params[7]=4; 35.110 + 35.111 +#if 0 // tested shape that are usable 35.112 + params[0]=0; 35.113 + params[1]=2; 35.114 + params[2]=4; 35.115 + params[3]=0; 35.116 + params[4]=2; 35.117 + params[5]=4; 35.118 + params[6]=0; 35.119 + params[7]=2; 35.120 + 35.121 + 35.122 + params[0]=4; 35.123 + params[1]=0; 35.124 + params[2]=2; 35.125 + params[3]=4; 35.126 + params[4]=0; 35.127 + params[5]=2; 35.128 + params[6]=4; 35.129 + params[7]=0; 35.130 + 35.131 +#endif 35.132 + 35.133 +} 35.134 + 35.135 + 35.136 +void efxSphericalShape_t::Generate(float _scale,bool _reverse) 35.137 +{ 35.138 + SYS_ASSERT(vertexes && normals); 35.139 + 35.140 + double du = mth::TWOPI / (double)(ResX()); 35.141 + double dv = mth::PI / (double)(ResY()-1); 35.142 + 35.143 + int i,j; 35.144 + double u,v; 35.145 + for (i=0; i<ResX(); i++) 35.146 + for (j=0; j<ResY(); j++) { 35.147 + u = i*du; 35.148 + v = j*dv; 35.149 + 35.150 + vertexes[i+j*ResX()]=ComputeVertex(u,v,_scale); 35.151 + } 35.152 + 35.153 + 35.154 + mth::Vector3_t normal; 35.155 + 35.156 + // build normals 35.157 + for (i=0; i<ResX(); i++) 35.158 + for ( j=0; j<ResY(); j++) { 35.159 + u = i*du; 35.160 + v = j*dv; 35.161 + 35.162 + normal=ComputeNormal(ComputeVertex(u,v,_scale), 35.163 + ComputeVertex(u+du/10.0,v,_scale), 35.164 + ComputeVertex(u,v+dv/10.0,_scale)); 35.165 + if (_reverse) 35.166 + normal=-normal; 35.167 + normals[i+j*ResX()]=normal; 35.168 + //vertexes[i+j*resolution], 35.169 + } 35.170 + 35.171 +} 35.172 + 35.173 +#if 0 35.174 +void efxSphericalShape_t::Draw() const 35.175 +{ 35.176 + 35.177 + glShadeModel(GL_SMOOTH); 35.178 + 35.179 + 35.180 + glEnable(GL_LIGHTING); 35.181 + glEnable(GL_LIGHT0); 35.182 + 35.183 + float light[4]={0.333,0.333,0.333,0}; 35.184 + glLightfv(GL_LIGHT0,GL_POSITION,light); 35.185 + 35.186 + int i,j; 35.187 + 35.188 +#if 1 // test render mode 35.189 + 35.190 + for (int t=0;t<2;t++) { 35.191 + GLenum mode=GL_QUAD_STRIP; 35.192 + if (t==1) { 35.193 + mode=GL_LINE_STRIP; 35.194 + glDisable(GL_CULL_FACE); 35.195 + glDisable(GL_DEPTH_TEST); 35.196 + } 35.197 + 35.198 + 35.199 + glBegin(mode); 35.200 + for (j=0; j<ResY()-1; j++) 35.201 + for (i=0; i<ResX(); i++) { 35.202 + glNormal3fv(normals[(i)%ResX()+(j%ResY())*ResX()]); 35.203 + glVertex3fv(vertexes[(i)%ResX()+(j%ResY())*ResX()]); 35.204 + 35.205 + glNormal3fv(normals[(i)%ResX()+((j+1)%ResY())*ResX()]); 35.206 + glVertex3fv(vertexes[(i)%ResX()+((j+1)%ResY())*ResX()]); 35.207 + } 35.208 + glEnd(); 35.209 + } 35.210 + 35.211 +#else 35.212 + 35.213 + 35.214 + glBegin(GL_LINES); 35.215 + for (j=0; j<resolution-1; j++) 35.216 + for (i=0; i<resolution; i++) { 35.217 + 35.218 + glVertex3fv(vertexes[(i)%resolution+(j%resolution)*resolution]); 35.219 + glVertex3fv(vertexes[(i+1)%resolution+(j%resolution)*resolution]); 35.220 + 35.221 + glVertex3fv(vertexes[(i)%resolution+(j%resolution)*resolution]); 35.222 + glVertex3fv(vertexes[(i)%resolution+((j+1)%resolution)*resolution]); 35.223 + 35.224 + 35.225 + } 35.226 + glEnd(); 35.227 +#endif 35.228 + 35.229 + glDisable(GL_LIGHT0); 35.230 + glDisable(GL_LIGHTING); 35.231 +} 35.232 +#endif 35.233 + 35.234 + 35.235 + 35.236 +// used for screen 2 35.237 +void efxSphericalShape_t::Draw() 35.238 +{ 35.239 + int i,j; 35.240 + GLenum mode=GL_QUAD_STRIP; 35.241 + 35.242 +#if 0 35.243 + int sx;int sy; 35.244 + sx=ResX(); 35.245 + sy=ResY(); 35.246 + txtBindTexture2d(textureBase,0); 35.247 + 35.248 + int index; 35.249 + glBegin(mode); 35.250 + 35.251 + for (j=0; j<sy-1; j++) 35.252 + for (i=0; i<sx; i++) { 35.253 + index=i+j*sx; 35.254 + glNormal3fv(normals[index]); 35.255 + glTexCoord2fv(uvs[index]); 35.256 + glVertex3fv(vertexes[index]); 35.257 + 35.258 + index+=sx; 35.259 + glNormal3fv(normals[index]); 35.260 + glTexCoord2fv(uvs[index]); 35.261 + glVertex3fv(vertexes[index]); 35.262 + } 35.263 + glEnd(); 35.264 + txtBindTexture2d(textureBase,0); 35.265 +#else 35.266 + 35.267 + txtBindTexture2d(textureBase,0); 35.268 + 35.269 + FixForVArray(); 35.270 + EnableArray(); 35.271 + 35.272 + for (i=0;i<Indexes()->nbBuffers;i++) 35.273 + glDrawElements(mode,Indexes()->sizeOfBuffer,GL_UNSIGNED_INT,Indexes()->indexes[i]); 35.274 + 35.275 + DisableArray(); 35.276 + txtBindTexture2d(textureBase,0); 35.277 + 35.278 +#endif 35.279 +} 35.280 + 35.281 + 35.282 + 35.283 + 35.284 + 35.285 + 35.286 +void efxSpherical_t::Init(int _nbShapes,int _resolutions,float _scale) 35.287 +{ 35.288 + 35.289 + Kill(); 35.290 + resolutions=_resolutions; 35.291 + nbShapes=_nbShapes; 35.292 + 35.293 + int q=resolutions*resolutions; 35.294 + 35.295 +#if 0 35.296 + uvs=new mth::Vector2_t[q]; 35.297 + for (int i=0;i<resolutions;i++) 35.298 + for (int j=0;j<resolutions;j++) { 35.299 + uvs[i+j*resolutions][0]=i*4*1.0/resolutions; 35.300 + uvs[i+j*resolutions][1]=j*4*1.0/resolutions; 35.301 + } 35.302 + 35.303 + SYS_ASSERT(uvs); 35.304 +#endif 35.305 + 35.306 + shapes=new efxSphericalShape_t[_nbShapes]; 35.307 + 35.308 +#if 1 // use this new version (remove old code in next commit) 35.309 + shapes[0].Init(_resolutions,_resolutions); 35.310 + uvs=shapes[0].GetNewUVsBuffer(); 35.311 + cmnSquareShape_t::IndexBuffers_t* idx=shapes[0].GetNewIndexBuffer(); 35.312 + shapes[0].SetUVs(uvs); 35.313 + shapes[0].SetIndexes(idx); 35.314 + 35.315 + for (int i=0;i<resolutions;i++) 35.316 + for (int j=0;j<resolutions;j++) { 35.317 + uvs[i+j*resolutions][0]=i*4.0/resolutions; 35.318 + uvs[i+j*resolutions][1]=j*4.0/resolutions; 35.319 + } 35.320 + SYS_ASSERT(uvs); 35.321 + 35.322 + for (i=1;i<_nbShapes;i++) { 35.323 + shapes[i].Init(_resolutions,_resolutions); 35.324 + shapes[i].RandomizeParams(); 35.325 + shapes[i].Generate(_scale); 35.326 + shapes[i].SetUVs(uvs); 35.327 + shapes[i].SetIndexes(idx); 35.328 + } 35.329 + morph.Init(_resolutions,_resolutions); 35.330 + morph.SetUVs(uvs); 35.331 + morph.SetIndexes(idx); 35.332 +#else 35.333 + for (i=0;i<_nbShapes;i++) { 35.334 + shapes[i].Init(_resolutions,_resolutions); 35.335 + shapes[i].RandomizeParams(); 35.336 + shapes[i].Generate(_scale); 35.337 + shapes[i].SetUVs(uvs); 35.338 + } 35.339 + 35.340 + morph.Init(_resolutions,_resolutions); 35.341 + morph.SetUVs(uvs); 35.342 +#endif 35.343 + nbShapes=_nbShapes; 35.344 + resolutions=_resolutions; 35.345 + 35.346 +} 35.347 + 35.348 +void efxSpherical_t::SetTexture(GLuint _id){ 35.349 + 35.350 + for (int i=0;i<nbShapes;i++) 35.351 + shapes[i].SetTexture(_id); 35.352 + morph.SetTexture(_id); 35.353 +} 35.354 + 35.355 + 35.356 +void efxSpherical_t::Kill() 35.357 +{ 35.358 + if (shapes) 35.359 + delete [] shapes; 35.360 + shapes=0; 35.361 + 35.362 + morph.Kill(); 35.363 + if (uvs) 35.364 + delete [] uvs; 35.365 + uvs=0; 35.366 +} 35.367 + 35.368 + 35.369 + 35.370 + 35.371 +void efxSpherical_t::MakeMorph(int _shape1,int _shape2,float _t) 35.372 +{ 35.373 + SYS_ASSERT(_shape1>=0 && _shape1<nbShapes); 35.374 + SYS_ASSERT(_shape2>=0 && _shape2<nbShapes); 35.375 + 35.376 + morph.MakeMorphFrom(shapes[_shape1],shapes[_shape2],_t); 35.377 + 35.378 +}
36.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 36.2 +++ b/efx_harmonics.h Tue Nov 27 15:23:52 2007 +0100 36.3 @@ -0,0 +1,94 @@ 36.4 +/** @file stv_harmonics.h 36.5 +* 36.6 +* @brief Sphericals Harmonics Effect 36.7 +* 36.8 +****************************************************************************************************************** 36.9 +* 36.10 +* @author Stv based on Paul Bourke's web site (http://astronomy.swin.edu.au/~pbourke/surfaces/sphericalh/) 36.11 +* 36.12 +* @date Created 2003/10 36.13 +* 36.14 +* @version $Id: efx_harmonics.h,v 1.6 2004/01/17 08:37:27 psc80 Exp $ 36.15 +* 36.16 +******************************************************************************************************************/ 36.17 + 36.18 +#ifndef EFX_SPHERICAL_H 36.19 +#define EFX_SPHERICAL_H 36.20 + 36.21 +#include "mth_vector3.h" 36.22 +#include "mth_vector2.h" 36.23 +#include "cmn_shape.h" 36.24 + 36.25 +class efxSpherical_t; 36.26 + 36.27 +class efxSphericalShape_t : public cmnSquareShape_t 36.28 +{ 36.29 + int params[8]; 36.30 + 36.31 + mth::Vector3_t ComputeVertex(double _theta, double _phi,double _scale); 36.32 + mth::Vector3_t ComputeNormal(const mth::Vector3_t& _a,const mth::Vector3_t& _b, const mth::Vector3_t& _c); 36.33 + 36.34 + GLuint textureBase; 36.35 + 36.36 +public: 36.37 + 36.38 + efxSphericalShape_t():cmnSquareShape_t() {textureBase=0;} 36.39 + 36.40 + // specify params or use random 36.41 + void Params(int _a0,int _a1,int _a2,int _a3,int _a4,int _a5,int _a6,int _a7); 36.42 + void RandomizeParams(); 36.43 + 36.44 + // generate shape with a scale factor 36.45 + void Generate(float _scale,bool _reverse=false); 36.46 + 36.47 + void Draw() ; 36.48 + void SetTexture(GLuint _id) { textureBase=_id;} 36.49 + 36.50 +}; 36.51 + 36.52 + 36.53 + 36.54 +class efxSpherical_t 36.55 +{ 36.56 + 36.57 + int nbShapes; 36.58 + int resolutions; 36.59 + 36.60 + efxSphericalShape_t* shapes; 36.61 + 36.62 + //shape used to morph 36.63 + efxSphericalShape_t morph; 36.64 + 36.65 + // shared uvs 36.66 + mth::Vector2_t* uvs; 36.67 + 36.68 +public: 36.69 + 36.70 + efxSpherical_t(){ shapes=0;uvs=0;} 36.71 + ~efxSpherical_t(){} 36.72 + 36.73 + 36.74 + void Init(int _nbShapes,int _resolutions,float _scale=15); 36.75 + 36.76 + 36.77 + int NbShapes() { return nbShapes;} 36.78 + 36.79 + int ResolutionOfGrid() { return resolutions;} 36.80 + 36.81 + void Kill(); 36.82 + 36.83 + 36.84 + /// morph a shape 1 with a shape 2 with a range t [0-1]. the result is into morph, given by MorphShape 36.85 + void MakeMorph(int _shape1,int _shape2,float _t); 36.86 + 36.87 + efxSphericalShape_t& MorphShape() { return morph;} 36.88 + 36.89 + 36.90 + efxSphericalShape_t& Shape(int _i) { return shapes[_i];} 36.91 + 36.92 + void SetTexture(GLuint _id); 36.93 + 36.94 +}; 36.95 + 36.96 + 36.97 +#endif
37.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 37.2 +++ b/efx_rub.cxx Tue Nov 27 15:23:52 2007 +0100 37.3 @@ -0,0 +1,359 @@ 37.4 +#include "efx_rub.h" 37.5 +#include "sys_assert.h" 37.6 +#include "mth_vector3.h" 37.7 +#include "gl_header.h" 37.8 +#include "cmn_intro.h" 37.9 +#include "cmn_texture.h" 37.10 + 37.11 +void efxRubShape_t::Init(int _xres,int _yres) 37.12 +{ 37.13 + cmnSquareShape_t::Init(_xres,_yres); 37.14 +} 37.15 + 37.16 + 37.17 +void efxRubShape_t::Generate(int _nbElements,const char** _text,float _alpha, 37.18 + GLuint _texture,int _xTex,int _yTex, 37.19 + float _radius,float _length) 37.20 +{ 37.21 + SYS_ASSERT(vertexes && normals); 37.22 + 37.23 + uchar* maps=new uchar[_xTex*_yTex*4]; 37.24 + SYS_ASSERT(maps); 37.25 + 37.26 + 37.27 + const float OffsetStepY=0.02; 37.28 + 37.29 + cmnPushGLState(); 37.30 + cmnPushMatrix(); 37.31 + 37.32 + GLuint tmpTexture=_texture; 37.33 + //float div=4.0; 37.34 + //tmpTexture=txtCreatePerlin2d(texResX,texResY,div*1.0/texResX,div*1.0/texResX); 37.35 + 37.36 + cmnClearScreen(0,0,0,1); 37.37 + cmnSetPlanarView(); 37.38 + 37.39 + glDisable(GL_CULL_FACE); 37.40 + 37.41 + glDisable(GL_DEPTH_TEST); 37.42 + glColor3f(1,1,1); 37.43 + 37.44 + // draw the texture 37.45 + txtBindTexture2d(tmpTexture,0); 37.46 + glBegin(GL_QUADS); 37.47 + for (int i=0;i<1;i++) { 37.48 + //glColor4ub(0,0,0,0); 37.49 + glTexCoord2f(0,0); 37.50 + glVertex2f(0,_yTex); 37.51 + 37.52 + //glColor4ub(0,0,0,0); 37.53 + glTexCoord2f(1,0); 37.54 + glVertex2f(_xTex,_yTex); 37.55 + 37.56 + //glColor4ub(167,92,5,255); 37.57 + glTexCoord2f(1,1); 37.58 + glVertex2f(_xTex,0); 37.59 + 37.60 + //glColor4ub(167,92,5,255); 37.61 + glTexCoord2f(0,1); 37.62 + glVertex2f(0,0); 37.63 + } 37.64 + glEnd(); 37.65 + txtUnBindTexture2d(0); 37.66 + 37.67 + glEnable(GL_BLEND); 37.68 + glBlendFunc(GL_ONE,GL_ONE); 37.69 + 37.70 + // draw the text 37.71 + font->SetScaleY(3.0); 37.72 + 37.73 + glColor4f(_alpha,_alpha,_alpha,1); 37.74 + float sizey=_nbElements*(font->SizeOfCharY()+OffsetStepY*_yTex); 37.75 + float starty=(_yTex-sizey)/2+OffsetStepY*_yTex; 37.76 + SYS_ASSERT(starty>0); 37.77 + //float sizex=(_nbElement+OffsetStepX*_nbElement)*font->SizeOfCharY(); 37.78 + 37.79 + for (i=0;i<_nbElements;i++) { 37.80 + font->Print(0,starty+(i*(OffsetStepY*_yTex+font->SizeOfCharY())),_text[i]); 37.81 + } 37.82 + 37.83 + glColor4f(1,1,1,1); 37.84 + font->SetScale(1.0); 37.85 + 37.86 + glFlush(); 37.87 + 37.88 + txtGetTextureFromBackBuffer(maps,0,0,_xTex,_yTex); 37.89 + 37.90 + cmnPopMatrix(); 37.91 + cmnPopGLState(); 37.92 + 37.93 + 37.94 + 37.95 + 37.96 + 37.97 + const double one_on_xsection=1.0/ResX(); 37.98 + const double one_on_ysection=_length*1.0/ResY(); 37.99 + 37.100 + const double one_on_xTexSection=_xTex*1.0/ResX(); 37.101 + const double one_on_yTexSection=_yTex*1.0/ResY(); 37.102 + 37.103 + mth::Vector3_t tmp; 37.104 + for (i=0;i<ResY();i++) 37.105 + for (int s=0; s < ResX(); s++) { 37.106 + tmp.Init(mth::Sin(2 * mth::PI * s * one_on_xsection), 37.107 + -_length*0.5+i*one_on_ysection, 37.108 + mth::Cos(2 * mth::PI * s * one_on_xsection)); 37.109 + 37.110 + vertexes[s+i*ResX()]=tmp; 37.111 + tmp[1]=0; 37.112 + tmp.Normalize(); 37.113 + 37.114 + // todo: improve quality using a bilinear value 37.115 + int x=(int)(s*one_on_xTexSection); 37.116 + int y=(int)(i*one_on_yTexSection); 37.117 + 37.118 + int sum=0; 37.119 +// sum+=_scalePixelMap*maps[(x+y*texResX)*4+0]; 37.120 + sum+=maps[(x+y*_xTex)*4+1]; 37.121 + sum+=maps[(x+y*_xTex)*4+2]; 37.122 + sum+=maps[(x+y*_xTex)*4+3]; 37.123 + float a=_radius*sum*1.0/3.0/255.0; 37.124 + vertexes[s+i*ResX()]+=tmp*a; 37.125 + } 37.126 + 37.127 + // compute normals 37.128 + for (i=0;i<ResY();i++) 37.129 + for (int s=0; s < ResX(); s++) { 37.130 + tmp=GetNormalFace(s-1,i-1); 37.131 + tmp+=GetNormalFace(s,i-1); 37.132 + tmp+=GetNormalFace(s-1,i); 37.133 + tmp+=GetNormalFace(s,i); 37.134 + tmp.Normalize(); 37.135 + normals[s+i*ResX()]=tmp; 37.136 + } 37.137 + 37.138 + delete [] maps; 37.139 +} 37.140 + 37.141 + 37.142 +void efxRubShape_t::Kill() 37.143 +{ 37.144 + //glDeleteTextures(1,&texture); 37.145 +} 37.146 + 37.147 + 37.148 +// return the normal of the given face 37.149 +mth::Vector3_t efxRubShape_t::GetNormalFace(int _i,int _j) 37.150 +{ 37.151 +#define GetVertex(i,j) vertexes[((i)+ResX())%ResX()+(((j)+ResY())%ResY())*ResX()] 37.152 + mth::Vector3_t v1=GetVertex((_i),(_j+1))-GetVertex((_i),(_j)); 37.153 + mth::Vector3_t v2=GetVertex((_i+1),_j)-GetVertex((_i),(_j)); 37.154 + 37.155 + mth::Vector3_t v3=GetVertex((_i+1),_j)-GetVertex((_i+1),(_j+1)); 37.156 + mth::Vector3_t v4=GetVertex(_i,(_j+1))-GetVertex((_i+1),(_j+1)); 37.157 + 37.158 +#undef GetVertex 37.159 + 37.160 + mth::Vector3_t result; 37.161 + result=v1.Cross(v2); 37.162 + result+=v3.Cross(v4); 37.163 + result.Normalize(); 37.164 + return -result; 37.165 +} 37.166 + 37.167 + 37.168 + 37.169 +void efxRubShape_t::Draw() 37.170 +{ 37.171 + typedef int* IntPtr_t; 37.172 + 37.173 + 37.174 + SYS_ASSERT(uvs && vertexes && normals); 37.175 + 37.176 + int i,j; 37.177 + GLenum mode=GL_QUAD_STRIP; 37.178 + float a[2]; 37.179 + txtBindTexture2d(textureBase,0); 37.180 + 37.181 + FixForVArray(); 37.182 + EnableArray(); 37.183 + 37.184 + for (i=0;i<Indexes()->nbBuffers;i++) 37.185 + glDrawElements(mode,Indexes()->sizeOfBuffer,GL_UNSIGNED_INT,Indexes()->indexes[i]); 37.186 + 37.187 + DisableArray(); 37.188 + txtUnBindTexture2d(0); 37.189 + 37.190 +} 37.191 + 37.192 +void efxRubShape_t::DrawRow(int _row) const 37.193 +{ 37.194 + SYS_ASSERT(uvs && vertexes && normals); 37.195 + 37.196 + int i,j; 37.197 + GLenum mode=GL_QUAD_STRIP; 37.198 + float a[2]; 37.199 + txtBindTexture2d(textureBase,0); 37.200 + 37.201 + int index; 37.202 + int index1; 37.203 + j=_row; 37.204 + glBegin(mode); 37.205 + 37.206 + for (i=0; i<resx; i++) { 37.207 + index=i+j*resx; 37.208 + glNormal3fv(normals[index]); 37.209 + glTexCoord2fv(uvs[index]); 37.210 + glVertex3fv(vertexes[index]); 37.211 + 37.212 + index+=resx; 37.213 + glNormal3fv(normals[index]); 37.214 + glTexCoord2fv(uvs[index]); 37.215 + glVertex3fv(vertexes[index]); 37.216 + } 37.217 + 37.218 + 37.219 + index1=j*resx; 37.220 + index=resx-1+index1; 37.221 + glNormal3fv(normals[index1]); 37.222 + a[0]=uvs[index][0]+(uvs[index-1][0]-uvs[index-2][0]); 37.223 + a[1]=uvs[index][1]+(uvs[index-1][1]-uvs[index-2][1]); 37.224 + glTexCoord2fv(a); 37.225 + glVertex3fv(vertexes[index1]); 37.226 + 37.227 + index1+=resx; 37.228 + index=resx-1+index1; 37.229 + glNormal3fv(normals[index1]); 37.230 + a[0]=uvs[index][0]+(uvs[index][0]-uvs[index][0]); 37.231 + a[1]=uvs[index][1]+(uvs[index][1]-uvs[index][1]); 37.232 + glTexCoord2fv(a); 37.233 + glVertex3fv(vertexes[index1]); 37.234 + glEnd(); 37.235 + txtUnBindTexture2d(0); 37.236 + 37.237 +} 37.238 + 37.239 + 37.240 + 37.241 + 37.242 + 37.243 + 37.244 + 37.245 + 37.246 +efxRub_t::efxRub_t() 37.247 +{ 37.248 + rubbers=0; 37.249 + nbRubbers=0; 37.250 + uvs=0; 37.251 +} 37.252 + 37.253 + 37.254 +void efxRub_t::Init(int _nbBuffers,int _xres,int _yres) 37.255 +{ 37.256 + if (rubbers) 37.257 + delete [] rubbers; 37.258 + nbRubbers=_nbBuffers; 37.259 + rubbers=new efxRubShape_t[nbRubbers]; 37.260 + 37.261 + rubbers[0].Init(_xres,_yres); 37.262 + uvs=rubbers[0].GetNewUVsBuffer(); 37.263 + cmnSquareShape_t::IndexBuffers_t* idx=rubbers[0].GetNewIndexBuffer(); 37.264 + rubbers[0].SetUVs(uvs); 37.265 + rubbers[0].SetIndexes(idx); 37.266 + 37.267 + //uvs=new mth::Vector2_t[_xres*_yres]; 37.268 + for (int i=0;i<_xres;i++) 37.269 + for (int j=0;j<_yres;j++) { 37.270 + uvs[i+j*_xres][0]=i*1.0/_xres; 37.271 + uvs[i+j*_xres][1]=j*1.0/_yres; 37.272 + } 37.273 + SYS_ASSERT(uvs); 37.274 + 37.275 + for (i=1;i<nbRubbers;i++) { 37.276 + rubbers[i].Init(_xres,_yres); 37.277 + rubbers[i].SetUVs(uvs); 37.278 + rubbers[i].SetIndexes(idx); 37.279 + } 37.280 + 37.281 + morph.Init(_xres,_yres); 37.282 + morph.SetUVs(uvs); 37.283 + morph.SetIndexes(idx); 37.284 +} 37.285 + 37.286 + 37.287 +void efxRub_t::GenerateRandom(int _xTex,int _yTex,float _radius,float _length) 37.288 +{ 37.289 + 37.290 + const int nbTextes=3; 37.291 + const char* text[nbTextes]={ 37.292 + "syn[rj] [psc80]", 37.293 + "[kohai] [evil]", 37.294 + "[mryoung] [stv]"}; 37.295 + 37.296 + 37.297 + float div=2.0; 37.298 + GLuint tmpTexture; 37.299 + int freq; 37.300 + float amp; 37.301 + for (int i=0;i<nbRubbers;i++) { 37.302 + 37.303 + freq=1+(int)(8.0*mth::Rand()/(mth::RANDOM_MAX+1.0)); 37.304 + amp=0.5+0.2*mth::Rand()/(mth::RANDOM_MAX+1.0); 37.305 + 37.306 + tmpTexture=txtCreatePerlin2d(_xTex,_yTex,div*1.0/_xTex,div*1.0/_yTex,amp,freq); 37.307 + SYS_ASSERT(tmpTexture); 37.308 + rubbers[i].Generate(nbTextes,text,0.2,tmpTexture,_xTex,_yTex,_radius,_length); 37.309 + glDeleteTextures(1,&tmpTexture); 37.310 + } 37.311 + 37.312 +} 37.313 + 37.314 + 37.315 +void efxRub_t::Generate(int _xTex,int _yTex,float _radius,float _length,int _shape,const char** _elements,int _nbElements) 37.316 +{ 37.317 + SYS_ASSERT(_shape>=0 && _shape<nbRubbers); 37.318 + const int nbTextes=_nbElements; 37.319 + 37.320 + float div=2.0; 37.321 + GLuint tmpTexture; 37.322 + int freq; 37.323 + float amp; 37.324 +// for (int i=0;i<nbRubbers;i++) { 37.325 + 37.326 + freq=1+(int)(8.0*mth::Rand()/(mth::RANDOM_MAX+1.0)); 37.327 + amp=0.5+0.2*mth::Rand()/(mth::RANDOM_MAX+1.0); 37.328 + 37.329 + // big hack we generate a big shape for the second call 37.330 + static int nbCallFromOut=0; 37.331 + nbCallFromOut++; 37.332 + 37.333 + if (nbCallFromOut==2) // big hack 37.334 + tmpTexture=txtCreatePerlin2d(_xTex,_yTex,div*1.0/_xTex,div*1.0/_yTex,0.8,5); 37.335 + else 37.336 + tmpTexture=txtCreatePerlin2d(_xTex,_yTex,div*1.0/_xTex,div*1.0/_yTex,amp,freq); 37.337 + SYS_ASSERT(tmpTexture); 37.338 + rubbers[_shape].Generate(nbTextes,_elements,0.2,tmpTexture,_xTex,_yTex,_radius,_length); 37.339 + glDeleteTextures(1,&tmpTexture); 37.340 +// } 37.341 + 37.342 +} 37.343 + 37.344 + 37.345 + 37.346 + 37.347 +void efxRub_t::SetTexture(GLuint _id) 37.348 +{ 37.349 + 37.350 + for (int i=0;i<nbRubbers;i++) 37.351 + rubbers[i].SetTexture(_id); 37.352 + morph.SetTexture(_id); 37.353 +} 37.354 + 37.355 + 37.356 +void efxRub_t::MakeMorph(int _shape1,int _shape2,float _t) 37.357 +{ 37.358 + SYS_ASSERT(_shape1>=0 && _shape1<nbRubbers); 37.359 + SYS_ASSERT(_shape2>=0 && _shape2<nbRubbers); 37.360 + 37.361 + morph.MakeMorphFrom(rubbers[_shape1],rubbers[_shape2],_t); 37.362 +} 37.363 \ No newline at end of file
38.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 38.2 +++ b/efx_rub.h Tue Nov 27 15:23:52 2007 +0100 38.3 @@ -0,0 +1,83 @@ 38.4 +#ifndef EFX_RUB_H 38.5 +#define EFX_RUB_H 38.6 + 38.7 + 38.8 +#include "cmn_texture.h" 38.9 +#include "mth_vector2.h" 38.10 +#include "cmn_shape.h" 38.11 + 38.12 +/* 38.13 + * miniFMod 38.14 + * include 38.15 + * resource 38.16 + */ 38.17 +#include "minifmod/minifmod.h" 38.18 +extern FMUSIC_MODULE * intro_mod; 38.19 + 38.20 + 38.21 +class efxRubShape_t : public cmnSquareShape_t 38.22 +{ 38.23 + 38.24 + GLuint textureBase; 38.25 + 38.26 + 38.27 +public: 38.28 + 38.29 + efxRubShape_t():cmnSquareShape_t() { textureBase=0;} 38.30 + mth::Vector3_t efxRubShape_t::GetNormalFace(int _i,int _j); 38.31 + 38.32 + void Generate(int _nbElements,const char** _text,float _alpha, 38.33 + GLuint _texture,int _xTex,int _yTex, 38.34 + float _radius,float _length); 38.35 + 38.36 + void SetTexture(GLuint _id) { textureBase=_id;} 38.37 + 38.38 + void Init(int _xres,int _yres); 38.39 + void Kill(); 38.40 + 38.41 + void Draw(); 38.42 + void DrawRow(int _row) const; 38.43 + 38.44 + 38.45 +}; 38.46 + 38.47 + 38.48 + 38.49 + 38.50 +class efxRub_t 38.51 +{ 38.52 + 38.53 + // rubbers 38.54 + efxRubShape_t* rubbers; 38.55 + int nbRubbers; 38.56 + 38.57 + // morphed rubbers 38.58 + efxRubShape_t morph; 38.59 + 38.60 + // shared uvs 38.61 + mth::Vector2_t* uvs; 38.62 + 38.63 +public: 38.64 + 38.65 + efxRub_t(); 38.66 + 38.67 + 38.68 + void Init(int _nbBuffers,int _xres,int _yres); 38.69 + //void Update(); 38.70 + //void Draw(); 38.71 + void GenerateRandom(int _xTex,int _yTex,float _radius,float _length); 38.72 + void Generate(int _xTex,int _yTex,float _radius,float _length,int _shape,const char** _elements,int _nbElements); 38.73 + void MakeMorph(int _shape1,int _shape2,float _t); 38.74 + void SetTexture(GLuint _id); 38.75 + 38.76 + void PreDraw(); 38.77 + void PostDraw(); 38.78 + 38.79 + int NbShapes() { return nbRubbers;} 38.80 + 38.81 + efxRubShape_t& Rubber(int _i) {return rubbers[_i];} 38.82 + 38.83 + efxRubShape_t& MorphShape() { return morph;} 38.84 + 38.85 +}; 38.86 +#endif 38.87 \ No newline at end of file
39.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 39.2 +++ b/efx_screen0.cxx Tue Nov 27 15:23:52 2007 +0100 39.3 @@ -0,0 +1,231 @@ 39.4 +#include "efx_screen0.h" 39.5 +#include "sys_assert.h" 39.6 +#include "mth_vector3.h" 39.7 +#include "gl_header.h" 39.8 +#include "cmn_intro.h" 39.9 + 39.10 + 39.11 + 39.12 +efxScreen0_t::efxScreen0_t() 39.13 +{ 39.14 +} 39.15 + 39.16 + 39.17 +void efxScreen0_t::Init() 39.18 +{ 39.19 + 39.20 +#ifndef NO_LOADER 39.21 + loadingLevel=0; 39.22 + textureStart=txtCreateObliqueTexture(256,128,45,"Generating"); 39.23 + textureCurrent=txtCreateObliqueTexture(256,128,45); 39.24 + textureEnd=txtCreateObliqueTexture(256,128,45,"finish"); 39.25 +#endif 39.26 + int size = 256; 39.27 + float div=1.0/size; 39.28 + backgroundTexture1=txtCreatePerlin2d(size,size,div,div,0.8,10); 39.29 + backgroundTexture2=txtCreatePerlin2d(size,size,div,div,0.8,5); 39.30 + 39.31 + InitDesign(); 39.32 +} 39.33 + 39.34 + 39.35 +void efxScreen0_t::InitDesign() 39.36 +{ //0123456789a 39.37 + const char* text[]= { 39.38 + "st", 39.39 + " ( )", 39.40 + " 2k4", 39.41 + " art ", 39.42 + }; 39.43 + const int NbCharsText=11; 39.44 + const int PosYText=25; 39.45 + 39.46 + const char* text1[]= { 39.47 + "syn", 39.48 + " rj", 39.49 + " [ ]", 39.50 + "presents", 39.51 + }; 39.52 + const int NbCharsText1=7; 39.53 + const int PosYText1=-20; 39.54 + 39.55 + const float ScaleFontX=0.9; 39.56 + const float ScaleFontY=2; 39.57 + const int NbDesignElements=6; 39.58 + const int Repeat=4; 39.59 + 39.60 + design.Init(NbDesignElements*Repeat); 39.61 + designElements=new cmnDesignElementFont_t[NbDesignElements*Repeat]; 39.62 + 39.63 + 39.64 + font->SetScaleX(ScaleFontX); 39.65 + font->SetScaleY(ScaleFontY); 39.66 + 39.67 + MakeSync(0,0,text,NbCharsText,PosYText,ScaleFontX,ScaleFontY); 39.68 + MakeSync(4.66,3,text,NbCharsText,PosYText,ScaleFontX,ScaleFontY); 39.69 + MakeSync(6.149,6,text1,NbCharsText1,PosYText1,ScaleFontX,ScaleFontY); 39.70 + MakeSync(10.75,9,text1,NbCharsText1,PosYText1,ScaleFontX,ScaleFontY); 39.71 + 39.72 + int index2=Repeat*3; 39.73 + designElements[index2].Init(0); 39.74 + designElements[index2].position.Init(-(NbCharsText*font->SizeOfCharX()/2),PosYText,0); 39.75 + designElements[index2].target.Init(designElements[index2].position); 39.76 + designElements[index2].text=text[3]; 39.77 + designElements[index2].endLife=1e5; 39.78 + designElements[index2].factor=0; 39.79 + designElements[index2].alphaFactor=0.2; 39.80 + designElements[index2].start=3.3; 39.81 + designElements[index2].alpha=0; 39.82 + designElements[index2].scaley=ScaleFontY; 39.83 + designElements[index2].scalex=ScaleFontX; 39.84 + design.AddElement(&designElements[index2]); 39.85 + index2++; 39.86 + 39.87 + 39.88 + font->SetScaleX(ScaleFontX*0.6); 39.89 + font->SetScaleY(ScaleFontY*0.6); 39.90 + 39.91 + designElements[index2].Init(0); 39.92 + designElements[index2].position.Init(-(NbCharsText1*font->SizeOfCharX()/2),PosYText1-40,0); 39.93 + designElements[index2].target.Init(designElements[index2].position); 39.94 + designElements[index2].text=text1[3]; 39.95 + designElements[index2].endLife=1e5; 39.96 + designElements[index2].factor=0; 39.97 + designElements[index2].alphaFactor=0.2; 39.98 + designElements[index2].start=9.2; 39.99 + designElements[index2].alpha=0; 39.100 + designElements[index2].scaley=ScaleFontY*0.6; 39.101 + designElements[index2].scalex=ScaleFontX*0.6; 39.102 + design.AddElement(&designElements[index2]); 39.103 + 39.104 + 39.105 +} 39.106 + 39.107 +void efxScreen0_t::Update() 39.108 +{ 39.109 + 39.110 + const float First=3.3; 39.111 + const float Second=6.2; 39.112 + const float Third=9.2; 39.113 + const int ElementToUpdate=12; // very bad :( 39.114 + float time=Timer->GetRealTime(); 39.115 + 39.116 + if (time>Second && time<Third) 39.117 + designElements[ElementToUpdate].alphaFactor=-0.15; 39.118 + else if (time>Third) 39.119 + designElements[ElementToUpdate].alphaFactor=0.2; 39.120 + 39.121 + 39.122 + design.Update(); 39.123 +} 39.124 + 39.125 + 39.126 +void efxScreen0_t::MakeSync(float _offset,int _index,const char** text,int _nbChars,float StartY,float _scaleX,float _scaleY) 39.127 +{ 39.128 + const int NbDesignElements=3; 39.129 + const float StartX=-(font->SizeOfCharX()*_nbChars)/2; //-(11*16/2); // 11*16/2-16/2 39.130 + //const float StartY=0; 39.131 + 39.132 + int index2; 39.133 + for (int i=0;i<NbDesignElements;i++) { 39.134 + index2=_index+i; 39.135 + designElements[index2].Init(0); 39.136 + designElements[index2].position.Init(StartX,StartY,100); 39.137 + designElements[index2].target.Init(StartX,StartY,0); 39.138 + designElements[index2].text=text[i]; 39.139 + designElements[index2].endLife=1e5; 39.140 + designElements[index2].factor=5; 39.141 + designElements[index2].start=0; 39.142 + designElements[index2].alpha=1; 39.143 + designElements[index2].scaley=_scaleY; 39.144 + designElements[index2].scalex=_scaleX; 39.145 + design.AddElement(&designElements[index2]); 39.146 + } 39.147 + 39.148 + designElements[_index+0].start=0.0+_offset; 39.149 + designElements[_index+1].start=0.58+_offset; 39.150 + designElements[_index+2].start=1.10+_offset; 39.151 +} 39.152 + 39.153 + 39.154 + 39.155 + 39.156 + 39.157 +#ifndef NO_LOADER 39.158 + 39.159 +void efxScreen0_t::DrawLoader() 39.160 +{ 39.161 + const float BarHeight=64; 39.162 + const float BarSpace=-16; 39.163 + const float BarWidth=128; 39.164 + const float MaxBar=mth::Floor(RX/(BarWidth+BarSpace)); 39.165 + const float MaxBarWidth=MaxBar*(BarWidth+BarSpace)-BarSpace; 39.166 + const float BarStartY=200; 39.167 + const float StartXCentered=(RX-MaxBarWidth)*0.5; 39.168 + 39.169 + cmnPushMatrix(); 39.170 + cmnSetPlanarView(); 39.171 + loadingLevel=1.0; 39.172 + int nbElements=mth::Min(loadingLevel*MaxBar,MaxBar); 39.173 + 39.174 + glColor3f(1,1,1); 39.175 + glEnable(GL_BLEND); 39.176 + glBlendFunc(GL_ONE,GL_ONE); 39.177 + for (int i=0;i<nbElements;i++) { 39.178 + if (i==0) 39.179 + txtBindTexture2d(textureStart,0); 39.180 + else if (i==MaxBar-1) 39.181 + txtBindTexture2d(textureEnd,0); 39.182 + else 39.183 + txtBindTexture2d(textureCurrent,0); 39.184 + 39.185 + glBegin(GL_QUADS); 39.186 + glTexCoord2f(0,0); 39.187 + glVertex2f(StartXCentered+i*(BarWidth+BarSpace),BarStartY); 39.188 + 39.189 + glTexCoord2f(0,1); 39.190 + glVertex2f(StartXCentered+i*(BarWidth+BarSpace),BarStartY+BarHeight); 39.191 + 39.192 + glTexCoord2f(1,1); 39.193 + glVertex2f(StartXCentered+i*(BarWidth+BarSpace)+BarWidth,BarStartY+BarHeight); 39.194 + 39.195 + glTexCoord2f(1,0); 39.196 + glVertex2f(StartXCentered+i*(BarWidth+BarSpace)+BarWidth,BarStartY); 39.197 + glEnd(); 39.198 + txtUnBindTexture2d(0); 39.199 + } 39.200 + 39.201 + cmnPopMatrix(); 39.202 +} 39.203 +#endif 39.204 + 39.205 + 39.206 + 39.207 +void efxScreen0_t::Draw() 39.208 +{ 39.209 + cmnSetFrustrum(90); 39.210 + cmnSetCamera( mth::Vector3_t( 0, 0, 100 ), mth::Vector3_t( 0 , 0, 0 ) ); 39.211 + 39.212 + //cmnDisplayBackground(backgroundTexture1,167,92,5,255,1); 39.213 + //cmnDisplayBackground(backgroundTexture2,167,92,5,255,2); 39.214 + 39.215 + glDisable(GL_DEPTH_TEST); 39.216 + glDisable(GL_CULL_FACE); 39.217 + glEnable(GL_BLEND); 39.218 + 39.219 + glBlendFunc(GL_ONE,GL_ONE); 39.220 + glColor4f(1,1,1,1); 39.221 + cmnDisplayBackground(backgroundTexture1,10,12,90,50,1); 39.222 + cmnDisplayBackground(backgroundTexture2,10,18,70,200,1); 39.223 + 39.224 + glBlendFunc(GL_SRC_ALPHA,GL_ONE); 39.225 + 39.226 + design.Draw(); 39.227 + 39.228 +#ifndef NO_LOADER 39.229 + DrawLoader(); 39.230 +#endif 39.231 + 39.232 +} 39.233 + 39.234 +
40.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 40.2 +++ b/efx_screen0.h Tue Nov 27 15:23:52 2007 +0100 40.3 @@ -0,0 +1,57 @@ 40.4 +#ifndef EFX_SCREEN0_H 40.5 +#define EFX_SCREEN0_H 40.6 + 40.7 + 40.8 +#include "cmn_texture.h" 40.9 +#include "efx_equa.h" 40.10 +#include "efx_harmonics.h" 40.11 +#include "cmn_design.h" 40.12 + 40.13 + 40.14 +#define NO_LOADER 40.15 + 40.16 + 40.17 +class efxScreen0_t 40.18 +{ 40.19 + 40.20 + GLuint backgroundTexture2; 40.21 + GLuint backgroundTexture1; 40.22 + 40.23 + cmnDesign_t design; 40.24 + cmnDesignElementFont_t* designElements; 40.25 +// cmnDesignElementTexturedQuad_t* designElements; 40.26 + 40.27 + 40.28 +#ifndef NO_LOADER // no loading 40.29 + float loadingLevel; 40.30 + GLuint textureStart; 40.31 + GLuint textureCurrent; 40.32 + GLuint textureEnd; 40.33 + 40.34 + void DrawLoader(); 40.35 +#endif 40.36 + 40.37 + void InitDesign(); 40.38 + void MakeSync(float _offset,int _index,const char** text,int _nbChars,float _y,float _scaleX,float _scaleY); 40.39 + 40.40 + 40.41 +public: 40.42 + 40.43 + efxScreen0_t(); 40.44 + 40.45 + void Init(); 40.46 + 40.47 + void Update(); 40.48 + 40.49 + void Draw(); 40.50 + 40.51 + 40.52 +#ifndef NO_LOADER // no loading 40.53 + void SetLoadLevel(float _level) {loadingLevel=_level;} 40.54 + float GetLoadLevel() { return loadingLevel;} 40.55 +#endif 40.56 + 40.57 +}; 40.58 + 40.59 + 40.60 +#endif 40.61 \ No newline at end of file
41.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 41.2 +++ b/efx_screen1.cxx Tue Nov 27 15:23:52 2007 +0100 41.3 @@ -0,0 +1,508 @@ 41.4 +#include "efx_screen1.h" 41.5 +#include "sys_assert.h" 41.6 +#include "mth_vector3.h" 41.7 +#include "gl_header.h" 41.8 +#include "cmn_intro.h" 41.9 +#include "cmn_design.h" 41.10 + 41.11 + 41.12 +// sync 41.13 +extern fxSync * sync; 41.14 + 41.15 +efxScreen1_t::efxScreen1_t() 41.16 +{ 41.17 + texture=0; 41.18 + equaResX=equaResY=0; 41.19 + mapOfNoise=0; 41.20 + equaCenter=0; 41.21 + equaTransition=false; 41.22 + equaTransitionFinished=false; 41.23 + equaAlpha=0; 41.24 + cameraRestoreAngle=-mth::PI/2; 41.25 +} 41.26 + 41.27 + 41.28 +void efxScreen1_t::Init() 41.29 +{ 41.30 + 41.31 + internalTime=0; 41.32 + 41.33 + // background init 41.34 + int size=256; 41.35 + float div=4.0/size; 41.36 + if (mapOfNoise) 41.37 + delete [] mapOfNoise; 41.38 + mapOfNoise=new uchar[size*size*4]; 41.39 + texture=txtCreatePerlin2d(size,size,div,div,0.5,6,mapOfNoise); 41.40 + 41.41 + 41.42 + InitEquaLand(9,9,mapOfNoise,size,size); 41.43 + 41.44 + 41.45 + 41.46 + // camera init 41.47 + const int CameraNbKeys=15; 41.48 + const float CameraKeyTime=3.0; 41.49 + cameraLookAt.Init(50,-15,0); 41.50 + cameraPosition.Init(-50.2,-8,95); 41.51 + 41.52 + cameraLookAt.Init(50,0,15); 41.53 + cameraPosition.Init(-50.2,95,8); 41.54 + cameraUp.Init(0,0,-1); 41.55 + 41.56 + cameraPath= new mth::Hermite_t(CameraNbKeys*2); 41.57 + cameraKeyData= new mth::HermiteKey_t[CameraNbKeys]; 41.58 + mth::Vector3_t cpos[CameraNbKeys]= { 41.59 + cameraPosition, 41.60 + mth::Vector3_t(110,140,-190), 41.61 + mth::Vector3_t(130,130,-160), 41.62 + mth::Vector3_t(-130,150,-130), 41.63 + mth::Vector3_t(-160,120,-110), 41.64 + mth::Vector3_t(-190,160,50), 41.65 + mth::Vector3_t(-170,180,100), 41.66 + mth::Vector3_t(-130,140,140), 41.67 +/* 41.68 + mth::Vector3_t(-140,150,170), 41.69 + mth::Vector3_t(-130,180,190), 41.70 + mth::Vector3_t(-120,160,150), 41.71 +*/ 41.72 + mth::Vector3_t(-110,100,120), 41.73 + mth::Vector3_t(-100,110,-110), 41.74 + mth::Vector3_t(-110,150,-150), 41.75 + mth::Vector3_t(110,250,-190), 41.76 + mth::Vector3_t(110,140,-190), 41.77 + mth::Vector3_t(130,130,-160), 41.78 + mth::Vector3_t(-160,120,-110), 41.79 + }; 41.80 + for (int i=0;i<CameraNbKeys;i++) { 41.81 + cameraKeyData[i].Init(CameraKeyTime*i,cpos[i]); 41.82 + cameraPath->AddKey(&cameraKeyData[i]); 41.83 + } 41.84 + 41.85 + 41.86 + InitDesign(); 41.87 +} 41.88 + 41.89 + 41.90 +void efxScreen1_t::InitDesign() 41.91 +{ 41.92 + const char* text1="morph"; 41.93 + const int NbChars=strlen(text1); 41.94 + const float StartPositionX=-1000; 41.95 + const float SpaceElement=30; 41.96 + const float StartYDesign=600-350; 41.97 + const float QuadSizeX = (RX-SpaceElement*NbChars)/NbChars;///150; 41.98 + const float QuadSizeY = 150; 41.99 + const float PositionXElement=0; 41.100 + const float TimeStartIntro=10; 41.101 + const float AngleTexture=90; //45 41.102 + 41.103 + nbDesignElements=24; 41.104 + design.Init(nbDesignElements); 41.105 + designElements=new cmnDesignElementTexturedQuad_t[nbDesignElements]; 41.106 + 41.107 + glColor4f(1,1,1,1); 41.108 + 41.109 + font->SetScale(1); 41.110 + for (int i=0;i<NbChars;i++) { 41.111 + 41.112 + designElements[i].texture=txtCreateObliqueTexture(256,128,AngleTexture,0,text1[i]); 41.113 + designElements[i].Init(TimeStartIntro+i*0.1); 41.114 + designElements[i].position.Init(StartPositionX,StartYDesign,0); 41.115 + designElements[i].target.Init(PositionXElement+SpaceElement/2+i*(QuadSizeX+SpaceElement),StartYDesign,0); 41.116 + designElements[i].factor=20; 41.117 + designElements[i].sizex=QuadSizeX; 41.118 + designElements[i].sizey=QuadSizeY; 41.119 + designElements[i].fadeAlpha=1.0; 41.120 + 41.121 + design.AddElement(&designElements[i]); 41.122 + } 41.123 +} 41.124 + 41.125 + 41.126 +void efxScreen1_t::DisplayDesign() 41.127 +{ 41.128 + cmnPushMatrix(); 41.129 + 41.130 + cmnSetPlanarView(); 41.131 + 41.132 + glDisable(GL_CULL_FACE); 41.133 + glDisable(GL_DEPTH_TEST); 41.134 + glEnable(GL_BLEND); 41.135 + 41.136 +// glBlendFunc(GL_ONE,GL_ONE); 41.137 + glBlendFunc(GL_SRC_ALPHA,GL_ONE); 41.138 + 41.139 + design.Draw(); 41.140 + 41.141 + 41.142 + 41.143 + cmnPopMatrix(); 41.144 + glMatrixMode(GL_MODELVIEW); 41.145 + 41.146 +} 41.147 + 41.148 + 41.149 + 41.150 + 41.151 + 41.152 +void efxScreen1_t::InitEquaLand(int _sizeX,int _sizeY,uchar* _map,int _mapSizeX,int _mapSizeY) 41.153 +{ 41.154 + SYS_ASSERT(_map); 41.155 + 41.156 + equaResX=_sizeX; 41.157 + equaResY=_sizeY; 41.158 + 41.159 + const int EquaBoxRes=8; 41.160 + const float Mapdu=_mapSizeX*1.0/(1.0*equaResX*EquaBoxRes); 41.161 + const float Mapdv=_mapSizeY*1.0/(1.0*equaResY*EquaBoxRes); 41.162 + const float ScaleDepth=0.5; 41.163 + const float SizeOfEquaBoxX=(EQUA_SIZE_X+EQUA_SIZE_SPACE)*EquaBoxRes; 41.164 + const float SizeOfEquaBoxY=(EQUA_SIZE_Y+EQUA_SIZE_SPACE)*EquaBoxRes; 41.165 + const float TotalSizeX=SizeOfEquaBoxX*equaResX; 41.166 + const float TotalSizeY=SizeOfEquaBoxY*equaResY; 41.167 + 41.168 + // equa init 41.169 + fxEqua=new efxEqua_t[equaResX*equaResY]; 41.170 + for (int j=0;j<equaResY;j++) 41.171 + for (int i=0;i<equaResX;i++) { 41.172 + 41.173 + float positionX=i*(SizeOfEquaBoxX)-TotalSizeX*0.5; 41.174 + float positionY=j*(SizeOfEquaBoxY)-TotalSizeY*0.5; 41.175 + 41.176 + fxEqua[i+j*equaResX].Init(EquaBoxRes); 41.177 + fxEqua[i+j*equaResX].SetPosition(positionX,positionY,0); 41.178 + for (int jj=0;jj<fxEqua[i+j*equaResX].ResY();jj++) 41.179 + for( int ii = 0; ii < fxEqua[i+j*equaResX].ResX(); ii++ ) { 41.180 + int u,v; 41.181 + u=i*EquaBoxRes+ii; 41.182 + v=j*EquaBoxRes+jj; 41.183 + u=(int)(u*1.0*Mapdu); 41.184 + v=(int)(v*1.0*Mapdv); 41.185 + float texel=(float)(_map[(u+v*_mapSizeX)*4+0])+(float)(_map[(u+v*_mapSizeX)*4+1])+(float)(_map[(u+v*_mapSizeX)*4+2]); 41.186 + texel/=3; 41.187 + fxEqua[i+j*equaResX].GetBox(ii+jj*EquaBoxRes).SetBaseLevel(texel*1.0*ScaleDepth); 41.188 + fxEqua[i+j*equaResX].GetBox(ii+jj*EquaBoxRes).SetDepthLevel(0); 41.189 + } 41.190 + } 41.191 + 41.192 + equaLightIntensity=1.0; 41.193 + 41.194 + 41.195 + equaCenter=equaResX/2+equaResX/2*equaResX; 41.196 + 41.197 +#ifdef WAVE 41.198 + waveSimulation[0]=new float[equaResX*equaResY*EquaBoxRes*EquaBoxRes*2]; 41.199 + waveSimulation[1]=&waveSimulation[0][equaResX*equaResY*EquaBoxRes*EquaBoxRes]; 41.200 + memset(waveSimulation[0],0,sizeof(float)*equaResX*equaResY*EquaBoxRes*EquaBoxRes*2); 41.201 + currentWaveBuffer=0; 41.202 + 41.203 + InitSimulation(0.02/*1.0/33*/,10.0,0.01,1); 41.204 +#endif 41.205 + 41.206 + 41.207 +} 41.208 + 41.209 + 41.210 +#ifdef WAVE 41.211 +void efxScreen1_t::InitSimulation(float _timeStep,float _speedOfWave,float _viscosity,float _sizeCell) 41.212 +{ 41.213 +#define Sqr(a) (a*a) 41.214 + 41.215 + speedOfWave=_speedOfWave; 41.216 + viscosity=_viscosity; 41.217 + timeStepSimulation=_timeStep; 41.218 + 41.219 + f1=Sqr(speedOfWave)*Sqr(timeStepSimulation)/Sqr(_sizeCell); 41.220 + f2=1.0/(viscosity*timeStepSimulation+2.0); 41.221 + k1=(4.0-8.0*f1)*f2; 41.222 + k2=(viscosity*timeStepSimulation-2)*f2; 41.223 + k3= 2.0*f1*f2; 41.224 +#undef Sqr 41.225 +} 41.226 + 41.227 + 41.228 +void efxScreen1_t::Simulate() 41.229 +{ 41.230 + // we should use a threshold 41.231 + if (internalTime-counterSimulation<timeStepSimulation) 41.232 + return; 41.233 + 41.234 + counterSimulation=internalTime; 41.235 + 41.236 + 41.237 + currentWaveBuffer^=1; 41.238 + float* c=waveSimulation[currentWaveBuffer]; 41.239 + float* o=waveSimulation[(currentWaveBuffer+1)%2]; 41.240 + 41.241 + int sizex=equaResX*fxEqua[0].ResX(); 41.242 + int jend=equaResY*fxEqua[0].ResY(); 41.243 + int iend=sizex; 41.244 + int jindex; 41.245 + int jindexM1; 41.246 + int jindexA1; 41.247 + int jindexi; 41.248 + 41.249 + 41.250 +// o[j*nbCells+i][1]= 41.251 +// k3* (c[(j-1)*nbCells+i][1] + c[(j+1)*nbCells+i][1] + c[j*nbCells+(i-1)][1] + c[j*nbCells+(i+1)][1]) + 41.252 +// k1* c[j*nbCells+i][1] + k2*o[j*nbCells+i][1]; 41.253 + 41.254 + 41.255 + for (int j=1;j<jend-1;j++) { 41.256 + jindex=j*sizex; 41.257 + jindexM1=jindex-sizex; 41.258 + jindexA1=jindex+sizex; 41.259 + for (int i=1;i<iend-1;i++) { 41.260 + jindexi=jindex+i; 41.261 + o[jindexi]= k3* (c[jindexM1+i] + c[jindexA1+i] + c[jindex+(i-1)]+c[jindex+(i+1)]) + k1* c[jindexi] + k2*o[jindexi]; 41.262 + } 41.263 + } 41.264 +} 41.265 + 41.266 + 41.267 +void efxScreen1_t::UpdateWave() 41.268 +{ 41.269 + 41.270 + Simulate(); 41.271 + 41.272 + int i,j; 41.273 + 41.274 + // now update the equalizer 41.275 + float* o=waveSimulation[(currentWaveBuffer+1)%2]; 41.276 + int sizex=equaResX*fxEqua[0].ResX(); 41.277 + int sizey=equaResY*fxEqua[0].ResY(); 41.278 + int resBoxX=fxEqua[0].ResX(); 41.279 + int resBoxY=fxEqua[0].ResY(); 41.280 + 41.281 + for (j=0;j<equaResY;j++) 41.282 + for (i=0;i<equaResX;i++) { 41.283 + for (int jj=0;jj<resBoxY;jj++) 41.284 + for( int ii = 0; ii < resBoxX; ii++ ) { 41.285 + fxEqua[i+j*equaResX].GetBox(ii+jj*resBoxX).SetDepthLevel(o[ (j*resBoxY+jj)*sizex+(i*resBoxX+ii)]); 41.286 + } 41.287 + } 41.288 +} 41.289 + 41.290 + 41.291 +void efxScreen1_t::UpdateWaveBuffer() 41.292 +{ 41.293 +// return ; 41.294 + int centerx=mth::Floor(equaResX*1.0/2); 41.295 + int centery=mth::Floor(equaResY*1.0/2); 41.296 + 41.297 + int sizex=equaResX*fxEqua[0].ResX(); 41.298 + int sizey=equaResY*fxEqua[0].ResY(); 41.299 + int resBoxX=fxEqua[0].ResX(); 41.300 + int resBoxY=fxEqua[0].ResY(); 41.301 + 41.302 + int boxRes=fxEqua[0].ResX(); 41.303 + 41.304 + float maxValue=0; 41.305 + float value=0; 41.306 + for (int j=0;j<resBoxY;j++) 41.307 + for (int i=0;i<resBoxX;i++) { 41.308 + value+=fxEqua[equaCenter].GetBox(i+j*resBoxX).level; 41.309 + maxValue=mth::Max(maxValue,fxEqua[equaCenter].GetBox(i+j*resBoxX).level); 41.310 + } 41.311 + value/=resBoxY*resBoxX; 41.312 +// waveSimulation[currentWaveBuffer][(centery*resBoxY+j)*sizex+(centerx*resBoxX+i)]=fxEqua[equaCenter].GetBox(i+j*resBoxX).level; 41.313 + 41.314 +// for (j=0;j<resBoxY;j++) 41.315 +// for (int i=0;i<resBoxX;i++) 41.316 +// waveSimulation[currentWaveBuffer][(centery*resBoxY+j)*sizex+(centerx*resBoxX+i)]=value; 41.317 + waveSimulation[currentWaveBuffer][(centery*resBoxY+boxRes/2)*sizex+(centerx*resBoxX+boxRes/2)]=maxValue; 41.318 + 41.319 +} 41.320 + 41.321 + 41.322 +#endif 41.323 + 41.324 +void efxScreen1_t::DrawEquaOnce(int _i/*,GLenum _mode*/) 41.325 +{ 41.326 + cmnPushMatrix(); 41.327 + fxEqua[_i].Draw(/*_mode*/); 41.328 + glTranslatef(1.5,1.5,1.5); 41.329 + fxEqua[_i].Draw(/*_mode*/); 41.330 + glTranslatef(-3,-3,-3); 41.331 + fxEqua[_i].Draw(/*_mode*/); 41.332 + cmnPopMatrix(); 41.333 +} 41.334 + 41.335 + 41.336 + 41.337 + 41.338 +void efxScreen1_t::DrawEquaFullExceptCenter() 41.339 +{ 41.340 + int add; 41.341 + 41.342 + if (equaTransition && !equaTransitionFinished) 41.343 + add=2; 41.344 + else 41.345 + add=1; 41.346 + 41.347 + for (int j=0;j<equaResY;j+=add) 41.348 + for (int i=0;i<equaResX;i+=add) { 41.349 + int index=i+j*equaResX; 41.350 + if (index!=equaCenter) 41.351 + DrawEquaOnce(index); 41.352 + } 41.353 +} 41.354 + 41.355 + 41.356 + 41.357 +void efxScreen1_t::DrawEquaCenter() 41.358 +{ 41.359 + DrawEquaOnce(equaCenter); 41.360 +} 41.361 + 41.362 + 41.363 + 41.364 + 41.365 + 41.366 + 41.367 +void efxScreen1_t::Update() 41.368 +{ 41.369 + 41.370 + const float EquaTransitionStart=6; 41.371 + const float EquaTransitionEnd=24.99-12.312; // from start 41.372 + const float EquaAlphaAdd=0.05; 41.373 + const float CameraRestoreUp=0.5; // value in radian/second 41.374 + const float TimeRefreshWave = 2.0;//8.0; 41.375 + 41.376 + const float TimeStartDesign1 = 3.0; 41.377 + 41.378 +// const mth::Vector3_t CameraInitialUp=mth::Vector3_t(0,0,-1); 41.379 + 41.380 + internalTime+=Timer->GetFrameTime(); 41.381 + 41.382 +#ifdef WAVE 41.383 + UpdateWave(); 41.384 +#endif 41.385 + 41.386 + sync->SyncEqua(); 41.387 + 41.388 +#ifdef WAVE 41.389 + // to test only 41.390 + static float test=0; 41.391 + test+=Timer->GetFrameTime(); 41.392 + if (internalTime>EquaTransitionEnd && test>TimeRefreshWave) { 41.393 + test=0; 41.394 + UpdateWaveBuffer(); 41.395 + } 41.396 +#endif 41.397 + 41.398 + //fxEqua->Update(); 41.399 +// UpdateSpherical(); 41.400 + 41.401 +//#if 0 41.402 + 41.403 + if (internalTime>=EquaTransitionStart && internalTime<EquaTransitionEnd) { 41.404 + equaTransition=true; 41.405 + cameraRestoreAngle+=CameraRestoreUp*Timer->GetFrameTime(); 41.406 + } else if (internalTime>EquaTransitionEnd) { 41.407 + equaTransition=false; 41.408 + equaTransitionFinished=true; 41.409 + } 41.410 + 41.411 + if (internalTime>=EquaTransitionStart) { 41.412 + equaAlpha+=EquaAlphaAdd*Timer->GetFrameTime(); 41.413 + equaAlpha=mth::Min(0.5,equaAlpha); 41.414 + cameraPath->GetData(internalTime-EquaTransitionStart,cameraPosition); 41.415 + } 41.416 + 41.417 + 41.418 + 41.419 + cameraRestoreAngle=mth::Min(cameraRestoreAngle,0); 41.420 + cameraUp[0]=0; 41.421 + cameraUp[1]=mth::Cos(cameraRestoreAngle); 41.422 + cameraUp[2]=mth::Sin(cameraRestoreAngle); 41.423 + 41.424 +// if (internalTime>=TimeStartDesign1) 41.425 + //UpdateDesign1(); 41.426 + design.Update(); 41.427 +//#endif 41.428 +} 41.429 + 41.430 + 41.431 + 41.432 +void efxScreen1_t::DrawEqua() 41.433 +{ 41.434 + 41.435 + glEnable(GL_CULL_FACE); 41.436 + glDisable(GL_BLEND); 41.437 + 41.438 + glColor3f(1,1,1); 41.439 + 41.440 + glEnable(GL_LIGHTING); 41.441 + glEnable(GL_LIGHT0); 41.442 + 41.443 + float light[4]={0.7,0,0.7,0}; 41.444 + glLightfv(GL_LIGHT0,GL_POSITION,light); 41.445 + 41.446 + equaLightIntensity=1; 41.447 + 41.448 + light[0]=219.0/255*equaLightIntensity; 41.449 + light[1]=127.0/255*equaLightIntensity; 41.450 + light[2]=13.0/255*equaLightIntensity; 41.451 + light[3]=1.0; 41.452 + glLightfv(GL_LIGHT0,GL_DIFFUSE,light) ; 41.453 + 41.454 + glEnable(GL_BLEND); 41.455 + glBlendFunc(GL_ONE,GL_ONE); 41.456 + 41.457 + 41.458 + DrawEquaCenter(); 41.459 + 41.460 + if (equaTransition || equaTransitionFinished) { 41.461 + if (equaTransition && !equaTransitionFinished) { 41.462 + light[0]=1; 41.463 + light[1]=1; 41.464 + light[2]=1; 41.465 + light[3]=equaAlpha; 41.466 + glBlendFunc(GL_SRC_ALPHA,GL_ONE); 41.467 + glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,light); 41.468 + } 41.469 + 41.470 + DrawEquaFullExceptCenter(); 41.471 + } 41.472 + 41.473 + 41.474 + glDisable(GL_BLEND); 41.475 + glDisable(GL_LIGHT0); 41.476 + glDisable(GL_LIGHTING); 41.477 + 41.478 + //cmnPopMatrix(); 41.479 +} 41.480 + 41.481 + 41.482 +void efxScreen1_t::Draw() 41.483 +{ 41.484 + cmnSetFrustrum(121); 41.485 + cmnSetCamera( cameraPosition,cameraLookAt,cameraUp); // good camera on gf4 41.486 + 41.487 + 41.488 + DisplayBackground(); 41.489 + 41.490 + cmnPushGLState(); 41.491 + glRotatef(-90,1,0,0); // to see the mesh as a human 41.492 + DrawEqua(); 41.493 + cmnPopGLState(); 41.494 + 41.495 + DisplayDesign(); 41.496 + //design.Draw(); 41.497 + 41.498 +} 41.499 + 41.500 + 41.501 +void efxScreen1_t::DisplayBackground() 41.502 +{ 41.503 + 41.504 + glEnable(GL_BLEND); 41.505 + glBlendFunc(GL_ONE,GL_ONE); 41.506 + 41.507 + cmnDisplayBackground(texture); 41.508 +} 41.509 + 41.510 + 41.511 +
42.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 42.2 +++ b/efx_screen1.h Tue Nov 27 15:23:52 2007 +0100 42.3 @@ -0,0 +1,97 @@ 42.4 +#ifndef EFX_SCREEN1_H 42.5 +#define EFX_SCREEN1_H 42.6 + 42.7 + 42.8 +#include "cmn_texture.h" 42.9 +#include "efx_equa.h" 42.10 +#include "efx_harmonics.h" 42.11 +#include "mth_hermite.h" 42.12 +#include "cmn_design.h" 42.13 + 42.14 +// sync 42.15 +#include "fxSync.h" 42.16 + 42.17 +#define WAVE 42.18 + 42.19 +class efxScreen1_t 42.20 +{ 42.21 + double internalTime; 42.22 + 42.23 + GLuint texture; 42.24 + 42.25 + efxEqua_t* fxEqua; 42.26 + float equaLightIntensity; 42.27 + int equaResX; 42.28 + int equaResY; 42.29 + uchar* mapOfNoise; 42.30 + int equaCenter; 42.31 + bool equaTransition; 42.32 + bool equaTransitionFinished; 42.33 + float equaAlpha; 42.34 + 42.35 + void InitDesign(); 42.36 + void InitEquaLand(int _sizex,int sizey,uchar* _map,int _mapSizeX,int _mapSizeY); 42.37 + void DrawEquaOnce(int _i/*,GLenum _mode=GL_QUADS*/); 42.38 + void DrawEquaFullExceptCenter(); 42.39 + void DrawEquaCenter(); 42.40 + 42.41 + 42.42 +#ifdef WAVE 42.43 + int currentWaveBuffer; 42.44 + float* waveSimulation[2]; 42.45 + float speedOfWave; 42.46 + float viscosity; 42.47 + float timeStepSimulation; 42.48 + float counterSimulation; 42.49 + float f1; 42.50 + float f2; 42.51 + float k1; 42.52 + float k2; 42.53 + float k3; 42.54 + 42.55 + void InitSimulation(float _timeStep,float _speedOfWave,float _viscosity,float _sizeCell); 42.56 + void Simulate(); 42.57 + void UpdateWave(); 42.58 + void UpdateWaveBuffer(); 42.59 + 42.60 +#endif 42.61 + 42.62 + // camera 42.63 + mth::Hermite_t* cameraPath; 42.64 + mth::HermiteKey_t* cameraKeyData; 42.65 + mth::Vector3_t cameraLookAt; 42.66 + mth::Vector3_t cameraPosition; 42.67 + mth::Vector3_t cameraUp; 42.68 + float cameraRestoreAngle; 42.69 + 42.70 + 42.71 + 42.72 + void DisplayBackground(); 42.73 + void DrawEqua(); 42.74 + void DisplayDesign(); 42.75 + 42.76 + 42.77 + 42.78 + cmnDesign_t design; 42.79 + cmnDesignElementTexturedQuad_t* designElements; 42.80 + int nbDesignElements; 42.81 + 42.82 + 42.83 +public: 42.84 + 42.85 + efxScreen1_t(); 42.86 + 42.87 + 42.88 + void Init(); 42.89 + 42.90 + void Update(); 42.91 + void Draw(); 42.92 + 42.93 + efxEqua_t * GetFxEqua() { return &fxEqua[equaCenter];} 42.94 + efxSpherical_t * GetFxSpherical() { return 0;} 42.95 + 42.96 + 42.97 +}; 42.98 + 42.99 + 42.100 +#endif 42.101 \ No newline at end of file
43.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 43.2 +++ b/efx_screen2.cxx Tue Nov 27 15:23:52 2007 +0100 43.3 @@ -0,0 +1,661 @@ 43.4 +#include "efx_screen2.h" 43.5 +#include "sys_assert.h" 43.6 +#include "mth_vector3.h" 43.7 +#include "gl_header.h" 43.8 +#include "cmn_intro.h" 43.9 + 43.10 +// sync 43.11 +extern fxSync * sync; 43.12 + 43.13 +efxScreen2_t::efxScreen2_t() 43.14 +{ 43.15 + textureForSpherical=0; 43.16 + spherical=0; 43.17 + currentShapeToMorph=0; 43.18 + morphFrac=0; 43.19 + 43.20 + 43.21 + stepDanceYTargetPosition=0; 43.22 + stepDanceDirection=0; 43.23 + toufForce.Init(); 43.24 + internalTime=0; 43.25 + textureTouf=0; 43.26 + 43.27 + endPart=false; 43.28 + restingTime=0; 43.29 + 43.30 +} 43.31 + 43.32 + 43.33 + 43.34 + 43.35 + 43.36 +void efxScreen2_t::InitDesign() 43.37 +{ //0123456789a 43.38 + 43.39 + const int NbDesignElements=16; 43.40 + const float QuadSizeX = 100; 43.41 + const float QuadSizeY = 100; 43.42 + const float DelayStart=0.1; 43.43 + const float StartPositionX=-1000; 43.44 + const float OffsetY=0.14; 43.45 + const float ResizeElement = 0.1; 43.46 + const float Space = 0.8; 43.47 + const float baseColor[3]={0.1,0.1,0.1}; 43.48 + 43.49 + design.Init(NbDesignElements); 43.50 + designElements=new cmnDesignElementTexturedQuad_t[NbDesignElements]; 43.51 + 43.52 + GLuint tex=txtCreateTextureCircular(128,128,1.0); 43.53 + 43.54 + float currentPosx=0; 43.55 + float currentPosy=0; 43.56 + float currentSizeX=QuadSizeX ; 43.57 + float currentSizeY=QuadSizeY ; 43.58 + int half=NbDesignElements/2; 43.59 + int index=0; 43.60 + 43.61 + for (int i=0;i<half;i++) { 43.62 + 43.63 + designElements[index+i].texture=tex; 43.64 + designElements[index+i].Init( 43.65 + 3.0+i*0.1, 43.66 + mth::Vector3_t(StartPositionX,OffsetY*RY,0), 43.67 + mth::Vector3_t(currentPosx,OffsetY*RY,0),10); 43.68 + 43.69 + designElements[index+i].sizex=currentSizeX; 43.70 + designElements[index+i].sizey=currentSizeY; 43.71 + designElements[index+i].Color(baseColor[0],baseColor[1],baseColor[2]); 43.72 + currentPosx+=currentSizeX*Space; 43.73 + currentSizeX=currentSizeX*(1.0-ResizeElement); 43.74 + currentSizeY=currentSizeY*(1.0-ResizeElement); 43.75 + design.AddElement(&designElements[index+i]); 43.76 + } 43.77 + index+=i; 43.78 + 43.79 + 43.80 + currentPosx=0; 43.81 + currentSizeX=QuadSizeX; 43.82 + currentSizeY=QuadSizeY ; 43.83 + 43.84 + //currentPosy=RY-QuadSizeY; 43.85 + for (i=0;i<half;i++) { 43.86 + designElements[index+i].texture=tex; 43.87 + designElements[index+i].Init( 43.88 + 3.0+i*0.1, 43.89 + mth::Vector3_t(-StartPositionX,RY-OffsetY*RY-currentSizeY,0), 43.90 + mth::Vector3_t(RX-currentPosx-currentSizeX,RY-OffsetY*RY-currentSizeY,0),10); 43.91 + 43.92 + designElements[index+i].sizex=currentSizeX; 43.93 + designElements[index+i].sizey=currentSizeY; 43.94 + designElements[index+i].Color(baseColor[0],baseColor[1],baseColor[2]); 43.95 + currentPosx+=currentSizeX*Space; 43.96 + currentSizeX=currentSizeX*(1.0-ResizeElement); 43.97 + currentSizeY=currentSizeY*(1.0-ResizeElement); 43.98 + design.AddElement(&designElements[index+i]); 43.99 + } 43.100 + 43.101 +} 43.102 + 43.103 + 43.104 + 43.105 + 43.106 + 43.107 +void efxScreen2_t::Init() 43.108 +{ 43.109 + // Spherical harmonics meshs init 43.110 + int size=256; 43.111 + float div=1.0/size; 43.112 + textureForSpherical=txtCreatePerlin2d(size,size,div,div); 43.113 + 43.114 + spherical=new efxSpherical_t; 43.115 +#ifdef HIGHRES 43.116 + const int ResConfig=100; 43.117 +#else 43.118 +#ifdef MIDDLERES 43.119 + const int ResConfig=80; 43.120 +#endif 43.121 +#endif 43.122 + spherical->Init(7,ResConfig,20); 43.123 + 43.124 + bool order=true; 43.125 + radius=150; 43.126 + spherical->Shape(6).Params(4,4,0,0,2,0,0,0); 43.127 + spherical->Shape(6).Generate(radius,order); // generate a shape with reverse normal 43.128 + spherical->Shape(5).Params(6,6,0,0,2,0,0,0); 43.129 + spherical->Shape(5).Generate(radius,order); // generate a shape with reverse normal 43.130 + spherical->Shape(4).Params(2,2,6,4,2,4,0,0); 43.131 + spherical->Shape(4).Generate(radius,order); // generate a shape with reverse normal 43.132 + spherical->Shape(3).Params(2,2,6,4,0,2,0,0); 43.133 + spherical->Shape(3).Generate(radius,order); // generate a shape with reverse normal 43.134 + spherical->Shape(2).Params(2,2,4,4,0,0,4,2); 43.135 + spherical->Shape(2).Generate(radius,order); // generate a shape with reverse normal 43.136 + spherical->Shape(1).Params(2,2,4,0,0,0,4,2); 43.137 + spherical->Shape(1).Generate(radius,order); // generate a shape with reverse normal 43.138 + spherical->Shape(0).Params(0,4,4,0,2,0,0,0); 43.139 + spherical->Shape(0).Generate(radius,order); // generate a shape with reverse normal 43.140 + 43.141 + spherical->SetTexture(textureForSpherical); 43.142 + 43.143 + 43.144 + // touf init 43.145 + InitToufs(5); 43.146 + 43.147 + 43.148 + // init path 43.149 +// path.Init(4096); 43.150 + 43.151 + 43.152 + // camera init 43.153 + const int CameraNbKeys=15; 43.154 + const float CameraKeyTime=1.5; 43.155 + camera.Init(0,0,-90); 43.156 + lookat.Init(0,0,0); 43.157 + 43.158 + cameraPath= new mth::Hermite_t(CameraNbKeys*2); 43.159 + cameraKeyData= new mth::HermiteKey_t[CameraNbKeys]; 43.160 + mth::Vector3_t cpos[CameraNbKeys]= { 43.161 + camera, 43.162 + mth::Vector3_t(10,10,-90), 43.163 + mth::Vector3_t(0,30,-60), 43.164 + mth::Vector3_t(-30,30,-30), 43.165 + mth::Vector3_t(-60,20,-10), 43.166 + mth::Vector3_t(-90,0,0), 43.167 + mth::Vector3_t(-70,-10,10), 43.168 + mth::Vector3_t(-50,-40,40), 43.169 + mth::Vector3_t(-40,-50,70), 43.170 + mth::Vector3_t(-30,-80,90), 43.171 + mth::Vector3_t(-20,-60,50), 43.172 + mth::Vector3_t(-10,-30,20), 43.173 + mth::Vector3_t(0,-10,-10), 43.174 + mth::Vector3_t(0,0,-50), 43.175 + mth::Vector3_t(0,0,-90)}; 43.176 + 43.177 + for (int i=0;i<CameraNbKeys;i++) { 43.178 + cameraKeyData[i].Init(CameraKeyTime*i,cpos[i]); 43.179 + cameraPath->AddKey(&cameraKeyData[i]); 43.180 + } 43.181 + 43.182 + InitDesign(); 43.183 + 43.184 + scroller.Init(textureForSpherical); 43.185 + scroller.ScrollX(1); 43.186 + scroller.ScrollY(0.5); 43.187 +} 43.188 + 43.189 + 43.190 + 43.191 + 43.192 +void efxScreen2_t::GetRandomPos(float _rangeRandomRadius,float _distmin,const mth::Vector3_t& _fromPosition,mth::Vector3_t& _result) 43.193 +{ 43.194 + for (int j=0;j<100;j++) { 43.195 + _result.InitRandomVectorInBox(_rangeRandomRadius); 43.196 + if (_result.DistSqr(_fromPosition)>_distmin*_distmin && _result.DistSqr(_fromPosition)<150*150) 43.197 + break; 43.198 + } 43.199 +} 43.200 + 43.201 + 43.202 +void efxScreen2_t::InitToufs(int _nbToufs) 43.203 +{ 43.204 + 43.205 +#ifdef HIGHRES 43.206 + const int VToufsSection=12; //12; //15 43.207 + const int HToufsSection=12; //12; //15 43.208 + const int SToufsSection=10; //10; 43.209 +#else 43.210 +#ifdef MIDDLERES 43.211 + const int VToufsSection=11; //12; //15 43.212 + const int HToufsSection=11; //12; //15 43.213 + const int SToufsSection=9; //10; 43.214 +#endif 43.215 +#endif 43.216 + 43.217 + 43.218 + const float RandomDistFromMum=120; 43.219 + const float RandomMinDistFromMum=80; 43.220 +// const float RandomDistFromMum=50; 43.221 +// const float RandomMinDistFromMum=80; 43.222 + const float RandomMinimumDistForMum=10; 43.223 +// const float StepTimeOfKeyFrame=1.5; 43.224 + const float StepTimeOfKeyFrame=2.0; 43.225 +// const float StepTimeOfKeyFrame=3.0; 43.226 + 43.227 + typedef mth::Hermite_t* Hptr_t; 43.228 + nbKeys=60; 43.229 + 43.230 + nbToufs=_nbToufs; 43.231 + touffus=new efxTouf_t[nbToufs]; 43.232 + SYS_ASSERT(touffus); 43.233 + 43.234 + // use a spline for mum touf 43.235 + toufPaths=new Hptr_t[nbToufs]; 43.236 + 43.237 + 43.238 + touffus[0].Init(VToufsSection,HToufsSection,SToufsSection,3.0); // mum touf is bigger than her children 43.239 + toufPaths[0]=new mth::Hermite_t(nbKeys*4); 43.240 + for (int i=1;i<nbToufs;i++) { 43.241 + touffus[i].Init(VToufsSection,HToufsSection,SToufsSection,3.0); 43.242 +// touffus[i].SetTint(0.2,0.2,0.7); 43.243 +// touffus[i].SetTint(239.0/255,150.0/255,26.0/255); 43.244 + touffus[i].SetTint(219.0/255,127.0/255,13.0/255); 43.245 + toufPaths[i]=new mth::Hermite_t(nbKeys*4); 43.246 + } 43.247 + 43.248 + keyData=new mth::HermiteKey_t[nbKeys*nbToufs]; 43.249 + float a[3]; 43.250 + mth::Vector3_t tmpPos; 43.251 + mth::Vector3_t tmpPrevPos(0,0,0); 43.252 + mth::Vector3_t tmpPos2; 43.253 + 43.254 + float minFromMum; 43.255 + float minForMum; 43.256 + float maxRadius; 43.257 + float stepTime; 43.258 + float currentTime=0; 43.259 + for (i=0;i<nbKeys-1;i++) { 43.260 + maxRadius=radius; 43.261 + minFromMum=RandomDistFromMum; 43.262 + minForMum=RandomMinimumDistForMum; 43.263 + stepTime=StepTimeOfKeyFrame; 43.264 + 43.265 + // one key on two I made a small and a large step 43.266 + if (i%2==0) { 43.267 + maxRadius*=0.5; 43.268 + minForMum*=0.5; 43.269 + stepTime*=2; 43.270 + } else { 43.271 + maxRadius*=0.8; 43.272 + minForMum*=0.8; 43.273 + //stepTime*=2; 43.274 + } 43.275 + 43.276 + GetRandomPos(maxRadius,minForMum,tmpPrevPos,tmpPos); 43.277 + tmpPrevPos=tmpPos; 43.278 + 43.279 + keyData[i].Init(currentTime,tmpPos); 43.280 + toufPaths[0]->AddKey(&keyData[i]); 43.281 + for (int k=1;k<nbToufs;k++) { 43.282 + tmpPos2.InitRandomVectorInBox(minFromMum); 43.283 + GetRandomPos(minFromMum,minFromMum,tmpPrevPos,tmpPos2); 43.284 + keyData[i+k*nbKeys].Init(currentTime,tmpPos+tmpPos2); 43.285 + toufPaths[k]->AddKey(&keyData[i+k*nbKeys]); 43.286 + } 43.287 + currentTime+=stepTime; 43.288 + 43.289 + } 43.290 + 43.291 + toufStartMoving=1; 43.292 + 43.293 + textureTouf=txtCreateTextureCircular(256,256,0.9,1); 43.294 +} 43.295 + 43.296 +#if 0 43.297 +void efxScreen2_t::DrawPath() 43.298 +{ 43.299 + glColor3f(1,1,1); 43.300 + glBegin(GL_LINE_STRIP); 43.301 + for (int i=0;i<path.NbCurrentVertexes();i++) 43.302 + glVertex3fv(path.GetReverseVertex(i)); 43.303 + glEnd(); 43.304 +} 43.305 +#endif 43.306 + 43.307 + 43.308 +void efxScreen2_t::UpdateToufs() 43.309 +{ 43.310 + const float DragForceScale=0.4; 43.311 + 43.312 + HandleToufs(); 43.313 + 43.314 + for (int i=0;i<nbToufs;i++) { 43.315 + touffus[i].ApplyForce(-touffus[i].Element().Velocity()*DragForceScale+toufForce); // apply a drag force 43.316 + touffus[i].Update(Timer->GetFrameTime()); 43.317 + } 43.318 + 43.319 + toufForce.Init(); 43.320 + 43.321 +} 43.322 + 43.323 + 43.324 + 43.325 + 43.326 +void efxScreen2_t::HandleToufs() 43.327 +{ 43.328 + const double WaitStart=1; 43.329 + const double TimeDanceStart=1; 43.330 + const double TimeDanceEnd=25; 43.331 + const double TimeMoveCameraStart=7; 43.332 + const double TimeMoveCameraEnd=86; 43.333 + const double TimeMoveToufsStart=12; 43.334 + const double TimeMoveToufsEnd=86; 43.335 + 43.336 + const float DistFromMum=30; 43.337 + 43.338 + 43.339 + // fixe position at start 43.340 + if (internalTime<WaitStart) { 43.341 + touffus[0].Element().Position().Init(); 43.342 + touffus[0].Element().Velocity().Init(); 43.343 + 43.344 + int nb=(nbToufs-1)/2; 43.345 + int index=1; 43.346 + float sign=1; 43.347 + for (int j=0;j<2;j++) { 43.348 + if (j==1) 43.349 + sign=-1; 43.350 + for (int i=0;i<nb;i++) { 43.351 + touffus[index].Element().Position().Init(sign*DistFromMum*(i+1),0,0); 43.352 + touffus[index].Element().Velocity().Init(); 43.353 + index++; 43.354 + } 43.355 + } 43.356 + 43.357 + } /* else if (internalTime>=TimeDanceStart && internalTime < TimeDanceEnd ) { 43.358 + sync->SyncSnareTouf(); 43.359 + //HandleSnareSound(); 43.360 + }*/ 43.361 + 43.362 + if (internalTime>=TimeMoveCameraStart && internalTime < TimeMoveCameraEnd) 43.363 + HandleCameraMoving(internalTime-TimeMoveCameraStart); 43.364 + 43.365 + if (internalTime>=TimeMoveToufsStart && internalTime < TimeMoveToufsEnd ) { 43.366 + HandleToufsMoving(internalTime-TimeMoveToufsStart); 43.367 + HandleCameraTarget(); 43.368 + } 43.369 + 43.370 + 43.371 + 43.372 +// if (internalTime>WaitStart) { 43.373 + sync->SyncWindTouf(); 43.374 + //HandleWindSound(); 43.375 +// } 43.376 + 43.377 + 43.378 +} 43.379 + 43.380 + 43.381 + 43.382 + 43.383 +void efxScreen2_t::HandleWindSound() 43.384 +{ 43.385 + const float WindForce=600; 43.386 + const double WindTime=3; 43.387 + 43.388 +#if 0 43.389 + static double time=0; 43.390 + time+=Timer->GetFrameTime(); 43.391 + double nb=time/WindTime; 43.392 + int n= mth::Floor(nb); 43.393 + 43.394 + mth::Vector3_t f; 43.395 + for (int i=0;i<n;i++) { 43.396 + f.InitRandomVectorInBox(5); 43.397 + f.Normalize(); 43.398 + toufForce+=f*WindForce; 43.399 + } 43.400 + time=mth::Frac(nb)*WindTime; 43.401 +#else 43.402 + mth::Vector3_t f; 43.403 + f.InitRandomVectorInBox(5); 43.404 + f.Normalize(); 43.405 + toufForce+=f*WindForce; 43.406 +#endif 43.407 + 43.408 +} 43.409 + 43.410 + 43.411 +void efxScreen2_t::HandleCameraTarget() 43.412 +{ 43.413 + mth::Vector3_t cmin(1e5,1e5,1e5); 43.414 + mth::Vector3_t cmax(-cmin); 43.415 + for (int i=0;i<nbToufs;i++) 43.416 + for (int j=0;j<3;j++) { 43.417 + cmin[j]=mth::Min(cmin[j],touffus[0].Element().Position()[j]); 43.418 + cmax[j]=mth::Max(cmax[j],touffus[0].Element().Position()[j]); 43.419 + } 43.420 + 43.421 + cmax-=cmin; 43.422 + cmin+=cmax*0.5; 43.423 + lookat=cmin; 43.424 +} 43.425 + 43.426 + 43.427 +void efxScreen2_t::HandleCameraMoving(double _time) 43.428 +{ 43.429 + mth::Vector3_t result; 43.430 + cameraPath->GetData(_time,result); 43.431 + camera=result; 43.432 +} 43.433 + 43.434 + 43.435 + 43.436 +void efxScreen2_t::HandleToufsMoving(double _time) 43.437 +{ 43.438 + 43.439 + // set up the first keyframe of splines 43.440 + if (toufStartMoving) { 43.441 + for (int k=0;k<nbToufs;k++) 43.442 + keyData[0+k*nbKeys].Data()=touffus[k].Element().Position(); 43.443 + toufStartMoving=0; 43.444 + } 43.445 + 43.446 + 43.447 + 43.448 + mth::Vector3_t result; 43.449 + mth::Vector3_t currentPos; 43.450 + mth::Vector3_t pos; 43.451 + for (int i=0;i<nbToufs;i++) { 43.452 + currentPos=touffus[i].Element().Position(); 43.453 + toufPaths[i]->GetData(_time,result); 43.454 + 43.455 + if (endPart) { 43.456 + result=currentPos+(camera-currentPos)*Timer->GetFrameTime()*1.0/restingTime; 43.457 + } 43.458 + 43.459 + pos=(result-currentPos)*1.0/Timer->GetFrameTime(); 43.460 + touffus[i].Element().Velocity(pos); 43.461 + touffus[i].Element().Position(result); 43.462 + } 43.463 + 43.464 +} 43.465 + 43.466 + 43.467 + 43.468 + 43.469 +void efxScreen2_t::DrawParticle(float _r, 43.470 + float _g, 43.471 + float _b, 43.472 + float _alpha, 43.473 + int _i, 43.474 + const mth::Vector3_t& _v0, 43.475 + const mth::Vector3_t& _v1) 43.476 +{ 43.477 + glColor4f(_r,_g,_b,_alpha); 43.478 + glBegin(GL_QUADS); 43.479 + glTexCoord2f(0,0); 43.480 + glVertex3fv(touffus[_i].Element().Position()-_v0-_v1); 43.481 + glTexCoord2f(0,1); 43.482 + glVertex3fv(touffus[_i].Element().Position()+_v0-_v1); 43.483 + glTexCoord2f(1,1); 43.484 + glVertex3fv(touffus[_i].Element().Position()+_v0+_v1); 43.485 + glTexCoord2f(1,0); 43.486 + glVertex3fv(touffus[_i].Element().Position()-_v0+_v1); 43.487 + glEnd(); 43.488 +} 43.489 + 43.490 + 43.491 +void efxScreen2_t::DrawToufs() 43.492 +{ 43.493 + const float ScaleColor=0.6; 43.494 + const float ScaleLine=10; 43.495 + 43.496 +#ifndef FINALE_RELEASE 43.497 + cmnPushMatrix(); 43.498 + cmnSetPlanarView(); 43.499 + font->Clear(); 43.500 + font->Print("time %f\n",Timer->GetRealTime()); 43.501 + cmnPopMatrix(); 43.502 +#endif 43.503 + glMatrixMode(GL_MODELVIEW); 43.504 + 43.505 + 43.506 + glEnable(GL_BLEND); 43.507 + glBlendFunc(GL_ONE,GL_ONE); 43.508 + 43.509 +#define USE_PARTICULE 43.510 + 43.511 +#ifdef USE_PARTICULE 43.512 + float m[16]; 43.513 + glGetFloatv(GL_MODELVIEW_MATRIX,m); 43.514 + mth::Vector3_t v[4]; 43.515 + v[0].Init(m[0],m[4],m[8]); 43.516 + v[1].Init(m[1],m[5],m[9]); 43.517 +// v[2].Init(m[2],m[6],m[10]); 43.518 + v[2]=v[0]; 43.519 + v[3]=v[1]; 43.520 + v[0]*=5; 43.521 + v[1]*=5; 43.522 + v[2]*=1.5; 43.523 + v[3]*=1.5; 43.524 + 43.525 +#endif 43.526 + 43.527 + for (int i=0;i<nbToufs;i++) { 43.528 +#if 0 // enable it for better GPU 43.529 + glEnable(GL_LINE_SMOOTH); 43.530 + float a=camera.Dist(touffus[i].Element().Position()); 43.531 + glLineWidth(ScaleLine*1.0/a); 43.532 + touffus[i].Draw(ScaleColor); 43.533 + glLineWidth(0.5*ScaleLine*1.0/a); 43.534 + touffus[i].Draw(ScaleColor); 43.535 +#else 43.536 + touffus[i].Draw(ScaleColor); 43.537 +#endif 43.538 + 43.539 +#ifdef USE_PARTICULE // enable a particule for toufs 43.540 + // draw a srpite at the center of the toufs 43.541 + txtBindTexture2d(textureTouf,0); 43.542 + glDisable(GL_DEPTH_TEST); 43.543 +#if 1 43.544 + 43.545 + mth::Vector3_t color; 43.546 + if (i==0) 43.547 + color.Init(1,1,1); 43.548 + else 43.549 + color.Init(219.0/255,127.0/255,13.0/255); 43.550 + 43.551 + DrawParticle(color[0],color[1],color[2],1,i,v[2],v[3]); 43.552 + color*=0.5; 43.553 + DrawParticle(color[0],color[1],color[2],0.01,i,v[0],v[1]); 43.554 + 43.555 +#else 43.556 + for (int t=0;t<4;t+=2) { 43.557 + glColor4f(0.5+t,0.5+t,0.5+t,0.01+t); 43.558 + glBegin(GL_QUADS); 43.559 + glTexCoord2f(0,0); 43.560 + glVertex3fv(touffus[i].Element().Position()-v[t+0]-v[t+1]); 43.561 + glTexCoord2f(0,1); 43.562 + glVertex3fv(touffus[i].Element().Position()+v[t+0]-v[t+1]); 43.563 + glTexCoord2f(1,1); 43.564 + glVertex3fv(touffus[i].Element().Position()+v[t+0]+v[t+1]); 43.565 + glTexCoord2f(1,0); 43.566 + glVertex3fv(touffus[i].Element().Position()-v[t+0]+v[t+1]); 43.567 + glEnd(); 43.568 + } 43.569 +#endif 43.570 + txtUnBindTexture2d(0); 43.571 + glEnable(GL_DEPTH_TEST); 43.572 +#endif 43.573 + } 43.574 + 43.575 + glDisable(GL_BLEND); 43.576 +} 43.577 + 43.578 + 43.579 + 43.580 +void efxScreen2_t::UpdateSpherical() 43.581 +{ 43.582 + 43.583 + const float MorphAdd = 0.5; 43.584 + morphFrac+=MorphAdd *Timer->GetFrameTime(); 43.585 + if (morphFrac>1.0) { 43.586 + morphFrac=0; 43.587 + currentShapeToMorph++; 43.588 + } 43.589 + 43.590 + spherical->MakeMorph(currentShapeToMorph%spherical->NbShapes(),(currentShapeToMorph+1)%spherical->NbShapes(),morphFrac); 43.591 + 43.592 +} 43.593 + 43.594 +void efxScreen2_t::DrawSpherical() 43.595 +{ 43.596 + cmnPushMatrix(); 43.597 + glShadeModel(GL_SMOOTH); 43.598 + txtBindTexture2d(textureForSpherical,0); 43.599 + spherical->MorphShape().Draw(); 43.600 + txtUnBindTexture2d(0); 43.601 + cmnPopMatrix(); 43.602 +} 43.603 + 43.604 + 43.605 + 43.606 +void efxScreen2_t::Update() 43.607 +{ 43.608 + internalTime+=Timer->GetFrameTime(); 43.609 + 43.610 + UpdateSpherical(); 43.611 + UpdateToufs(); 43.612 + design.Update(); 43.613 + scroller.Update(); 43.614 +} 43.615 + 43.616 + 43.617 +void efxScreen2_t::Draw() 43.618 +{ 43.619 + cmnPushMatrix(); 43.620 + cmnSetFrustrum(90); 43.621 + 43.622 + 43.623 + glEnable(GL_LIGHTING); 43.624 + glEnable(GL_LIGHT0); 43.625 + 43.626 + float light[4]={0.0,0.0,1,0}; 43.627 + glLightfv(GL_LIGHT0,GL_POSITION,light); 43.628 + 43.629 +// light[0]=167.0/255;light[1]=92.0/255;light[2]=5.0/255; 43.630 + light[0]=33.0/255;light[1]=137.0/255;light[2]=255/255; 43.631 + glLightfv(GL_LIGHT0,GL_DIFFUSE,light) ; 43.632 + 43.633 +// light[0]=167.0/2550;light[1]=92.0/2550;light[2]=5.0/2550; 43.634 + light[0]=0;light[1]=0;light[2]=0; 43.635 + glLightfv(GL_LIGHT0,GL_AMBIENT,light) ; 43.636 + 43.637 + cmnSetCamera (camera,lookat); 43.638 + 43.639 +#ifndef _DEBUG 43.640 + DrawSpherical(); 43.641 +#endif 43.642 + 43.643 + glDisable(GL_LIGHT0); 43.644 + glDisable(GL_LIGHTING); 43.645 + 43.646 + DrawToufs(); 43.647 + 43.648 + //UpdatePath(); for debugging path of toufs 43.649 + 43.650 + glDisable(GL_DEPTH_TEST); 43.651 + glColor4f(0.1,0.1,0.1,1); 43.652 + glEnable(GL_BLEND); 43.653 + glBlendFunc(GL_ONE,GL_ONE); 43.654 + cmnSetPlanarView(); 43.655 + design.Draw(); 43.656 + 43.657 + 43.658 + glBlendFunc(GL_SRC_ALPHA,GL_ONE); 43.659 + glColor4f(1,1,1,0.2); 43.660 + scroller.Draw(); 43.661 + 43.662 + cmnPopMatrix(); 43.663 +} 43.664 +
44.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 44.2 +++ b/efx_screen2.h Tue Nov 27 15:23:52 2007 +0100 44.3 @@ -0,0 +1,157 @@ 44.4 +#ifndef EFX_SCREEN2_H 44.5 +#define EFX_SCREEN2_H 44.6 + 44.7 + 44.8 +#include "cmn_texture.h" 44.9 +#include "efx_harmonics.h" 44.10 +#include "mth_vector2.h" 44.11 +#include "efx_touf.h" 44.12 +#include "mth_hermite.h" 44.13 + 44.14 +// Sync ... 44.15 +#include "fxSync.h" 44.16 + 44.17 + 44.18 +#if 0 44.19 +class efxFollowPath_t 44.20 +{ 44.21 + 44.22 + mth::Vector3_t* vertexes; 44.23 + int nbMaxElements; 44.24 + int indexVertexes; 44.25 + int nbVertexes; 44.26 +public: 44.27 + 44.28 + efxFollowPath_t(){vertexes=0;indexVertexes=0;nbVertexes=0;} 44.29 + 44.30 + void Init(int _nbkeys) { 44.31 + if (vertexes) 44.32 + delete [] vertexes; 44.33 + vertexes=new mth::Vector3_t[_nbkeys]; 44.34 + nbMaxElements=_nbkeys; 44.35 + } 44.36 + 44.37 + 44.38 + mth::Vector3_t* Vertexes() { return vertexes;} 44.39 + 44.40 + void PushVertex(mth::Vector3_t& _v) { 44.41 + vertexes[indexVertexes]=_v; 44.42 + indexVertexes=(indexVertexes+1)%nbMaxElements; 44.43 + nbVertexes=mth::Min(nbVertexes+1,nbMaxElements);; 44.44 + 44.45 + } 44.46 + 44.47 + int NbCurrentVertexes() { return nbVertexes;} 44.48 + int Index() { return indexVertexes;} 44.49 + 44.50 + mth::Vector3_t& GetReverseVertex(int _index) { 44.51 + return vertexes[(nbMaxElements+indexVertexes-_index-1)%nbMaxElements]; 44.52 + } 44.53 + 44.54 +}; 44.55 + 44.56 +#endif 44.57 + 44.58 + 44.59 +class efxScreen2_t 44.60 +{ 44.61 + 44.62 + double internalTime; 44.63 + 44.64 + 44.65 + // spercial harmonics data 44.66 + GLuint textureForSpherical; 44.67 + efxSpherical_t* spherical; 44.68 + float radius; // infos used to know where to put the touffus family 44.69 + // internal update for spherical harmonics 44.70 + void UpdateSpherical(); 44.71 + 44.72 + // morph spherical 44.73 + float morphFrac; 44.74 + int currentShapeToMorph; 44.75 + 44.76 + 44.77 + 44.78 + // toufs data 44.79 + efxTouf_t* touffus; 44.80 + int nbToufs; 44.81 + mth::Hermite_t** toufPaths; 44.82 + mth::HermiteKey_t* keyData; 44.83 + int nbKeys; 44.84 + 44.85 + GLuint textureTouf; 44.86 + mth::Vector3_t toufForce; 44.87 + 44.88 + float stepDanceYTargetPosition; 44.89 + int stepDanceDirection; 44.90 + bool toufStartMoving; 44.91 + 44.92 + void InitToufs(int _nbToufs); 44.93 + void UpdateToufs(); 44.94 + void SynchroniseToufs(); 44.95 + void HandleToufs(); 44.96 + //void HandleWindSound(); 44.97 + //void HandleSnareSound(); 44.98 + void HandleCameraMoving(double _time); 44.99 + void HandleToufsMoving(double _time); 44.100 + void HandleCameraTarget(); 44.101 + 44.102 + 44.103 + 44.104 + // path 44.105 +// efxFollowPath_t path; 44.106 +// void UpdatePath(); 44.107 + void GetRandomPos(float _rangeRandomRadius,float _distmin,const mth::Vector3_t& _fromPosition,mth::Vector3_t& _result); 44.108 + 44.109 + void DrawSpherical(); 44.110 + void DrawToufs(); 44.111 + void DrawPath(); 44.112 + 44.113 + 44.114 + // camera 44.115 + mth::Vector3_t camera; 44.116 + mth::Vector3_t lookat; 44.117 + mth::Hermite_t* cameraPath; 44.118 + mth::HermiteKey_t* cameraKeyData; 44.119 + 44.120 + 44.121 + 44.122 + cmnDesign_t design; 44.123 + cmnDesignElementTexturedQuad_t* designElements; 44.124 + void InitDesign(); 44.125 + 44.126 + cmnDesignScroller_t scroller; 44.127 + 44.128 + 44.129 + 44.130 + void DrawParticle(float _r, 44.131 + float _g, 44.132 + float _b, 44.133 + float _alpha, 44.134 + int _i, 44.135 + const mth::Vector3_t& _v0, 44.136 + const mth::Vector3_t& _v1); 44.137 + 44.138 + 44.139 + 44.140 + 44.141 + bool endPart; 44.142 + float restingTime; 44.143 + 44.144 + 44.145 +public: 44.146 + 44.147 + efxScreen2_t(); 44.148 + 44.149 + void Init(); 44.150 + void Update(); 44.151 + void Draw(); 44.152 + void SetEnd(float _restingTime) { endPart=true; restingTime=_restingTime;} 44.153 + bool SetEnd() { return endPart;} 44.154 + 44.155 +// void HandleSnareSound(); 44.156 + void HandleWindSound(); 44.157 +}; 44.158 + 44.159 + 44.160 +#endif 44.161 \ No newline at end of file
45.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 45.2 +++ b/efx_screen3.cxx Tue Nov 27 15:23:52 2007 +0100 45.3 @@ -0,0 +1,540 @@ 45.4 +#include "efx_screen3.h" 45.5 +#include "sys_assert.h" 45.6 +#include "mth_vector3.h" 45.7 +#include "gl_header.h" 45.8 +#include "cmn_intro.h" 45.9 +#include "mth_quaternion.h" 45.10 + 45.11 +extern fxSync * sync; 45.12 + 45.13 +#define END_PART_OF_RUBBER 39 45.14 + 45.15 +const float ColorMesh[]={167.0/255,92.0/255,5.0/255,1}; 45.16 + 45.17 +static const char* Greetz[]={ 45.18 +//"---------------- ----------------" 45.19 + 45.20 +//" 2004", 45.21 +//" sota", 45.22 +//"[ SYNrJ ]",0}; 45.23 + 45.24 + " by syn[rj]", 45.25 + "Morph", 45.26 + "", 45.27 + "", 45.28 + "", 45.29 + "",0 }; 45.30 + 45.31 + 45.32 +static const char* GreetzList[]={ 45.33 + "analogik", 45.34 + "bypass", 45.35 + "calodox", 45.36 + "deathless", 45.37 + "conspiracy", 45.38 + "condense", 45.39 + "cryonics", 45.40 + "eldorado", 45.41 + "equinox", 45.42 + "excess", 45.43 + "fairlight", 45.44 + "farbraush", 45.45 + "hansa", 45.46 + "haujobb", 45.47 + "inf", 45.48 + "kewlers", 45.49 + "kolor", 45.50 + "mankind", 45.51 + "mfx", 45.52 + "moppi", 45.53 + "nomad", 45.54 + "tpolm", 45.55 + "orange juice", 45.56 + "scenemusic", 45.57 + "scoopex", 45.58 + "razor 1911", 45.59 + 0}; 45.60 + 45.61 + 45.62 +efxScreen3_t::efxScreen3_t() 45.63 +{ 45.64 + internalTime=0; 45.65 + currentShapeToMorph=0; 45.66 + morphFrac=0; 45.67 + rub=0; 45.68 + rubTexture=0; 45.69 + backGroundTexture=0; 45.70 + backGroundTexture2=0; 45.71 + waitingRubber=10; 45.72 + rubberAngle=-240; 45.73 + rubberTransition=true; 45.74 + rubberTransformPart2=false; 45.75 + Effect3StartInitialized=false; 45.76 +} 45.77 + 45.78 +void efxScreen3_t::Init() 45.79 +{ 45.80 + // make a background 45.81 + int size=256; 45.82 + float div=4.0/size; 45.83 + backGroundTexture=txtCreatePerlin2d(size,size,div,div,0.8,10); 45.84 + backGroundTexture2=txtCreateGrid(size,size,8,0.2); 45.85 + 45.86 + 45.87 + 45.88 + // count greetz list 45.89 + nbGreetz=0; 45.90 + nbLetters=0; 45.91 + while (GreetzList[nbGreetz]!=0) { 45.92 + nbLetters+=strlen(GreetzList[nbGreetz]); 45.93 + nbGreetz++; 45.94 + } 45.95 +// nbGreetz--; 45.96 + 45.97 + 45.98 + // init rubber 45.99 + InitRubbers(2); 45.100 + 45.101 + // must be called after InitRubber because there is a dependance 45.102 + InitDesign(); 45.103 +} 45.104 + 45.105 + 45.106 + 45.107 + 45.108 +void efxScreen3_t::InitDesign() 45.109 +{ //0123456789a 45.110 + 45.111 + const int ResYRub=rub->MorphShape().ResY(); 45.112 + 45.113 + SYS_ASSERT(rub); 45.114 + 45.115 + 45.116 + design.Init(ResYRub*2+nbGreetz); 45.117 + 45.118 + 45.119 + /// exit the rubber 45.120 + const float EndPartOfRubber=END_PART_OF_RUBBER+1 ; 45.121 + const float EndPartOfRubberAlpha=END_PART_OF_RUBBER; 45.122 + const float EndPartOfRubberOffset=0.01; 45.123 + designElementsRubber=new cmnDesignElementRubberEnd_t[ResYRub]; 45.124 + 45.125 + for (int i=0;i<ResYRub;i++) { 45.126 + designElementsRubber[i].position.Init(); 45.127 + designElementsRubber[i].target.InitRandomVectorInBox(100); 45.128 + designElementsRubber[i].target.Normalize(); 45.129 + designElementsRubber[i].alpha=1; 45.130 + designElementsRubber[i].target*=100; 45.131 + designElementsRubber[i].Init(EndPartOfRubber+EndPartOfRubberOffset*i,designElementsRubber[i].position,designElementsRubber[i].target,1); 45.132 + design.AddElement(&designElementsRubber[i]); 45.133 + } 45.134 + 45.135 + designElementsRubberAlpha=new cmnDesignElementRubberEnd_t[ResYRub]; 45.136 + for (i=0;i<ResYRub;i++) { 45.137 + designElementsRubberAlpha[i].position.Init(); 45.138 + designElementsRubberAlpha[i].alpha=1; 45.139 + designElementsRubberAlpha[i].target.Init(); 45.140 + designElementsRubberAlpha[i].Init(EndPartOfRubberAlpha+EndPartOfRubberOffset*i,designElementsRubberAlpha[i].position,designElementsRubberAlpha[i].target,1); 45.141 + design.AddElement(&designElementsRubberAlpha[i]); 45.142 + } 45.143 + 45.144 + 45.145 + const float StartTimeGreetz=15; 45.146 + const float StepTimeGreetz=1.0; 45.147 + const float StartGreetzPositionX=-90; 45.148 + const float StartGreetzPositionY=-65; 45.149 + const int nbLinesPerPass=13; 45.150 + //const float StepTimeGreetz=0.5; 45.151 + 45.152 + font->SetScale(0.6); 45.153 + 45.154 + designElementsFont=new cmnDesignElementFont_t[nbGreetz]; 45.155 + float currentTimeToadd=0; 45.156 + for (i=0;i<nbGreetz;i++) { 45.157 + int modulex=(i%2?0:1)*10; 45.158 + designElementsFont[i].position.Init(StartGreetzPositionX+modulex,StartGreetzPositionY+(i%nbLinesPerPass)*font->SizeOfCharY(),100); 45.159 + designElementsFont[i].target.Init(StartGreetzPositionX+modulex,StartGreetzPositionY+(i%nbLinesPerPass)*font->SizeOfCharY(),0); 45.160 + designElementsFont[i].endLife=100.0; 45.161 + designElementsFont[i].alpha=1.0; 45.162 + designElementsFont[i].scalex=0.6; 45.163 + designElementsFont[i].scaley=0.6; 45.164 + designElementsFont[i].alphaFactor=-0.05; 45.165 + designElementsFont[i].text=GreetzList[i]; 45.166 + designElementsFont[i].Init(1e6+StartTimeGreetz+i*StepTimeGreetz+currentTimeToadd); 45.167 + if ((i+1)%nbLinesPerPass==0) 45.168 + currentTimeToadd+=0.3; 45.169 + design.AddElement(&designElementsFont[i]); 45.170 + } 45.171 +} 45.172 + 45.173 + 45.174 + 45.175 +void efxScreen3_t::InitRubbers(int _nbShapes) 45.176 +{ 45.177 + 45.178 + const int NbLigneByMap=3; 45.179 + const int SizeOfGenerateMap=256; 45.180 + 45.181 +#ifdef HIGHRES 45.182 + const int RubberResolutionX=256; 45.183 + const int RubberResolutionY=256; 45.184 +#else 45.185 +#ifdef MIDDLERES 45.186 + const int RubberResolutionX=190; 45.187 + const int RubberResolutionY=210; 45.188 +#endif 45.189 +#endif 45.190 + 45.191 + 45.192 + 45.193 + 45.194 + if (rubTexture) 45.195 + glDeleteTextures(1,&rubTexture); 45.196 + int size=256; 45.197 + float div=1.0/size; 45.198 + rubTexture=txtCreatePerlin2d(size,size,div,div,1.0,6); 45.199 + 45.200 + rub=new efxRub_t; 45.201 + rub->Init(_nbShapes,RubberResolutionX,RubberResolutionY); 45.202 + rub->SetTexture(rubTexture); 45.203 + //rub->GenerateRandom(256,256,40,180); 45.204 + 45.205 + int nbTexts=0; 45.206 + while (Greetz[nbTexts]!=0) 45.207 + nbTexts++; 45.208 + //nbTexts--; 45.209 + 45.210 + int nb=mth::Floor(nbTexts*1.0/NbLigneByMap); 45.211 + int maxShape=mth::Min(nb,_nbShapes); 45.212 + int i=0; 45.213 + for (i=0;i<maxShape;i++) 45.214 + rub->Generate(SizeOfGenerateMap,SizeOfGenerateMap,40,180,i,&Greetz[i*NbLigneByMap],NbLigneByMap); 45.215 + 45.216 + int nb2=nbTexts-(nb*NbLigneByMap); 45.217 + if (nb2>0 && maxShape-nb>0) 45.218 + rub->Generate(SizeOfGenerateMap,SizeOfGenerateMap,40,180,i,&Greetz[nb*NbLigneByMap],nb2); 45.219 + 45.220 + 45.221 + 45.222 + translateYrubber=new mth::Vector3_t[RubberResolutionY]; 45.223 + float minRadius=20; 45.224 + 45.225 + for ( i=0;i<RubberResolutionY;i++) { 45.226 +retry: 45.227 + translateYrubber[i].InitRandomVectorInBox(25); 45.228 + translateYrubber[i][1]=0; 45.229 + if (translateYrubber[i].MagSqr()>1e-4) 45.230 + translateYrubber[i].Normalize(); 45.231 + else 45.232 + goto retry; 45.233 + translateYrubber[i][2]=mth::Abs(translateYrubber[i][2]); 45.234 + translateYrubber[i]*=minRadius+i; 45.235 + } 45.236 + 45.237 + rubberTransitionAlpha=new float[RubberResolutionY]; 45.238 + rubberEffect1Angle=new float[RubberResolutionY]; 45.239 + rubberEffect2Translation=new float[RubberResolutionY]; 45.240 + for (i=0;i<RubberResolutionY;i++) { 45.241 + rubberTransitionAlpha[i]=0; 45.242 + rubberEffect1Angle[i]=0; 45.243 + rubberEffect2Translation[i]=0; 45.244 + } 45.245 + rubberIndexEffect2=0; 45.246 + rubberIndexEffect1=0; 45.247 + 45.248 +} 45.249 + 45.250 + 45.251 + 45.252 +void efxScreen3_t::UpdateRubbers() 45.253 +{ 45.254 + const float MorphAdd = 2.5; 45.255 + const float StartPosRubber = 12.0; 45.256 + const float TranslateAdd = 1.0; 45.257 + const float TranslateOffsetY = 1.0; 45.258 + const float RotationAdd = -15.0; 45.259 + const float RubberMaxRadiusTransition=20; // voir dans initRubbers 45.260 + const float MaxRadiusOfAcylinder=RubberMaxRadiusTransition+rub->MorphShape().ResY(); 45.261 + const float TransitionAdd = 20; 45.262 + const float TimeRubberStart = 1; 45.263 + const float TimeRubberTransitionEnd = TimeRubberStart+MaxRadiusOfAcylinder/TransitionAdd ; 45.264 + const float TimeRubberWait =mth::Abs(/*375.0*/90.0/RotationAdd) ; 45.265 + 45.266 + const float BaseDistBlend = 5.0; 45.267 + const float BaseDistBlendSqr = 1.0/(BaseDistBlend*BaseDistBlend); 45.268 + const float BaseMinimumBlend = 0.15; 45.269 + const float AlphaDelay=0.5; 45.270 + const float AlphaVariablePartTransition = 0.15f; 45.271 + 45.272 + const float TimeRubberEffect1Start = TimeRubberTransitionEnd+5; //+0.5; 45.273 + const float TimeRubberEffect1End = TimeRubberEffect1Start+15; 45.274 + const float RotationEffect1Add = -2.0; 45.275 + const float RotationEffect1AddPerY = -0.05; 45.276 + 45.277 + const float TimeRubberEffect2Start = TimeRubberEffect1Start+3.5;//TimeRubberTransitionEnd+4; 45.278 + const float TimeRubberEffect2End = TimeRubberEffect1Start+15; 45.279 + const float TranslationEffect2Add = -2.0; 45.280 + const float TranslationEffect2AddPerY = -0.1; 45.281 + 45.282 + const float TimeAttenuateTransformStart = mth::Min(TimeRubberEffect1Start,TimeRubberEffect2Start)+(mth::Max(TimeRubberEffect2End,TimeRubberEffect1End)-mth::Min(TimeRubberEffect1Start,TimeRubberEffect2Start))*0.75; 45.283 + const float TimeAttenuateTransformEnd = mth::Max(TimeRubberEffect2End,TimeRubberEffect1End)+15; 45.284 + 45.285 + 45.286 + const float TimeRubberEffect3Start = END_PART_OF_RUBBER;//TimeAttenuateTransformEnd-5; 45.287 + const float TimeRubberEffect3End = TimeRubberEffect3Start+10; 45.288 + 45.289 + 45.290 + if (internalTime>=TimeRubberStart && internalTime<TimeRubberTransitionEnd) { 45.291 + 45.292 + float dt=Timer->GetFrameTime(); 45.293 + float factor; 45.294 + mth::Vector3_t n; 45.295 + int jend=rub->MorphShape().ResY(); 45.296 + for (int j=0;j<jend-1;j++) { 45.297 + n=translateYrubber[j]; 45.298 + factor=n.MagSqr(); 45.299 + if (factor>1e-1) 45.300 + n*=1.0/mth::Sqrt(factor); 45.301 + 45.302 + if ( internalTime > TimeRubberStart+(RubberMaxRadiusTransition+j)/TransitionAdd) { 45.303 + translateYrubber[j].Init(); 45.304 + rubberTransitionAlpha[j]+=AlphaDelay*Timer->GetFrameTime(); 45.305 + } else { 45.306 + translateYrubber[j]+=n*(-TransitionAdd*dt); 45.307 + rubberTransitionAlpha[j]=BaseMinimumBlend + mth::Max(0,AlphaVariablePartTransition-translateYrubber[j].MagSqr()*BaseDistBlendSqr); 45.308 + } 45.309 + 45.310 + 45.311 + } 45.312 + 45.313 + } else { 45.314 + 45.315 + if (internalTime>=TimeRubberTransitionEnd && rubberTransition) { 45.316 + rubberTransition=false; 45.317 + waitingRubber=TimeRubberWait; 45.318 + } 45.319 + 45.320 + if (waitingRubber>0) 45.321 + waitingRubber-=Timer->GetFrameTime(); 45.322 + else 45.323 + morphFrac+=MorphAdd *Timer->GetFrameTime(); 45.324 + 45.325 + if (morphFrac>1.0) { 45.326 + morphFrac=0; 45.327 + currentShapeToMorph++; 45.328 + waitingRubber=TimeRubberWait; 45.329 + } 45.330 + 45.331 + int resolutionY=rub->MorphShape().ResY(); 45.332 + if (internalTime>=TimeRubberEffect1Start && internalTime<TimeAttenuateTransformEnd) { 45.333 + rubberTransformPart2=true; 45.334 + float prevVal=rubberEffect1Angle[rubberIndexEffect1]; 45.335 + rubberIndexEffect1=(rubberIndexEffect1+1)%resolutionY; 45.336 + rubberEffect1Angle[rubberIndexEffect1]=(prevVal+3.14/4*mth::Sin(RotationEffect1Add*mth::Sin(Timer->GetRealTime())*Timer->GetFrameTime())); 45.337 + } 45.338 + 45.339 + if (internalTime>=TimeRubberEffect2Start && internalTime<TimeAttenuateTransformEnd) { 45.340 + rubberTransformPart2=true; 45.341 + float prevVal=rubberEffect2Translation[rubberIndexEffect2]; 45.342 + rubberIndexEffect2=(rubberIndexEffect2+1)%resolutionY; 45.343 + rubberEffect2Translation[rubberIndexEffect2]=(prevVal+10*TranslationEffect2Add*mth::Sin(Timer->GetRealTime())*Timer->GetFrameTime()); 45.344 + } 45.345 + 45.346 + if (internalTime>=TimeAttenuateTransformStart && internalTime<TimeAttenuateTransformEnd) { 45.347 + float factor=1-(internalTime-TimeAttenuateTransformStart)/(TimeAttenuateTransformEnd-TimeAttenuateTransformStart); 45.348 + rubberEffect1Angle[rubberIndexEffect1]*=factor; 45.349 + rubberEffect2Translation[rubberIndexEffect2]*=factor; 45.350 + } else if (internalTime>TimeAttenuateTransformEnd) 45.351 + rubberTransformPart2=false; 45.352 + 45.353 + 45.354 + 45.355 + 45.356 + } 45.357 + 45.358 + // end part 45.359 + if (internalTime>=TimeRubberEffect3Start) 45.360 + Effect3StartInitialized=true; 45.361 + 45.362 + 45.363 + rubberAngle+=RotationAdd*Timer->GetFrameTime(); 45.364 + rub->MakeMorph(currentShapeToMorph%rub->NbShapes(),(currentShapeToMorph+1)%rub->NbShapes(),morphFrac); 45.365 + 45.366 + if (rubberTransformPart2 && internalTime<TimeAttenuateTransformEnd) { 45.367 + int y=rub->MorphShape().ResY(); 45.368 + mth::Vector3_t* vertexes=rub->MorphShape().Vertexes(); 45.369 + for (int k=0;k<y;k++) { 45.370 + mth::Quaternion_t q(0,rubberEffect1Angle[(rubberIndexEffect1-k+y)%y],0); 45.371 + int x=rub->MorphShape().ResX(); 45.372 + int idx=k*x; 45.373 + for (int l=0;l<x;l++) { 45.374 + vertexes[idx+l]=q.Rotate(vertexes[idx+l]); 45.375 + vertexes[idx+l][0]+=rubberEffect2Translation[(rubberIndexEffect2-k+y)%y]; 45.376 + } 45.377 + } 45.378 + } 45.379 + 45.380 + 45.381 +} 45.382 + 45.383 +void efxScreen3_t::Update() 45.384 +{ 45.385 + internalTime+=Timer->GetFrameTime(); 45.386 + 45.387 + UpdateRubbers(); 45.388 + 45.389 + // activate one greetz 45.390 + if (sync->GetGreetzSync() == true) { 45.391 + for (int i=0;i<nbGreetz;i++) 45.392 + if (designElementsFont[i].start>1e5+0.5) { 45.393 + designElementsFont[i].start=0; 45.394 + break; 45.395 + } 45.396 + } 45.397 + 45.398 + design.Update(); 45.399 +} 45.400 + 45.401 + 45.402 + 45.403 +void efxScreen3_t::DrawRubber() 45.404 +{ 45.405 + 45.406 + cmnPushMatrix(); 45.407 + 45.408 + glFrontFace(GL_CW); 45.409 + glEnable(GL_LIGHTING); 45.410 + glEnable(GL_LIGHT0); 45.411 + glShadeModel(GL_SMOOTH); 45.412 + 45.413 + 45.414 + float light[4]={0.0,0.0,1,0}; 45.415 + mth::Vector3_t l(0,0,1); 45.416 + l[0]=mth::Cos(Timer->GetRealTime()); 45.417 + l[1]=mth::Sin(Timer->GetRealTime()); 45.418 + l[2]=1; 45.419 + l.Normalize(); 45.420 + light[0]=l[0]; 45.421 + light[1]=l[1]; 45.422 + light[2]=l[2]; 45.423 + 45.424 + glLightfv(GL_LIGHT0,GL_POSITION,light); 45.425 + 45.426 +// touffus[i].SetTint(219.0/255,127.0/255,13.0/255); 45.427 + 45.428 +// light[0]=1.0*0+146.0/255;light[1]=1.0*0+148.0/255;light[2]=1.0*0+173.0/255; 45.429 + light[0]=219.0/255;light[1]=127.0/255;light[2]=0.0/255; 45.430 + 45.431 + memcpy(light,ColorMesh,sizeof(float)*4); 45.432 + 45.433 + 45.434 +// light[0]=219.0/255;light[1]=127.0/255;light[2]=13.0/255; 45.435 + glLightfv(GL_LIGHT0,GL_DIFFUSE,light) ; 45.436 + 45.437 + light[0]=0.2;light[1]=0.2;light[2]=0.2; 45.438 + glLightfv(GL_LIGHT0,GL_AMBIENT,light) ; 45.439 + 45.440 + glTranslatef(35,0,0); 45.441 + 45.442 + if (rubberTransition || Effect3StartInitialized) 45.443 + DrawRubberTransition(); 45.444 + else 45.445 + DrawRubberFull(); 45.446 + 45.447 + glDisable(GL_LIGHT0); 45.448 + glDisable(GL_LIGHTING); 45.449 + 45.450 + cmnPopMatrix(); 45.451 + 45.452 +} 45.453 + 45.454 +void efxScreen3_t::DrawRubberFull() 45.455 +{ 45.456 + glEnable(GL_CULL_FACE); 45.457 + glDisable(GL_BLEND); 45.458 + glBlendFunc(GL_ONE,GL_ONE); 45.459 + 45.460 + 45.461 + glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_ALPHA); 45.462 + float mt[4]={1,1,1,1}; 45.463 + glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,mt); 45.464 + 45.465 + 45.466 + glRotatef(rubberAngle,0,1,0); 45.467 + rub->MorphShape().Draw(); 45.468 +} 45.469 + 45.470 +void efxScreen3_t::DrawRubberTransition() 45.471 +{ 45.472 + 45.473 + const float BaseDistBlend = 5.0; 45.474 + const float BaseDistBlendSqr = 1.0/(BaseDistBlend*BaseDistBlend); 45.475 + const float BaseMinimumBlend = 0.15; 45.476 + 45.477 + glDisable(GL_CULL_FACE); 45.478 + glEnable(GL_BLEND); 45.479 + glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_ALPHA); 45.480 +// glBlendFunc(GL_ONE,GL_ONE); 45.481 + 45.482 + float mt[4]={1,1,1,1}; 45.483 + float a; 45.484 + int jend=rub->MorphShape().ResY(); 45.485 + for (int j=0;j<jend-1;j++) { 45.486 + 45.487 + if (Effect3StartInitialized) { 45.488 + translateYrubber[j]=designElementsRubber[j].position; 45.489 + rubberTransitionAlpha[j]=designElementsRubberAlpha[j].alpha; 45.490 + 45.491 + } 45.492 + 45.493 + //a=BaseMinimumBlend + mth::Max(0,1.0-translateYrubber[j].MagSqr()*BaseDistBlendSqr); 45.494 + mt[3]=rubberTransitionAlpha[j]; 45.495 + if (translateYrubber[j][0]==0 && translateYrubber[j][2]==0 ) 45.496 + glEnable(GL_CULL_FACE); 45.497 + else 45.498 + glDisable(GL_CULL_FACE); 45.499 + 45.500 + 45.501 + glPushMatrix(); 45.502 + glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,mt); 45.503 + glTranslatef(translateYrubber[j][0],translateYrubber[j][1],translateYrubber[j][2]); 45.504 + glRotatef(rubberAngle,0,1,0); 45.505 + rub->MorphShape().DrawRow(j); 45.506 + glPopMatrix(); 45.507 + } 45.508 + 45.509 +} 45.510 + 45.511 + 45.512 +void efxScreen3_t::Draw() 45.513 +{ 45.514 + cmnSetFrustrum(90); 45.515 + cmnSetCamera( mth::Vector3_t(0* 12.5, 0, 100 ), mth::Vector3_t( 0 , 0, 0 ) ); 45.516 + 45.517 + cmnPushGLState(); 45.518 + cmnPushMatrix(); 45.519 + 45.520 + glEnable(GL_BLEND); 45.521 + glBlendFunc(GL_ONE,GL_ONE); 45.522 +// cmnDisplayBackground(backGroundTexture,167,92,5,255,1); 45.523 +// cmnDisplayBackground(backGroundTexture2,167,92,5,255,1);GLuint _texture,int _r=33,int _g=137,int _b=255,int _a=255, int _nbPasses=2,int _side=0); 45.524 + cmnDisplayBackground(backGroundTexture,33,137,255,255,1); 45.525 + cmnDisplayBackground(backGroundTexture2,33,137,255,255,1); 45.526 + 45.527 +// design.Draw(); 45.528 + 45.529 + 45.530 + DrawRubber(); 45.531 + cmnPopMatrix(); 45.532 + cmnPopGLState(); 45.533 + 45.534 + glDisable(GL_DEPTH_TEST); 45.535 + glColor4f(0.1,0.1,0.1,1); 45.536 + glEnable(GL_BLEND); 45.537 + glBlendFunc(GL_SRC_ALPHA,GL_ONE); 45.538 + design.Draw(); 45.539 + cmnSetPlanarView(); 45.540 +// design.Draw(); 45.541 + 45.542 + 45.543 +}
46.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 46.2 +++ b/efx_screen3.h Tue Nov 27 15:23:52 2007 +0100 46.3 @@ -0,0 +1,91 @@ 46.4 +#ifndef EFX_SCREEN3_H 46.5 +#define EFX_SCREEN3_H 46.6 + 46.7 + 46.8 +#include "cmn_texture.h" 46.9 +#include "mth_vector2.h" 46.10 +#include "efx_rub.h" 46.11 +#include "cmn_design.h" 46.12 + 46.13 +/* 46.14 + * miniFMod 46.15 + * include 46.16 + * resource 46.17 + */ 46.18 +#include "minifmod/minifmod.h" 46.19 +extern FMUSIC_MODULE * intro_mod; 46.20 +#include "fxSync.h" 46.21 + 46.22 + 46.23 + 46.24 +struct cmnDesignElementRubberEnd_t: public cmnDesignElement_t 46.25 +{ 46.26 + float alpha; 46.27 + 46.28 + void Update() { 46.29 + float f=position.MagSqr(); 46.30 + f=mth::Max(0.1,f); 46.31 + float dt=Timer->GetFrameTime(); 46.32 + position+=(target-position)*1.0/factor*dt; 46.33 + alpha-=1*dt; 46.34 + alpha=mth::Max(0.05,alpha); 46.35 + } 46.36 +}; 46.37 + 46.38 + 46.39 + 46.40 + 46.41 +class efxScreen3_t 46.42 +{ 46.43 + 46.44 + double internalTime; 46.45 + 46.46 + efxRub_t* rub; 46.47 + int currentShapeToMorph; 46.48 + float morphFrac; 46.49 + float waitingRubber; 46.50 + float translateRubberFrac; 46.51 + mth::Vector3_t* translateYrubber; 46.52 + float* rubberTransitionAlpha; 46.53 + GLuint rubTexture; 46.54 + float rubberAngle; 46.55 + bool rubberTransition; 46.56 + float* rubberEffect1Angle; 46.57 + int rubberIndexEffect1; 46.58 + float* rubberEffect2Translation; 46.59 + int rubberIndexEffect2; 46.60 + bool rubberTransformPart2; 46.61 + bool Effect3StartInitialized; 46.62 + 46.63 + void InitRubbers(int _nbShapes); 46.64 + void UpdateRubbers(); 46.65 + void DrawRubber(); 46.66 + void DrawRubberFull(); 46.67 + void DrawRubberTransition(); 46.68 + 46.69 + GLuint backGroundTexture; 46.70 + GLuint backGroundTexture2; 46.71 + 46.72 + 46.73 + cmnDesign_t design; 46.74 + cmnDesignElementRubberEnd_t* designElementsRubber; 46.75 + cmnDesignElementRubberEnd_t* designElementsRubberAlpha; 46.76 + cmnDesignElementFont_t* designElementsFont; 46.77 + int nbLetters; 46.78 + int nbGreetz; 46.79 + void InitDesign(); 46.80 + 46.81 + 46.82 +public: 46.83 + 46.84 + efxScreen3_t(); 46.85 + 46.86 + void Init(); 46.87 + void Update(); 46.88 + void Draw(); 46.89 + 46.90 + 46.91 +}; 46.92 + 46.93 + 46.94 +#endif 46.95 \ No newline at end of file
47.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 47.2 +++ b/efx_screen4.cxx Tue Nov 27 15:23:52 2007 +0100 47.3 @@ -0,0 +1,493 @@ 47.4 +#include "efx_screen4.h" 47.5 +#include "sys_assert.h" 47.6 +#include "mth_vector3.h" 47.7 +#include "gl_header.h" 47.8 +#include "cmn_intro.h" 47.9 +#include "cmn_design.h" 47.10 + 47.11 +static const char* OriginalScrollText1[]= 47.12 +{ 47.13 + 47.14 +"", 47.15 +"", 47.16 +"", 47.17 +"", 47.18 +"", 47.19 +"", 47.20 +"", 47.21 +"", 47.22 +"", 47.23 +"", 47.24 +"", 47.25 +"", 47.26 +"", 47.27 +"", 47.28 +"", 47.29 +"", 47.30 +"", 47.31 +"", 47.32 +" you have experienced", 47.33 +" . morph / syn[rj] .", 47.34 +" presented at", 47.35 +" . st(art) 2004 .", 47.36 +"", 47.37 +"this prod was made in 2.5", 47.38 +"weeks and finished some", 47.39 +"minutes before the", 47.40 +"deadline.", 47.41 +"most effects are fastly", 47.42 +"coded, and can be really", 47.43 +"slow on 'medium' class", 47.44 +"computer.", 47.45 +"", 47.46 +"credits", 47.47 +" code", 47.48 +" Stv", 47.49 +" psc80", 47.50 +" mRyOuNg", 47.51 +" design", 47.52 +" kohai", 47.53 +" music", 47.54 +" Evil", 47.55 +"", 47.56 +"greetings fly to ...", 47.57 +" Ziggy stardust", 47.58 +" Zann / grumly&compagny", 47.59 +" Keops / Equinox", 47.60 +" rahow / apex", 47.61 +" scalpos / apex", 47.62 +" codac / apex", 47.63 +" cyborg / deathless", 47.64 +" MrHoward / ambre", 47.65 +" debug / defence force", 47.66 +" Squaley", 47.67 +" impulse", 47.68 +" st(art) team", 47.69 +" CodeFr (ircnet)", 47.70 +" ...", 47.71 +" st(art) 2k4 audience", 47.72 +"", 47.73 +" thanks for watching", 47.74 +"", 47.75 +0 47.76 + 47.77 +}; 47.78 + 47.79 + 47.80 + 47.81 + 47.82 +static const char* OriginalScrollText2[]= 47.83 +{ 47.84 + "", 47.85 + "", 47.86 + "", 47.87 + "", 47.88 + "", 47.89 + "", 47.90 + "", 47.91 +"Credits:", 47.92 +"", 47.93 +"Code:", 47.94 +"stv", 47.95 +"psc80", 47.96 +"mryoung", 47.97 +"", 47.98 +"design:", 47.99 +"kohai", 47.100 +"", 47.101 +"sound:", 47.102 +"evil", 47.103 +"", 47.104 +"contrib:", 47.105 +"zann", 47.106 +"squaley", 47.107 +"", 47.108 +0 47.109 + 47.110 +}; 47.111 + 47.112 + 47.113 + 47.114 +const int ScrollText2ResolutionX=96; 47.115 +const int ScrollText2ResolutionY=96; 47.116 + 47.117 + 47.118 +// sync 47.119 +extern fxSync * sync; 47.120 + 47.121 +efxScreen4_t::efxScreen4_t() 47.122 +{ 47.123 + cameraLookAt.Init(); 47.124 + cameraPosition.Init(0,50,100); 47.125 + scrollText2map=0; 47.126 + linesScroll1=linesScroll2=-8; 47.127 + ScrollText2=0; 47.128 + ScrollText1=0; 47.129 + 47.130 + indexInSample=0; 47.131 + for (int i=0;i<NbSampleSoundLevel;i++) 47.132 + sampleLevelSound[i]=0; 47.133 +} 47.134 + 47.135 + 47.136 +void efxScreen4_t::InitTextchar(char**& _dst,const char** _src,int& _nbLines) 47.137 +{ 47.138 + _nbLines=0; 47.139 + while (_src[_nbLines]!=0) 47.140 + _nbLines++; 47.141 + 47.142 + typedef char* CharPtr_t; 47.143 + _dst=new CharPtr_t[_nbLines+1]; 47.144 + for (int i=0;i<_nbLines;i++) 47.145 + _dst[_nbLines-i-1]=strdup(_src[i]); 47.146 + 47.147 +} 47.148 + 47.149 +void efxScreen4_t::Init() 47.150 +{ 47.151 + const float Radius=0.95; 47.152 + const float Height=1.0; 47.153 + 47.154 +#ifdef HIGHRES 47.155 + const int Sections=24; 47.156 +#else 47.157 +#ifdef MIDDLERES 47.158 + const int Sections=14; 47.159 +#endif 47.160 +#endif 47.161 + 47.162 + equa.Init(ScrollText2ResolutionX,ScrollText2ResolutionY); 47.163 + scrollText2map=new uchar[ScrollText2ResolutionX*ScrollText2ResolutionY*4]; 47.164 + 47.165 + 47.166 + InitTextchar(ScrollText2,OriginalScrollText2,nbLinesScroll2); 47.167 + InitTextchar(ScrollText1,OriginalScrollText1,nbLinesScroll1); 47.168 + linesScroll1=nbLinesScroll1/2; 47.169 + linesScroll2=-nbLinesScroll2/2+3; 47.170 + 47.171 + GLuint id=glGenLists(1); 47.172 + SYS_ASSERT(id); 47.173 + glNewList(id,GL_COMPILE); 47.174 + 47.175 + glBegin(GL_TRIANGLE_FAN); 47.176 + glNormal3f(0,1,0); 47.177 + glVertex3f(0,Height,0); 47.178 + 47.179 + double one_on_section=mth::TWOPI*1.0/Sections; 47.180 + for (int s=0;s<Sections+1;s++) { 47.181 + glNormal3f(0,1,0); 47.182 + glVertex3f(Radius * mth::Sin( -s * one_on_section),Height,Radius * mth::Cos(-s * one_on_section)); 47.183 + } 47.184 + glEnd(); 47.185 + 47.186 + 47.187 + // make core of cylinder 47.188 + glBegin(GL_QUAD_STRIP); 47.189 + for (s=0; s < Sections; s++) 47.190 + for (int i=0;i<2;i++) { 47.191 + glNormal3f( mth::Sin(s * one_on_section), 0, mth::Cos(s * one_on_section)); 47.192 + glVertex3f(Radius* mth::Sin(s * one_on_section),Height*(i%2?1:-1),Radius* mth::Cos(s * one_on_section)); 47.193 + } 47.194 + glEnd(); 47.195 + glEndList(); 47.196 + 47.197 + equa.SetGeometry(id); 47.198 + 47.199 + 47.200 + int size=256; 47.201 + float div=2.0/size; 47.202 + background=txtCreatePerlin2d(size,size,div,div,0.6,6); 47.203 + 47.204 + 47.205 + 47.206 + 47.207 + 47.208 + const int NbKeys=4096; 47.209 + const float TimeStep=10.0; 47.210 + 47.211 + cameraPath=new mth::Hermite_t(NbKeys*2); 47.212 + cameraKeyData=new mth::HermiteKey_t[NbKeys]; 47.213 + 47.214 + mth::Vector3_t tmpPos; 47.215 + for (int i=0;i<NbKeys;i++) { 47.216 + tmpPos.InitRandomVectorInBox(ScrollText2ResolutionX); 47.217 + tmpPos[1]=20+mth::Abs(3*tmpPos[1]); 47.218 + tmpPos[2]=mth::Abs(tmpPos[2]); 47.219 + cameraKeyData[i].Init(TimeStep*i,tmpPos); 47.220 + cameraPath->AddKey(&cameraKeyData[i]); 47.221 + } 47.222 + 47.223 +} 47.224 + 47.225 + 47.226 + 47.227 +float Mod(float _x,float _mod) { 47.228 + int n=(int)(_x/_mod); 47.229 + float x2=_x-n*_mod; 47.230 + if (x2<0) 47.231 + x2+=_mod; 47.232 + return x2;} 47.233 + 47.234 + 47.235 +void efxScreen4_t::UpdateScrollText1() 47.236 +{ 47.237 + const float LinesPerSecond=1; 47.238 + linesScroll1-=LinesPerSecond*Timer->GetFrameTime(); 47.239 + linesScroll1=Mod(linesScroll1,nbLinesScroll1); 47.240 +} 47.241 + 47.242 + 47.243 + 47.244 +void efxScreen4_t::UpdateScrollText2() 47.245 +{ 47.246 + const float LinesPerSecond=1; 47.247 + linesScroll2-=LinesPerSecond*Timer->GetFrameTime(); 47.248 + linesScroll2=Mod(linesScroll2,nbLinesScroll2); 47.249 +} 47.250 + 47.251 + 47.252 +void efxScreen4_t::Update() 47.253 +{ 47.254 + internalTime+=Timer->GetFrameTime(); 47.255 + 47.256 + cameraPath->GetData(internalTime,cameraPosition); 47.257 + 47.258 + UpdateScrollText1(); 47.259 + UpdateScrollText2(); 47.260 + 47.261 + sampleLevelSound[indexInSample]=(sync->GetDetection()->GetSampleData(INST_BIGBD).playing==true?5:0); 47.262 + indexInSample=(indexInSample+1)%NbSampleSoundLevel; 47.263 + levelSound=0; 47.264 + for (int i=0;i<NbSampleSoundLevel;i++) 47.265 + levelSound+=sampleLevelSound[i]; 47.266 + levelSound/=NbSampleSoundLevel; 47.267 + 47.268 + cameraPosition[1]+=levelSound*10; 47.269 +/* 47.270 + INST_BASS = 0, 47.271 + INST_HHAT = 1, 47.272 + INST_BDRUM = 2, 47.273 + INST_SNARE = 3, 47.274 + INST_SBDRUM = 4, 47.275 + INST_NAP1 = 5, 47.276 + INST_NAP2 = 6, 47.277 + INST_BIGBD = 7 47.278 +*/ 47.279 +} 47.280 + 47.281 + 47.282 +void efxScreen4_t::DrawScrollText1() 47.283 +{ 47.284 + const int StartPositionY=0; 47.285 + const int StartPositionX=32; 47.286 + const int FilterY=(1-0.34)*2*RY; 47.287 + const int FilterX=300; 47.288 + font->SetScaleX(0.75); 47.289 + const int NbLinesToDisplay=2+RY/font->SizeOfCharY(); 47.290 + 47.291 + 47.292 + 47.293 + //glDisable(GL_BLEND); 47.294 + glBlendFunc(GL_ONE,GL_ONE); 47.295 + 47.296 + 47.297 + font->SetScaleY(1); 47.298 + glColor4f(1,1,1,1); 47.299 + float starty=StartPositionY-mth::Frac(linesScroll1)*font->SizeOfCharY(); 47.300 + int indexLine=mth::Floor(linesScroll1); 47.301 + int nb=mth::Min(indexLine,RY/font->SizeOfCharY()); 47.302 + for (int i=0;i<NbLinesToDisplay;i++) 47.303 + font->Print(StartPositionX,starty+(i)*font->SizeOfCharY(),ScrollText1[(indexLine+i+2*nbLinesScroll1)%nbLinesScroll1]); 47.304 + 47.305 + //cmnPopMatrix(); 47.306 + font->SetScale(1); 47.307 +} 47.308 + 47.309 +void efxScreen4_t::DrawScrollText2() 47.310 +{ 47.311 + cmnPushMatrix(); 47.312 + cmnClearScreen(0,0,0,1); 47.313 + glFlush(); 47.314 + glDisable(GL_BLEND); 47.315 + cmnSetPlanarView(); 47.316 + font->SetScaleX(0.75); 47.317 + font->SetScaleY(1); 47.318 + 47.319 + const int StartPositionInMapY=32; 47.320 + const int StartPositionInMapX=16; 47.321 + const float OffsetFactor=0.02; 47.322 + 47.323 + int nb=ScrollText2ResolutionY/font->SizeOfCharY(); 47.324 + int indexLine=mth::Floor(linesScroll2); 47.325 + float frac=mth::Frac(linesScroll2); 47.326 + for (int i=0;i<nb+1;i++) { 47.327 + font->Print(StartPositionInMapX,StartPositionInMapY-frac*font->SizeOfCharY()+i*font->SizeOfCharY(),ScrollText2[(indexLine+i+2*nbLinesScroll2)%nbLinesScroll2]); 47.328 + } 47.329 + 47.330 + glFlush(); 47.331 + 47.332 + txtGetTextureFromBackBuffer( 47.333 + scrollText2map, 47.334 + StartPositionInMapX, 47.335 + StartPositionInMapY, 47.336 + ScrollText2ResolutionX, 47.337 + ScrollText2ResolutionY); 47.338 + 47.339 + float pixel; 47.340 + for (i=0;i<ScrollText2ResolutionX;i++) 47.341 + for (int j=0;j<ScrollText2ResolutionY;j++) { 47.342 + int index=(i+(ScrollText2ResolutionY-1-j)*ScrollText2ResolutionY)*4; 47.343 + pixel=scrollText2map[index+0]+scrollText2map[index+1]+scrollText2map[index+2]; 47.344 + pixel/=3; 47.345 + pixel*=OffsetFactor; 47.346 + if (pixel>1) 47.347 + pixel+=levelSound; 47.348 + equa.SetDepthLevel(i+(/*ScrollText2ResolutionY-*/j)*equa.ResX(),pixel); 47.349 + } 47.350 + 47.351 + cmnPopMatrix(); 47.352 + cmnClearScreen(0,0,0,1); 47.353 +} 47.354 + 47.355 + 47.356 +#if 1 47.357 + 47.358 + 47.359 +void efxScreen4_t::DrawBackScrollLine(const float* _pnts,int _nbPts,float _offsetY,float _offsetX) 47.360 +{ 47.361 + glBegin(GL_LINE_STRIP); 47.362 + for (int i=0;i<_nbPts*2;i+=2) { 47.363 + glVertex2f(_pnts[i]+_offsetX,_pnts[i+1]+_offsetY); 47.364 + } 47.365 + glEnd(); 47.366 +} 47.367 + 47.368 +void efxScreen4_t::DrawBackScrollBg(const float* _pntsTop,int _nbPts, float _OffsetTop,float _OffsetBottomY,float _offsetX) 47.369 +{ 47.370 + 47.371 + int nbQuads=_nbPts/2; 47.372 + 47.373 + glBegin(GL_QUADS); 47.374 + for (int i=0;i<nbQuads*4;i+=4) { 47.375 + glVertex2f(_pntsTop[i]+_offsetX,_pntsTop[i+1]+_OffsetTop); 47.376 + glVertex2f(_pntsTop[i+2]+_offsetX,_pntsTop[i+3]+_OffsetTop); 47.377 + 47.378 + glVertex2f(_pntsTop[i+2]+_offsetX,_pntsTop[i+3]+_OffsetBottomY); 47.379 + glVertex2f(_pntsTop[i]+_offsetX,_pntsTop[i+1]+_OffsetBottomY); 47.380 + } 47.381 + glEnd(); 47.382 + 47.383 +} 47.384 + 47.385 +void efxScreen4_t::DrawBackScroll() 47.386 +{ 47.387 + const int NbPoints=16; 47.388 + const float OffsetY2=400; 47.389 + const float OffsetY1=-50; 47.390 + const float OffsetX=30; 47.391 + const float CoordLines[]={ 47.392 + 1,123, 47.393 + 55,123, 47.394 + 55,108, 47.395 + 102,108, 47.396 + 102,123, 47.397 + 140,123, 47.398 + 140,94, 47.399 + 194,94, 47.400 + 194,123, 47.401 + 213,123, 47.402 + 213,114, 47.403 + 235,114, 47.404 + 235,123, 47.405 + 256,123, 47.406 + 256,98, 47.407 + 303,98, 47.408 +// 303,98, 47.409 + 403,98, 47.410 +// 303,98, 47.411 + }; 47.412 + 47.413 + 47.414 + glLineWidth(2); 47.415 + glBlendFunc(GL_ONE, GL_SRC_ALPHA); 47.416 + glColor4ub(0, 0, 0, 100); 47.417 + 47.418 + 47.419 + DrawBackScrollBg(CoordLines,NbPoints,OffsetY2,OffsetY1,OffsetX); 47.420 + glDisable(GL_BLEND); 47.421 + glColor4f(1,1,1,1); 47.422 + DrawBackScrollLine(CoordLines,NbPoints,OffsetY1,OffsetX); 47.423 + DrawBackScrollLine(CoordLines,NbPoints,OffsetY2,OffsetX); 47.424 + 47.425 + glBegin(GL_LINES); 47.426 + glVertex2f(CoordLines[0]+OffsetX,CoordLines[1]+OffsetY1); 47.427 + glVertex2f(CoordLines[0]+OffsetX,CoordLines[1]+OffsetY2); 47.428 + glVertex2f(CoordLines[(NbPoints-1)*2]+OffsetX,CoordLines[(NbPoints-1)*2+1]+OffsetY1); 47.429 + glVertex2f(CoordLines[(NbPoints-1)*2]+OffsetX,CoordLines[(NbPoints-1)*2+1]+OffsetY2); 47.430 + glEnd(); 47.431 + 47.432 +} 47.433 + 47.434 +#endif 47.435 + 47.436 +void efxScreen4_t::Draw() 47.437 +{ 47.438 + cmnSetFrustrum(90); 47.439 + cmnSetCamera(cameraPosition,cameraLookAt); 47.440 + DrawScrollText2(); 47.441 + 47.442 + 47.443 + glEnable(GL_BLEND); 47.444 + glBlendFunc(GL_ONE,GL_ONE); 47.445 + cmnDisplayBackground(background,33,137,255,255,2,1); 47.446 + 47.447 + 47.448 + 47.449 + cmnPushGLState(); 47.450 + glEnable(GL_LIGHTING); 47.451 + glEnable(GL_LIGHT0); 47.452 + equa.SetElementSize(2,2); 47.453 + glScalef(1,2,1); 47.454 + equa.Draw(); 47.455 + cmnPopGLState(); 47.456 + 47.457 + 47.458 + 47.459 + cmnSetPlanarView(); 47.460 + 47.461 +//#define TRY_STENCIL 47.462 +#ifdef TRY_STENCIL 47.463 + glDisable(GL_DEPTH_TEST); 47.464 + glEnable(GL_STENCIL_TEST); 47.465 + glClearStencil(0); 47.466 + glClear(GL_STENCIL_BUFFER_BIT); 47.467 + glStencilFunc(GL_ALWAYS,1,1); 47.468 + glStencilOp(GL_REPLACE,GL_REPLACE,GL_REPLACE); 47.469 +#else 47.470 + 47.471 + glEnable(GL_DEPTH_TEST); 47.472 + glDepthFunc(GL_ALWAYS); 47.473 +#endif 47.474 + DrawBackScroll(); 47.475 + 47.476 +#ifdef TRY_STENCIL 47.477 + glStencilOp(GL_KEEP,GL_KEEP,GL_KEEP); 47.478 + glStencilFunc(GL_EQUAL,1,1); 47.479 +#else 47.480 + glDepthFunc(GL_EQUAL); 47.481 +#endif 47.482 + font->SetZ(0); 47.483 + glEnable(GL_BLEND); 47.484 + DrawScrollText1(); 47.485 + 47.486 + 47.487 +// cmnPopGLState(); 47.488 +// cmnPopMatrix(); 47.489 + 47.490 +#ifndef FINALE_RELEASE 47.491 + cmnSetPlanarView(); 47.492 + font->Print("Camera %f %f %f\n",cameraPosition[0],cameraPosition[1],cameraPosition[2]); 47.493 +#endif 47.494 + 47.495 +} 47.496 +
48.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 48.2 +++ b/efx_screen4.h Tue Nov 27 15:23:52 2007 +0100 48.3 @@ -0,0 +1,78 @@ 48.4 +#ifndef EFX_SCREEN4_H 48.5 +#define EFX_SCREEN4_H 48.6 + 48.7 + 48.8 +#include "cmn_texture.h" 48.9 +#include "efx_equa2.h" 48.10 +#include "efx_harmonics.h" 48.11 +#include "mth_hermite.h" 48.12 +#include "cmn_design.h" 48.13 + 48.14 +// sync 48.15 +#include "fxSync.h" 48.16 + 48.17 + 48.18 + 48.19 +#define NbSampleSoundLevel 10 48.20 + 48.21 +class efxScreen4_t 48.22 +{ 48.23 + double internalTime; 48.24 + 48.25 + 48.26 + GLuint background; 48.27 + 48.28 + 48.29 + int indexInSample; 48.30 + float sampleLevelSound[NbSampleSoundLevel]; 48.31 + float levelSound; 48.32 + efxEquaBase_t equa; 48.33 + 48.34 + 48.35 + // camera 48.36 + mth::Hermite_t* cameraPath; 48.37 + mth::HermiteKey_t* cameraKeyData; 48.38 + mth::Vector3_t cameraLookAt; 48.39 + mth::Vector3_t cameraPosition; 48.40 + 48.41 + float linesScroll1; 48.42 + float linesScroll2; 48.43 + int nbLinesScroll1; 48.44 + int nbLinesScroll2; 48.45 + uchar* scrollText2map; 48.46 + void UpdateScrollText1(); 48.47 + void UpdateScrollText2(); 48.48 + 48.49 + 48.50 + char** ScrollText2; 48.51 + char** ScrollText1; 48.52 + void InitTextchar(char**& _dst,const char** _src,int& _nbLines); 48.53 + void DrawScrollText1(); 48.54 + void DrawScrollText2(); 48.55 + 48.56 +// void DisplayBackground(); 48.57 +// void DrawEqua(); 48.58 +// void DisplayDesign(); 48.59 + 48.60 + 48.61 + void DrawBackScrollLine(const float* _pnts,int _nbPts,float _offsetY,float _offsetX); 48.62 + void DrawBackScrollBg(const float* _pntsTop,int _nbPts, float _OffsetTop,float _OffsetBottomY,float _offsetX); 48.63 + void DrawBackScroll(); 48.64 + 48.65 + 48.66 + 48.67 +public: 48.68 + 48.69 + efxScreen4_t(); 48.70 + 48.71 + 48.72 + void Init(); 48.73 + void Kill(); 48.74 + 48.75 + void Update(); 48.76 + void Draw(); 48.77 + 48.78 +}; 48.79 + 48.80 +//146432 -> 52224 48.81 +#endif 48.82 \ No newline at end of file
49.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 49.2 +++ b/efx_touf.cxx Tue Nov 27 15:23:52 2007 +0100 49.3 @@ -0,0 +1,344 @@ 49.4 +#include "efx_touf.h" 49.5 +#include "gl_header.h" 49.6 + 49.7 +efxToufElement_t::efxToufElement_t() 49.8 +{ 49.9 + elements=0; 49.10 + springs=0; 49.11 +} 49.12 + 49.13 + 49.14 +void efxToufElement_t::Kill() 49.15 +{ 49.16 + if (elements) 49.17 + delete [] elements; 49.18 + elements=0; 49.19 + 49.20 + if (springs) 49.21 + delete [] springs; 49.22 + springs=0; 49.23 +} 49.24 + 49.25 +#if 0 //not used 49.26 +void efxToufElement_t::ApplyRotation(const mth::Quaternion_t& _q) 49.27 +{ 49.28 + elements[0].Position(_q.Rotate(elements[0].Position())); 49.29 + elements[0].Velocity(_q.Rotate(elements[0].Velocity())); 49.30 +} 49.31 +#endif 49.32 + 49.33 +void efxToufElement_t::Init(int _section) 49.34 +{ 49.35 + Kill(); 49.36 + nbSections=_section; 49.37 + 49.38 + elements=new phy::Element_t[nbSections]; 49.39 + springs=new phy::SpringDamper_t[nbSections]; 49.40 + 49.41 +#ifdef USE_QUALITY_TOUFS 49.42 + spline= new mth::Hermite_t(nbSections+1); 49.43 + keyData=new mth::HermiteKey_t[nbSections+1]; 49.44 +#endif 49.45 +} 49.46 + 49.47 + 49.48 +void efxToufElement_t::ApplyForce(const mth::Vector3_t& _force) 49.49 +{ 49.50 + for (int i=0;i<nbSections;i++) 49.51 + elements[i].ApplyForce(_force); 49.52 +} 49.53 + 49.54 + 49.55 +void efxToufElement_t::AddSphercialForce() 49.56 +{ 49.57 +// return; 49.58 + for (int i=0;i<nbSections;i++) 49.59 + elements[i].ApplyForce(initialDirection*(elements[i].Mass()*100*1.0/(i+1))); 49.60 +} 49.61 + 49.62 + 49.63 + 49.64 +void efxToufElement_t::InitData(const mth::Vector3_t& _start,float _massPerTouf) 49.65 +{ 49.66 + initialDirection=_start; 49.67 + 49.68 + float l=_start.Mag()*1.0; 49.69 + mth::Vector3_t vec=_start; 49.70 + //float massStart=_massPerTouf; 49.71 + for (int i=0;i<nbSections;i++) { 49.72 + elements[i].Position(vec); 49.73 + vec+=_start; 49.74 + elements[i].Mass(_massPerTouf/nbSections); 49.75 +// massStart*=0.8; 49.76 +// elements[i].Mass(massStart); 49.77 +// springs[i].Init(/*32*8*/ 256*2,50,l); 49.78 + // springs[i].Init(1000,30,l); 49.79 +// springs[i].Init(1000,10,l); 49.80 +// springs[i].Init(200,5,l); 49.81 + springs[i].Init(1000,5,l); 49.82 + 49.83 +#ifdef USE_QUALITY_TOUFS 49.84 + spline->AddKey(&keyData[i]); 49.85 +#endif 49.86 + 49.87 + } 49.88 +} 49.89 + 49.90 + 49.91 +void efxToufElement_t::RegisterElements(phy::Server_t& _server,phy::Element_t* _central) 49.92 +{ 49.93 + 49.94 + springs[0].Init(_central,&elements[0]); 49.95 + _server.AddElement(&elements[0]); 49.96 + _server.AddLink(&springs[0]); 49.97 + for (int i=1;i<nbSections;i++) { 49.98 + springs[i].Init(&elements[i-1],&elements[i]); 49.99 + 49.100 + _server.AddElement(&elements[i]); 49.101 + _server.AddLink(&springs[i]); 49.102 + } 49.103 +} 49.104 + 49.105 + 49.106 +void efxToufElement_t::ApplyDrag() 49.107 +{ 49.108 + const float InternalDragCoef=0.3; 49.109 + mth::Vector3_t f; 49.110 + for (int i=0;i<nbSections;i++) { 49.111 + f=elements[i].Velocity(); 49.112 + f*=-0.3; 49.113 + elements[i].ApplyForce(f); 49.114 + } 49.115 +} 49.116 + 49.117 + 49.118 + 49.119 +void efxToufElement_t::Draw(const mth::Vector3_t& _central,float _radius,float _scaleColor,float* _tint) 49.120 +{ 49.121 + 49.122 + float a; 49.123 + _radius*=0.8; // factor to attenuate color quickely 49.124 + _radius*=nbSections; 49.125 + _radius*=_radius; 49.126 + 49.127 + int i; 49.128 + 49.129 +#ifdef USE_QUALITY_TOUFS 49.130 + const float div=1.0/(nbSections-1); 49.131 + keyData[0].Init(0,_central); 49.132 + for (i=1;i<nbSections+1;i++) 49.133 + keyData[i].Init(i*div,elements[i].Position()); 49.134 + 49.135 + 49.136 + mth::Vector3_t tmp,tmpPrev=_central; 49.137 + const int SectionSpline=30; 49.138 + const float SectionSplineDiv=1.0/(SectionSpline+2); 49.139 + for (i=0;i<SectionSpline;i++) { 49.140 + spline->GetData((i+1)*SectionSplineDiv,tmp); 49.141 + 49.142 + a=_radius-_central.DistSqr(tmp); 49.143 + a/=_radius; 49.144 + a=mth::Clamp(a*_scaleColor,0,1.0); 49.145 + glColor3f(a*_tint[0],a*_tint[1],a*_tint[2]); 49.146 +#ifdef POLYGON_MODEL 49.147 + mth::Vector3_t dir=tmp; 49.148 + dir[1]+=0.5; 49.149 + glVertex3fv(tmp); 49.150 + glColor3f(a*_tint[0],a*_tint[1],a*_tint[2]); 49.151 + glVertex3fv(dir); 49.152 +#else 49.153 + glVertex3fv(tmp); 49.154 +#endif 49.155 + } 49.156 + 49.157 + 49.158 + 49.159 +#else 49.160 + 49.161 + for (i=0;i<nbSections;i++) { 49.162 + a=_radius-_central.DistSqr(elements[i].Position()); 49.163 + a/=_radius; 49.164 +// a*=255; 49.165 + a=mth::Clamp(a*_scaleColor,0,1.0); 49.166 + glColor3f(a*_tint[0],a*_tint[1],a*_tint[2]); 49.167 + glVertex3fv(elements[i].Position()); 49.168 + } 49.169 +#endif 49.170 + 49.171 +} 49.172 + 49.173 + 49.174 + 49.175 + 49.176 + 49.177 +efxTouf_t::efxTouf_t() 49.178 +{ 49.179 + elements=0; 49.180 + tint[0]=1.0; 49.181 + tint[1]=1.0; 49.182 + tint[2]=1.0; 49.183 +} 49.184 + 49.185 + 49.186 +void efxTouf_t::Kill() 49.187 +{ 49.188 + if (elements) 49.189 + delete [] elements; 49.190 + elements=0; 49.191 +} 49.192 + 49.193 + 49.194 +#if 0 //not used 49.195 +void efxTouf_t::ApplyRotation(const mth::Quaternion_t& _q) 49.196 +{ 49.197 + for (int j=0;j<nbElements;j++) { 49.198 + elements[j].ApplyRotation(_q); 49.199 + } 49.200 + 49.201 +} 49.202 +#endif 49.203 + 49.204 +void efxTouf_t::Init(int _widthResolution,int _heightResolution,int _section,float _radius) 49.205 +{ 49.206 + Kill(); 49.207 + 49.208 + sizex=_widthResolution; 49.209 + sizey=_heightResolution; 49.210 + nbElements=sizex*sizey; 49.211 + radius=_radius; 49.212 + 49.213 + elements=new efxToufElement_t[nbElements]; 49.214 + 49.215 + int i; 49.216 + for (i=0;i<nbElements;i++) { 49.217 + elements[i].Init(_section); 49.218 + elements[i].RegisterElements(server,¢ral); 49.219 + } 49.220 + 49.221 + 49.222 + mth::Vector3_t startPosition(0,0,0); 49.223 + 49.224 + // init the center of the touf 49.225 + central.Position(startPosition); 49.226 + central.Mass(3); 49.227 + central.Blocked(); 49.228 + 49.229 + int j; 49.230 + for (j=0;j<sizey;j++) 49.231 + for (i=0;i<sizex;i++) { 49.232 + InitPosition(_radius,i,j,startPosition); 49.233 + elements[i+j*sizex].InitData(startPosition,5); 49.234 + } 49.235 +} 49.236 + 49.237 + 49.238 + 49.239 +void efxTouf_t::Update(double _dt) 49.240 +{ 49.241 + 49.242 + 49.243 + const double IntegrationTime=1e-2; 49.244 + 49.245 +//#define TEST 49.246 +#ifdef TEST 49.247 +static int testToRemove=0; 49.248 + testToRemove++; 49.249 + 49.250 + mth::Vector3_t vel=-central.Position(); 49.251 + mth::Vector3_t v(0,0,0); 49.252 + v[0]=50*mth::Cos(1.0*testToRemove/50); 49.253 + vel+=v; 49.254 + 49.255 + central.Position(v); 49.256 + central.Velocity(vel/_dt*0.5); 49.257 +#endif 49.258 + 49.259 + int nbIntegrations=mth::Floor(_dt/IntegrationTime); 49.260 + 49.261 + for (int i=0;i<nbIntegrations;i++) { 49.262 + server.StartForceSession(); 49.263 + for (int j=0;j<nbElements;j++) { 49.264 + elements[j].AddSphercialForce(); 49.265 + elements[j].ApplyForce(force); 49.266 + elements[j].ApplyDrag(); 49.267 + } 49.268 + server.EndForceSession(); 49.269 + server.Try1(IntegrationTime); 49.270 + } 49.271 + 49.272 + double notFinished=_dt-nbIntegrations*IntegrationTime; 49.273 + if (notFinished>1e-5) { 49.274 + server.StartForceSession(); 49.275 + for (int j=0;j<nbElements;j++) { 49.276 + elements[j].AddSphercialForce(); 49.277 + elements[j].ApplyForce(force); 49.278 + elements[j].ApplyDrag(); 49.279 + } 49.280 + server.EndForceSession(); 49.281 + server.Try1(notFinished); 49.282 + } 49.283 + 49.284 + 49.285 + force.Init(); 49.286 +} 49.287 + 49.288 + 49.289 + 49.290 + 49.291 +void efxTouf_t::Draw(float _scaleColor) 49.292 +{ 49.293 + 49.294 +// glEnable(GL_BLEND); 49.295 + 49.296 +// glEnable(GL_LINE_SMOOTH); 49.297 +// glLineWidth(1.0); 49.298 + 49.299 + 49.300 +#ifndef POLYGON_MODEL 49.301 + 49.302 + for (int i=0;i<nbElements;i++) { 49.303 + glBegin(GL_LINE_STRIP); 49.304 + glColor3f(tint[0],tint[1],tint[2]); 49.305 + glVertex3fv(central.Position()); 49.306 + elements[i].Draw(central.Position(),radius,_scaleColor,tint); 49.307 + glEnd(); 49.308 + } 49.309 +#else 49.310 + 49.311 + for (int i=0;i<nbElements;i++) { 49.312 + glBegin(GL_QUAD_STRIP); 49.313 + glColor3f(tint[0],tint[1],tint[2]); 49.314 + glVertex3fv(central.Position()); 49.315 + glColor3f(tint[0],tint[1],tint[2]); 49.316 + glVertex3fv(central.Position()+mth::Vector3_t(0,0.5,0)); 49.317 + elements[i].Draw(central.Position(),radius,_scaleColor,tint); 49.318 + glEnd(); 49.319 + } 49.320 + 49.321 +#endif 49.322 + 49.323 + 49.324 +#if 0 49.325 + for (int i=0;i<nbElements;i++) { 49.326 + glBegin(GL_LINE_STRIP); 49.327 + glVertex3fv(central.Position()); 49.328 + elements[i].Draw(); 49.329 + glEnd(); 49.330 + } 49.331 +#endif 49.332 + 49.333 + 49.334 +} 49.335 + 49.336 + 49.337 +void efxTouf_t::InitPosition(float _radius,float _u,float _v,mth::Vector3_t& _result) 49.338 +{ 49.339 + double du=1.0/sizex; 49.340 + double dv=1.0/(sizey); 49.341 + 49.342 + _result.Init( 49.343 + _radius * mth::Cos(mth::TWOPI * _u * du) * mth::Sin(mth::PI * _v * dv), 49.344 + _radius * mth::Cos( mth::PI * _v * dv) , 49.345 + _radius * mth::Sin(2 * mth::PI * _u * du) * mth::Sin( mth::PI * _v * dv) 49.346 + ); 49.347 +}
50.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 50.2 +++ b/efx_touf.h Tue Nov 27 15:23:52 2007 +0100 50.3 @@ -0,0 +1,102 @@ 50.4 +#ifndef EFX_TOUF_H 50.5 +#define EFX_TOUF_H 50.6 + 50.7 + 50.8 +#include "mth_vector3.h" 50.9 +#include "phy_element.h" 50.10 +#include "phy_server.h" 50.11 +#include "mth_hermite.h" 50.12 + 50.13 +#define USE_QUALITY_TOUFS 50.14 +#define POLYGON_MODEL 50.15 + 50.16 +struct efxToufElement_t 50.17 +{ 50.18 + phy::Element_t* elements; 50.19 + phy::SpringDamper_t* springs; 50.20 + 50.21 + int nbSections; 50.22 + 50.23 + mth::Vector3_t initialDirection; 50.24 + 50.25 +#ifdef USE_QUALITY_TOUFS 50.26 + mth::Hermite_t* spline; 50.27 + mth::HermiteKey_t* keyData; 50.28 + 50.29 +#endif 50.30 + 50.31 +public: 50.32 + 50.33 + efxToufElement_t(); 50.34 + 50.35 + void Kill(); 50.36 + void Init(int _section); 50.37 + void Draw(const mth::Vector3_t& _central, float _radius,float _scaleColor,float* _tint); 50.38 + void RegisterElements(phy::Server_t& _server,phy::Element_t* _central); 50.39 + void InitData(const mth::Vector3_t& _start,float _massPerTouf); 50.40 + void AddSphercialForce(); 50.41 + void ApplyForce(const mth::Vector3_t& _force); 50.42 + void ApplyDrag(); 50.43 + 50.44 +}; 50.45 + 50.46 + 50.47 + 50.48 + 50.49 +class efxTouf_t 50.50 +{ 50.51 + 50.52 + phy::Element_t central; 50.53 + 50.54 + int sizex; 50.55 + int sizey; 50.56 + int nbElements; 50.57 + float radius; 50.58 + 50.59 + phy::Server_t server; 50.60 + 50.61 + efxToufElement_t* elements; 50.62 + mth::Vector3_t force; 50.63 + 50.64 + 50.65 + float tint[3]; 50.66 + 50.67 + void InitPosition(float _radius,float _u,float _v,mth::Vector3_t& _result); 50.68 + 50.69 + 50.70 + public: 50.71 + 50.72 + efxTouf_t(); 50.73 + 50.74 + void Kill(); 50.75 + 50.76 + 50.77 + // init the classe with the number of elements to use 50.78 + void Init(int _widthResolution,int _heightResolution,int _section,float _radius); 50.79 + 50.80 + 50.81 + void Update(double _dt); 50.82 + 50.83 + 50.84 + phy::Element_t& Element() { return central;} 50.85 + 50.86 + 50.87 + void ApplyForce(const mth::Vector3_t& _force) {force+=_force;} 50.88 + 50.89 + 50.90 + 50.91 + // Draw 50.92 + void Draw(float _scaleColor=1.0); 50.93 + 50.94 + void SetTint(float _a,float _b,float _c) { 50.95 + tint[0]=_a; 50.96 + tint[1]=_b; 50.97 + tint[2]=_c; 50.98 + } 50.99 + 50.100 + 50.101 + 50.102 +}; 50.103 + 50.104 + 50.105 +#endif
51.1 Binary file font_16x16.bmp has changed
52.1 Binary file font_16x16_corrected.bmp has changed
53.1 Binary file font_8x16.bmp has changed
54.1 Binary file font_8x16squaremin.bmp has changed
55.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 55.2 +++ b/fxSync.cxx Tue Nov 27 15:23:52 2007 +0100 55.3 @@ -0,0 +1,459 @@ 55.4 + 55.5 +#include "fxSync.h" 55.6 +#include <math.h> 55.7 +extern cmnTimer_t* Timer; 55.8 +// efx 55.9 +extern efxScreen1_t * fxScreen1; 55.10 +extern efxScreen2_t * fxScreen2; 55.11 + 55.12 +fxSync :: fxSync() 55.13 +{ 55.14 + // Nada ! 55.15 +} 55.16 + 55.17 + 55.18 +fxSync :: ~fxSync() 55.19 +{ 55.20 + // Nada ! 55.21 +} 55.22 + 55.23 +void fxSync :: Init( void ) 55.24 +{ 55.25 + 55.26 + int i, j; 55.27 + 55.28 + // Sound Detection ... 55.29 + detection = new sndDetect(); 55.30 + 55.31 + // Average Filter ... 55.32 + equaIncDecLevel = new float * [NB_INST]; 55.33 + for( i = 0; i < NB_INST; i++ ) 55.34 + { 55.35 + equaIncDecLevel[i] = new float [3]; 55.36 + for( j = 0; j < 3; j++ ) 55.37 + equaIncDecLevel[i][j] = 0.0f; 55.38 + } 55.39 + this->InitEquaIncDecLevel(); 55.40 + 55.41 + // equa Depth & Def 55.42 + equaNbElements = sqrt( fxScreen1->GetFxEqua()->NbElements() ); 55.43 + equaDef = new int * [equaNbElements]; 55.44 + equaDepth = new float * [equaNbElements]; 55.45 + for( i = 0; i < equaNbElements; i++ ) 55.46 + { 55.47 + equaDef [i] = new int [equaNbElements]; 55.48 + equaDepth[i] = new float [equaNbElements]; 55.49 + for( j = 0; j < equaNbElements; j++ ) 55.50 + { 55.51 + equaDef [i][j] = 0; 55.52 + equaDepth[i][j] = 0.0f; 55.53 + } 55.54 + } 55.55 + this->InitEquaDefDepth(); 55.56 + 55.57 + // Spherical 55.58 + target = 0; 55.59 + lastTarget = - 1; 55.60 + morphFactor = 0.0f; 55.61 + 55.62 + // Touff 55.63 + stepDance = 0; 55.64 + lastStepDance = - 1; 55.65 + windTouf = 0; 55.66 + lastWindTouf = - 1; 55.67 + 55.68 + // greetz 55.69 + greetz = 0; 55.70 + lastGreetz = 0; 55.71 + 55.72 + return; 55.73 + 55.74 +} 55.75 + 55.76 +void fxSync :: Kill( void ) 55.77 +{ 55.78 + 55.79 + int i; 55.80 + 55.81 + // Sound Detection ... 55.82 + delete detection; 55.83 + 55.84 + // Average Filter ... 55.85 + for( i = 0; i < NB_INST; i++ ) 55.86 + delete [] equaIncDecLevel[i]; 55.87 + delete [] equaIncDecLevel; 55.88 + 55.89 + // equa Depth & Def 55.90 + for( i = 0; i < equaNbElements; i++ ) 55.91 + { 55.92 + delete [] equaDef [i]; 55.93 + delete [] equaDepth[i]; 55.94 + } 55.95 + delete [] equaDef; 55.96 + delete [] equaDepth; 55.97 + 55.98 + return; 55.99 +} 55.100 + 55.101 +void fxSync :: InitEquaIncDecLevel( void ) 55.102 +{ 55.103 + // Bass ... 55.104 + equaIncDecLevel[INST_BASS][SMPL_DEC] = 1.5f; 55.105 + // HHat ... 55.106 + equaIncDecLevel[INST_HHAT][SMPL_DEC] = 4.0f; 55.107 + // BassDrum 55.108 + equaIncDecLevel[INST_BDRUM][SMPL_DEC] = 4.0f; 55.109 + // Snare Drum 55.110 + equaIncDecLevel[INST_SNARE][SMPL_DEC] = 4.0f; 55.111 + // Small BassDrum 55.112 + equaIncDecLevel[INST_SBDRUM][SMPL_DEC] = 4.0f; 55.113 + // Nap 1 55.114 + equaIncDecLevel[INST_NAP1][SMPL_INC] = 0.2f; 55.115 + equaIncDecLevel[INST_NAP1][SMPL_DEC] = 0.4f; 55.116 + // Nap 2 55.117 + equaIncDecLevel[INST_NAP2][SMPL_INC] = 0.2f; 55.118 + equaIncDecLevel[INST_NAP2][SMPL_DEC] = 0.4f; 55.119 + 55.120 + return; 55.121 + 55.122 +} 55.123 +extern void Write2Console( const char * data ); 55.124 +#include <string.h> 55.125 +void fxSync :: InitEquaDefDepth( void ) 55.126 +{ 55.127 + 55.128 +#if 0 55.129 + // Bass Def ... 55.130 + equaDef [INST_BASS][0] = 4; 55.131 + equaDef [INST_BASS][1] = 13; 55.132 + equaDef [INST_BASS][2] = 15; 55.133 + equaDef [INST_BASS][3] = 27; 55.134 + equaDef [INST_BASS][4] = 28; 55.135 + equaDef [INST_BASS][5] = 36; 55.136 + equaDef [INST_BASS][6] = 45; 55.137 + equaDepth[INST_BASS][0] = 1.0f; 55.138 + equaDepth[INST_BASS][1] = 0.4f; 55.139 + equaDepth[INST_BASS][2] = 0.8f; 55.140 + equaDepth[INST_BASS][3] = 0.1f; 55.141 + equaDepth[INST_BASS][4] = 0.3f; 55.142 + equaDepth[INST_BASS][5] = 0.2f; 55.143 + equaDepth[INST_BASS][6] = 0.6f; 55.144 + // HHat Def ... 55.145 + equaDef [INST_HHAT][0] = 3; 55.146 + equaDef [INST_HHAT][1] = 10; 55.147 + equaDef [INST_HHAT][2] = 20; 55.148 + equaDef [INST_HHAT][3] = 21; 55.149 + equaDef [INST_HHAT][4] = 32; 55.150 + equaDef [INST_HHAT][5] = 38; 55.151 + equaDef [INST_HHAT][6] = 42; 55.152 + equaDepth[INST_HHAT][0] = 0.2f; 55.153 + equaDepth[INST_HHAT][1] = 0.8f; 55.154 + equaDepth[INST_HHAT][2] = 0.1f; 55.155 + equaDepth[INST_HHAT][3] = 0.6f; 55.156 + equaDepth[INST_HHAT][4] = 1.0f; 55.157 + equaDepth[INST_HHAT][5] = 0.4f; 55.158 + equaDepth[INST_HHAT][6] = 0.3f; 55.159 + // Bass Drum 55.160 + equaDef [INST_BDRUM][0] = 2; 55.161 + equaDef [INST_BDRUM][1] = 9; 55.162 + equaDef [INST_BDRUM][2] = 16; 55.163 + equaDef [INST_BDRUM][3] = 26; 55.164 + equaDef [INST_BDRUM][4] = 29; 55.165 + equaDef [INST_BDRUM][5] = 35; 55.166 + equaDef [INST_BDRUM][6] = 44; 55.167 + equaDepth[INST_BDRUM][0] = 0.6f; 55.168 + equaDepth[INST_BDRUM][1] = 0.2f; 55.169 + equaDepth[INST_BDRUM][2] = 1.0f; 55.170 + equaDepth[INST_BDRUM][3] = 0.4f; 55.171 + equaDepth[INST_BDRUM][4] = 0.1f; 55.172 + equaDepth[INST_BDRUM][5] = 0.8f; 55.173 + equaDepth[INST_BDRUM][6] = 0.3f; 55.174 + // Snare Drum 55.175 + equaDef [INST_SNARE][0] = 5; 55.176 + equaDef [INST_SNARE][1] = 8; 55.177 + equaDef [INST_SNARE][2] = 14; 55.178 + equaDef [INST_SNARE][3] = 24; 55.179 + equaDef [INST_SNARE][4] = 33; 55.180 + equaDef [INST_SNARE][5] = 40; 55.181 + equaDef [INST_SNARE][6] = 46; 55.182 + equaDepth[INST_SNARE][0] = 0.4f; 55.183 + equaDepth[INST_SNARE][1] = 0.6f; 55.184 + equaDepth[INST_SNARE][2] = 0.1f; 55.185 + equaDepth[INST_SNARE][3] = 1.0f; 55.186 + equaDepth[INST_SNARE][4] = 0.2f; 55.187 + equaDepth[INST_SNARE][5] = 0.3f; 55.188 + equaDepth[INST_SNARE][6] = 0.8f; 55.189 + // Small BassDrum 55.190 + equaDef [INST_SBDRUM][0] = 1; 55.191 + equaDef [INST_SBDRUM][1] = 11; 55.192 + equaDef [INST_SBDRUM][2] = 18; 55.193 + equaDef [INST_SBDRUM][3] = 23; 55.194 + equaDef [INST_SBDRUM][4] = 31; 55.195 + equaDef [INST_SBDRUM][5] = 39; 55.196 + equaDef [INST_SBDRUM][6] = 47; 55.197 + equaDepth[INST_SBDRUM][0] = 0.4f; 55.198 + equaDepth[INST_SBDRUM][1] = 1.0f; 55.199 + equaDepth[INST_SBDRUM][2] = 0.3f; 55.200 + equaDepth[INST_SBDRUM][3] = 0.8f; 55.201 + equaDepth[INST_SBDRUM][4] = 0.2f; 55.202 + equaDepth[INST_SBDRUM][5] = 0.1f; 55.203 + equaDepth[INST_SBDRUM][6] = 0.6f; 55.204 + // Nap 1 55.205 + equaDef [INST_NAP1][0] = 0; 55.206 + equaDef [INST_NAP1][1] = 12; 55.207 + equaDef [INST_NAP1][2] = 17; 55.208 + equaDef [INST_NAP1][3] = 25; 55.209 + equaDef [INST_NAP1][4] = 30; 55.210 + equaDef [INST_NAP1][5] = 41; 55.211 + equaDef [INST_NAP1][6] = 43; 55.212 + equaDepth[INST_NAP1][0] = 0.3f; 55.213 + equaDepth[INST_NAP1][1] = 0.6f; 55.214 + equaDepth[INST_NAP1][2] = 0.1f; 55.215 + equaDepth[INST_NAP1][3] = 0.8f; 55.216 + equaDepth[INST_NAP1][4] = 0.4f; 55.217 + equaDepth[INST_NAP1][5] = 1.0f; 55.218 + equaDepth[INST_NAP1][6] = 0.2f; 55.219 + // Nap 2 55.220 + equaDef [INST_NAP2][0] = 6; 55.221 + equaDef [INST_NAP2][1] = 7; 55.222 + equaDef [INST_NAP2][2] = 19; 55.223 + equaDef [INST_NAP2][3] = 22; 55.224 + equaDef [INST_NAP2][4] = 34; 55.225 + equaDef [INST_NAP2][5] = 37; 55.226 + equaDef [INST_NAP2][6] = 48; 55.227 + equaDepth[INST_NAP2][0] = 0.8f; 55.228 + equaDepth[INST_NAP2][1] = 0.2f; 55.229 + equaDepth[INST_NAP2][2] = 0.6f; 55.230 + equaDepth[INST_NAP2][3] = 1.0f; 55.231 + equaDepth[INST_NAP2][4] = 0.2f; 55.232 + equaDepth[INST_NAP2][5] = 0.3f; 55.233 + equaDepth[INST_NAP2][6] = 0.4f; 55.234 + 55.235 +#endif 55.236 +char toto[1024]; 55.237 + 55.238 + for( int i = 0; i < equaNbElements; i++ ) 55.239 + { 55.240 + for( int j = 0; j < equaNbElements; j++ ) 55.241 + { 55.242 + equaDef [i%NB_INST][j] = ( i * equaNbElements + j + NB_INST ) % fxScreen1->GetFxEqua()->NbElements(); 55.243 + equaDepth[i%NB_INST][j] = ( ( i * equaNbElements + j * NB_INST ) ) % 10 / 10.0 + 0.1; 55.244 + } 55.245 + } 55.246 + return; 55.247 + 55.248 +} 55.249 + 55.250 +void fxSync :: SetSmplLevel( enum SamplesDef i, float _level ) 55.251 +{ 55.252 + 55.253 + equaIncDecLevel[i][SMPL_LEVEL] = _level; 55.254 + 55.255 + return; 55.256 +} 55.257 + 55.258 +float fxSync :: GetSmplLevel( enum SamplesDef i ) 55.259 +{ 55.260 + 55.261 + return ( equaIncDecLevel[i][SMPL_LEVEL] ); 55.262 + 55.263 +} 55.264 + 55.265 +void fxSync :: SmplInc( enum SamplesDef i ) 55.266 +{ 55.267 + 55.268 + equaIncDecLevel[i][SMPL_LEVEL] += equaIncDecLevel[i][SMPL_INC] * Timer->GetFrameTime(); 55.269 + if( equaIncDecLevel[i][SMPL_LEVEL] > 1.0f ) 55.270 + equaIncDecLevel[i][SMPL_LEVEL] = 1.0f; 55.271 + else 55.272 + { 55.273 + if( equaIncDecLevel[i][SMPL_LEVEL] < 0.0f ) 55.274 + equaIncDecLevel[i][SMPL_LEVEL] = 0.0f; 55.275 + } 55.276 + 55.277 + return; 55.278 + 55.279 +} 55.280 + 55.281 +void fxSync :: SmplDec( enum SamplesDef i ) 55.282 +{ 55.283 + 55.284 + equaIncDecLevel[i][SMPL_LEVEL] -= equaIncDecLevel[i][SMPL_DEC] * Timer->GetFrameTime(); 55.285 + if( equaIncDecLevel[i][SMPL_LEVEL] > 1.0f ) 55.286 + equaIncDecLevel[i][SMPL_LEVEL] = 1.0f; 55.287 + else 55.288 + { 55.289 + if( equaIncDecLevel[i][SMPL_LEVEL] < 0.0f ) 55.290 + equaIncDecLevel[i][SMPL_LEVEL] = 0.0f; 55.291 + } 55.292 + 55.293 + return; 55.294 + 55.295 +} 55.296 + 55.297 +void fxSync :: SetEquaDefDepth ( enum SamplesDef i, float _factor ) 55.298 +{ 55.299 + int j; 55.300 + for( j = 0; j < equaNbElements; j++ ) 55.301 + fxScreen1->GetFxEqua()->SetDepthLevel( equaDef[i][j], equaDepth[i][j] * _factor ); 55.302 +} 55.303 + 55.304 + 55.305 +void fxSync :: SyncEqua( void ) 55.306 +{ 55.307 +// if( this->detection->InFxScreen1() ) 55.308 +// { 55.309 + enum SamplesDef i; 55.310 + SamplesData data; 55.311 + 55.312 + for( i = INST_BASS; i <= INST_SBDRUM; i = ( (enum SamplesDef) ( (int)i + 1 ) ) ) 55.313 + { 55.314 + data = this->detection->GetSampleData( i ); 55.315 + if( data.playing ) 55.316 + { 55.317 + SetEquaDefDepth( i, data.volume ); 55.318 + SetSmplLevel( i, data.volume ); 55.319 + } 55.320 + else 55.321 + { 55.322 + SmplDec( i ); 55.323 + SetEquaDefDepth( i, GetSmplLevel( i ) ); 55.324 + } 55.325 + } 55.326 + 55.327 + // Nap 1 55.328 + data = this->detection->GetSampleData( INST_NAP1 ); 55.329 + if( data.playing ) 55.330 + { 55.331 + SmplInc( INST_NAP1 ); 55.332 + SetEquaDefDepth( INST_NAP1, GetSmplLevel( INST_NAP1 ) ); 55.333 + } 55.334 + else 55.335 + { 55.336 + SmplDec( INST_NAP1 ); 55.337 + SetEquaDefDepth( INST_NAP1, GetSmplLevel( INST_NAP1 ) ); 55.338 + } 55.339 + 55.340 + // Nap 2 55.341 + data = this->detection->GetSampleData( INST_NAP2 ); 55.342 + if( data.playing ) 55.343 + { 55.344 + SmplInc( INST_NAP2 ); 55.345 + SetEquaDefDepth( INST_NAP2, GetSmplLevel( INST_NAP2 ) ); 55.346 + } 55.347 + else 55.348 + { 55.349 + SmplDec( INST_NAP2 ); 55.350 + SetEquaDefDepth( INST_NAP2, GetSmplLevel( INST_NAP2 ) ); 55.351 + } 55.352 + 55.353 +// } 55.354 + return; 55.355 + 55.356 +} 55.357 + 55.358 +void fxSync :: SyncSpherical( void ) 55.359 +{ 55.360 +// if( this->detection->InFxScreen1() ) 55.361 +// { 55.362 + SamplesData data; 55.363 + 55.364 + data = this->detection->GetSampleData( INST_NAP2 ); 55.365 + if( data.playing ) 55.366 + { 55.367 + lastTarget = target; 55.368 + morphFactor += 1.0f / MORPH_RATE * Timer->GetFrameTime(); 55.369 + if( morphFactor > 1.0f ) 55.370 + morphFactor = 1.0f; 55.371 + } 55.372 + else 55.373 + { 55.374 + if( lastTarget == target ) 55.375 + target++; 55.376 + morphFactor = 0.0f; 55.377 + } 55.378 + 55.379 + fxScreen1->GetFxSpherical()->MakeMorph( target % fxScreen1->GetFxSpherical()->NbShapes(), 55.380 + ( target + 1 ) % fxScreen1->GetFxSpherical()->NbShapes(), 55.381 + morphFactor ); 55.382 +// } 55.383 + 55.384 + return; 55.385 + 55.386 +} 55.387 + 55.388 +#ifdef SOTA_DEBUG_MODE 55.389 +extern void Write2Console( const char * data ); 55.390 +#endif 55.391 +void fxSync :: SyncSnareTouf( void ) 55.392 +{ 55.393 +// if( this->detection->InFxScreen2() ) 55.394 +// { 55.395 + SamplesData data; 55.396 + data = this->detection->GetSampleData( INST_SNARE ); 55.397 + if( data.playing ) 55.398 + { 55.399 + if( lastStepDance == stepDance ) 55.400 + { 55.401 + stepDance++; 55.402 + #ifdef SOTA_DEBUG_MODE 55.403 + Write2Console( "fxScreen2->HandleSnareSound();" ); 55.404 + Write2Console( "ok" ); 55.405 + #endif 55.406 + 55.407 + //fxScreen2->HandleSnareSound(); // to not compile code not used 55.408 + } 55.409 + } 55.410 + else 55.411 + lastStepDance = stepDance; 55.412 + 55.413 +// } 55.414 + 55.415 + return; 55.416 +} 55.417 + 55.418 +void fxSync :: SyncWindTouf( void ) 55.419 +{ 55.420 +// if( this->detection->InFxScreen2() ) 55.421 +// { 55.422 + 55.423 + SamplesData data; 55.424 + data = this->detection->GetSampleData( INST_GROOVE ); 55.425 + 55.426 + if( data.playing ) 55.427 + { 55.428 + if( lastWindTouf == windTouf ) 55.429 + { 55.430 + windTouf++; 55.431 + fxScreen2->HandleWindSound(); 55.432 + } 55.433 + } 55.434 + else 55.435 + lastWindTouf = windTouf; 55.436 + 55.437 + 55.438 +// } 55.439 + return; 55.440 + 55.441 +} 55.442 + 55.443 +bool fxSync :: GetGreetzSync( void ) 55.444 +{ 55.445 + 55.446 + if( this->detection->GetSampleData( INST_BDRUM ).playing ) 55.447 + { 55.448 + if( greetz == lastGreetz ) 55.449 + { 55.450 + greetz++; 55.451 + return true; 55.452 + } 55.453 + } 55.454 + else 55.455 + { 55.456 + lastGreetz = greetz; 55.457 + return false; 55.458 + } 55.459 + 55.460 + return false; 55.461 + 55.462 +}
56.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 56.2 +++ b/fxSync.h Tue Nov 27 15:23:52 2007 +0100 56.3 @@ -0,0 +1,75 @@ 56.4 + 56.5 + 56.6 +#ifndef __FX_SYNC__ 56.7 +#define __FX_SYNC__ 56.8 + 56.9 +#include "smplInfo.h" 56.10 +#include "sndDetect.h" 56.11 +#include "cmn_intro.h" 56.12 +// efx 56.13 +#include "efx_screen1.h" 56.14 +#include "efx_screen2.h" 56.15 + 56.16 +// Spherical Morph Rate 56.17 +#define MORPH_RATE 3.0f 56.18 + 56.19 + 56.20 +class fxSync 56.21 +{ 56.22 + 56.23 +private: 56.24 + sndDetect * detection; 56.25 + 56.26 + // Equa ... 56.27 + float ** equaIncDecLevel; 56.28 + int ** equaDef; 56.29 + float ** equaDepth; 56.30 + int equaNbElements; 56.31 + 56.32 + // Spherical 56.33 + int target; 56.34 + int lastTarget; 56.35 + float morphFactor; 56.36 + 56.37 + // Touff 56.38 + int stepDance; 56.39 + int lastStepDance; 56.40 + int windTouf; 56.41 + int lastWindTouf; 56.42 + 56.43 + // Greetz 56.44 + int greetz; 56.45 + int lastGreetz; 56.46 + 56.47 +public: 56.48 + fxSync(); 56.49 + ~fxSync(); 56.50 + 56.51 + void Init( void ); 56.52 + void Kill( void ); 56.53 + 56.54 + sndDetect * GetDetection( void ) { return ( detection ); } 56.55 + 56.56 + // Equa Related Funcs ... 56.57 + void InitEquaIncDecLevel( void ); 56.58 + void InitEquaDefDepth( void ); 56.59 + void SetSmplLevel( enum SamplesDef i, float _level ); 56.60 + float GetSmplLevel( enum SamplesDef i ); 56.61 + void SetEquaDefDepth ( enum SamplesDef i, float _factor ); 56.62 + void SmplInc( enum SamplesDef i ); 56.63 + void SmplDec( enum SamplesDef i ); 56.64 + void SyncEqua( void ); 56.65 + 56.66 + // Spherical Sync ... 56.67 + void SyncSpherical( void ); 56.68 + 56.69 + // Touffes Sync ... 56.70 + void SyncSnareTouf( void ); 56.71 + void SyncWindTouf( void ); 56.72 + 56.73 + // Greetz 56.74 + bool GetGreetzSync( void ); 56.75 + 56.76 +}; 56.77 + 56.78 +#endif 56.79 \ No newline at end of file
57.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 57.2 +++ b/gl_header.h Tue Nov 27 15:23:52 2007 +0100 57.3 @@ -0,0 +1,8 @@ 57.4 +#ifndef GL_HEADER_H 57.5 +#define GL_HEADER_H 57.6 + 57.7 +#include <windows.h> 57.8 +#include <GL/gl.h> 57.9 +#include <GL/glu.h> 57.10 + 57.11 +#endif 57.12 \ No newline at end of file
58.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 58.2 +++ b/main.cxx Tue Nov 27 15:23:52 2007 +0100 58.3 @@ -0,0 +1,780 @@ 58.4 +/************************************************************************/ 58.5 + 58.6 +/* Intro Framework for SOTA 2003 - Stv | Syn[Rj] */ 58.7 + 58.8 +/************************************************************************/ 58.9 + 58.10 + 58.11 + 58.12 +#include <stdio.h> 58.13 +#include <stdlib.h> 58.14 +#include <windows.h> 58.15 +#include "window_fmod_init.h" 58.16 +#include <math.h> 58.17 +#include "gl_header.h" 58.18 +#include "resource.h" 58.19 +#include "minifmod/minifmod.h" 58.20 + 58.21 + 58.22 +// Effects 58.23 +#include "cmn_intro.h" 58.24 +#include "efx_touf.h" 58.25 +#include "efx_screen0.h" 58.26 +#include "efx_screen1.h" 58.27 +#include "efx_screen2.h" 58.28 +#include "efx_screen3.h" 58.29 +#include "efx_screen4.h" 58.30 +#include "rdr_font.h" 58.31 +//#include "efx_rub.h" 58.32 + 58.33 +// Transistion 58.34 +#include "trans_glow.h" 58.35 +#include "trans_explode.h" 58.36 +#include "trans_fade.h" 58.37 +#include "trans_explode2.h" 58.38 +#include "trans_radial.h" 58.39 +#include "trans_puzzle.h" 58.40 + 58.41 +// undefine this to skip sound system 58.42 +#define SOUND 58.43 + 58.44 + 58.45 + 58.46 +// Some pragmas to avoid VC's fucking warnings .... 58.47 +#pragma warning (disable:4305 4244 4800) 58.48 +#pragma comment(linker, "/OPT:NOWIN98" ) 58.49 +#pragma comment(lib, "minifmod.lib") // Minifmod 58.50 +#pragma comment(lib, "winmm.lib") // For minifmod lib 58.51 +#pragma comment(lib, "opengl32.lib") // Opengl lib 58.52 +#pragma comment(lib, "glu32.lib") // Glu lib 58.53 + 58.54 + 58.55 +extern HDC hDC; 58.56 + 58.57 + 58.58 + 58.59 +FMUSIC_MODULE *intro_mod; 58.60 + 58.61 + 58.62 + 58.63 +extern BOOL fullscreen; 58.64 +extern BOOL done; 58.65 + 58.66 + 58.67 + 58.68 +EXTERN_C int WINAPI WinMainCRTStartup(); 58.69 +EXTERN_C int WINAPI WinMainCRTStartup() 58.70 +{ 58.71 + HINSTANCE hInstance = GetModuleHandle(NULL); 58.72 + LPSTR lpszCmdLine = GetCommandLine(); 58.73 + int r = WinMain(hInstance,NULL,lpszCmdLine,SW_SHOWDEFAULT); 58.74 + ExitProcess(r); 58.75 + return r; 58.76 +} 58.77 + 58.78 + 58.79 +// Effects 58.80 +efxScreen0_t* fxScreen0; 58.81 +efxScreen1_t* fxScreen1; 58.82 +efxScreen2_t* fxScreen2; 58.83 +efxScreen3_t* fxScreen3; 58.84 +efxScreen4_t* fxScreen4; 58.85 +//efxRub_t* fxRub; 58.86 + 58.87 +// Font 58.88 +rdrFont_t* font; 58.89 + 58.90 +// Timer 58.91 +cmnTimer_t* Timer; 58.92 + 58.93 +// Transitions 58.94 +#ifdef TRY_GLOW 58.95 +trans_Glow_t *glowTrans; 58.96 +#endif 58.97 + 58.98 +#ifdef TRY_OLD_EXPLODE 58.99 +trans_Explode_t *explode; 58.100 +#endif 58.101 +transFade_t *fade; 58.102 +transExplode2_t *explode2; 58.103 + 58.104 +#ifdef TEST_RADIAL 58.105 +transRadial_t *radial; 58.106 +#endif 58.107 + 58.108 +transPuzzle_t *puzzle; 58.109 + 58.110 +// Sync 58.111 +fxSync * sync; 58.112 + 58.113 +float mosaik_alpha = 0.f; 58.114 + 58.115 + 58.116 + 58.117 + 58.118 + 58.119 +#define ACTIVATED_EFFECT0 58.120 +#define ACTIVATED_EFFECT1 58.121 +#define ACTIVATED_EFFECT2 58.122 +#define ACTIVATED_EFFECT3 58.123 +#define ACTIVATED_EFFECT4 58.124 + 58.125 +//#define JUMP_TO_EFFET 58.126 + 58.127 +//#define ACTIVE_TRANSITION // comment it to remove transition 58.128 + 58.129 +#define SCREEN0_START 0.0 58.130 +#define SCREEN0_END (12.312+2) 58.131 + 58.132 +#define SCREEN1_START (12.312-2) 58.133 +#define SCREEN1_END (49.000) 58.134 + 58.135 +#define SCREEN2_START (49.000) 58.136 +#define SCREEN2_END (86.0+2) 58.137 + 58.138 +#define SCREEN3_START (86.0-2) 58.139 +#define SCREEN3_END (129.0-2) 58.140 + 58.141 +#define SCREEN4_START (129.0-2) 58.142 +#define SCREEN4_END 1e5 58.143 + 58.144 + 58.145 +#define TRANS0_START (mth::Min(SCREEN0_END,SCREEN1_START)) 58.146 +#define TRANS0_END (mth::Max(SCREEN0_END,SCREEN1_START)) 58.147 + 58.148 +#define TRANS1_START (SCREEN1_END) 58.149 +#define TRANS1_END (TRANS1_START+4) 58.150 + 58.151 +#define TRANS2_START (mth::Min(SCREEN2_END,SCREEN3_START)) 58.152 +#define TRANS2_END (mth::Max(SCREEN2_END,SCREEN3_START)) 58.153 + 58.154 +#define TRANS3_START (SCREEN3_END-0.5) // warning transition must start to a quarter of time 58.155 +#define TRANS3_END (SCREEN4_START+1.5) 58.156 + 58.157 +float Transition0=0; 58.158 +float Transition2=0; 58.159 +float Transition3=0; 58.160 + 58.161 + 58.162 +void UpdateLoading(float move) 58.163 +{ 58.164 +// cmnPushGLState(); 58.165 +// cmnPushMatrix(); 58.166 + cmnClearScreen(); 58.167 + 58.168 + glLoadIdentity(); 58.169 + 58.170 + glPushMatrix(); 58.171 + 58.172 + glBegin(GL_QUADS); 58.173 + // Left 58.174 + glColor4ub(0, 0, 0, 255); 58.175 + glVertex3f(-1.f, -.1f, 0.f); 58.176 + glColor4ub(0, 0, 0, 255); 58.177 + glVertex3f(-1.f, .005f, 0.f); 58.178 + // Right 58.179 + glColor4ub(255, 255, 255, 255); 58.180 + glVertex3f(move, .005f, 0.f); 58.181 + glColor4ub(255, 255, 255, 255); 58.182 + glVertex3f(move, -.1f, 0.f); 58.183 + glEnd(); 58.184 + 58.185 + glPopMatrix(); 58.186 + 58.187 + SwapBuffers(hDC); 58.188 +// cmnPopMatrix(); 58.189 +// cmnPopGLState(); 58.190 +} 58.191 + 58.192 + 58.193 +void InitDemo(void) 58.194 +{ 58.195 + 58.196 + cmnClearScreen(); 58.197 + 58.198 + float loading = -0.85f; 58.199 + float loading_step = 0.152f; 58.200 + /* 58.201 + * Init Effect here eg. MyEffect_Init() 58.202 + */ 58.203 + 58.204 + UpdateLoading(loading); 58.205 + 58.206 + Timer = new cmnTimer_t; 58.207 + Timer->Init(); 58.208 + 58.209 + loading += loading_step; 58.210 + UpdateLoading(loading); 58.211 + 58.212 + font=new rdrFont_t; 58.213 + font->Init(txtLoadTextureFromMemory(IDB_BITMAP1),' ',16,1024,16); 58.214 + 58.215 + loading += loading_step; 58.216 + UpdateLoading(loading); 58.217 + 58.218 + fxScreen0 =new efxScreen0_t; 58.219 + fxScreen0->Init(); 58.220 + 58.221 + loading += loading_step; 58.222 + UpdateLoading(loading); 58.223 + 58.224 + fxScreen1 =new efxScreen1_t; 58.225 + fxScreen1->Init(); 58.226 + 58.227 + loading += loading_step; 58.228 + UpdateLoading(loading); 58.229 + 58.230 + fxScreen2=new efxScreen2_t; 58.231 + fxScreen2->Init(); 58.232 + 58.233 + loading += loading_step; 58.234 + UpdateLoading(loading); 58.235 + 58.236 +#ifdef ACTIVATED_EFFECT3 58.237 + fxScreen3=new efxScreen3_t; 58.238 + fxScreen3->Init(); 58.239 +#endif 58.240 + 58.241 + loading += loading_step; 58.242 + UpdateLoading(loading); 58.243 + 58.244 + 58.245 + fxScreen4=new efxScreen4_t; 58.246 + fxScreen4->Init(); 58.247 + 58.248 + loading += loading_step; 58.249 + UpdateLoading(loading); 58.250 + 58.251 +#ifdef TRY_GLOW 58.252 + 58.253 + glowTrans = new trans_Glow_t; 58.254 + cmnPushGLState(); 58.255 + glowTrans->glowPass[0] = glowTrans->CreateOnePass(32, 32); 58.256 + glowTrans->glowPass[1] = glowTrans->CreateOnePass(64, 64); 58.257 + glowTrans->glowPass[2] = glowTrans->CreateOnePass(128, 128); 58.258 + glowTrans->glowPass[3] = glowTrans->CreateOnePass(256, 256); 58.259 + cmnPopGLState(); 58.260 +#endif 58.261 + 58.262 + loading += loading_step; 58.263 + UpdateLoading(loading); 58.264 + 58.265 +#ifdef TRY_OLD_EXPLODE 58.266 + cmnPushGLState(); 58.267 + explode = new trans_Explode_t(10, 10); // x and y param should be EXACTLY the same (i'll fix it asap :)) 58.268 + explode->SetQuadsProperty(); 58.269 + explode->explode_map = explode->CreateTextureTransition(256, 256); 58.270 + cmnPopGLState(); 58.271 +#endif 58.272 + 58.273 + fade=new transFade_t; 58.274 + fade->Init(); 58.275 + 58.276 + loading += loading_step; 58.277 + UpdateLoading(loading); 58.278 + 58.279 + explode2= new transExplode2_t; 58.280 + explode2->Init(20,20); 58.281 + 58.282 + loading += loading_step; 58.283 + UpdateLoading(loading); 58.284 + 58.285 +#ifdef TEST_RADIAL 58.286 + radial= new transRadial_t; 58.287 + radial->Init(); 58.288 +#endif 58.289 + 58.290 + puzzle= new transPuzzle_t; 58.291 + puzzle->Init(20,20); 58.292 + 58.293 + loading += loading_step; 58.294 + UpdateLoading(loading); 58.295 + 58.296 + // sync 58.297 + sync = new fxSync(); 58.298 + sync->Init(); 58.299 + 58.300 + loading += loading_step; 58.301 + UpdateLoading(loading); 58.302 + 58.303 + 58.304 +// loading += loading_step; 58.305 +// UpdateLoading(loading); 58.306 + 58.307 + 58.308 + // to be sure to have the good time after init 58.309 + Timer->Init(); 58.310 + 58.311 +} 58.312 + 58.313 + 58.314 + 58.315 + 58.316 + 58.317 +#if 0 58.318 + // Set it to one for the rendering with STV 58.319 + fxScreen2->Update(); 58.320 + 58.321 + cmnPushGLState(); 58.322 + 58.323 + glowTrans->StartGlow(); 58.324 + 58.325 + cmnPushGLState(); 58.326 + fxScreen2->Draw(); 58.327 + cmnPopGLState(); 58.328 + 58.329 + glowTrans->StartRendering(glowTrans->glowPass[0], 32, 32); 58.330 + glowTrans->DoAllDefaultPasses(); 58.331 + glowTrans->EndGlow(); 58.332 + 58.333 + // Original scene 58.334 + cmnPushGLState(); 58.335 + fxScreen2->Draw(); 58.336 + cmnPopGLState(); 58.337 + 58.338 + // Apply glow over original scene 58.339 + if (FMUSIC_GetOrder(intro_mod)>=3) 58.340 + if ((FMUSIC_GetRow(intro_mod)+4)&8) 58.341 + mosaik_alpha = 0.5f; 58.342 + 58.343 + if (mosaik_alpha > 0.f) 58.344 + mosaik_alpha -= Timer->GetFrameTime()*2.5f; 58.345 + 58.346 + glowTrans->ApplyGlowToScene(glowTrans->glowPass[3], 0.75f);//mosaik_alpha); 58.347 + cmnPopGLState(); 58.348 + 58.349 +#endif 58.350 + 58.351 + 58.352 + 58.353 + 58.354 + 58.355 + 58.356 + 58.357 + 58.358 + 58.359 + 58.360 + 58.361 + 58.362 + 58.363 + 58.364 + 58.365 +void RunDemo(void) 58.366 +{ 58.367 + 58.368 + glEnable(GL_DEPTH_TEST); // Enables Depth Testing 58.369 + glDepthFunc(GL_LESS); 58.370 + glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST); 58.371 + 58.372 + cmnClearScreen(); 58.373 + cmnSetFrustrum(90); 58.374 + 58.375 + // Default camera do not modify it, see in screenx_t->Draw(). A camera should created in it 58.376 + cmnSetCamera( mth::Vector3_t( 12.5, 0, 100 ), mth::Vector3_t( 15 , 15, 0 ) ); 58.377 + 58.378 + 58.379 + 58.380 + /** PSC80 58.381 + * I have put some define to buy pass the current sync on screen 58.382 + * If you want to use the sync from mod remove comment this define 58.383 + */ 58.384 +#define DO_NOT_SYNC_SCREEN_FROM_FMOD 58.385 + 58.386 + 58.387 + 58.388 + 58.389 + 58.390 + 58.391 + 58.392 +#ifdef ACTIVATED_EFFECT0 58.393 + #ifndef JUMP_TO_EFFET 58.394 + #ifndef DO_NOT_SYNC_SCREEN_FROM_FMOD 58.395 + 58.396 + if(sync->GetDetection()->InFxScreen0() ) 58.397 + 58.398 + #else 58.399 + 58.400 + if (Timer->GetRealTime()>=SCREEN0_START && Timer->GetRealTime()<SCREEN0_END) 58.401 + 58.402 + #endif 58.403 + 58.404 + #endif 58.405 + { 58.406 + cmnPushGLState(); 58.407 + fxScreen0->Update(); 58.408 + fxScreen0->Draw(); 58.409 + cmnPopGLState(); 58.410 + 58.411 +#ifdef ACTIVE_TRANSITION 58.412 + cmnPushGLState(); 58.413 + 58.414 + explode->GetScene(explode->explode_map); 58.415 + 58.416 + if (Timer->GetRealTime() >= SCREEN0_START+((SCREEN0_END-SCREEN0_START)/2.f)) 58.417 + explode->Animate(0.f, 0.f, Timer->GetFrameTime()/10.f); 58.418 + 58.419 + glEnable(GL_TEXTURE_2D); 58.420 + glBindTexture(GL_TEXTURE_2D, explode->explode_map); 58.421 + 58.422 + explode->Draw(Timer->GetFrameTime()/10.f); 58.423 + 58.424 + glDisable(GL_TEXTURE_2D); 58.425 + 58.426 + cmnPopGLState(); 58.427 +#endif 58.428 + } 58.429 +#endif 58.430 + 58.431 + 58.432 + 58.433 + 58.434 + // transition screen 0 -> screen 1 58.435 + if (Timer->GetRealTime()>=TRANS0_START && Timer->GetRealTime() <TRANS0_END) { 58.436 + fade->GetBuffer1(); 58.437 + cmnClearScreen(); 58.438 + } 58.439 + 58.440 + 58.441 + 58.442 + 58.443 +#ifdef ACTIVATED_EFFECT1 58.444 + #ifndef JUMP_TO_EFFET 58.445 + #ifndef DO_NOT_SYNC_SCREEN_FROM_FMOD 58.446 + 58.447 + if(sync->GetDetection()->InFxScreen1() ) 58.448 + 58.449 + #else 58.450 + 58.451 + if (Timer->GetRealTime()>=SCREEN1_START && Timer->GetRealTime()<SCREEN1_END) 58.452 + 58.453 + #endif 58.454 + 58.455 + #endif 58.456 + { 58.457 + cmnPushGLState(); 58.458 + fxScreen1->Update(); 58.459 + fxScreen1->Draw(); 58.460 + cmnPopGLState(); 58.461 + } 58.462 +#endif 58.463 + 58.464 + // transition screen 0 -> screen 1 58.465 + if (Timer->GetRealTime()>=TRANS0_START && Timer->GetRealTime() <TRANS0_END) { 58.466 + fade->GetBuffer2(); 58.467 + cmnClearScreen(); 58.468 + } 58.469 + 58.470 + // transition screen 0 -> screen 1 58.471 + if (Timer->GetRealTime()>=TRANS0_START && Timer->GetRealTime() <TRANS0_END) { 58.472 + cmnPushGLState(); 58.473 + Transition0=(Timer->GetRealTime()-TRANS0_START) *1.0 / (TRANS0_END-TRANS0_START); 58.474 + 58.475 + fade->Draw(Transition0); 58.476 + cmnPopGLState(); 58.477 + } 58.478 + 58.479 + 58.480 + 58.481 + 58.482 + 58.483 + // transition screen 1 -> screen 2 58.484 + if (Timer->GetRealTime()>=TRANS1_START-0.5 && Timer->GetRealTime() <TRANS1_START && !explode2->Started()) { 58.485 + explode2->GetBuffer1(); 58.486 + } 58.487 + if (Timer->GetRealTime()>= TRANS1_START) 58.488 + explode2->Start(); 58.489 + 58.490 + 58.491 +#ifdef USE_TRANSITION_MOZAIK 58.492 + if (Timer->GetRealTime()>= TRANS2_START) 58.493 + glowTrans->StartGlow(); 58.494 +#else 58.495 +#endif 58.496 + 58.497 + 58.498 +#ifdef ACTIVATED_EFFECT2 58.499 + #ifndef JUMP_TO_EFFET 58.500 + #ifndef DO_NOT_SYNC_SCREEN_FROM_FMOD 58.501 + 58.502 + if( sync->GetDetection()->InFxScreen2() ) 58.503 + 58.504 + #else 58.505 + 58.506 + if (Timer->GetRealTime()>=SCREEN2_START && Timer->GetRealTime()<SCREEN2_END) 58.507 + 58.508 + #endif 58.509 + 58.510 + #endif 58.511 + { 58.512 + cmnPushGLState(); 58.513 + fxScreen2->Update(); 58.514 + fxScreen2->Draw(); 58.515 + cmnPopGLState(); 58.516 + } 58.517 +#endif 58.518 + 58.519 + 58.520 + // transition screen 1 -> screen 2 58.521 + if (Timer->GetRealTime()>=TRANS1_START && Timer->GetRealTime() <TRANS1_END && explode2->Started()) { 58.522 + cmnPushGLState(); 58.523 + explode2->Update(); 58.524 + explode2->Draw(); 58.525 + cmnPopGLState(); 58.526 + } 58.527 + 58.528 + 58.529 + 58.530 + // transition screen 2 -> screen 3 58.531 + if (Timer->GetRealTime()>=TRANS2_START && Timer->GetRealTime() <TRANS2_END) { 58.532 + if (!fxScreen2->SetEnd()) 58.533 + fxScreen2->SetEnd((TRANS2_END-TRANS2_START)/4.0); 58.534 + fade->GetBuffer1(); 58.535 + cmnClearScreen(); 58.536 + } 58.537 + 58.538 + 58.539 + 58.540 +#ifdef ACTIVATED_EFFECT3 58.541 + #ifndef JUMP_TO_EFFET 58.542 + #ifndef DO_NOT_SYNC_SCREEN_FROM_FMOD 58.543 + 58.544 + if(!sync->GetDetection()->InFxScreen1() && !sync->GetDetection()->InFxScreen2() ) 58.545 + 58.546 + #else 58.547 + 58.548 + if (Timer->GetRealTime()>=SCREEN3_START && Timer->GetRealTime()<SCREEN3_END) 58.549 + 58.550 + #endif 58.551 + 58.552 + #endif 58.553 + { 58.554 + cmnPushGLState(); 58.555 + fxScreen3->Update(); 58.556 + fxScreen3->Draw(); 58.557 + cmnPopGLState(); 58.558 + } 58.559 +#endif 58.560 + 58.561 + 58.562 + // transition screen 2 -> screen 3 58.563 + if (Timer->GetRealTime()>=TRANS2_START && Timer->GetRealTime() <TRANS2_END) { 58.564 + fade->GetBuffer2(); 58.565 + cmnClearScreen(); 58.566 + } 58.567 + 58.568 + // transition screen 0 -> screen 1 58.569 + if (Timer->GetRealTime()>=TRANS2_START && Timer->GetRealTime() <TRANS2_END) { 58.570 + cmnPushGLState(); 58.571 + Transition2=(Timer->GetRealTime()-TRANS2_START) *1.0 / (TRANS2_END-TRANS2_START); 58.572 + fade->Draw(Transition2); 58.573 + cmnPopGLState(); 58.574 + } 58.575 + 58.576 + 58.577 + 58.578 + 58.579 + 58.580 + 58.581 + 58.582 + // transition screen 3 -> screen 4 58.583 + if (Timer->GetRealTime()>=TRANS3_START && Timer->GetRealTime() <SCREEN3_END) { 58.584 + puzzle->GetBuffer1(); 58.585 + } 58.586 + 58.587 + 58.588 + 58.589 +#ifdef ACTIVATED_EFFECT4 58.590 + #ifndef JUMP_TO_EFFET 58.591 + #ifndef DO_NOT_SYNC_SCREEN_FROM_FMOD 58.592 + 58.593 + if(sync->GetDetection()->InFxScreen4() ) 58.594 + 58.595 + #else 58.596 + 58.597 + if (Timer->GetRealTime()>=SCREEN4_START && Timer->GetRealTime()<SCREEN4_END) 58.598 + 58.599 + #endif 58.600 + 58.601 + #endif 58.602 + { 58.603 + cmnPushGLState(); 58.604 + fxScreen4->Update(); 58.605 + fxScreen4->Draw(); 58.606 + cmnPopGLState(); 58.607 + } 58.608 +#endif 58.609 + 58.610 + 58.611 + // transition screen 3 -> screen 4 58.612 + if (Timer->GetRealTime()>=SCREEN4_START && Timer->GetRealTime() <TRANS3_END) { 58.613 + puzzle->GetBuffer2(); 58.614 + } 58.615 + 58.616 + if (Timer->GetRealTime()>=TRANS3_START && Timer->GetRealTime() <TRANS3_END) { 58.617 + cmnClearScreen(); 58.618 + cmnPushGLState(); 58.619 + Transition3=(Timer->GetRealTime()-TRANS3_START) *1.0 / (TRANS3_END-TRANS3_START); 58.620 + puzzle->Update(Transition3); 58.621 + puzzle->Draw(); 58.622 + cmnPopGLState(); 58.623 + } 58.624 + 58.625 + 58.626 + 58.627 + 58.628 + 58.629 + 58.630 + 58.631 + 58.632 + 58.633 + 58.634 + 58.635 + 58.636 + 58.637 + 58.638 + if (Timer->GetRealTime() <SCREEN4_START) { 58.639 + cmnPushGLState(); 58.640 + cmnScope(); 58.641 + cmnPopGLState(); 58.642 + } 58.643 + 58.644 +#ifndef FINALE_RELEASE 58.645 + cmnPushGLState(); 58.646 + cmnPushMatrix(); 58.647 + cmnSetPlanarView(); 58.648 + glDisable(GL_BLEND); 58.649 + glDisable(GL_DEPTH_TEST); 58.650 + font->SetScale(1); 58.651 + font->SetZ(0); 58.652 + 58.653 + font->Print("Time: %f\n",Timer->GetRealTime()); 58.654 + font->Print("FPS: %f\n",1.0/Timer->GetFrameTime()); 58.655 + font->Print("Transition 0: %f\n",Transition0); 58.656 + 58.657 + cmnPopMatrix(); 58.658 + cmnPopGLState(); 58.659 + font->Clear(); 58.660 +#endif 58.661 + 58.662 + 58.663 + 58.664 + 58.665 + Timer->Update(); 58.666 + SwapBuffers(hDC); 58.667 + 58.668 +} 58.669 + 58.670 + 58.671 +void KillDemo(void) 58.672 + 58.673 +{ 58.674 + 58.675 + /* 58.676 + * Kill Effects here eg. MyEffect_Kill() 58.677 + */ 58.678 + 58.679 + 58.680 + // Sync 58.681 + sync->Kill(); 58.682 +} 58.683 + 58.684 + 58.685 + 58.686 +int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) 58.687 +{ 58.688 + 58.689 + MSG msg; 58.690 + bool wnd; 58.691 + 58.692 + 58.693 +#ifdef SOUND 58.694 + FSOUND_File_SetCallbacks(memopen, memclose, memread, memseek, memtell); 58.695 + intro_mod = FMUSIC_LoadSong(MAKEINTRESOURCE(IDR_DATA9),NULL); 58.696 + FSOUND_Init(44100, 0); 58.697 +#endif 58.698 + 58.699 +#ifdef SOTA_DEBUG_MODE 58.700 + AllocConsole(); 58.701 + stdOut = GetStdHandle( STD_OUTPUT_HANDLE ); 58.702 +#endif 58.703 + 58.704 + if (MessageBox(NULL,"Have fun in fullscreen ? (RECOMMENDED)", "-*- SOTA Temp gfx mode selection -*-",MB_YESNO|MB_ICONQUESTION)==IDNO) 58.705 + { 58.706 + fullscreen=FALSE; 58.707 + } 58.708 + 58.709 + 58.710 + wnd = CreateGLWindow( "Intro", (int)RX, (int)RY, 32, (int)fullscreen); 58.711 + if ( wnd == FALSE ) 58.712 + return FALSE; 58.713 + 58.714 + InitDemo(); 58.715 +#ifdef SOUND 58.716 + if (!intro_mod) 58.717 + return 0; 58.718 + 58.719 + FMUSIC_PlaySong(intro_mod); 58.720 +#endif 58.721 + Timer->Init(); 58.722 + 58.723 + 58.724 + while( done != NULL ) 58.725 + 58.726 + { 58.727 + 58.728 + if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) 58.729 + 58.730 + { 58.731 + 58.732 + if (msg.message==WM_QUIT) 58.733 + 58.734 + done=TRUE; 58.735 + 58.736 + 58.737 + 58.738 + else 58.739 + 58.740 + { 58.741 + 58.742 + TranslateMessage(&msg); 58.743 + 58.744 + DispatchMessage(&msg); 58.745 + 58.746 + } 58.747 + 58.748 + } 58.749 + 58.750 + else 58.751 + 58.752 + { 58.753 + 58.754 + RunDemo(); 58.755 + 58.756 + } 58.757 + 58.758 + } 58.759 + 58.760 + 58.761 + 58.762 + KillDemo(); 58.763 + 58.764 + 58.765 +#ifdef SOUND 58.766 + FMUSIC_FreeSong(intro_mod); 58.767 + FSOUND_Close(); 58.768 +#endif 58.769 + 58.770 +#ifdef SOTA_DEBUG_MODE 58.771 + FreeConsole(); 58.772 +#endif 58.773 + KillGLWindow(); 58.774 + 58.775 + 58.776 + 58.777 + return (msg.wParam); 58.778 + 58.779 +} 58.780 + 58.781 + 58.782 + 58.783 +
59.1 Binary file minifmod.lib has changed
60.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 60.2 +++ b/minifmod/Fmusic.c Tue Nov 27 15:23:52 2007 +0100 60.3 @@ -0,0 +1,531 @@ 60.4 +/******************************************************************************/ 60.5 +/* FMUSIC.C */ 60.6 +/* ---------------- */ 60.7 +/* MiniFMOD public source code release. */ 60.8 +/* This source is provided as-is. Firelight Multimedia will not support */ 60.9 +/* or answer questions about the source provided. */ 60.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 60.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 60.12 +/* Firelight Multimedia is a registered business name. */ 60.13 +/* This source must not be redistributed without this notice. */ 60.14 +/******************************************************************************/ 60.15 + 60.16 +#include "minifmod.h" 60.17 + 60.18 +#include "music_formatxm.h" 60.19 +#include "sound.h" 60.20 +#include "system_file.h" 60.21 +#include "system_memory.h" 60.22 + 60.23 +FMUSIC_MODULE * FMUSIC_PlayingSong = NULL; 60.24 +FMUSIC_CHANNEL FMUSIC_Channel[32]; // channel array for this song 60.25 +FMUSIC_TIMMEINFO * FMUSIC_TimeInfo; 60.26 +FSOUND_SAMPLE FMUSIC_DummySample; 60.27 +// initialization taken out due to size.. should be ok. 60.28 +/* = 60.29 +{ 60.30 +// 0, // index 60.31 + NULL, // buff 60.32 + 60.33 + 0, // length 60.34 + 0, // loopstart 60.35 + 0, // looplen 60.36 + 0, // default volume 60.37 + 0, // finetune value from -128 to 127 60.38 + 60.39 + 44100, // default frequency 60.40 + 128, // default pan 60.41 + 60.42 + 8, // bits 60.43 + FSOUND_LOOP_OFF, // loop mode 60.44 + 60.45 + 60.46 + TRUE, // music owned 60.47 + 0, // sample global volume (scalar) 60.48 + 0, // relative note 60.49 + 8363, // finetuning adjustment to make for music samples.. relative to 8363hz 60.50 + 0, // sample loop start 60.51 + 0, // sample loop length 60.52 + 0, // vibrato speed 0-64 60.53 + 0, // vibrato depth 0-64 60.54 + 0, // vibrato type 0=sine, 1=rampdown, 2=square, 3=random 60.55 + 0, // vibrato rate 0-64 (like sweep?) 60.56 +}; 60.57 +*/ 60.58 + 60.59 +FSOUND_CHANNEL FMUSIC_DummyChannel; 60.60 +FMUSIC_INSTRUMENT FMUSIC_DummyInstrument; 60.61 + 60.62 +//= PRIVATE FUNCTIONS ============================================================================== 60.63 + 60.64 + 60.65 +/* 60.66 +[ 60.67 + [DESCRIPTION] 60.68 + 60.69 + [PARAMETERS] 60.70 + 60.71 + [RETURN_VALUE] 60.72 + 60.73 + [REMARKS] 60.74 + 60.75 + [SEE_ALSO] 60.76 +] 60.77 +*/ 60.78 + 60.79 +void FMUSIC_SetBPM(FMUSIC_MODULE *module, int bpm) 60.80 +{ 60.81 + float hz; 60.82 + 60.83 + module->bpm = bpm; 60.84 + 60.85 + hz = (float)bpm * 2.0f / 5.0f; 60.86 + 60.87 + // number of samples 60.88 + module->mixer_samplespertick = (int)((float)FSOUND_MixRate * (1000.0f / hz) / 1000.0f); 60.89 +} 60.90 + 60.91 + 60.92 +//= API FUNCTIONS ============================================================================== 60.93 + 60.94 +/* 60.95 +[API] 60.96 +[ 60.97 + [DESCRIPTION] 60.98 + To load a module with a given filename. FMUSIC Supports loading of 60.99 + - .MOD (protracker/fasttracker modules) 60.100 + - .S3M (screamtracker 3 modules) 60.101 + - .XM (fasttracker 2 modules) 60.102 + - .IT (impulse tracker modules) 60.103 + 60.104 + [PARAMETERS] 60.105 + 'name' Filename of module to load. 60.106 + 60.107 + [RETURN_VALUE] 60.108 + On success, a pointer to a FMUSIC_MODULE handle is returned. 60.109 + On failure, NULL is returned. 60.110 + 60.111 + [REMARKS] 60.112 + This function autodetects the format type, regardless of filename. 60.113 + 60.114 + [SEE_ALSO] 60.115 + FMUSIC_FreeSong 60.116 +] 60.117 +*/ 60.118 +FMUSIC_MODULE * FMUSIC_LoadSong(signed char *name, SAMPLELOADCALLBACK sampleloadcallback) 60.119 +{ 60.120 + FMUSIC_MODULE *mod; 60.121 + signed char retcode=FALSE; 60.122 + FSOUND_FILE_HANDLE *fp; 60.123 + 60.124 + // create a mod instance 60.125 + mod = FSOUND_Memory_Calloc(sizeof(FMUSIC_MODULE)); 60.126 + 60.127 + fp = FSOUND_File_Open(name, 0, 0); 60.128 + if (!fp) 60.129 + return NULL; 60.130 + 60.131 + mod->samplecallback = sampleloadcallback; 60.132 + 60.133 + // try opening all as all formats until correct loader is found 60.134 + retcode = FMUSIC_LoadXM(mod, fp); 60.135 + 60.136 + FSOUND_File_Close(fp); 60.137 + 60.138 + if (!retcode) 60.139 + { 60.140 + FMUSIC_FreeSong(mod); 60.141 + return NULL; 60.142 + } 60.143 + 60.144 + return mod; 60.145 +} 60.146 + 60.147 + 60.148 +/* 60.149 +[API] 60.150 +[ 60.151 + [DESCRIPTION] 60.152 + Frees memory allocated for a song and removes it from the FMUSIC system. 60.153 + 60.154 + [PARAMETERS] 60.155 + 'mod' Pointer to the song to be freed. 60.156 + 60.157 + [RETURN_VALUE] 60.158 + void 60.159 + 60.160 + [REMARKS] 60.161 + 60.162 + [SEE_ALSO] 60.163 + FMUSIC_LoadSong 60.164 +] 60.165 +*/ 60.166 +signed char FMUSIC_FreeSong(FMUSIC_MODULE *mod) 60.167 +{ 60.168 + int count; 60.169 + 60.170 + if (!mod) 60.171 + return FALSE; 60.172 + 60.173 + BLOCK_ON_SOFTWAREUPDATE(); 60.174 + 60.175 + FMUSIC_StopSong(mod); 60.176 + 60.177 + // free samples 60.178 + if (mod->instrument) 60.179 + { 60.180 + for (count=0; count<(int)mod->numinsts; count++) 60.181 + { 60.182 + int count2; 60.183 + 60.184 + FMUSIC_INSTRUMENT *iptr = &mod->instrument[count]; 60.185 + for (count2=0; count2<iptr->numsamples; count2++) 60.186 + { 60.187 + if (iptr->sample[count2]) 60.188 + { 60.189 + FSOUND_SAMPLE *sptr = iptr->sample[count2]; 60.190 + FSOUND_Memory_Free(sptr->buff); 60.191 + FSOUND_Memory_Free(sptr); 60.192 + } 60.193 + } 60.194 + 60.195 + 60.196 + } 60.197 + } 60.198 + 60.199 + // free instruments 60.200 + if (mod->instrument) 60.201 + FSOUND_Memory_Free(mod->instrument); 60.202 + 60.203 + // free patterns 60.204 + if (mod->pattern) 60.205 + { 60.206 + for (count=0; count<mod->numpatternsmem; count++) 60.207 + if (mod->pattern[count].data) 60.208 + FSOUND_Memory_Free(mod->pattern[count].data); 60.209 + 60.210 + if (mod->pattern) 60.211 + FSOUND_Memory_Free(mod->pattern); 60.212 + } 60.213 + 60.214 + // free song 60.215 + FSOUND_Memory_Free(mod); 60.216 + 60.217 + return TRUE; 60.218 +} 60.219 + 60.220 + 60.221 + 60.222 +/* 60.223 +[API] 60.224 +[ 60.225 + [DESCRIPTION] 60.226 + Starts a song playing. 60.227 + 60.228 + [PARAMETERS] 60.229 + 'mod' Pointer to the song to be played. 60.230 + 60.231 + [RETURN_VALUE] 60.232 + TRUE song succeeded playing 60.233 + FALSE song failed playing 60.234 + 60.235 + [REMARKS] 60.236 + 60.237 + [SEE_ALSO] 60.238 + FMUSIC_StopSong 60.239 +] 60.240 +*/ 60.241 +signed char FMUSIC_PlaySong(FMUSIC_MODULE *mod) 60.242 +{ 60.243 + int count; 60.244 + FMUSIC_CHANNEL *cptr; 60.245 + int totalblocks = FSOUND_BufferSize / FSOUND_BlockSize; 60.246 + 60.247 + if (!mod) 60.248 + return FALSE; 60.249 + 60.250 + FMUSIC_StopSong(mod); 60.251 + 60.252 + mod->globalvolume = mod->defaultglobalvolume; 60.253 + mod->speed = (int)mod->defaultspeed; 60.254 + mod->row = 0; 60.255 + mod->order = 0; 60.256 + mod->nextorder = -1; 60.257 + mod->nextrow = -1; 60.258 + mod->mixer_samplesleft = 0; 60.259 + mod->tick = 0; 60.260 + mod->patterndelay = 0; 60.261 + mod->time_ms = 0; 60.262 + 60.263 + if (mod->Play) 60.264 + mod->Play(mod); 60.265 + 60.266 + FMUSIC_SetBPM(mod, mod->defaultbpm); 60.267 + 60.268 + memset(FMUSIC_Channel, 0, mod->numchannels * sizeof(FMUSIC_CHANNEL)); 60.269 + 60.270 + for (count=0; count<mod->numchannels; count++) 60.271 + { 60.272 + cptr = &FMUSIC_Channel[count]; 60.273 + cptr->cptr = &FSOUND_Channel[count]; 60.274 + 60.275 + // music system channel initialization 60.276 +/* 60.277 + // removed for size .. should be ok .. 60.278 + 60.279 + cptr->volume = 0; 60.280 + cptr->voldelta = 0; 60.281 + cptr->inst = 0; 60.282 + cptr->note = 0; 60.283 + cptr->period = 0; 60.284 + cptr->portaupdown = 0; 60.285 + cptr->volslide = 0; 60.286 + cptr->panslide = 0; 60.287 + cptr->portatarget = 0; 60.288 + cptr->portaspeed = 0; 60.289 + cptr->portareached = FALSE; 60.290 + cptr->sampleoffset = 0; 60.291 + cptr->retrigx = 0; 60.292 + cptr->retrigy = 0; 60.293 + cptr->retrigcount = 0; 60.294 + cptr->vibpos = 0; 60.295 + cptr->vibspeed = 0; 60.296 + cptr->vibdepth = 0; 60.297 + cptr->tremolopos = 0; 60.298 + cptr->tremolospeed = 0; 60.299 + cptr->tremolodepth = 0; 60.300 + cptr->panbrellopos = 0; 60.301 + cptr->panbrellospeed = 0; 60.302 + cptr->panbrellodepth = 0; 60.303 + cptr->patlooprow = 0; 60.304 + cptr->patloopno = 0; 60.305 + cptr->wavecontrol = 0; 60.306 + cptr->wavecontrolvib = 0; 60.307 + cptr->wavecontroltrem = 0; 60.308 + cptr->wavecontrolpan = 0; 60.309 + cptr->tremorpos = 0; 60.310 + cptr->arpeggio = 0; 60.311 + cptr->channelvsl = 0; 60.312 + cptr->recenteffect = 0; 60.313 + cptr->highoffset = 0; 60.314 + cptr->volcolumn_volslide = 0; 60.315 + cptr->fineportaup = 0; 60.316 + cptr->fineportadown = 0; 60.317 +*/ 60.318 + } 60.319 + 60.320 + FMUSIC_PlayingSong = mod; 60.321 + 60.322 + FMUSIC_TimeInfo = FSOUND_Memory_Calloc(sizeof(FMUSIC_TIMMEINFO) * totalblocks); 60.323 + 60.324 + // ======================================================================================================== 60.325 + // PREPARE THE OUTPUT 60.326 + // ======================================================================================================== 60.327 + 60.328 + { 60.329 + WAVEHDR *wavehdr; 60.330 + int length = 0; 60.331 + 60.332 + // CREATE AND START LOOPING WAVEOUT BLOCK 60.333 + wavehdr = &FSOUND_MixBlock.wavehdr; 60.334 + 60.335 + length = FSOUND_BufferSize; 60.336 + length <<= 2; // 16bits 60.337 + 60.338 + FSOUND_MixBlock.data = FSOUND_Memory_Calloc(length); 60.339 + 60.340 + wavehdr->dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP; 60.341 + wavehdr->lpData = (LPSTR)FSOUND_MixBlock.data; 60.342 + wavehdr->dwBufferLength = length; 60.343 + wavehdr->dwBytesRecorded = 0; 60.344 + wavehdr->dwUser = 0; 60.345 + wavehdr->dwLoops = -1; 60.346 + waveOutPrepareHeader(FSOUND_WaveOutHandle, wavehdr, sizeof(WAVEHDR)); 60.347 + 60.348 + } 60.349 + 60.350 + // ======================================================================================================== 60.351 + // ALLOCATE MIXBUFFER 60.352 + // ======================================================================================================== 60.353 + FSOUND_MixBufferMem = (signed char *)FSOUND_Memory_Calloc((FSOUND_BufferSize << 3) + 256); 60.354 + FSOUND_MixBuffer = (signed char *)(((unsigned int)FSOUND_MixBufferMem + 15) & 0xFFFFFFF0); 60.355 + 60.356 + // ======================================================================================================== 60.357 + // PREFILL THE MIXER BUFFER 60.358 + // ======================================================================================================== 60.359 + 60.360 + FSOUND_Software_FillBlock = 0; 60.361 + 60.362 + do 60.363 + { 60.364 + FSOUND_Software_Fill(); 60.365 + } while (FSOUND_Software_FillBlock); 60.366 + 60.367 + // ======================================================================================================== 60.368 + // START THE OUTPUT 60.369 + // ======================================================================================================== 60.370 + 60.371 + waveOutWrite(FSOUND_WaveOutHandle, &FSOUND_MixBlock.wavehdr, sizeof(WAVEHDR)); 60.372 + 60.373 + { 60.374 + DWORD FSOUND_dwThreadId; 60.375 + 60.376 + // ======================================================================================================== 60.377 + // CREATE THREADS / TIMERS (last) 60.378 + // ======================================================================================================== 60.379 + FSOUND_Software_Exit = FALSE; 60.380 + 60.381 + FSOUND_Software_hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)FSOUND_Software_DoubleBufferThread, 0,0, &FSOUND_dwThreadId); 60.382 + 60.383 + SetThreadPriority(FSOUND_Software_hThread, THREAD_PRIORITY_TIME_CRITICAL); // THREAD_PRIORITY_HIGHEST); 60.384 + } 60.385 + return TRUE; 60.386 +} 60.387 + 60.388 + 60.389 +/* 60.390 +[API] 60.391 +[ 60.392 + [DESCRIPTION] 60.393 + Stops a song from playing. 60.394 + 60.395 + [PARAMETERS] 60.396 + 'mod' Pointer to the song to be stopped. 60.397 + 60.398 + [RETURN_VALUE] 60.399 + void 60.400 + 60.401 + [REMARKS] 60.402 + 60.403 + [SEE_ALSO] 60.404 + FMUSIC_PlaySong 60.405 +] 60.406 +*/ 60.407 +signed char FMUSIC_StopSong(FMUSIC_MODULE *mod) 60.408 +{ 60.409 + if (!mod) 60.410 + return FALSE; 60.411 + 60.412 + // Kill the thread 60.413 + FSOUND_Software_Exit = TRUE; 60.414 + 60.415 + // wait until callback has settled down and exited 60.416 + BLOCK_ON_SOFTWAREUPDATE(); 60.417 + 60.418 + if (FSOUND_Software_hThread) 60.419 + { 60.420 + while (!FSOUND_Software_ThreadFinished) 60.421 + { 60.422 + Sleep(50); 60.423 + } 60.424 + FSOUND_Software_hThread = NULL; 60.425 + } 60.426 + 60.427 + // remove the output mixbuffer 60.428 + if (FSOUND_MixBufferMem) 60.429 + { 60.430 + FSOUND_Memory_Free(FSOUND_MixBufferMem); 60.431 + } 60.432 + 60.433 + if (FSOUND_MixBlock.wavehdr.lpData) 60.434 + { 60.435 + waveOutUnprepareHeader(FSOUND_WaveOutHandle, &FSOUND_MixBlock.wavehdr, sizeof(WAVEHDR)); 60.436 + FSOUND_MixBlock.wavehdr.dwFlags &= ~WHDR_PREPARED; 60.437 + } 60.438 + 60.439 + FMUSIC_PlayingSong = NULL; 60.440 + 60.441 + if (FMUSIC_TimeInfo) 60.442 + { 60.443 + FSOUND_Memory_Free(FMUSIC_TimeInfo); 60.444 + } 60.445 + 60.446 + return TRUE; 60.447 +} 60.448 + 60.449 +//= INFORMATION FUNCTIONS ====================================================================== 60.450 + 60.451 +/* 60.452 +[API] 60.453 +[ 60.454 + [DESCRIPTION] 60.455 + Returns the song's current order number 60.456 + 60.457 + [PARAMETERS] 60.458 + 'mod' Pointer to the song to retrieve current order number from. 60.459 + 60.460 + [RETURN_VALUE] 60.461 + The song's current order number. 60.462 + On failure, 0 is returned. 60.463 + 60.464 + [REMARKS] 60.465 + 60.466 + [SEE_ALSO] 60.467 + FMUSIC_GetPattern 60.468 +] 60.469 +*/ 60.470 +int FMUSIC_GetOrder(FMUSIC_MODULE *mod) 60.471 +{ 60.472 + if (!mod) 60.473 + return 0; 60.474 + 60.475 + return FMUSIC_TimeInfo[FSOUND_Software_RealBlock].order; 60.476 +} 60.477 + 60.478 + 60.479 +/* 60.480 +[API] 60.481 +[ 60.482 + [DESCRIPTION] 60.483 + Returns the song's current row number. 60.484 + 60.485 + [PARAMETERS] 60.486 + 'mod' Pointer to the song to retrieve current row from. 60.487 + 60.488 + [RETURN_VALUE] 60.489 + On success, the song's current row number is returned. 60.490 + On failure, 0 is returned. 60.491 + 60.492 + [REMARKS] 60.493 + 60.494 + [SEE_ALSO] 60.495 +] 60.496 +*/ 60.497 +int FMUSIC_GetRow(FMUSIC_MODULE *mod) 60.498 +{ 60.499 + if (!mod) 60.500 + return 0; 60.501 + 60.502 + return FMUSIC_TimeInfo[FSOUND_Software_RealBlock].row; 60.503 +} 60.504 + 60.505 + 60.506 +/* 60.507 +[API] 60.508 +[ 60.509 + [DESCRIPTION] 60.510 + Returns the time in milliseconds since the song was started. This is useful for 60.511 + synchronizing purposes becuase it will be exactly the same every time, and it is 60.512 + reliably retriggered upon starting the song. Trying to synchronize using other 60.513 + windows timers can lead to varying results, and inexact performance. This fixes that 60.514 + problem by actually using the number of samples sent to the soundcard as a reference. 60.515 + 60.516 + [PARAMETERS] 60.517 + 'mod' Pointer to the song to get time from. 60.518 + 60.519 + [RETURN_VALUE] 60.520 + On success, the time played in milliseconds is returned. 60.521 + On failure, 0 is returned. 60.522 + 60.523 + [REMARKS] 60.524 + 60.525 + [SEE_ALSO] 60.526 +] 60.527 +*/ 60.528 +unsigned int FMUSIC_GetTime(FMUSIC_MODULE *mod) 60.529 +{ 60.530 + if (!mod) 60.531 + return 0; 60.532 + 60.533 + return FMUSIC_TimeInfo[FSOUND_Software_RealBlock].ms; 60.534 +}
61.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 61.2 +++ b/minifmod/Fsound.c Tue Nov 27 15:23:52 2007 +0100 61.3 @@ -0,0 +1,322 @@ 61.4 +/******************************************************************************/ 61.5 +/* FSOUND.C */ 61.6 +/* ---------------- */ 61.7 +/* MiniFMOD public source code release. */ 61.8 +/* This source is provided as-is. Firelight Multimedia will not support */ 61.9 +/* or answer questions about the source provided. */ 61.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 61.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 61.12 +/* Firelight Multimedia is a registered business name. */ 61.13 +/* This source must not be redistributed without this notice. */ 61.14 +/******************************************************************************/ 61.15 + 61.16 +#include "minifmod.h" 61.17 +#include "mixer.h" 61.18 +#include "mixer_clipcopy.h" 61.19 +#include "mixer_fpu_ramp.h" 61.20 +#include "music.h" 61.21 +#include "sound.h" 61.22 +#include "system_file.h" 61.23 +#include "system_memory.h" 61.24 + 61.25 +#include <windows.h> 61.26 +#include <mmsystem.h> 61.27 + 61.28 +//= GLOBALS ================================================================================ 61.29 + 61.30 +FSOUND_CHANNEL FSOUND_Channel[256]; // channel pool 61.31 +int FSOUND_MixRate; // mixing rate in hz. 61.32 +int FSOUND_BufferSizeMs = 1000; 61.33 +HWAVEOUT FSOUND_WaveOutHandle; 61.34 +FSOUND_SoundBlock FSOUND_MixBlock; 61.35 + 61.36 +// mixing info 61.37 +signed char * FSOUND_MixBufferMem; // mix buffer memory block 61.38 +signed char * FSOUND_MixBuffer; // mix output buffer (16bit or 32bit) 61.39 +float FSOUND_OOMixRate; // mixing rate in hz. 61.40 +int FSOUND_BufferSize; // size of 1 'latency' ms buffer in bytes 61.41 +int FSOUND_BlockSize; // LATENCY ms worth of samples 61.42 + 61.43 +// thread control variables 61.44 +volatile signed char FSOUND_Software_Exit = FALSE; // mixing thread termination flag 61.45 +volatile signed char FSOUND_Software_UpdateMutex = FALSE; 61.46 +volatile signed char FSOUND_Software_ThreadFinished = TRUE; 61.47 +volatile HANDLE FSOUND_Software_hThread = NULL; 61.48 +volatile int FSOUND_Software_FillBlock = 0; 61.49 +volatile int FSOUND_Software_RealBlock = 0; 61.50 + 61.51 + 61.52 + 61.53 +/* 61.54 +[API] 61.55 +[ 61.56 + [DESCRIPTION] 61.57 + Initializes the FMOD Sound System. 61.58 + 61.59 + [PARAMETERS] 61.60 + 'mixrate' Output rate in hz. 61.61 + 'vcmmode' This is reserved for future expansion. Set it to 0. 61.62 + 61.63 + [RETURN_VALUE] 61.64 + On success, TRUE is returned. 61.65 + On failure, FALSE is returned. 61.66 + 61.67 + [REMARKS] 61.68 + 61.69 + [SEE_ALSO] 61.70 + FSOUND_Init 61.71 + FSOUND_Close 61.72 +] 61.73 +*/ 61.74 +signed char FSOUND_Init(int mixrate, int vcmmode) 61.75 +{ 61.76 + int count; 61.77 + 61.78 + if (!FSOUND_File_OpenCallback || !FSOUND_File_CloseCallback || !FSOUND_File_ReadCallback || !FSOUND_File_SeekCallback || !FSOUND_File_TellCallback) 61.79 + return FALSE; 61.80 + 61.81 + //======================================================================================= 61.82 + // CLOSE IT DOWN FIRST IF IT IS ALREADY OPEN 61.83 + //======================================================================================= 61.84 + FSOUND_Close(); 61.85 + 61.86 + //======================================================================================= 61.87 + // SET SOME DEFAULTS 61.88 + //======================================================================================= 61.89 + FSOUND_MixRate = mixrate; 61.90 + 61.91 + { 61.92 + WAVEFORMATEX pcmwf; 61.93 + UINT hr; 61.94 + 61.95 + // ======================================================================================================== 61.96 + // INITIALIZE WAVEOUT 61.97 + // ======================================================================================================== 61.98 + pcmwf.wFormatTag = WAVE_FORMAT_PCM; 61.99 + pcmwf.nChannels = 2; 61.100 + pcmwf.wBitsPerSample = 16; 61.101 + pcmwf.nBlockAlign = pcmwf.nChannels * pcmwf.wBitsPerSample / 8; 61.102 + pcmwf.nSamplesPerSec = mixrate; 61.103 + pcmwf.nAvgBytesPerSec = pcmwf.nSamplesPerSec * pcmwf.nBlockAlign; 61.104 + pcmwf.cbSize = 0; 61.105 + 61.106 + hr = waveOutOpen(&FSOUND_WaveOutHandle, WAVE_MAPPER, &pcmwf, 0, 0, 0); 61.107 + 61.108 + if (hr) 61.109 + return FALSE; 61.110 + 61.111 + } 61.112 + 61.113 + // ======================================================================================================== 61.114 + // INITIALIZE SOFTWARE MIXER 61.115 + // ======================================================================================================== 61.116 + 61.117 + FSOUND_OOMixRate = 1.0f / (float)mixrate; 61.118 + 61.119 + FSOUND_BlockSize = ((FSOUND_MixRate * FSOUND_LATENCY / 1000) + 3) & 0xFFFFFFFC; // Number of *samples* 61.120 + FSOUND_BufferSize = FSOUND_BlockSize * (FSOUND_BufferSizeMs / FSOUND_LATENCY); // make it perfectly divisible by granularity 61.121 + FSOUND_BufferSize <<= 1; // double buffer 61.122 + 61.123 + mix_volumerampsteps = FSOUND_MixRate * FSOUND_VOLUMERAMP_STEPS / 44100; 61.124 + mix_1overvolumerampsteps = 1.0f / mix_volumerampsteps; 61.125 + 61.126 + //======================================================================================= 61.127 + // ALLOC GLOBAL CHANNEL POOL 61.128 + //======================================================================================= 61.129 + memset(FSOUND_Channel, 0, sizeof(FSOUND_CHANNEL) * 256); 61.130 + 61.131 + // ======================================================================================================== 61.132 + // SET UP CHANNELS 61.133 + // ======================================================================================================== 61.134 + 61.135 + for (count=0; count < 256; count++) 61.136 + { 61.137 + FSOUND_Channel[count].index = count; 61.138 + FSOUND_Channel[count].speedhi = 1; 61.139 + } 61.140 + 61.141 + return TRUE; 61.142 +} 61.143 + 61.144 + 61.145 +/* 61.146 +[API] 61.147 +[ 61.148 + [DESCRIPTION] 61.149 + Shuts down the WHOLE FMOD Sound System. 61.150 + 61.151 + [PARAMETERS] 61.152 + 61.153 + [RETURN_VALUE] 61.154 + void 61.155 + 61.156 + [REMARKS] 61.157 + This also closes down the sample management system, freeing all MANAGED samples loaded (unless they were allocated with the FSOUND_UNMANAGED flag). 61.158 + All songs (mods) are stopped (but does not free them). 61.159 + All streams are stopped and freed. 61.160 + CD Tracks are stopped. 61.161 + 61.162 + [SEE_ALSO] 61.163 + FSOUND_Init 61.164 +] 61.165 +*/ 61.166 +void FSOUND_Close() 61.167 +{ 61.168 + // ======================================================================================================== 61.169 + // SHUT DOWN OUTPUT DRIVER 61.170 + // ======================================================================================================== 61.171 + waveOutReset(FSOUND_WaveOutHandle); 61.172 + 61.173 + waveOutClose(FSOUND_WaveOutHandle); 61.174 +} 61.175 + 61.176 + 61.177 + 61.178 + 61.179 +/* 61.180 + [DESCRIPTION] 61.181 + 61.182 + [PARAMETERS] 61.183 + 61.184 + [RETURN_VALUE] 61.185 + 61.186 + [REMARKS] 61.187 + 61.188 + [SEE_ALSO] 61.189 +*/ 61.190 +void FSOUND_Software_Fill() 61.191 +{ 61.192 + void * mixbuffer; 61.193 + int mixpos = FSOUND_Software_FillBlock * FSOUND_BlockSize; 61.194 + int totalblocks = FSOUND_BufferSize / FSOUND_BlockSize; 61.195 + 61.196 + 61.197 + mixbuffer = (char *)FSOUND_MixBuffer + (mixpos << 3); 61.198 + 61.199 + //============================================================================== 61.200 + // MIXBUFFER CLEAR 61.201 + //============================================================================== 61.202 + memset(mixbuffer, 0, FSOUND_BlockSize << 3); 61.203 + 61.204 + //============================================================================== 61.205 + // UPDATE MUSIC 61.206 + //============================================================================== 61.207 + 61.208 + { 61.209 + int MixedSoFar = 0; 61.210 + int MixedLeft = FMUSIC_PlayingSong->mixer_samplesleft; 61.211 + int SamplesToMix; 61.212 + signed char *MixPtr; 61.213 + 61.214 + // keep resetting the mix pointer to the beginning of this portion of the ring buffer 61.215 + MixPtr = mixbuffer; 61.216 + 61.217 + while (MixedSoFar < FSOUND_BlockSize) 61.218 + { 61.219 + if (!MixedLeft) 61.220 + { 61.221 + FMUSIC_PlayingSong->Update(FMUSIC_PlayingSong); // update new mod tick 61.222 + SamplesToMix = FMUSIC_PlayingSong->mixer_samplespertick; 61.223 + MixedLeft = SamplesToMix; 61.224 + } 61.225 + else SamplesToMix = MixedLeft; 61.226 + 61.227 + if (MixedSoFar + SamplesToMix > FSOUND_BlockSize) 61.228 + SamplesToMix = FSOUND_BlockSize - MixedSoFar; 61.229 + 61.230 + FSOUND_Mixer_FPU_Ramp(MixPtr, SamplesToMix, FALSE); 61.231 + 61.232 + MixedSoFar += SamplesToMix; 61.233 + MixPtr += (SamplesToMix << 3); 61.234 + MixedLeft -= SamplesToMix; 61.235 + 61.236 + FMUSIC_PlayingSong->time_ms += (int)(((float)SamplesToMix * FSOUND_OOMixRate) * 1000); 61.237 + } 61.238 + 61.239 + FMUSIC_TimeInfo[FSOUND_Software_FillBlock].ms = FMUSIC_PlayingSong->time_ms; 61.240 + FMUSIC_TimeInfo[FSOUND_Software_FillBlock].row = FMUSIC_PlayingSong->row; 61.241 + FMUSIC_TimeInfo[FSOUND_Software_FillBlock].order = FMUSIC_PlayingSong->order; 61.242 + 61.243 + FMUSIC_PlayingSong->mixer_samplesleft = MixedLeft; 61.244 + } 61.245 + 61.246 + 61.247 + // ==================================================================================== 61.248 + // CLIP AND COPY BLOCK TO OUTPUT BUFFER 61.249 + // ==================================================================================== 61.250 + { 61.251 + void *ptr1, *ptr2; 61.252 + unsigned int len1, len2; 61.253 + 61.254 + ptr1 = FSOUND_MixBlock.data + (mixpos << 2); 61.255 + ptr2 = NULL; 61.256 + len1 = FSOUND_BlockSize << 2; 61.257 + len2 = 0; 61.258 + 61.259 + FSOUND_MixerClipCopy_Float32(ptr1, mixbuffer, len1>>2); 61.260 + } 61.261 + 61.262 + FSOUND_Software_FillBlock++; 61.263 + if (FSOUND_Software_FillBlock >= totalblocks) 61.264 + FSOUND_Software_FillBlock = 0; 61.265 +} 61.266 + 61.267 + 61.268 +/* 61.269 + [DESCRIPTION] 61.270 + 61.271 + [PARAMETERS] 61.272 + 61.273 + [RETURN_VALUE] 61.274 + 61.275 + [REMARKS] 61.276 + 61.277 + [SEE_ALSO] 61.278 +*/ 61.279 +DWORD FSOUND_Software_DoubleBufferThread(LPDWORD lpdwParam) 61.280 +{ 61.281 + int totalblocks; 61.282 + 61.283 + FSOUND_Software_ThreadFinished = FALSE; 61.284 + 61.285 + totalblocks = FSOUND_BufferSize / FSOUND_BlockSize; 61.286 + 61.287 + while (!FSOUND_Software_Exit) 61.288 + { 61.289 + int cursorpos,cursorblock,prevblock; 61.290 + MMTIME mmt; 61.291 + 61.292 + mmt.wType = TIME_BYTES; 61.293 + waveOutGetPosition(FSOUND_WaveOutHandle, &mmt, sizeof(MMTIME)); 61.294 + mmt.u.cb >>= 2; 61.295 + cursorpos = mmt.u.cb; 61.296 + 61.297 + cursorpos %= FSOUND_BufferSize; 61.298 + cursorblock = cursorpos / FSOUND_BlockSize; 61.299 + 61.300 + prevblock = cursorblock - 1; 61.301 + if (prevblock < 0) 61.302 + prevblock = totalblocks - 1; 61.303 + 61.304 + while (FSOUND_Software_FillBlock != cursorblock) 61.305 + { 61.306 + FSOUND_Software_UpdateMutex = TRUE; 61.307 + 61.308 + FSOUND_Software_Fill(); 61.309 + 61.310 + FSOUND_Software_RealBlock++; 61.311 + if (FSOUND_Software_RealBlock >= totalblocks) 61.312 + FSOUND_Software_RealBlock = 0; 61.313 + 61.314 + FSOUND_Software_UpdateMutex = FALSE; 61.315 + } 61.316 + 61.317 + Sleep(5); 61.318 + }; 61.319 + 61.320 + FSOUND_Software_ThreadFinished = TRUE; 61.321 + 61.322 + return 0; 61.323 +} 61.324 + 61.325 +
62.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 62.2 +++ b/minifmod/Mixer.h Tue Nov 27 15:23:52 2007 +0100 62.3 @@ -0,0 +1,23 @@ 62.4 +/******************************************************************************/ 62.5 +/* MIXER.H */ 62.6 +/* ---------------- */ 62.7 +/* MiniFMOD public source code release. */ 62.8 +/* This source is provided as-is. Firelight Multimedia will not support */ 62.9 +/* or answer questions about the source provided. */ 62.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 62.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 62.12 +/* Firelight Multimedia is a registered business name. */ 62.13 +/* This source must not be redistributed without this notice. */ 62.14 +/******************************************************************************/ 62.15 + 62.16 +#ifndef _MIXER_H_ 62.17 +#define _MIXER_H_ 62.18 + 62.19 +#define FSOUND_MIXDIR_FORWARDS 1 62.20 +#define FSOUND_MIXDIR_BACKWARDS 2 62.21 + 62.22 +#define FSOUND_OUTPUTBUFF_END 0 62.23 +#define FSOUND_SAMPLEBUFF_END 1 62.24 +#define FSOUND_VOLUMERAMP_END 2 62.25 + 62.26 +#endif 62.27 \ No newline at end of file
63.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 63.2 +++ b/minifmod/Music.h Tue Nov 27 15:23:52 2007 +0100 63.3 @@ -0,0 +1,296 @@ 63.4 +/******************************************************************************/ 63.5 +/* MUSIC.H */ 63.6 +/* ---------------- */ 63.7 +/* MiniFMOD public source code release. */ 63.8 +/* This source is provided as-is. Firelight Multimedia will not support */ 63.9 +/* or answer questions about the source provided. */ 63.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 63.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 63.12 +/* Firelight Multimedia is a registered business name. */ 63.13 +/* This source must not be redistributed without this notice. */ 63.14 +/******************************************************************************/ 63.15 + 63.16 +#ifndef _MUSIC_H 63.17 +#define _MUSIC_H 63.18 + 63.19 +#include "sound.h" 63.20 + 63.21 +#define FMUSIC_FLAGS_NORMALVOLUMESLIDES 0 63.22 +#define FMUSIC_FLAGS_FASTVOLUMESLIDES 1 63.23 +//#define FMUSIC_FLAGS_LINEARFREQUENCY 2 63.24 +//#define FMUSIC_FLAGS_AMIGAFREQUENCY 4 63.25 + 63.26 +#define FMUSIC_MAXORDERS 256 63.27 + 63.28 +#define FMUSIC_KEYCUT 254 63.29 +#define FMUSIC_KEYOFF 255 63.30 + 63.31 +#define FMUSIC_FREQ 1 63.32 +#define FMUSIC_VOLUME 2 63.33 +#define FMUSIC_PAN 4 63.34 +#define FMUSIC_TRIGGER 8 63.35 +#define FMUSIC_SURROUND 16 63.36 +#define FMUSIC_STOP 32 63.37 +#define FMUSIC_SURROUNDOFF 64 63.38 + 63.39 +#define FMUSIC_ENVELOPE_OFF 0 63.40 +#define FMUSIC_ENVELOPE_ON 1 63.41 +#define FMUSIC_ENVELOPE_SUSTAIN 2 63.42 +#define FMUSIC_ENVELOPE_LOOP 4 63.43 +#define FMUSIC_ENVELOPE_CARRY 8 63.44 + 63.45 +#define FMUSIC_CUT 0 63.46 +#define FMUSIC_CONTINUE 1 63.47 +#define FMUSIC_OFF 2 63.48 +#define FMUSIC_FADEOUT 3 63.49 + 63.50 +#define FMUSIC_PLAYPACKED TRUE 63.51 + 63.52 +#if !defined (FMUSIC_PLAYPACKED) && defined (FINAL) 63.53 + #error Error - packed music playing is not turned on for FINAL 63.54 +#endif 63.55 + 63.56 +// Single note type - contains info on 1 note in a pattern 63.57 +typedef struct 63.58 +{ 63.59 + unsigned char note; // note to play at (0-133) 132=none,133=keyoff 63.60 + unsigned char number; // sample being played (0-99) 63.61 + unsigned char volume; // volume column value (0-64) 255=no volume 63.62 + unsigned char effect; // effect number (0-1Ah) 63.63 + unsigned char eparam; // effect parameter (0-255) 63.64 +} FMUSIC_NOTE; 63.65 + 63.66 +// pattern data type 63.67 +typedef struct 63.68 +{ 63.69 + int rows; 63.70 + FMUSIC_NOTE *data; 63.71 +} FMUSIC_PATTERN; 63.72 + 63.73 +#pragma pack(1) 63.74 + 63.75 +typedef struct 63.76 +{ 63.77 + unsigned char order; 63.78 + unsigned char row; 63.79 + unsigned int ms; 63.80 +} FMUSIC_TIMMEINFO; 63.81 + 63.82 +typedef struct 63.83 +{ 63.84 + signed char value; 63.85 + unsigned short tick; 63.86 +} FMUSIC_ENVNODE; 63.87 + 63.88 + 63.89 +#pragma pack() 63.90 + 63.91 +// Multi sample extended instrument 63.92 +typedef struct FMUSIC_INSTRUMENT 63.93 +{ 63.94 + int numsamples; // number of samples in this instrument 63.95 + FSOUND_SAMPLE *sample[16]; // 16 samples per instrument 63.96 + unsigned char keymap[96]; // sample keymap assignments 63.97 + 63.98 + unsigned short VOLPoints[40]; // Volume envelope points (80 bytes - enough for 25 3 byte IT envelopes) 63.99 + unsigned short PANPoints[40]; // Panning envelope points 63.100 + 63.101 + // ==================================================================================== 63.102 + // 16 bytes read here in the loader for size, dont alter order or insert!!! 63.103 + unsigned char VOLnumpoints; // Number of volume envelope points 63.104 + unsigned char PANnumpoints; // Number of panning envelope points 63.105 + unsigned char VOLsustain; // Volume sustain point 63.106 + unsigned char VOLLoopStart; // Volume envelope loop start 63.107 + unsigned char VOLLoopEnd; // Volume envelope loop end 63.108 + unsigned char PANsustain; // Panning sustain point 63.109 + unsigned char PANLoopStart; // Panning envelope loop start 63.110 + unsigned char PANLoopEnd; // Panning envelope loop end 63.111 + unsigned char VOLtype; // Type of envelope,bit 0:On 1:Sustain 2:Loop 63.112 + unsigned char PANtype; // Type of envelope,bit 0:On 1:Sustain 2:Loop 63.113 + unsigned char VIBtype; // Instrument Vibrato type 63.114 + unsigned char VIBsweep; // Time it takes for vibrato to fully kick in 63.115 + unsigned char VIBdepth; // depth of vibrato 63.116 + unsigned char VIBrate; // rate of vibrato 63.117 + unsigned short VOLfade; // fade out value 63.118 + // ==================================================================================== 63.119 + 63.120 + 63.121 +} FMUSIC_INSTRUMENT; 63.122 + 63.123 + 63.124 + 63.125 +// Channel type - contains information on a mod channel 63.126 +typedef struct FMUSIC_CHANNEL 63.127 +{ 63.128 + 63.129 + unsigned char note; // last note set in channel 63.130 + unsigned char samp; // last sample set in channel 63.131 + 63.132 + unsigned char notectrl; // flags for FSOUND 63.133 + 63.134 + FSOUND_CHANNEL *cptr; // pointer to FSOUND system mixing channel 63.135 + FSOUND_SAMPLE *sptr; // pointer to FSOUND system sample 63.136 + 63.137 + int freq; // current mod frequency period for this channel 63.138 + int volume; // current mod volume for this channel 63.139 + int pan; // current mod pan for this channel 63.140 + int voldelta; // delta for volume commands.. tremolo/tremor etc 63.141 + int freqdelta; // delta for frequency commands.. vibrato/arpeggio etc 63.142 + int pandelta; // delta for pan commands.. panbrello 63.143 + 63.144 + int samp_globalvol; // this current sample's global volume 63.145 + 63.146 + int envvoltick; // tick counter for envelope position 63.147 + int envvolpos; // envelope position 63.148 + int envvolfrac; // fractional interpolated envelope volume 63.149 + int envvol; // final interpolated envelope volume 63.150 + int envvoldelta; // delta step between points 63.151 + signed char envvolstopped; // flag to say whether envelope has finished or not 63.152 + 63.153 + int envpantick; // tick counter for envelope position 63.154 + int envpanpos; // envelope position 63.155 + int envpanfrac; // fractional interpolated envelope pan 63.156 + int envpan; // final interpolated envelope pan 63.157 + int envpandelta; // delta step between points 63.158 + signed char envpanstopped; // flag to say whether envelope has finished or not 63.159 + 63.160 + int fadeoutvol; // volume fade out 63.161 + int ivibpos; // instrument vibrato position 63.162 + int ivibsweeppos; // instrument vibrato sweep position 63.163 + signed char fade; // flag whether to start fade or not 63.164 + signed char keyoff; // flag whether keyoff has been hit or not) 63.165 + 63.166 + unsigned char inst; // last instrument set in channel 63.167 + unsigned char realnote; // last realnote set in channel 63.168 + unsigned int period; // last period set in channel 63.169 + unsigned char recenteffect; // previous row's effect.. used to correct tremolo volume 63.170 + 63.171 + unsigned int sampleoffset; // sample offset for this channel in SAMPLES 63.172 + 63.173 + int globalvolume; // global volume for this channel 63.174 +// unsigned char portaupdown; // last porta up or down value (S3M / IT) 63.175 + unsigned char portadown; // last porta down value (XM) 63.176 + unsigned char portaup; // last porta up value (XM) 63.177 + unsigned char xtraportadown; // last porta down value (XM) 63.178 + unsigned char xtraportaup; // last porta up value (XM) 63.179 + unsigned char volslide; // last volume slide value (XM + S3M) 63.180 + unsigned char panslide; // pan slide parameter (XM) 63.181 + unsigned char retrigx; // last retrig volume slide used (XM + S3M) 63.182 + unsigned char retrigy; // last retrig tick count used (XM + S3M) 63.183 +// unsigned char retrigcount; // retrig timer (IT) 63.184 + 63.185 + int portatarget; // note to porta to 63.186 + unsigned char portaspeed; // porta speed 63.187 +// unsigned char portareached; // flag for IT to say portamento has been reached 63.188 + 63.189 + signed char vibpos; // vibrato position 63.190 + unsigned char vibspeed; // vibrato speed 63.191 + unsigned char vibdepth; // vibrato depth 63.192 + unsigned char vibtype; // vibrato type (IT) .. I cant believe this shit 63.193 + 63.194 + signed char tremolopos; // tremolo position 63.195 + unsigned char tremolospeed; // tremolo speed 63.196 + unsigned char tremolodepth; // tremolo depth 63.197 + 63.198 + int panbrellopos; // panbrello position 63.199 + unsigned char panbrellospeed; // panbrello speed 63.200 + unsigned char panbrellodepth; // panbrello depth 63.201 + 63.202 + unsigned char tremorpos; // tremor position (XM + S3M) 63.203 + unsigned char tremoron; // remembered parameters for tremor (XM + S3M) 63.204 + unsigned char tremoroff; // remembered parameters for tremor (XM + S3M) 63.205 + unsigned char arpeggio; // remembered parameters for arpeggio (S3M) 63.206 + int patlooprow; 63.207 + int patloopno; // pattern loop variables for effect E6x 63.208 + unsigned char channelvsl; // global volume slide parameters 63.209 + 63.210 + unsigned char specialparam; // remembered parameter for Sxy 63.211 + unsigned char wavecontrol; // waveform type for vibrato and tremolo (4bits each) 63.212 + unsigned char wavecontrolvib; // waveform type for vibrato (IT) 63.213 + unsigned char wavecontroltrem; // waveform type for tremolo (IT) 63.214 + unsigned char wavecontrolpan; // waveform type for panbrello (IT) 63.215 + 63.216 + unsigned char finevsldown; // parameter for fine volume slide down 63.217 + unsigned char finevslup; // parameter for fine volume slide down 63.218 + unsigned char fineportaup; // parameter for fine porta slide up 63.219 + unsigned char fineportadown; // parameter for fine porta slide down 63.220 + unsigned char highoffset; // high part of sample offset - ie the 'y' part of yxx00 (IT) 63.221 + unsigned char volcolumn_volslide; // volume column parameter remembered for volume sliding (IT) 63.222 +} FMUSIC_CHANNEL; 63.223 + 63.224 + 63.225 +// Song type - contains info on song 63.226 +typedef struct FMUSIC_MODULE 63.227 +{ 63.228 + FMUSIC_PATTERN *pattern; // patterns array for this song 63.229 + FMUSIC_INSTRUMENT *instrument; // instrument array for this song (not used in MOD/S3M) 63.230 + int mixer_samplesleft; 63.231 + int mixer_samplespertick; 63.232 + 63.233 + // ==================================================================================== 63.234 + // 6 bytes read here in the loader for size, dont alter order or insert!!! 63.235 + short numorders; // number of orders (song length) 63.236 + short restart; // restart position 63.237 + short numchannels; // number of channels 63.238 + // ==================================================================================== 63.239 + 63.240 + int numpatterns; // number of physical patterns 63.241 + int numpatternsmem; // number of allocated patterns 63.242 + 63.243 + // ==================================================================================== 63.244 + // 256+8 6 bytes read here in the loader for size, dont alter order or insert!!! 63.245 + short numinsts; // number of instruments 63.246 + unsigned short flags; // flags such as linear frequency, format specific quirks etc 63.247 + short defaultspeed; 63.248 + short defaultbpm; 63.249 + unsigned char orderlist[FMUSIC_MAXORDERS]; // pattern playing order list 63.250 + // ==================================================================================== 63.251 + 63.252 + unsigned char defaultglobalvolume; 63.253 + 63.254 + int globalvolume; // global mod volume 63.255 + unsigned char globalvsl; // global mod volume 63.256 + int tick; // current mod tick 63.257 + int speed; // speed of song in ticks per row 63.258 + int bpm; // speed of song in bpm 63.259 + int row; // current row in pattern 63.260 + int order; // current song order position 63.261 + int patterndelay; // pattern delay counter 63.262 + int nextrow; // current row in pattern 63.263 + int nextorder; // current song order position 63.264 + int time_ms; // time passed in seconds since song started 63.265 + 63.266 + void (*Play)(struct FMUSIC_MODULE *mod); // callback when the song starts 63.267 + void (*Update)(struct FMUSIC_MODULE *mod); // playback routine callback... for different formats 63.268 + SAMPLELOADCALLBACK samplecallback; 63.269 + 63.270 +} FMUSIC_MODULE; 63.271 + 63.272 + 63.273 +//= VARIABLE EXTERNS ======================================================================== 63.274 +#ifdef __cplusplus 63.275 +extern "C" 63.276 +{ 63.277 +#endif 63.278 + 63.279 +extern FMUSIC_MODULE * FMUSIC_PlayingSong; 63.280 +extern FSOUND_SAMPLE FMUSIC_DummySample; 63.281 +extern FSOUND_CHANNEL FMUSIC_DummyChannel; 63.282 +extern FMUSIC_INSTRUMENT FMUSIC_DummyInstrument; 63.283 +extern FMUSIC_CHANNEL FMUSIC_Channel[]; // channel array for this song 63.284 +extern FMUSIC_TIMMEINFO * FMUSIC_TimeInfo; 63.285 + 63.286 +#ifdef __cplusplus 63.287 +} 63.288 +#endif 63.289 + 63.290 + 63.291 +//= FUNCTION DECLARATIONS ==================================================================== 63.292 + 63.293 +#define FMUSIC_PERIOD2HZ(_per) (14317056L / (_per)) 63.294 + 63.295 +// private (internal functions) 63.296 +void FMUSIC_SetBPM(FMUSIC_MODULE *mod, int bpm); 63.297 +int FMUSIC_FineTune2Hz(unsigned char ft); 63.298 + 63.299 +#endif 63.300 \ No newline at end of file
64.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 64.2 +++ b/minifmod/Sound.h Tue Nov 27 15:23:52 2007 +0100 64.3 @@ -0,0 +1,196 @@ 64.4 +/******************************************************************************/ 64.5 +/* SOUND.H */ 64.6 +/* ---------------- */ 64.7 +/* MiniFMOD public source code release. */ 64.8 +/* This source is provided as-is. Firelight Multimedia will not support */ 64.9 +/* or answer questions about the source provided. */ 64.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 64.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 64.12 +/* Firelight Multimedia is a registered business name. */ 64.13 +/* This source must not be redistributed without this notice. */ 64.14 +/******************************************************************************/ 64.15 + 64.16 +#ifndef _SOUND_H_ 64.17 +#define _SOUND_H_ 64.18 + 64.19 +#include <windows.h> 64.20 +#include <mmsystem.h> 64.21 + 64.22 +#include "system_memory.h" 64.23 + 64.24 +//= DEFINITIONS =============================================================================== 64.25 + 64.26 +#ifndef NULL 64.27 + #define NULL ((void *)(0L)) 64.28 +#endif 64.29 +#ifndef TRUE 64.30 + #define TRUE 1L 64.31 +#endif 64.32 +#ifndef FALSE 64.33 + #define FALSE 0L 64.34 +#endif 64.35 + 64.36 +#define FSOUND_LATENCY 20 64.37 + 64.38 +#define BLOCK_ON_SOFTWAREUPDATE() while(FSOUND_Software_UpdateMutex); 64.39 + 64.40 +/* 64.41 +[DEFINE_START] 64.42 +[ 64.43 + [NAME] 64.44 + FSOUND_MODES 64.45 + 64.46 + [DESCRIPTION] 64.47 + Sample description bitfields, OR them together for loading and describing samples. 64.48 +] 64.49 +*/ 64.50 +#define FSOUND_NORMAL 0x0 // Default sample type. Loop off, 8bit mono, signed, not hardware accelerated. 64.51 +#define FSOUND_LOOP_OFF 0x01 // For non looping samples. 64.52 +#define FSOUND_LOOP_NORMAL 0x02 // For forward looping samples. 64.53 +#define FSOUND_LOOP_BIDI 0x04 // For bidirectional looping samples. (no effect if in hardware). 64.54 +#define FSOUND_8BITS 0x08 // For 8 bit samples. 64.55 +#define FSOUND_16BITS 0x10 // For 16 bit samples. 64.56 +#define FSOUND_MONO 0x20 // For mono samples. 64.57 +#define FSOUND_STEREO 0x40 // For stereo samples. 64.58 +#define FSOUND_UNSIGNED 0x80 // For source data containing unsigned samples. 64.59 +#define FSOUND_SIGNED 0x100 // For source data containing signed data. 64.60 +#define FSOUND_DELTA 0x200 // For source data stored as delta values. 64.61 +#define FSOUND_IT214 0x400 // For source data stored using IT214 compression. 64.62 +#define FSOUND_IT215 0x800 // For source data stored using IT215 compression. 64.63 +// [DEFINE_END] 64.64 + 64.65 + 64.66 + 64.67 +/* 64.68 +[DEFINE_START] 64.69 +[ 64.70 + [NAME] 64.71 + FSOUND_SAMPLEMODE 64.72 + 64.73 + [DESCRIPTION] 64.74 + 64.75 + [SEE_ALSO] 64.76 + FSOUND_CD_Play 64.77 +] 64.78 +*/ 64.79 +#define FSOUND_FREE -1 // definition for dynamically allocated channel or sample 64.80 +// [DEFINE_END] 64.81 + 64.82 + 64.83 +// ============================================================================================== 64.84 +// STRUCTURE DEFINITIONS 64.85 +// ============================================================================================== 64.86 + 64.87 +// Sample type - contains info on sample 64.88 +typedef struct FSOUND_SAMPLE 64.89 +{ 64.90 + unsigned char *buff; // pointer to sound data 64.91 + 64.92 + // ==================================================================================== 64.93 + // BUGFIX 1.5 (finetune was in wrong place) 64.94 + // DONT CHANGE THE ORDER OF THESE NEXT MEMBERS AS THEY ARE ALL LOADED IN A SINGLE READ 64.95 + unsigned int length; // sample length (samples) 64.96 + unsigned int loopstart; // sample loop start (samples) 64.97 + unsigned int looplen; // sample loop length (samples) 64.98 + unsigned char defvol; // sample default volume 64.99 + signed char finetune; // finetune value from -128 to 127 64.100 + // ==================================================================================== 64.101 + 64.102 + int deffreq; // sample default speed in hz 64.103 + int defpan; // sample default pan 64.104 + 64.105 + unsigned char bits; // bits per sample 64.106 + unsigned char loopmode; // loop type 64.107 + 64.108 + // music stuff 64.109 + unsigned char globalvol; // sample global volume (scalar) 64.110 + signed char relative; // relative note 64.111 + int middlec; // finetuning adjustment to make for music samples.. relative to 8363hz 64.112 + unsigned int susloopbegin; // sample loop start 64.113 + unsigned int susloopend; // sample loop length 64.114 + unsigned char vibspeed; // vibrato speed 0-64 64.115 + unsigned char vibdepth; // vibrato depth 0-64 64.116 + unsigned char vibtype; // vibrato type 0=sine, 1=rampdown, 2=square, 3=random 64.117 + unsigned char vibrate; // vibrato rate 0-64 (like sweep?) 64.118 + 64.119 +} FSOUND_SAMPLE; 64.120 + 64.121 + 64.122 +// Channel type - contains information on a mixing channel 64.123 +typedef struct 64.124 +{ 64.125 + int index; // position in channel pool. 64.126 + int volume; // current volume (00-FFh). 64.127 + int frequency; // speed or rate of playback in hz. 64.128 + int pan; // panning value (00-FFh). 64.129 + int actualvolume; // driver level current volume. 64.130 + int actualpan; // driver level panning value. 64.131 + unsigned int sampleoffset; // sample offset (sample starts playing from here). 64.132 + 64.133 + FSOUND_SAMPLE *sptr; // currently playing sample 64.134 + 64.135 + // software mixer stuff 64.136 + unsigned int leftvolume; // mixing information. adjusted volume for left channel (panning involved) 64.137 + unsigned int rightvolume; // mixing information. adjusted volume for right channel (panning involved) 64.138 + unsigned int mixpos; // mixing information. high part of 32:32 fractional position in sample 64.139 + unsigned int mixposlo; // mixing information. low part of 32:32 fractional position in sample 64.140 + unsigned int speedlo; // mixing information. playback rate - low part fractional 64.141 + unsigned int speedhi; // mixing information. playback rate - high part fractional 64.142 + unsigned int speeddir; // mixing information. playback direction - forwards or backwards 64.143 + 64.144 + // software mixer volume ramping stuff 64.145 + unsigned int ramp_lefttarget; 64.146 + unsigned int ramp_righttarget; 64.147 + unsigned int ramp_leftvolume; 64.148 + unsigned int ramp_rightvolume; 64.149 + unsigned int ramp_leftspeed; 64.150 + unsigned int ramp_rightspeed; 64.151 + unsigned int ramp_count; 64.152 +} FSOUND_CHANNEL; 64.153 + 64.154 +//= FUNCTIONS ================================================================================= 64.155 + 64.156 +typedef struct 64.157 +{ 64.158 + WAVEHDR wavehdr; 64.159 + signed char *data; 64.160 +} FSOUND_SoundBlock; 64.161 + 64.162 + 64.163 +//= VARIABLE EXTERNS ========================================================================== 64.164 +#ifdef __cplusplus 64.165 +extern "C" 64.166 +{ 64.167 +#endif 64.168 + 64.169 +FSOUND_CHANNEL FSOUND_Channel[]; 64.170 +int FSOUND_MixRate; 64.171 +int FSOUND_BufferSize; // software buffersize 64.172 +int FSOUND_BufferSizeMs; 64.173 +HWAVEOUT FSOUND_WaveOutHandle; 64.174 +FSOUND_SoundBlock FSOUND_MixBlock; 64.175 + 64.176 +// mixing info 64.177 +signed char * FSOUND_MixBufferMem; // mix buffer memory block 64.178 +signed char * FSOUND_MixBuffer; // mix output buffer (16bit or 32bit) 64.179 +unsigned int FSOUND_MixerAddress; // actual address of the function 64.180 +int FSOUND_HWMixOffset; // the offset in the output buffer to mix into in bytes 64.181 +float FSOUND_OOMixRate; // mixing rate in hz. 64.182 +int FSOUND_BufferSize; // size of 1 'latency' ms buffer in bytes 64.183 +int FSOUND_BlockSize; // LATENCY ms worth of samples 64.184 + 64.185 +volatile signed char FSOUND_Software_Exit; // mixing thread termination flag 64.186 +volatile signed char FSOUND_Software_UpdateMutex; 64.187 +volatile signed char FSOUND_Software_ThreadFinished; 64.188 +volatile HANDLE FSOUND_Software_hThread; 64.189 +volatile int FSOUND_Software_FillBlock; 64.190 +volatile int FSOUND_Software_RealBlock; 64.191 + 64.192 +DWORD FSOUND_Software_DoubleBufferThread(LPDWORD lpdwParam); 64.193 +void FSOUND_Software_Fill(); 64.194 + 64.195 +#ifdef __cplusplus 64.196 +} 64.197 +#endif 64.198 + 64.199 +#endif 64.200 \ No newline at end of file
65.1 Binary file minifmod/Winmm.lib has changed
66.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 66.2 +++ b/minifmod/minifmod.h Tue Nov 27 15:23:52 2007 +0100 66.3 @@ -0,0 +1,73 @@ 66.4 +/******************************************************************************/ 66.5 +/* MINIFMOD.H */ 66.6 +/* ---------------- */ 66.7 +/* MiniFMOD public source code release. */ 66.8 +/* This source is provided as-is. Firelight Multimedia will not support */ 66.9 +/* or answer questions about the source provided. */ 66.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 66.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 66.12 +/* Firelight Multimedia is a registered business name. */ 66.13 +/* This source must not be redistributed without this notice. */ 66.14 +/******************************************************************************/ 66.15 + 66.16 +//========================================================================================== 66.17 +// MINIFMOD Main header file. Copyright (c), FireLight Multimedia 2000. 66.18 +// Based on FMOD, copyright (c), FireLight Multimedia 2000. 66.19 +//========================================================================================== 66.20 + 66.21 +#ifndef _MINIFMOD_H_ 66.22 +#define _MINIFMOD_H_ 66.23 + 66.24 +//=============================================================================================== 66.25 +//= DEFINITIONS 66.26 +//=============================================================================================== 66.27 + 66.28 +// fmod defined types 66.29 +typedef struct FMUSIC_MODULE FMUSIC_MODULE; 66.30 + 66.31 +//=============================================================================================== 66.32 +//= FUNCTION PROTOTYPES 66.33 +//=============================================================================================== 66.34 + 66.35 +#ifdef __cplusplus 66.36 +extern "C" { 66.37 +#endif 66.38 + 66.39 +// ================================== 66.40 +// Initialization / Global functions. 66.41 +// ================================== 66.42 +typedef void (*SAMPLELOADCALLBACK)(void *buff, int lenbytes, int numbits, int instno, int sampno); 66.43 +typedef void (*FMUSIC_CALLBACK)(FMUSIC_MODULE *mod, unsigned char param); 66.44 + 66.45 +// this must be called before FSOUND_Init! 66.46 +void FSOUND_File_SetCallbacks(unsigned int (*OpenCallback)(char *name), 66.47 + void (*CloseCallback)(unsigned int handle), 66.48 + int (*ReadCallback)(void *buffer, int size, unsigned int handle), 66.49 + void (*SeekCallback)(unsigned int handle, int pos, signed char mode), 66.50 + int (*TellCallback)(unsigned int handle)); 66.51 + 66.52 +signed char FSOUND_Init(int mixrate, int vcmmode); 66.53 +void FSOUND_Close(); 66.54 + 66.55 +// ============================================================================================= 66.56 +// FMUSIC API 66.57 +// ============================================================================================= 66.58 + 66.59 +// Song management / playback functions. 66.60 +// ===================================== 66.61 +FMUSIC_MODULE * FMUSIC_LoadSong(char *data, SAMPLELOADCALLBACK sampleloadcallback); 66.62 +signed char FMUSIC_FreeSong(FMUSIC_MODULE *mod); 66.63 +signed char FMUSIC_PlaySong(FMUSIC_MODULE *mod); 66.64 +signed char FMUSIC_StopSong(FMUSIC_MODULE *mod); 66.65 + 66.66 +// Runtime song information. 66.67 +// ========================= 66.68 +int FMUSIC_GetOrder(FMUSIC_MODULE *mod); 66.69 +int FMUSIC_GetRow(FMUSIC_MODULE *mod); 66.70 +unsigned int FMUSIC_GetTime(FMUSIC_MODULE *mod); 66.71 + 66.72 +#ifdef __cplusplus 66.73 +} 66.74 +#endif 66.75 + 66.76 +#endif
67.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 67.2 +++ b/minifmod/mixer_clipcopy.c Tue Nov 27 15:23:52 2007 +0100 67.3 @@ -0,0 +1,211 @@ 67.4 +/******************************************************************************/ 67.5 +/* MIXER_CLIPCOPY.C */ 67.6 +/* ---------------- */ 67.7 +/* MiniFMOD public source code release. */ 67.8 +/* This source is provided as-is. Firelight Multimedia will not support */ 67.9 +/* or answer questions about the source provided. */ 67.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 67.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 67.12 +/* Firelight Multimedia is a registered business name. */ 67.13 +/* This source must not be redistributed without this notice. */ 67.14 +/******************************************************************************/ 67.15 + 67.16 +#include "sound.h" 67.17 + 67.18 +static unsigned long mix_temp1 = 0; 67.19 +static const float mix_3times2pow51 = 3.0f * (float)(1L<<25) * (float)(1L<<26); 67.20 + 67.21 +// this is smaller but slower. 67.22 +#define USER_SMALLER_CLIPCOPY 67.23 + 67.24 +/* 67.25 +[API] 67.26 +[ 67.27 + [DESCRIPTION] 67.28 + Size optimized version of the commented out clipper below 67.29 + 67.30 + [PARAMETERS] 67.31 + 67.32 + [RETURN_VALUE] 67.33 + 67.34 + [REMARKS] 67.35 + This uses an fadd trick and does 2 float to ints in about 8 cycles.. which is what just 1 67.36 + fistp would take normally.. note this is meant for p5 machines, as ppro has a 1cycle 67.37 + fistp which is faster. 67.38 + 67.39 + [SEE_ALSO] 67.40 +] 67.41 +*/ 67.42 +#ifdef USER_SMALLER_CLIPCOPY 67.43 +void FSOUND_MixerClipCopy_Float32(void *dest, void *src, long len) 67.44 +{ 67.45 + int count; 67.46 + short *destptr = (short *)dest; 67.47 + float *srcptr = (float *)src; 67.48 + 67.49 + if (len <=0 || !dest || !src) 67.50 + return; 67.51 + 67.52 + for (count=0; count<len<<1; count++) 67.53 + { 67.54 + int val; 67.55 + __asm 67.56 + { 67.57 + mov eax, srcptr 67.58 + fld [eax] 67.59 + add srcptr, 4 67.60 + fistp val 67.61 + } 67.62 + *destptr++ = (val < -32768 ? -32768 : val > 32767 ? 32767 : val); 67.63 + } 67.64 + 67.65 +} 67.66 +#else 67.67 + 67.68 +void FSOUND_MixerClipCopy_Float32(void *dest, void *src, long len) 67.69 +{ 67.70 + __int64 lefti,righti; 67.71 + 67.72 + if (len <=0 || !dest || !src) 67.73 + return; 67.74 + 67.75 + __asm 67.76 + { 67.77 + fld mix_3times2pow51 // st0:magic 67.78 + 67.79 + // if there wasnt any channels mixed (all their sptr's were null) then just clear, dont clip 67.80 + jne ClipAndCopySetup 67.81 + xor eax, eax 67.82 + 67.83 + mov edi, dest 67.84 + mov ecx, len // number of dwords in 16bit stereo output stream 67.85 + rep stosd 67.86 + jmp MixerFPU_Stereo16_Finished 67.87 + 67.88 + //= Clip and copy 32bit mixbuffer to 16bit output for both pointers 67.89 + ClipAndCopySetup: 67.90 + mov esi, src // point esi to float 32bit mix buffer 67.91 + mov edi, dest // point edi to 16bit output stream 67.92 + mov ecx, len 67.93 + mov ebx, [edi] // preread destination into cache 67.94 + 67.95 + ClipAndCopyLoop: 67.96 + fld dword ptr [esi] // st0:left st1:magic 67.97 + fld dword ptr [esi+4] // st0:right st1:left st2:magic 67.98 + fadd st(0), st(2) // st0:right+magic st1:left st2:magic 67.99 + fxch // st0:left st1:right+magic st2:magic 67.100 + fadd st(0), st(2) // st0:left+magic st1:right+magic st2:magic 67.101 + fxch // st0:right+magic st1:left+magic st2:magic 67.102 + // 1st fadd 67.103 + // 67.104 + fstp qword ptr righti // st0:left+magic st1:magic 67.105 + fstp qword ptr lefti // st0:magic 67.106 + 67.107 + mov ebx, dword ptr lefti 67.108 + mov eax, dword ptr righti 67.109 + 67.110 + cmp eax, 32767 67.111 + jg clampmax2 67.112 + cmp eax, -32768 67.113 + jl clampmin2 67.114 + cmp ebx, 32767 67.115 + jg clampmax3 67.116 + cmp ebx, -32768 67.117 + jl clampmin3 67.118 + 67.119 + shl eax, 16 67.120 + and ebx, 00000FFFFh 67.121 + add esi, 8 67.122 + or eax, ebx 67.123 + mov [edi], eax 67.124 + add edi, 4 67.125 + dec ecx 67.126 + jnz ClipAndCopyLoop 67.127 + jmp MixerFPU_Stereo16_Finished 67.128 + 67.129 + clampmax2: 67.130 + mov eax, 07fff0000h 67.131 + nop 67.132 + cmp ebx, 32767 67.133 + jg clampmax4 67.134 + cmp ebx, -32768 67.135 + jl clampmin4 67.136 + 67.137 + and ebx, 00000FFFFh 67.138 + add esi, 8 67.139 + or eax, ebx 67.140 + nop 67.141 + mov [edi], eax 67.142 + add edi, 4 67.143 + dec ecx 67.144 + jnz ClipAndCopyLoop 67.145 + jmp MixerFPU_Stereo16_Finished 67.146 + 67.147 + clampmin2: 67.148 + mov eax, 080000000h 67.149 + nop 67.150 + cmp ebx, 32767 67.151 + jg clampmax4 67.152 + cmp ebx, -32768 67.153 + jl clampmin4 67.154 + 67.155 + and ebx, 00000FFFFh 67.156 + add esi, 8 67.157 + or eax, ebx 67.158 + nop 67.159 + mov [edi], eax 67.160 + add edi, 4 67.161 + dec ecx 67.162 + jnz ClipAndCopyLoop 67.163 + jmp MixerFPU_Stereo16_Finished 67.164 + 67.165 + clampmax3: 67.166 + shl eax, 16 67.167 + mov ebx, 000007FFFh 67.168 + or eax, ebx 67.169 + add esi, 8 67.170 + mov [edi], eax 67.171 + add edi, 4 67.172 + dec ecx 67.173 + jnz ClipAndCopyLoop 67.174 + jmp MixerFPU_Stereo16_Finished 67.175 + 67.176 + clampmin3: 67.177 + shl eax, 16 67.178 + mov ebx, 000008000h 67.179 + or eax, ebx 67.180 + add esi, 8 67.181 + mov [edi], eax 67.182 + add edi, 4 67.183 + dec ecx 67.184 + jnz ClipAndCopyLoop 67.185 + jmp MixerFPU_Stereo16_Finished 67.186 + 67.187 + clampmax4: 67.188 + mov ebx, 000007fffh 67.189 + add esi, 8 67.190 + or eax, ebx 67.191 + nop 67.192 + mov [edi], eax 67.193 + add edi, 4 67.194 + dec ecx 67.195 + jnz ClipAndCopyLoop 67.196 + jmp MixerFPU_Stereo16_Finished 67.197 + 67.198 + clampmin4: 67.199 + mov ebx, 000008000h 67.200 + add esi, 8 67.201 + or eax, ebx 67.202 + nop 67.203 + mov [edi], eax 67.204 + add edi, 4 67.205 + dec ecx 67.206 + jnz ClipAndCopyLoop 67.207 + 67.208 + MixerFPU_Stereo16_Finished: 67.209 + fstp mix_temp1 67.210 + 67.211 + } 67.212 +} 67.213 +#endif 67.214 +
68.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 68.2 +++ b/minifmod/mixer_clipcopy.h Tue Nov 27 15:23:52 2007 +0100 68.3 @@ -0,0 +1,18 @@ 68.4 +/******************************************************************************/ 68.5 +/* MIXER_CLIPCOPY.H */ 68.6 +/* ---------------- */ 68.7 +/* MiniFMOD public source code release. */ 68.8 +/* This source is provided as-is. Firelight Multimedia will not support */ 68.9 +/* or answer questions about the source provided. */ 68.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 68.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 68.12 +/* Firelight Multimedia is a registered business name. */ 68.13 +/* This source must not be redistributed without this notice. */ 68.14 +/******************************************************************************/ 68.15 + 68.16 +#ifndef _MIXER_CLIPCOPY_H 68.17 +#define _MIXER_CLIPCOPY_H 68.18 + 68.19 +void FSOUND_MixerClipCopy_Float32(void *dest, void *src, int len); 68.20 + 68.21 +#endif 68.22 \ No newline at end of file
69.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 69.2 +++ b/minifmod/mixer_fpu_ramp.c Tue Nov 27 15:23:52 2007 +0100 69.3 @@ -0,0 +1,777 @@ 69.4 +/******************************************************************************/ 69.5 +/* MIXER_FPU_RAMP.C */ 69.6 +/* ---------------- */ 69.7 +/* MiniFMOD public source code release. */ 69.8 +/* This source is provided as-is. Firelight Multimedia will not support */ 69.9 +/* or answer questions about the source provided. */ 69.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 69.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 69.12 +/* Firelight Multimedia is a registered business name. */ 69.13 +/* This source must not be redistributed without this notice. */ 69.14 +/******************************************************************************/ 69.15 + 69.16 +#include "minifmod.h" 69.17 +#include "sound.h" 69.18 +#include "mixer.h" 69.19 +#include "mixer_clipcopy.h" 69.20 +#include "mixer_fpu_ramp.h" 69.21 +#include "system_memory.h" 69.22 + 69.23 +//#define ROLLED TRUE // this would make it smaller but quite slow 69.24 +#define VOLUMERAMPING TRUE // enable/disable volume ramping 69.25 + 69.26 +#pragma warning(disable:4731) 69.27 + 69.28 +// ========================================================================================= 69.29 +// GLOBAL VARIABLES 69.30 +// ========================================================================================= 69.31 + 69.32 +//= made global to free ebp.============================================================================ 69.33 +static unsigned int mix_numsamples = 0; // number of samples to mix 69.34 +static unsigned int mix_mixptr = 0; 69.35 +static unsigned int mix_mixbuffend = 0; 69.36 +static unsigned int mix_mixbuffptr = 0; 69.37 +static unsigned int mix_endflag = 0; 69.38 +static unsigned int mix_sptr = 0; 69.39 +static unsigned int mix_cptr = 0; 69.40 +static unsigned int mix_count = 0; 69.41 +static unsigned int mix_samplebuff = 0; 69.42 +static float mix_leftvol = 0; 69.43 +static float mix_rightvol = 0; 69.44 +static unsigned int mix_temp1 = 0; 69.45 + 69.46 +static unsigned int mix_count_old = 0; 69.47 +static unsigned int mix_rampleftvol = 0; 69.48 +static unsigned int mix_ramprightvol= 0; 69.49 +static unsigned int mix_rampcount = 0; 69.50 +static unsigned int mix_rampspeedleft = 0; 69.51 +static unsigned int mix_rampspeedright = 0; 69.52 +unsigned int mix_volumerampsteps = 0; 69.53 +float mix_1overvolumerampsteps = 0; 69.54 + 69.55 +static const float mix_255 = 255.0f; 69.56 +static const float mix_256 = 256.0f; 69.57 +static const float mix_1over255 = 1.0f / 255.0f; 69.58 +static const float mix_1over256 = 1.0f / 256.0f; 69.59 +static const float mix_1over2gig = 1.0f / 2147483648.0f; 69.60 + 69.61 +/* 69.62 +[API] 69.63 +[ 69.64 + [DESCRIPTION] 69.65 + 69.66 + [PARAMETERS] 69.67 + 69.68 + [RETURN_VALUE] 69.69 + 69.70 + [REMARKS] 69.71 + 69.72 + [SEE_ALSO] 69.73 +] 69.74 +*/ 69.75 + 69.76 +void FSOUND_Mixer_FPU_Ramp(void *mixptr, int len, char returnaddress) 69.77 +{ 69.78 + static FSOUND_CHANNEL *cptr; 69.79 + static int count; 69.80 + // IMPORTANT no local variables on stack.. we are trashing EBP. static puts values on heap. 69.81 + 69.82 + if (len <=0) 69.83 + return; 69.84 + 69.85 + mix_numsamples = len; 69.86 + mix_mixptr = (unsigned int)mixptr; 69.87 + mix_mixbuffend = (unsigned int)mix_mixptr + (mix_numsamples << 3); 69.88 + 69.89 + 69.90 + //============================================================================================== 69.91 + // LOOP THROUGH CHANNELS 69.92 + //============================================================================================== 69.93 + for (count=0; count<64; count++) 69.94 + { 69.95 + cptr = &FSOUND_Channel[count]; 69.96 + 69.97 + __asm 69.98 + { 69.99 + push ebp 69.100 + 69.101 + mov ebx, mix_mixptr 69.102 + mov mix_mixbuffptr, ebx 69.103 + 69.104 + mov ecx, cptr 69.105 + mov mix_cptr, ecx 69.106 + 69.107 + cmp ecx, 0 // if (!cptr) ... 69.108 + je MixExit // ... then skip this channel! 69.109 + 69.110 + mov ebx, [ecx]FSOUND_CHANNEL.sptr // load the correct SAMPLE pointer for this channel 69.111 + mov mix_sptr, ebx // store sample pointer away 69.112 + cmp ebx, 0 // if (!sptr) ... 69.113 + je MixExit // ... then skip this channel! 69.114 + 69.115 + // get pointer to sample buffer 69.116 + mov eax, [ebx].buff 69.117 + mov mix_samplebuff, eax 69.118 + 69.119 + //============================================================================================== 69.120 + // LOOP THROUGH CHANNELS 69.121 + // through setup code:- usually ebx = sample pointer, ecx = channel pointer 69.122 + //============================================================================================== 69.123 + 69.124 + //= SUCCESS - SETUP CODE FOR THIS CHANNEL ====================================================== 69.125 + 69.126 + // ========================================================================================= 69.127 + // the following code sets up a mix counter. it sees what will happen first, will the output buffer 69.128 + // end be reached first? or will the end of the sample be reached first? whatever is smallest will 69.129 + // be the mixcount. 69.130 + 69.131 + // first base mixcount on size of OUTPUT BUFFER (in samples not bytes) 69.132 + mov eax, mix_numsamples 69.133 + 69.134 + CalculateLoopCount: 69.135 + mov mix_count, eax 69.136 + mov esi, [ecx].mixpos 69.137 + mov ebp, FSOUND_OUTPUTBUFF_END 69.138 + mov mix_endflag, ebp // set a flag to say mixing will end when end of output buffer is reached 69.139 + 69.140 + cmp [ecx].speeddir, FSOUND_MIXDIR_FORWARDS 69.141 + jne samplesleftbackwards 69.142 + 69.143 + // work out how many samples left from mixpos to loop end 69.144 + mov edx, [ebx].loopstart 69.145 + add edx, [ebx].looplen 69.146 + sub edx, esi // eax = samples left (loopstart+looplen-mixpos) 69.147 + mov eax, [ecx].mixposlo 69.148 + xor ebp, ebp 69.149 + sub ebp, eax 69.150 + sbb edx, 0 69.151 + mov eax, ebp 69.152 + jmp samplesleftfinish 69.153 + 69.154 + samplesleftbackwards: 69.155 + // work out how many samples left from mixpos to loop start 69.156 + mov edx, [ecx].mixpos 69.157 + mov eax, [ecx].mixposlo 69.158 + 69.159 + sub eax, 0h 69.160 + sbb edx, [ebx].loopstart 69.161 + 69.162 + samplesleftfinish: 69.163 + 69.164 + // edx:eax now contains number of samples left to mix 69.165 + cmp edx, 1000000h 69.166 + jae staywithoutputbuffend 69.167 + 69.168 + shrd eax, edx, 8 69.169 + shr edx, 8 69.170 + 69.171 + // now samples left = EDX:EAX -> hhhhhlll 69.172 + mov ebp, [ecx].speedhi 69.173 + mov edi, [ecx].speedlo 69.174 + shl ebp, 24 69.175 + shr edi, 8 69.176 + and edi, 000FFFFFFh 69.177 + or ebp, edi 69.178 + div ebp 69.179 + 69.180 + or edx,edx // if fractional 16-bit part is zero we must add an extra carry number 69.181 + jz dontaddbyte // to the resultant in EDX:EAX. 69.182 + inc eax 69.183 + dontaddbyte: // we must remove the fractional part of the multiply by shifting EDX:EAX 69.184 + cmp eax, mix_count 69.185 + ja staywithoutputbuffend 69.186 + mov mix_count, eax 69.187 + mov edx, FSOUND_SAMPLEBUFF_END // set a flag to say mix will end when end of output buffer is reached 69.188 + mov mix_endflag, edx 69.189 + staywithoutputbuffend: 69.190 + 69.191 + mov ecx, mix_cptr 69.192 + 69.193 + //= VOLUME RAMP SETUP ========================================================= 69.194 + // Reasons to ramp 69.195 + // 1. volume change 69.196 + // 2. sample starts (just treat as volume change - 0 to volume) 69.197 + // 3. sample ends (ramp last n number of samples from volume to 0) 69.198 + 69.199 + // now if the volume has changed, make end condition equal a volume ramp 69.200 + mov mix_rampspeedleft, 0 // clear out volume ramp 69.201 + mov mix_rampspeedright, 0 // clear out volume ramp 69.202 + 69.203 +#ifdef VOLUMERAMPING 69.204 + mov eax, mix_count 69.205 + mov mix_count_old, eax // remember mix count before modifying it 69.206 + 69.207 + mov mix_rampcount, 0 69.208 + cmp [ecx].ramp_count, 0 69.209 + je volumerampstart 69.210 + 69.211 + // if it tries to continue an old ramp, but the target has changed, 69.212 + // set up a new ramp 69.213 + mov eax, [ecx].leftvolume 69.214 + mov edx, [ecx].ramp_lefttarget 69.215 + cmp eax,edx 69.216 + jne volumerampstart 69.217 + mov eax, [ecx].rightvolume 69.218 + mov edx, [ecx].ramp_righttarget 69.219 + cmp eax,edx 69.220 + jne volumerampstart 69.221 + 69.222 + // restore old ramp 69.223 + mov eax, [ecx].ramp_count 69.224 + mov mix_rampcount, eax 69.225 + mov eax, [ecx].ramp_leftspeed 69.226 + mov mix_rampspeedleft, eax 69.227 + mov eax, [ecx].ramp_rightspeed 69.228 + mov mix_rampspeedright, eax 69.229 + 69.230 + jmp novolumerampR 69.231 + 69.232 + volumerampstart: 69.233 + mov eax, [ecx].leftvolume 69.234 + mov edx, [ecx].ramp_leftvolume 69.235 + shr edx, 8 69.236 + mov [ecx].ramp_lefttarget, eax 69.237 + sub eax, edx 69.238 + cmp eax, 0 69.239 + je novolumerampL 69.240 + 69.241 + mov mix_temp1, eax 69.242 + fild mix_temp1 69.243 + fmul mix_1over255 69.244 + fmul mix_1overvolumerampsteps 69.245 + fstp mix_rampspeedleft 69.246 + mov eax, mix_rampspeedleft 69.247 + mov [ecx].ramp_leftspeed, eax 69.248 + mov eax, mix_volumerampsteps 69.249 + mov mix_rampcount, eax 69.250 + 69.251 + 69.252 + novolumerampL: 69.253 + mov eax, [ecx].rightvolume 69.254 + mov edx, [ecx].ramp_rightvolume 69.255 + shr edx, 8 69.256 + mov [ecx].ramp_righttarget, eax 69.257 + sub eax, edx 69.258 + cmp eax, 0 69.259 + je novolumerampR 69.260 + 69.261 + mov mix_temp1, eax 69.262 + fild mix_temp1 69.263 + fmul mix_1over255 69.264 + fmul mix_1overvolumerampsteps 69.265 + fstp mix_rampspeedright 69.266 + mov eax, mix_rampspeedright 69.267 + mov [ecx].ramp_rightspeed, eax 69.268 + mov eax, mix_volumerampsteps 69.269 + mov mix_rampcount, eax 69.270 + 69.271 + 69.272 + novolumerampR: 69.273 + 69.274 + mov eax, mix_rampcount 69.275 + cmp eax, 0 69.276 + jle volumerampend 69.277 + 69.278 + mov [ecx].ramp_count, eax 69.279 + 69.280 + cmp mix_count, eax 69.281 + jbe volumerampend // dont clamp mixcount 69.282 + mov mix_count, eax 69.283 + volumerampend: 69.284 +#endif 69.285 + 69.286 + 69.287 + //= SET UP VOLUME MULTIPLIERS ================================================== 69.288 + 69.289 + // set up left/right volumes 69.290 + mov ecx, mix_cptr 69.291 + 69.292 + 69.293 + // right volume 69.294 + mov eax, [ecx].rightvolume 69.295 + mov mix_temp1, eax 69.296 + fild mix_temp1 69.297 + fmul mix_1over255 69.298 + fstp mix_rightvol 69.299 + 69.300 + // left volume 69.301 + mov eax, [ecx].leftvolume 69.302 + mov mix_temp1, eax 69.303 + fild mix_temp1 69.304 + fmul mix_1over255 69.305 + fstp mix_leftvol 69.306 + 69.307 + // right ramp volume 69.308 + mov eax, [ecx].ramp_rightvolume 69.309 + mov mix_temp1, eax 69.310 + fild mix_temp1 69.311 + fmul mix_1over256 // first convert from 24:8 to 0-255 69.312 + fmul mix_1over255 // now make 0-1.0f 69.313 + fstp mix_ramprightvol 69.314 + 69.315 + // left ramp volume 69.316 + mov eax, [ecx].ramp_leftvolume 69.317 + mov mix_temp1, eax 69.318 + fild mix_temp1 69.319 + fmul mix_1over256 // first convert from 24:8 to 0-255 69.320 + fmul mix_1over255 // now make 0-1.0f 69.321 + fstp mix_rampleftvol 69.322 + 69.323 + 69.324 + //= SET UP ALL OF THE REGISTERS HERE FOR THE INNER LOOP ==================================== 69.325 + // eax = --- 69.326 + // ebx = speed low 69.327 + // ecx = speed high 69.328 + // edx = counter 69.329 + // esi = mixpos 69.330 + // edi = destination pointer 69.331 + // ebp = mixpos low 69.332 + 69.333 + mov eax, mix_cptr 69.334 + mov ebx, [eax].speedlo 69.335 + mov ecx, [eax].speedhi 69.336 + // mov edx, mix_count 69.337 + mov ebp, [eax].mixposlo 69.338 + mov esi, [eax].mixpos 69.339 + mov edi, mix_mixbuffptr // point edi to 16bit output stream 69.340 + 69.341 + cmp [eax].speeddir, FSOUND_MIXDIR_FORWARDS 69.342 + je NoChangeSpeed 69.343 + xor ebx, 0FFFFFFFFh 69.344 + xor ecx, 0FFFFFFFFh 69.345 + add ebx, 1 69.346 + adc ecx, 0 69.347 + NoChangeSpeed: 69.348 + 69.349 + 69.350 + //====================================================================================== 69.351 + // ** 16 BIT NORMAL FUNCTIONS ********************************************************** 69.352 + //====================================================================================== 69.353 + 69.354 + mov eax, mix_samplebuff 69.355 + shr eax, 1 69.356 + add esi, eax 69.357 + 69.358 + mov edx, mix_count 69.359 + 69.360 + #ifdef VOLUMERAMPING 69.361 + cmp mix_rampcount, 0 69.362 + jne MixLoopStart16_2 69.363 + #endif 69.364 + 69.365 + #ifdef ROLLED 69.366 + jmp MixLoopStart16 69.367 + #endif 69.368 + shr edx, 1 69.369 + or edx, edx 69.370 + jz MixLoopStart16 // no groups of 2 samples to mix! 69.371 + 69.372 +// START 69.373 + 69.374 + shr ebp, 1 // 1 make 31bit coz fpu only loads signed values 69.375 + add edi, 16 // 69.376 + fild word ptr [esi+esi+2] // 1 [0]samp1+1 69.377 + mov mix_temp1, ebp // 1 69.378 +// nop 69.379 + fild word ptr [esi+esi] // 1 [0]samp1 [1]samp1+1 69.380 + fild dword ptr mix_temp1 // 1 [0]ifrac1 [1]samp1 [2]samp1+1 69.381 + add ebp, ebp // 1 69.382 +// nop 69.383 + add ebp, ebx // 1 69.384 + adc esi, ecx // 1 69.385 + fmul mix_1over2gig // 1 [0]ffrac1 [1]samp1 [2]samp1+1 69.386 + fild word ptr [esi+esi+2] // 1 [0]samp2+1 [1]ffrac1 [2]samp1 [3]samp1+1 69.387 + shr ebp, 1 // 1 69.388 +// nop 69.389 + mov mix_temp1, ebp // 1 69.390 +// nop 69.391 + fild dword ptr mix_temp1 // 1 [0]ifrac2 [1]samp2+1 [2]ffrac1 [3]samp1 [4]samp1+1 69.392 + fild word ptr [esi+esi] // 1 [0]samp2 [1]ifrac2 [2]samp2+1 [3]ffrac1 [4]samp1 [5]samp1+1 69.393 + fxch st(5) // [0]samp1+1 [1]ifrac2 [2]samp2+1 [3]ffrac1 [4]samp1 [5]samp2 69.394 + fsub st(0), st(4) // 1 [0]delta1 [1]ifrac2 [2]samp2+1 [3]ffrac1 [4]samp1 [5]samp2 69.395 +// fnop // 1 fsub stall 69.396 + shl ebp, 1 // 1 69.397 +// nop 69.398 + fmulp st(3), st(0) // 1 [0]ifrac2 [1]samp2+1 [2]interp1 [3]samp1 [4]samp2 69.399 + fmul mix_1over2gig // 1 [0]ffrac2 [1]samp2+1 [2]interp1 [3]samp1 [4]samp2 69.400 + fxch st(1) // [0]samp2+1 [1]ffrac2 [2]interp1 [3]samp1 [4]samp2 69.401 + fsub st(0), st(4) // 1 [0]delta2 [1]ffrac2 [2]interp1 [3]samp1 [4]samp2 69.402 + add ebp, ebx // 1 69.403 +// nop 69.404 + adc esi, ecx // 1 69.405 +// nop 69.406 + fmulp st(1), st(0) // 1 [0]interp2 [1]interp1 [2]samp1 [3]samp2 69.407 + fxch st(1) // [0]interp1 [1]interp2 [2]samp1 [3]samp2 69.408 + faddp st(2), st(0) // 1 [0]interp2 [1]newsamp1 [2]samp2 69.409 +// fnop // 1 fadd stall 69.410 +// fnop // 1 fadd stall 69.411 + fld st(1) // 1 [0]newsamp1 [1]interp2 [2]newsamp1 [3]samp2 69.412 + fmul mix_leftvol // 1 [0]newsampL1 [1]interp2 [2]newsamp1 [3]samp2 69.413 + fxch st(1) // [0]interp2 [1]newsampL1 [2]newsamp1 [3]samp2 69.414 + faddp st(3), st(0) // 1 [0]newsampL1 [1]newsamp1 [2]newsamp2 69.415 + fxch st(1) // 1 [0]newsamp1 [1]newsampL1 [2]newsamp2 69.416 + jmp MixLoopUnroll16CoilEntry// 1 69.417 + 69.418 + ALIGN 16 69.419 + 69.420 + MixLoopUnroll16: 69.421 + shr ebp, 1 // 1 69.422 +// nop 69.423 + mov mix_temp1, ebp // 1 69.424 +// nop 69.425 + fild word ptr [esi+esi+2] // 1 [0]samp1+1 [1]finalR2 [2]finalR1 [3]finalL2 69.426 + fild word ptr [esi+esi] // 1 [0]samp1 [1]samp1+1 [2]finalR2 [3]finalR1 [4]finalL2 69.427 + fild dword ptr mix_temp1 // 1 [0]ifrac1 [1]samp1 [2]samp1+1 [3]finalR2 [4]finalR1 [5]finalL2 69.428 + add ebp, ebp // 1 69.429 +// nop 69.430 + add ebp, ebx // 1 69.431 +// nop 69.432 + adc esi, ecx // 1 69.433 + add edi, 16 // 69.434 + fmul mix_1over2gig // 1 [0]ffrac1 [1]samp1 [2]samp1+1 [3]finalR2 [4]finalR1 [5]finalL2 69.435 + shr ebp, 1 // 1 69.436 +// nop 69.437 + mov mix_temp1, ebp // 1 69.438 +// nop 69.439 + fild dword ptr mix_temp1 // 1 [0]ifrac2 [1]ffrac1 [2]samp1 [3]samp1+1 [4]finalR2 [5]finalR1 [6]finalL2 69.440 + fild word ptr [esi+esi+2] // 1 [0]samp2+1 [1]ifrac2 [2]ffrac1 [3]samp1 [4]samp1+1 [5]finalR2 [6]finalR1 [7]finalL2 69.441 + fxch st(4) // [0]samp1+1 [1]ifrac2 [2]ffrac1 [3]samp1 [4]samp2+1 [5]finalR2 [6]finalR1 [7]finalL2 69.442 + fsub st(0), st(3) // 1 [0]delta1 [1]ifrac2 [2]ffrac1 [3]samp1 [4]samp2+1 [5]finalR2 [6]finalR1 [7]finalL2 69.443 +// fnop // 1 fsub stall 69.444 + shl ebp, 1 // 1 69.445 +// nop 69.446 + fmulp st(2), st(0) // 1 [0]ifrac2 [1]interp1 [2]samp1 [3]samp2+1 [4]finalR2 [5]finalR1 [6]finalL2 69.447 + fild word ptr [esi+esi] // 1 [0]samp2 [1]ifrac2 [2]interp1 [3]samp1 [4]samp2+1 [5]finalR2 [6]finalR1 [7]finalL2 69.448 + fxch st(1) // [0]ifrac2 [1]samp2 [2]interp1 [3]samp1 [4]samp2+1 [5]finalR2 [6]finalR1 [7]finalL2 69.449 + fmul mix_1over2gig // 1 [0]ffrac2 [1]samp2 [2]interp1 [3]samp1 [4]samp2+1 [5]finalR2 [6]finalR1 [7]finalL2 69.450 + fxch st(4) // [0]samp2+1 [1]samp2 [2]interp1 [3]samp1 [4]ffrac2 [5]finalR2 [6]finalR1 [7]finalL2 69.451 + fsub st(0), st(1) // 1 [0]delta2 [1]samp2 [2]interp1 [3]samp1 [4]ffrac2 [5]finalR2 [6]finalR1 [7]finalL2 69.452 + add ebp, ebx // 1 69.453 +// nop 69.454 + adc esi, ecx // 1 69.455 +// nop 69.456 + fmulp st(4), st(0) // 1 [0]samp2 [1]interp1 [2]samp1 [3]interp2 [4]finalR2 [5]finalR1 [6]finalL2 69.457 + fxch st(2) // [0]samp1 [1]interp1 [2]samp2 [3]interp2 [4]finalR2 [5]finalR1 [6]finalL2 69.458 + faddp st(1), st(0) // 1 [0]newsamp1 [1]samp2 [2]interp2 [3]finalR2 [4]finalR1 [5]finalL2 69.459 + fxch st(4) // [0]finalR1 [1]samp2 [2]interp2 [3]finalR2 [4]newsamp1 [5]finalL2 69.460 + fstp dword ptr [edi-28] // 2 [0]samp2 [1]interp2 [2]finalR2 [3]newsamp1 [4]finalL2 69.461 + fxch st(4) // 1 [0]finalL2 [1]interp2 [2]finalR2 [3]newsamp1 [4]samp2 69.462 + fstp dword ptr [edi-24] // 2 [0]interp2 [1]finalR2 [2]newsamp1 [3]samp2 69.463 + fld st(2) // 1 [0]newsamp1 [1]interp2 [2]finalR2 [3]newsamp1 [4]samp2 69.464 + fmul mix_leftvol // 1 [0]newsampL1 [1]interp2 [2]finalR2 [3]newsamp1 [4]samp2 69.465 + fxch st(1) // [0]interp2 [1]newsampL1 [2]finalR2 [3]newsamp1 [4]samp2 69.466 + faddp st(4), st(0) // 1 [0]newsampL1 [1]finalR2 [2]newsamp1 [3]newsamp2 69.467 + fxch st(1) // [0]finalR2 [1]newsampL1 [2]newsamp1 [3]newsamp2 69.468 + fstp dword ptr [edi-20] // 2 [0]newsampL1 [1]newsamp1 [2]newsamp2 69.469 + fxch st(1) // 1 [0]newsamp1 [1]newsampL1 [2]newsamp2 69.470 + 69.471 + MixLoopUnroll16CoilEntry: // [0]newsamp1 [1]newsampL1 [2]newsamp2 69.472 + 69.473 + fmul mix_rightvol // 1 [0]newsampR1 [1]newsampL1 [2]newsamp2 69.474 + fxch st(2) // [0]newsamp2 [1]newsampL1 [2]newsampR1 69.475 + fld st(0) // 1 [0]newsamp2 [1]newsamp2 [2]newsampL1 [3]newsampR1 69.476 + fmul mix_leftvol // 1 [0]newsampL2 [1]newsamp2 [2]newsampL1 [3]newsampR1 69.477 + fxch st(1) // [0]newsamp2 [1]newsampL2 [2]newsampL1 [3]newsampR1 69.478 +// fnop // 1 delay on mul unit 69.479 + fmul mix_rightvol // 1 [0]newsampR2 [1]newsampL2 [2]newsampL1 [3]newsampR1 69.480 + fxch st(2) // [0]newsampL1 [1]newsampL2 [2]newsampR2 [3]newsampR1 69.481 + fadd dword ptr [edi-16] // 1 [0]finalL1 [1]newsampL2 [2]newsampR2 [3]newsampR1 69.482 + fxch st(3) // [0]newsampR1 [1]newsampL2 [2]newsampR2 [3]finalL1 69.483 + fadd dword ptr [edi-12] // 1 [0]finalR1 [1]newsampL2 [2]newsampR2 [3]finalL1 69.484 + fxch st(1) // [0]newsampL2 [1]finalR1 [2]newsampR2 [3]finalL1 69.485 + fadd dword ptr [edi-8] // 1 [0]finalL2 [1]finalR1 [2]newsampR2 [3]finalL1 69.486 + fxch st(3) // [0]finalL1 [1]finalR1 [2]newsampR2 [3]finalL2 69.487 +// fnop // 1 delay on store? 69.488 + fstp dword ptr [edi-16] // 2 [0]finalR1 [1]newsampR2 [2]finalL2 69.489 + fxch st(1) // 1 [0]newsampR2 [1]finalR1 [2]finalL2 69.490 + fadd dword ptr [edi-4] // 1 [0]finalR2 [1]finalR1 [2]finalL2 69.491 + 69.492 + dec edx // 1 69.493 + jnz MixLoopUnroll16 // 69.494 + 69.495 + fxch st(1) // 1 [0]finalR1 [1]finalR2 [2]finalL2 69.496 + fstp dword ptr [edi-12] // 2 [0]finalR2 [1]finalL2 69.497 + fxch st(1) // 1 [0]finalL2 [1]finalR2 69.498 + fstp dword ptr [edi-8] // 2 [0]finalR2 69.499 + fstp dword ptr [edi-4] // 2 69.500 + 69.501 + //= MIX 16BIT, ROLLED ================================================================== 69.502 + MixLoopStart16: 69.503 + mov edx, mix_count 69.504 + #ifndef ROLLED 69.505 + and edx, 1 69.506 + #endif 69.507 + 69.508 + #ifdef VOLUMERAMPING 69.509 + MixLoopStart16_2: 69.510 + #endif 69.511 + or edx, edx // if count == 0 dont enter the mix loop 69.512 + jz MixLoopEnd16 69.513 + 69.514 + #ifdef VOLUMERAMPING 69.515 + fld mix_rampspeedleft // [0]rampspeedL 69.516 + fld mix_rampspeedright // [0]rampspeedR [1]rampspeedL 69.517 + fld mix_rampleftvol // [0]lvol [1]rampspeedR [2]rampspeedL 69.518 + fld mix_ramprightvol // [0]rvol [1]lvol [2]rampspeedR [3]rampspeedL 69.519 + #else 69.520 + fldz // [0]rampspeedL 69.521 + fldz // [0]rampspeedR [1]rampspeedL 69.522 + fld mix_leftvol // [0]lvol [1]rampspeedR [2]rampspeedL 69.523 + fld mix_rightvol // [0]rvol [1]lvol [2]rampspeedR [3]rampspeedL 69.524 + #endif 69.525 + jmp MixLoop16 69.526 + 69.527 + ALIGN 16 69.528 + 69.529 + MixLoop16: 69.530 + shr ebp, 1 // 1 make 31bit coz fpu only loads signed values 69.531 + add edi, 8 // 69.532 + fild word ptr [esi+esi+2] // 1 [0]samp1+1 [1]rvol [2]lvol [3]rampspeedR [4]rampspeedL 69.533 + mov mix_temp1, ebp // 1 69.534 + fild word ptr [esi+esi] // 1 [0]samp1 [2]samp1+1 [3]rvol [4]lvol [5]rampspeedR [6]rampspeedL 69.535 + fild dword ptr mix_temp1 // 1 [0]ifrac [1]samp1 [2]samp1+1 [3]rvol [4]lvol [5]rampspeedR [6]rampspeedL 69.536 + shl ebp, 1 // 1 restore mixpos low 69.537 + add ebp, ebx // add speed low to mixpos low 69.538 + adc esi, ecx // 1 add upper portion of speed plus carry 69.539 +// nop 69.540 + fmul mix_1over2gig // 1 [0]ifrac [1]samp1 [2]samp1+1 [3]rvol [4]lvol [5]rampspeedR [6]rampspeedL 69.541 + fxch st(2) // [0]samp1+1 [1]samp1 [2]ffrac [3]rvol [4]lvol [5]rampspeedR [6]rampspeedL 69.542 + fsub st(0), st(1) // 1 [0]delta1 [1]samp1 [2]ffrac [3]rvol [4]lvol [5]rampspeedR [6]rampspeedL 69.543 +// fnop // 1 69.544 +// fnop // 1 69.545 +// fnop // 1 69.546 + fmulp st(2), st(0) // 1 [0]sample [1]interp [2]rvol [3]lvol [4]rampspeedR [5]rampspeedL 69.547 +// fnop // 1 69.548 +// fnop // 1 69.549 +// fnop // 1 69.550 +// fnop // 1 69.551 + faddp st(1), st(0) // 1 [0]newsamp [1]rvol [2]lvol [3]rampspeedR [4]rampspeedL 69.552 +// fnop // 1 69.553 +// fnop // 1 69.554 + fld st(0) // 1 [0]newsamp [1]newsamp [2]rvol [3]lvol [4]rampspeedR [5]rampspeedL 69.555 + fmul st(0), st(3) // 1 [0]newsampL [1]newsamp [2]rvol [3]lvol [4]rampspeedR [5]rampspeedL 69.556 + fxch st(3) // [0]lvol [1]newsamp [2]rvol [3]newsampL [4]rampspeedR [5]rampspeedL 69.557 + fadd st(0), st(5) // 1 [0]lvol [1]newsamp [2]rvol [3]newsampL [4]rampspeedR [5]rampspeedL 69.558 + fxch st(1) // [0]newsamp [1]lvol [2]rvol [3]newsampL [4]rampspeedR [5]rampspeedL 69.559 + fmul st(0), st(2) // 1 [0]newsampR [1]lvol [2]rvol [3]newsampL [4]rampspeedR [5]rampspeedL 69.560 + fxch st(2) // [0]rvol [1]lvol [2]newsampR [3]newsampL [4]rampspeedR [5]rampspeedL 69.561 + fadd st(0), st(4) // 1 [0]rvol [1]lvol [2]newsampR [3]newsampL [4]rampspeedR [5]rampspeedL 69.562 + fxch st(3) // [0]newsampL [1]lvol [2]newsampR [3]rvol [4]rampspeedR [5]rampspeedL 69.563 +// fnop // 1 69.564 +// fnop // 1 69.565 + fadd dword ptr [edi-8] // 1 [0]finalL [1]lvol [2]newsampR [3]rvol [4]rampspeedR [5]rampspeedL 69.566 + fxch st(2) // [0]newsampR [1]lvol [2]finalL [3]rvol [4]rampspeedR [5]rampspeedL 69.567 + fadd dword ptr [edi-4] // 1 [0]finalR [1]lvol [2]finalL [3]rvol [4]rampspeedR [5]rampspeedL 69.568 + fxch st(2) // [0]finalL [1]lvol [2]finalR [3]rvol [4]rampspeedR [5]rampspeedL 69.569 +// fnop // 1 69.570 + fstp dword ptr [edi-8] // 1 [0]lvol [1]finalR [2]rvol [3]rampspeedR [4]rampspeedL 69.571 + fxch st(1) // [0]finalR [1]lvol [2]rvol [3]rampspeedR [4]rampspeedL 69.572 + fstp dword ptr [edi-4] // 3 [0]lvol [1]rvol [2]rampspeedR [3]rampspeedL 69.573 + fxch st(1) // [0]rvol [1]lvol [2]rampspeedR [3]rampspeedL 69.574 + 69.575 + dec edx // 1 69.576 + jnz MixLoop16 // 69.577 + 69.578 + fxch st(2) // [0]rampspeedR [1]lvol [2]rvol [3]rampspeedL 69.579 + fstp mix_rampspeedright // [0]lvol [1]rvol [2]rampspeedL 69.580 + fxch st(2) // [0]rampspeedL [1]rvol [2]lvol 69.581 + fstp mix_rampspeedleft // [0]rvol [1]lvol 69.582 + 69.583 + fmul mix_255 // [0]rvol*255 [1]lvol 69.584 + fmul mix_256 // [0]rvol*255*256 [1]lvol 69.585 + fxch st(1) // [0]lvol [1]rvol*255*256 69.586 + fmul mix_255 // [0]lvol*255 [1]rvol*255*256 69.587 + fmul mix_256 // [0]lvol*255*256 [1]rvol*255*256 69.588 + 69.589 + xor eax, eax 69.590 + fistp mix_rampleftvol // [0]rvol*255*256 69.591 + fistp mix_ramprightvol // 69.592 + 69.593 + MixLoopEnd16: 69.594 + mov eax, mix_samplebuff 69.595 + shr eax, 1 69.596 + sub esi, eax 69.597 + 69.598 +#ifdef VOLUMERAMPING 69.599 + //============================================================================================= 69.600 + // DID A VOLUME RAMP JUST HAPPEN 69.601 + //============================================================================================= 69.602 + cmp mix_rampcount, 0 69.603 + je DoOutputbuffEnd // no, no ramp 69.604 + 69.605 + mov ebx, mix_sptr // load ebx with sample pointer 69.606 + mov ecx, mix_cptr // load ecx with channel pointer 69.607 + 69.608 + mov eax, mix_rampleftvol 69.609 + mov [ecx].ramp_leftvolume, eax 69.610 + mov eax, mix_ramprightvol 69.611 + mov [ecx].ramp_rightvolume, eax 69.612 + 69.613 + mov eax, mix_count 69.614 + mov edx, mix_rampcount 69.615 + 69.616 + sub edx, eax 69.617 + 69.618 + mov mix_rampspeedleft, 0 // clear out volume ramp 69.619 + mov mix_rampspeedright, 0 // clear out volume ramp 69.620 + mov mix_rampcount, edx 69.621 + mov [ecx].ramp_count, edx 69.622 + 69.623 + // if rampcount now = 0, a ramp has FINISHED, so finish the rest of the mix 69.624 + cmp edx, 0 69.625 + jne DoOutputbuffEnd 69.626 + 69.627 + // clear out the ramp speeds 69.628 + mov [ecx].ramp_leftspeed, 0 69.629 + mov [ecx].ramp_rightspeed, 0 69.630 + 69.631 + // clamp the 2 volumes together in case the speed wasnt accurate enough! 69.632 + mov edx, [ecx].leftvolume 69.633 + shl edx, 8 69.634 + mov [ecx].ramp_leftvolume, edx 69.635 + mov edx, [ecx].rightvolume 69.636 + shl edx, 8 69.637 + mov [ecx].ramp_rightvolume, edx 69.638 + 69.639 + // is it 0 because ramp ended only? or both ended together?? 69.640 + // if sample ended together with ramp.. problems .. loop isnt handled 69.641 + 69.642 + cmp mix_count_old, eax // ramp and output mode ended together 69.643 + je DoOutputbuffEnd 69.644 + 69.645 + // start again and continue rest of mix 69.646 + mov [ecx].mixpos, esi 69.647 + mov [ecx].mixposlo, ebp 69.648 + 69.649 + mov eax, mix_mixbuffend // find out how many OUTPUT samples left to mix 69.650 + sub eax, edi 69.651 + shr eax, 3 // eax now holds # of samples left, go recalculate mix_count!!! 69.652 + mov mix_mixbuffptr, edi // update the new mixbuffer pointer 69.653 + 69.654 + cmp eax, 0 // dont start again if nothing left 69.655 + jne CalculateLoopCount 69.656 + 69.657 + DoOutputbuffEnd: 69.658 +#endif 69.659 + cmp mix_endflag, FSOUND_OUTPUTBUFF_END 69.660 + je FinishUpChannel 69.661 + 69.662 + //============================================================================================= 69.663 + // SWITCH ON LOOP MODE TYPE 69.664 + //============================================================================================= 69.665 + mov ebx, mix_sptr // load ebx with sample pointer 69.666 + mov ecx, mix_cptr // load ecx with sample pointer 69.667 + 69.668 + mov dl, [ebx].loopmode 69.669 + 69.670 + // check for normal loop 69.671 + test dl, FSOUND_LOOP_NORMAL 69.672 + jz CheckBidiLoop 69.673 + 69.674 + mov eax, [ebx].loopstart 69.675 + add eax, [ebx].looplen 69.676 + rewindsample: 69.677 + sub esi, [ebx].looplen 69.678 + cmp esi, eax 69.679 + jae rewindsample 69.680 + 69.681 + mov [ecx].mixpos, esi 69.682 + mov [ecx].mixposlo, ebp 69.683 + mov eax, mix_mixbuffend // find out how many samples left to mix for the output buffer 69.684 + sub eax, edi 69.685 + shr eax, 3 // eax now holds # of samples left, go recalculate mix_count!!! 69.686 + mov mix_mixbuffptr, edi // update the new mixbuffer pointer 69.687 + 69.688 + cmp eax, 0 69.689 + je FinishUpChannel 69.690 + 69.691 + jmp CalculateLoopCount 69.692 + 69.693 + CheckBidiLoop: 69.694 + test dl, FSOUND_LOOP_BIDI 69.695 + jz NoLoop 69.696 + cmp [ecx].speeddir, FSOUND_MIXDIR_FORWARDS 69.697 + je BidiForward 69.698 + 69.699 + BidiBackwards: 69.700 + mov eax, [ebx].loopstart 69.701 + dec eax 69.702 + // mov edx, 0ffffff00h 69.703 + mov edx, 0ffffffffh 69.704 + sub edx, ebp 69.705 + sbb eax, esi 69.706 + 69.707 + mov esi, eax 69.708 + mov ebp, edx // esi:ebp = loopstart - mixpos 69.709 + mov eax, [ebx].loopstart 69.710 + mov edx, 0h 69.711 + add ebp, edx 69.712 + adc esi, eax // esi:ebp += loopstart 69.713 + 69.714 + mov [ecx].speeddir, FSOUND_MIXDIR_FORWARDS 69.715 + 69.716 + mov eax, [ebx].loopstart 69.717 + add eax, [ebx].looplen 69.718 + cmp esi, eax 69.719 + jge BidiForward 69.720 + 69.721 + jmp BidiFinish 69.722 + BidiForward: 69.723 + mov eax, [ebx].loopstart 69.724 + add eax, [ebx].looplen 69.725 + mov edx, 0h 69.726 + sub edx, ebp 69.727 + sbb eax, esi 69.728 + mov esi, eax 69.729 + mov ebp, edx // esi:ebp = loopstart+looplen - mixpos 69.730 + 69.731 + mov eax, [ebx].loopstart 69.732 + add eax, [ebx].looplen 69.733 + dec eax 69.734 + // mov edx, 0ffffff00h 69.735 + mov edx, 0ffffffffh 69.736 + add ebp, edx 69.737 + adc esi, eax 69.738 + 69.739 + mov [ecx].speeddir, FSOUND_MIXDIR_BACKWARDS 69.740 + 69.741 + cmp esi, [ebx].loopstart 69.742 + jl BidiBackwards 69.743 + 69.744 + BidiFinish: 69.745 + 69.746 + mov [ecx].mixpos, esi 69.747 + mov [ecx].mixposlo, ebp 69.748 + 69.749 + mov eax, mix_mixbuffend // find out how many samples left to mix for the output buffer 69.750 + sub eax, edi 69.751 + shr eax, 3 // eax now holds # of samples left, go recalculate mix_count!!! 69.752 + mov mix_mixbuffptr, edi // update the new mixbuffer pointer 69.753 + 69.754 + cmp eax, 0 69.755 + je FinishUpChannel 69.756 + 69.757 + jmp CalculateLoopCount 69.758 + 69.759 + NoLoop: 69.760 + xor ebp, ebp 69.761 + xor esi, esi 69.762 + mov [ecx]FSOUND_CHANNEL.sptr, esi // clear the sample pointer out 69.763 + 69.764 + //= LEAVE INNER LOOP 69.765 + FinishUpChannel: 69.766 + mov ecx, [mix_cptr] 69.767 + 69.768 + mov [ecx].mixposlo, ebp 69.769 + mov [ecx].mixpos, esi // reset mixpos based on esi for next time around 69.770 + 69.771 + //=================================================================================================== 69.772 + // EXIT 69.773 + //=================================================================================================== 69.774 + MixExit: 69.775 + pop ebp //= RESTORE EBP 69.776 + } 69.777 + } 69.778 +} 69.779 + 69.780 +
70.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 70.2 +++ b/minifmod/mixer_fpu_ramp.h Tue Nov 27 15:23:52 2007 +0100 70.3 @@ -0,0 +1,23 @@ 70.4 +/******************************************************************************/ 70.5 +/* MIXER_FPU_RAMP.H */ 70.6 +/* ---------------- */ 70.7 +/* MiniFMOD public source code release. */ 70.8 +/* This source is provided as-is. Firelight Multimedia will not support */ 70.9 +/* or answer questions about the source provided. */ 70.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 70.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 70.12 +/* Firelight Multimedia is a registered business name. */ 70.13 +/* This source must not be redistributed without this notice. */ 70.14 +/******************************************************************************/ 70.15 + 70.16 +#ifndef _MIXER_FPU_RAMP_H 70.17 +#define _MIXER_FPU_RAMP_H 70.18 + 70.19 +#define FSOUND_VOLUMERAMP_STEPS 128 // at 44.1khz 70.20 + 70.21 +void FSOUND_Mixer_FPU_Ramp(void *mixptr, int len, signed char returnaddress); 70.22 + 70.23 +extern unsigned int mix_volumerampsteps; 70.24 +extern float mix_1overvolumerampsteps; 70.25 + 70.26 +#endif 70.27 \ No newline at end of file
71.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 71.2 +++ b/minifmod/music_formatxm.c Tue Nov 27 15:23:52 2007 +0100 71.3 @@ -0,0 +1,4406 @@ 71.4 +/******************************************************************************/ 71.5 + 71.6 +/* FORMATXM.C */ 71.7 + 71.8 +/* ---------------- */ 71.9 + 71.10 +/* MiniFMOD public source code release. */ 71.11 + 71.12 +/* This source is provided as-is. Firelight Multimedia will not support */ 71.13 + 71.14 +/* or answer questions about the source provided. */ 71.15 + 71.16 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 71.17 + 71.18 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 71.19 + 71.20 +/* Firelight Multimedia is a registered business name. */ 71.21 + 71.22 +/* This source must not be redistributed without this notice. */ 71.23 + 71.24 +/******************************************************************************/ 71.25 + 71.26 + 71.27 + 71.28 +#include <string.h> 71.29 + 71.30 +#include <math.h> 71.31 + 71.32 + 71.33 + 71.34 +#include "minifmod.h" 71.35 + 71.36 +#include "mixer.h" 71.37 + 71.38 +#include "music.h" 71.39 + 71.40 +#include "music_formatxm.h" 71.41 + 71.42 +#include "sound.h" 71.43 + 71.44 + 71.45 + 71.46 +#include "xmeffects.h" 71.47 + 71.48 + 71.49 + 71.50 +// Frequency = 8363*2^((6*12*16*4 - Period) / (12*16*4)); 71.51 + 71.52 + 71.53 + 71.54 +#define FMUSIC_XMLINEARPERIOD2HZ(_per) ( (int)(8363.0f*pow(2.0f, ((6.0f*12.0f*16.0f*4.0f - _per) / (float)(12*16*4)))) ) 71.55 + 71.56 + 71.57 + 71.58 +/* 71.59 + 71.60 +[API] 71.61 + 71.62 +[ 71.63 + 71.64 + [DESCRIPTION] 71.65 + 71.66 + 71.67 + 71.68 + [PARAMETERS] 71.69 + 71.70 + 71.71 + 71.72 + [RETURN_VALUE] 71.73 + 71.74 + 71.75 + 71.76 + [REMARKS] 71.77 + 71.78 + 71.79 + 71.80 + [SEE_ALSO] 71.81 + 71.82 +] 71.83 + 71.84 +*/ 71.85 + 71.86 +#if defined(FMUSIC_XM_PORTATO_ACTIVE) || defined(FMUSIC_XM_PORTATOVOLSLIDE_ACTIVE) 71.87 + 71.88 +void FMUSIC_XM_Portamento(FMUSIC_CHANNEL *cptr) 71.89 + 71.90 +{ 71.91 + 71.92 + // slide pitch down if it needs too. 71.93 + 71.94 + if (cptr->freq < cptr->portatarget) 71.95 + 71.96 + { 71.97 + 71.98 + cptr->freq += (int)cptr->portaspeed << 2; 71.99 + 71.100 + if (cptr->freq > cptr->portatarget) 71.101 + 71.102 + cptr->freq = cptr->portatarget; 71.103 + 71.104 + } 71.105 + 71.106 + 71.107 + 71.108 + // slide pitch up if it needs too. 71.109 + 71.110 + else if (cptr->freq > cptr->portatarget) 71.111 + 71.112 + { 71.113 + 71.114 + cptr->freq -= (int)cptr->portaspeed << 2; 71.115 + 71.116 + if (cptr->freq < cptr->portatarget) 71.117 + 71.118 + cptr->freq=cptr->portatarget; 71.119 + 71.120 + } 71.121 + 71.122 + 71.123 + 71.124 + // 71.125 + 71.126 + //if (glissando[track]) 71.127 + 71.128 + //{ 71.129 + 71.130 + //} 71.131 + 71.132 + // 71.133 + 71.134 + 71.135 + 71.136 + cptr->notectrl |= FMUSIC_FREQ; 71.137 + 71.138 +} 71.139 + 71.140 +#endif // FMUSIC_XM_PORTATO_ACTIVE 71.141 + 71.142 + 71.143 + 71.144 + 71.145 + 71.146 +#if defined(FMUSIC_XM_VIBRATO_ACTIVE) || defined(FMUSIC_XM_VIBRATOVOLSLIDE_ACTIVE) 71.147 + 71.148 +/* 71.149 + 71.150 +[API] 71.151 + 71.152 +[ 71.153 + 71.154 + [DESCRIPTION] 71.155 + 71.156 + to carry out a vibrato at a certain depth and speed 71.157 + 71.158 + 71.159 + 71.160 + [PARAMETERS] 71.161 + 71.162 + track - the track number to do the vibrato too 71.163 + 71.164 + 71.165 + 71.166 + [RETURN_VALUE] 71.167 + 71.168 + 71.169 + 71.170 + [REMARKS] 71.171 + 71.172 + AND'ing temp with 31 removes the sign bit giving the abs value 71.173 + 71.174 + 71.175 + 71.176 + [SEE_ALSO] 71.177 + 71.178 +] 71.179 + 71.180 +*/ 71.181 + 71.182 +void FMUSIC_XM_Vibrato(FMUSIC_CHANNEL *cptr) 71.183 + 71.184 +{ 71.185 + 71.186 + int delta; 71.187 + 71.188 + unsigned char temp; 71.189 + 71.190 + 71.191 + 71.192 + temp = (cptr->vibpos & 31); 71.193 + 71.194 + 71.195 + 71.196 + switch (cptr->wavecontrol & 3) 71.197 + 71.198 + { 71.199 + 71.200 +// case 0: delta = FMUSIC_SineTable[temp]; // sine 71.201 + 71.202 + case 0: delta = (int)(fabs ((sin( (float)(cptr->vibpos) * 2 * 3.141592 / 64.0f )) * 256.0f)); 71.203 + 71.204 + break; 71.205 + 71.206 + case 1: temp <<= 3; // ramp down 71.207 + 71.208 + if (cptr->vibpos < 0) 71.209 + 71.210 + temp=255-temp; 71.211 + 71.212 + delta=temp; 71.213 + 71.214 + break; 71.215 + 71.216 + case 2: 71.217 + 71.218 + case 3: delta = 255;//rand()&255; // random 71.219 + 71.220 + break; 71.221 + 71.222 + //default: 71.223 + 71.224 + //__assume(0); 71.225 + 71.226 + }; 71.227 + 71.228 + 71.229 + 71.230 + delta *= cptr->vibdepth; 71.231 + 71.232 + delta >>=7; 71.233 + 71.234 + delta <<=2; // we use 4*periods so make vibrato 4 times bigger 71.235 + 71.236 + 71.237 + 71.238 + if (cptr->vibpos >= 0) 71.239 + 71.240 + cptr->freqdelta = -delta; 71.241 + 71.242 + else 71.243 + 71.244 + cptr->freqdelta = delta; 71.245 + 71.246 + 71.247 + 71.248 + cptr->notectrl |= FMUSIC_FREQ; 71.249 + 71.250 +} 71.251 + 71.252 +#endif // defined(FMUSIC_XM_VIBRATO_ACTIVE) || defined(FMUSIC_XM_VIBRATOVOLSLIDE_ACTIVE) 71.253 + 71.254 + 71.255 + 71.256 + 71.257 + 71.258 + 71.259 + 71.260 + 71.261 + 71.262 + 71.263 + 71.264 +#ifdef FMUSIC_XM_INSTRUMENTVIBRATO_ACTIVE 71.265 + 71.266 + 71.267 + 71.268 +void FMUSIC_XM_InstrumentVibrato(FMUSIC_CHANNEL *cptr, FMUSIC_INSTRUMENT *iptr) 71.269 + 71.270 +{ 71.271 + 71.272 + int delta; 71.273 + 71.274 + 71.275 + 71.276 + switch (iptr->VIBtype) 71.277 + 71.278 + { 71.279 + 71.280 + case 0: delta = (int)(sin( (float)(cptr->ivibpos) * 2.0f * 3.141592f / 256.0f ) * 64.0f); 71.281 + 71.282 + //delta = (int)FMUSIC_FineSineTable[cptr->ivibpos]; // sine 71.283 + 71.284 + break; 71.285 + 71.286 + case 1: if (cptr->ivibpos < 128) 71.287 + 71.288 + delta=64; // square 71.289 + 71.290 + else 71.291 + 71.292 + delta = -64; 71.293 + 71.294 + break; 71.295 + 71.296 + case 2: delta = (128-((cptr->ivibpos+128)%256))>>1; 71.297 + 71.298 + break; 71.299 + 71.300 + case 3: delta = (128-(((256-cptr->ivibpos)+128)%256))>>1; 71.301 + 71.302 + break; 71.303 + 71.304 + //default: 71.305 + 71.306 + //__assume(0); 71.307 + 71.308 + }; 71.309 + 71.310 + 71.311 + 71.312 + delta *= iptr->VIBdepth; 71.313 + 71.314 + if (iptr->VIBsweep) 71.315 + 71.316 + delta = delta * cptr->ivibsweeppos / iptr->VIBsweep; 71.317 + 71.318 + delta >>=6; 71.319 + 71.320 + 71.321 + 71.322 + cptr->freqdelta += delta; 71.323 + 71.324 + 71.325 + 71.326 + cptr->ivibsweeppos++; 71.327 + 71.328 + if (cptr->ivibsweeppos > iptr->VIBsweep) 71.329 + 71.330 + cptr->ivibsweeppos = iptr->VIBsweep; 71.331 + 71.332 + 71.333 + 71.334 + cptr->ivibpos += iptr->VIBrate; 71.335 + 71.336 + if (cptr->ivibpos > 255) 71.337 + 71.338 + cptr->ivibpos -= 256; 71.339 + 71.340 + 71.341 + 71.342 + cptr->notectrl |= FMUSIC_FREQ; 71.343 + 71.344 +} 71.345 + 71.346 +#endif // FMUSIC_XM_INSTRUMENTVIBRATO_ACTIVE 71.347 + 71.348 + 71.349 + 71.350 + 71.351 + 71.352 +#ifdef FMUSIC_XM_TREMOLO_ACTIVE 71.353 + 71.354 +void FMUSIC_XM_Tremolo(FMUSIC_CHANNEL *cptr) 71.355 + 71.356 +{ 71.357 + 71.358 + unsigned char temp; 71.359 + 71.360 + 71.361 + 71.362 + temp = (cptr->tremolopos & 31); 71.363 + 71.364 + 71.365 + 71.366 + switch((cptr->wavecontrol>>4) & 3) 71.367 + 71.368 + { 71.369 + 71.370 +// case 0: cptr->voldelta = FMUSIC_SineTable[temp]; // sine 71.371 + 71.372 + case 0: cptr->voldelta = (int)(fabs ((sin( (float)(cptr->vibpos) * 2 * 3.141592 / 64.0f )) * 256.0f)); 71.373 + 71.374 + break; 71.375 + 71.376 + case 1: temp <<= 3; // ramp down 71.377 + 71.378 + if (cptr->tremolopos < 0) 71.379 + 71.380 + temp=255-temp; 71.381 + 71.382 + cptr->voldelta=temp; 71.383 + 71.384 + break; 71.385 + 71.386 + case 2: cptr->voldelta = 255; // square 71.387 + 71.388 + break; 71.389 + 71.390 +// case 3: cptr->voldelta = FMUSIC_SineTable[temp]; // random (just use sine for now) 71.391 + 71.392 + case 3: cptr->voldelta = (int)(fabs ((sin( (float)(cptr->vibpos) * 2 * 3.141592 / 64.0f )) * 256.0f)); 71.393 + 71.394 + break; 71.395 + 71.396 + }; 71.397 + 71.398 + 71.399 + 71.400 + cptr->voldelta *= cptr->tremolodepth; 71.401 + 71.402 + cptr->voldelta >>= 6; 71.403 + 71.404 + 71.405 + 71.406 + if (cptr->tremolopos >= 0) 71.407 + 71.408 + { 71.409 + 71.410 + if (cptr->volume+cptr->voldelta > 64) 71.411 + 71.412 + cptr->voldelta = 64-cptr->volume; 71.413 + 71.414 + } 71.415 + 71.416 + else 71.417 + 71.418 + { 71.419 + 71.420 + if ((short)(cptr->volume-cptr->voldelta) < 0) 71.421 + 71.422 + cptr->voldelta = cptr->volume; 71.423 + 71.424 + cptr->voldelta = -cptr->voldelta; 71.425 + 71.426 + } 71.427 + 71.428 + 71.429 + 71.430 + cptr->tremolopos += cptr->tremolospeed; 71.431 + 71.432 + if (cptr->tremolopos > 31) 71.433 + 71.434 + cptr->tremolopos -=64; 71.435 + 71.436 + 71.437 + 71.438 + cptr->notectrl |= FMUSIC_VOLUME; 71.439 + 71.440 +} 71.441 + 71.442 +#endif // FMUSIC_XM_TREMOLO_ACTIVE 71.443 + 71.444 + 71.445 + 71.446 + 71.447 + 71.448 +/* 71.449 + 71.450 +[API] 71.451 + 71.452 +[ 71.453 + 71.454 + [DESCRIPTION] 71.455 + 71.456 + 71.457 + 71.458 + [PARAMETERS] 71.459 + 71.460 + 71.461 + 71.462 + [RETURN_VALUE] 71.463 + 71.464 + 71.465 + 71.466 + [REMARKS] 71.467 + 71.468 + 71.469 + 71.470 + [SEE_ALSO] 71.471 + 71.472 +] 71.473 + 71.474 +*/ 71.475 + 71.476 +#if defined(FMUSIC_XM_VOLUMEENVELOPE_ACTIVE) || defined(FMUSIC_XM_PANENVELOPE_ACTIVE) 71.477 + 71.478 + 71.479 + 71.480 +void FMUSIC_XM_ProcessEnvelope(FMUSIC_CHANNEL *cptr, int *pos, int *tick, unsigned char type, int numpoints, unsigned short *points, unsigned char loopend, unsigned char loopstart, unsigned char sustain, int *value, int *valfrac, signed char *envstopped, int *envdelta, unsigned char control) 71.481 + 71.482 +{ 71.483 + 71.484 + // Envelope 71.485 + 71.486 + if (*pos < numpoints) 71.487 + 71.488 + { 71.489 + 71.490 + if (*tick == points[(*pos)<<1]) // if we are at the correct tick for the position 71.491 + 71.492 + { 71.493 + 71.494 + int currpos, nextpos; 71.495 + 71.496 + int currtick, nexttick; 71.497 + 71.498 + int curr, next, tickdiff; 71.499 + 71.500 + 71.501 + 71.502 + // handle loop 71.503 + 71.504 + if ((type & FMUSIC_ENVELOPE_LOOP) && *pos == loopend) 71.505 + 71.506 + { 71.507 + 71.508 + *pos = loopstart; 71.509 + 71.510 + *tick = points[(*pos) <<1]; 71.511 + 71.512 + } 71.513 + 71.514 + 71.515 + 71.516 + currpos = *pos; 71.517 + 71.518 + nextpos = (*pos) + 1; 71.519 + 71.520 + currtick = points[currpos<<1]; // get tick at this point 71.521 + 71.522 + nexttick = points[nextpos<<1]; // get tick at next point 71.523 + 71.524 + curr = points[(currpos<<1)+1] << 16; // get at this point << 16 71.525 + 71.526 + next = points[(nextpos<<1)+1] << 16; // get at next point << 16 71.527 + 71.528 + 71.529 + 71.530 + // if it is at the last position, abort the envelope and continue last value 71.531 + 71.532 + if (*pos == numpoints - 1) 71.533 + 71.534 + { 71.535 + 71.536 + *value = points[(currpos<<1)+1]; 71.537 + 71.538 + *envstopped = TRUE; 71.539 + 71.540 + cptr->notectrl |= control; 71.541 + 71.542 + return; 71.543 + 71.544 + } 71.545 + 71.546 + // sustain 71.547 + 71.548 + if ((type & FMUSIC_ENVELOPE_SUSTAIN) && currpos == sustain && !cptr->keyoff) 71.549 + 71.550 + { 71.551 + 71.552 + *value = points[(currpos<<1)+1]; 71.553 + 71.554 + cptr->notectrl |= control; 71.555 + 71.556 + return; 71.557 + 71.558 + } 71.559 + 71.560 + // interpolate 2 points to find delta step 71.561 + 71.562 + tickdiff = nexttick - currtick; 71.563 + 71.564 + if (tickdiff) 71.565 + 71.566 + *envdelta = (next-curr) / tickdiff; 71.567 + 71.568 + else 71.569 + 71.570 + *envdelta = 0; 71.571 + 71.572 + 71.573 + 71.574 + *valfrac = curr; 71.575 + 71.576 + 71.577 + 71.578 + (*pos)++; 71.579 + 71.580 + } 71.581 + 71.582 + else 71.583 + 71.584 + *valfrac += *envdelta; // interpolate 71.585 + 71.586 + } 71.587 + 71.588 + 71.589 + 71.590 + *value = *valfrac >> 16; 71.591 + 71.592 + (*tick)++; 71.593 + 71.594 + 71.595 + 71.596 + cptr->notectrl |= control; 71.597 + 71.598 +} 71.599 + 71.600 +#endif // (FMUSIC_XM_VOLUMEENVELOPE_ACTIVE) || defined(FMUSIC_XM_PANENVELOPE_ACTIVE) 71.601 + 71.602 + 71.603 + 71.604 + 71.605 + 71.606 +/* 71.607 + 71.608 +[API] 71.609 + 71.610 +[ 71.611 + 71.612 + [DESCRIPTION] 71.613 + 71.614 + 71.615 + 71.616 + [PARAMETERS] 71.617 + 71.618 + 71.619 + 71.620 + [RETURN_VALUE] 71.621 + 71.622 + 71.623 + 71.624 + [REMARKS] 71.625 + 71.626 + 71.627 + 71.628 + [SEE_ALSO] 71.629 + 71.630 +] 71.631 + 71.632 +*/ 71.633 + 71.634 +#ifdef FMUSIC_XM_VOLUMEBYTE_ACTIVE 71.635 + 71.636 + 71.637 + 71.638 +void FMUSIC_XM_ProcessVolumeByte(FMUSIC_CHANNEL *cptr, unsigned char volume) 71.639 + 71.640 +{ 71.641 + 71.642 + if (volume >= 0x10 && volume <= 0x50) 71.643 + 71.644 + { 71.645 + 71.646 + cptr->volume = volume-0x10; 71.647 + 71.648 + cptr->notectrl |= FMUSIC_VOLUME; 71.649 + 71.650 + } 71.651 + 71.652 + else 71.653 + 71.654 + { 71.655 + 71.656 + switch (volume >> 4) 71.657 + 71.658 + { 71.659 + 71.660 + case 0x6 : 71.661 + 71.662 + { 71.663 + 71.664 + cptr->volume -= (volume & 0xF); 71.665 + 71.666 + if (cptr->volume < 0) 71.667 + 71.668 + cptr->volume = 0; 71.669 + 71.670 + cptr->notectrl |= FMUSIC_VOLUME; 71.671 + 71.672 + break; 71.673 + 71.674 + } 71.675 + 71.676 + case 0x7 : 71.677 + 71.678 + { 71.679 + 71.680 + cptr->volume += (volume & 0xF); 71.681 + 71.682 + if (cptr->volume > 0x40) 71.683 + 71.684 + cptr->volume = 0x40; 71.685 + 71.686 + cptr->notectrl |= FMUSIC_VOLUME; 71.687 + 71.688 + break; 71.689 + 71.690 + } 71.691 + 71.692 + case 0x8 : 71.693 + 71.694 + { 71.695 + 71.696 + cptr->volume -= (volume & 0xF); 71.697 + 71.698 + if (cptr->volume < 0) 71.699 + 71.700 + cptr->volume = 0; 71.701 + 71.702 + cptr->notectrl |= FMUSIC_VOLUME; 71.703 + 71.704 + break; 71.705 + 71.706 + } 71.707 + 71.708 + case 0x9 : 71.709 + 71.710 + { 71.711 + 71.712 + cptr->volume += (volume & 0xF); 71.713 + 71.714 + if (cptr->volume > 0x40) 71.715 + 71.716 + cptr->volume = 0x40; 71.717 + 71.718 + cptr->notectrl |= FMUSIC_VOLUME; 71.719 + 71.720 + break; 71.721 + 71.722 + } 71.723 + 71.724 + case 0xa : 71.725 + 71.726 + { 71.727 + 71.728 + cptr->vibspeed = (volume & 0xF); 71.729 + 71.730 + break; 71.731 + 71.732 + } 71.733 + 71.734 + case 0xb : 71.735 + 71.736 + { 71.737 + 71.738 + cptr->vibdepth = (volume & 0xF); 71.739 + 71.740 + break; 71.741 + 71.742 + } 71.743 + 71.744 + case 0xc : 71.745 + 71.746 + { 71.747 + 71.748 + cptr->pan = (volume & 0xF) << 4; 71.749 + 71.750 + cptr->notectrl |= FMUSIC_PAN; 71.751 + 71.752 + break; 71.753 + 71.754 + } 71.755 + 71.756 + case 0xd : 71.757 + 71.758 + { 71.759 + 71.760 + cptr->pan -= (volume & 0xF); 71.761 + 71.762 + cptr->notectrl |= FMUSIC_PAN; 71.763 + 71.764 + break; 71.765 + 71.766 + } 71.767 + 71.768 + case 0xe : 71.769 + 71.770 + { 71.771 + 71.772 + cptr->pan += (volume & 0xF); 71.773 + 71.774 + cptr->notectrl |= FMUSIC_PAN; 71.775 + 71.776 + break; 71.777 + 71.778 + } 71.779 + 71.780 + case 0xf : 71.781 + 71.782 + { 71.783 + 71.784 + if (volume & 0xF) 71.785 + 71.786 + cptr->portaspeed = (volume & 0xF) << 4; 71.787 + 71.788 + cptr->portatarget = cptr->period; 71.789 + 71.790 + cptr->notectrl &= ~FMUSIC_TRIGGER; 71.791 + 71.792 + break; 71.793 + 71.794 + } 71.795 + 71.796 + //default: 71.797 + 71.798 + //__assume(0); 71.799 + 71.800 + }; 71.801 + 71.802 + } 71.803 + 71.804 +} 71.805 + 71.806 +#endif // #define FMUSIC_XM_VOLUMEBYTE_ACTIVE 71.807 + 71.808 + 71.809 + 71.810 +/* 71.811 + 71.812 +[API] 71.813 + 71.814 +[ 71.815 + 71.816 + [DESCRIPTION] 71.817 + 71.818 + 71.819 + 71.820 + [PARAMETERS] 71.821 + 71.822 + 71.823 + 71.824 + [RETURN_VALUE] 71.825 + 71.826 + 71.827 + 71.828 + [REMARKS] 71.829 + 71.830 + 71.831 + 71.832 + [SEE_ALSO] 71.833 + 71.834 +] 71.835 + 71.836 +*/ 71.837 + 71.838 +#ifdef FMUSIC_XM_AMIGAPERIODS_ACTIVE 71.839 + 71.840 +int FMUSIC_XM_GetAmigaPeriod(int note, int finetune) 71.841 + 71.842 +{ 71.843 + 71.844 + int period; 71.845 + 71.846 + 71.847 + 71.848 + period = (int)(pow(2.0f, (float)(132-note) / 12.0f) * 13.375f); 71.849 + 71.850 + 71.851 + 71.852 + // interpolate for finer tuning 71.853 + 71.854 + if (finetune < 0 && note) 71.855 + 71.856 + { 71.857 + 71.858 + int diff = period - (int)(pow(2.0f, (float)(132-(note-1)) / 12.0f) * 13.375f); 71.859 + 71.860 + diff *= abs(finetune); 71.861 + 71.862 + diff /= 128; 71.863 + 71.864 + period -= diff; 71.865 + 71.866 + } 71.867 + 71.868 + else 71.869 + 71.870 + { 71.871 + 71.872 + int diff = (int)(pow(2.0f, (float)(132-(note+1)) / 12.0f) * 13.375f) - period; 71.873 + 71.874 + diff *= finetune; 71.875 + 71.876 + diff /= 128; 71.877 + 71.878 + period += diff; 71.879 + 71.880 + } 71.881 + 71.882 + 71.883 + 71.884 + return period; 71.885 + 71.886 +} 71.887 + 71.888 +#endif // FMUSIC_XM_AMIGAPERIODS_ACTIVE 71.889 + 71.890 + 71.891 + 71.892 + 71.893 + 71.894 +/* 71.895 + 71.896 +[API] 71.897 + 71.898 +[ 71.899 + 71.900 + [DESCRIPTION] 71.901 + 71.902 + 71.903 + 71.904 + [PARAMETERS] 71.905 + 71.906 + 71.907 + 71.908 + [RETURN_VALUE] 71.909 + 71.910 + 71.911 + 71.912 + [REMARKS] 71.913 + 71.914 + 71.915 + 71.916 + [SEE_ALSO] 71.917 + 71.918 +] 71.919 + 71.920 +*/ 71.921 + 71.922 +#ifdef FMUSIC_XM_TREMOR_ACTIVE 71.923 + 71.924 +void FMUSIC_XM_Tremor(FMUSIC_CHANNEL *cptr) 71.925 + 71.926 +{ 71.927 + 71.928 + if (cptr->tremorpos >= cptr->tremoron) 71.929 + 71.930 + cptr->voldelta = -cptr->volume; 71.931 + 71.932 + cptr->tremorpos++; 71.933 + 71.934 + if (cptr->tremorpos >= (cptr->tremoron + cptr->tremoroff)) 71.935 + 71.936 + cptr->tremorpos = 0; 71.937 + 71.938 + cptr->notectrl |= FMUSIC_VOLUME; 71.939 + 71.940 +} 71.941 + 71.942 +#endif 71.943 + 71.944 + 71.945 + 71.946 +/* 71.947 + 71.948 +[API] 71.949 + 71.950 +[ 71.951 + 71.952 + [DESCRIPTION] 71.953 + 71.954 + 71.955 + 71.956 + [PARAMETERS] 71.957 + 71.958 + 71.959 + 71.960 + [RETURN_VALUE] 71.961 + 71.962 + 71.963 + 71.964 + [REMARKS] 71.965 + 71.966 + 71.967 + 71.968 + [SEE_ALSO] 71.969 + 71.970 +] 71.971 + 71.972 +*/ 71.973 + 71.974 +void FMUSIC_XM_UpdateFlags(FMUSIC_CHANNEL *cptr, FSOUND_SAMPLE *sptr, FMUSIC_MODULE *mod) 71.975 + 71.976 +{ 71.977 + 71.978 + FSOUND_CHANNEL *ccptr = cptr->cptr; 71.979 + 71.980 + int channel; 71.981 + 71.982 + 71.983 + 71.984 + if (ccptr) 71.985 + 71.986 + channel = ccptr->index; 71.987 + 71.988 + 71.989 + 71.990 + if (!(cptr->freq + cptr->freqdelta)) 71.991 + 71.992 + cptr->notectrl &= ~FMUSIC_FREQ; // divide by 0 check 71.993 + 71.994 + 71.995 + 71.996 + if (cptr->notectrl & FMUSIC_TRIGGER) 71.997 + 71.998 + { 71.999 + 71.1000 + //========================================================================================== 71.1001 + 71.1002 + // ALLOCATE A CHANNEL 71.1003 + 71.1004 + //========================================================================================== 71.1005 + 71.1006 + ccptr = &FSOUND_Channel[channel]; 71.1007 + 71.1008 + 71.1009 + 71.1010 + // this swaps between channels to avoid sounds cutting each other off and causing a click 71.1011 + 71.1012 + if (ccptr->sptr != NULL) 71.1013 + 71.1014 + { 71.1015 + 71.1016 + if (channel < 32) 71.1017 + 71.1018 + channel += 32; 71.1019 + 71.1020 + else 71.1021 + 71.1022 + channel -= 32; 71.1023 + 71.1024 + 71.1025 + 71.1026 + memcpy(&FSOUND_Channel[channel], ccptr, sizeof(FSOUND_CHANNEL)); 71.1027 + 71.1028 + FSOUND_Channel[channel].index = channel; // oops dont want its index 71.1029 + 71.1030 + 71.1031 + 71.1032 + // this should cause the old channel to ramp out nicely. 71.1033 + 71.1034 + ccptr->volume = ccptr->actualvolume = 0; 71.1035 + 71.1036 + ccptr->leftvolume = 0; 71.1037 + 71.1038 + ccptr->rightvolume = 0; 71.1039 + 71.1040 + 71.1041 + 71.1042 + ccptr = &FSOUND_Channel[channel]; 71.1043 + 71.1044 + cptr->cptr = ccptr; 71.1045 + 71.1046 + } 71.1047 + 71.1048 + 71.1049 + 71.1050 + ccptr->sptr = sptr; 71.1051 + 71.1052 + 71.1053 + 71.1054 + //========================================================================================== 71.1055 + 71.1056 + // START THE SOUND! 71.1057 + 71.1058 + //========================================================================================== 71.1059 + 71.1060 + if (ccptr->sampleoffset >= sptr->loopstart + sptr->looplen) 71.1061 + 71.1062 + ccptr->sampleoffset = 0; 71.1063 + 71.1064 + 71.1065 + 71.1066 + ccptr->mixpos = ccptr->sampleoffset; 71.1067 + 71.1068 + ccptr->mixposlo = 0; 71.1069 + 71.1070 + ccptr->speeddir = FSOUND_MIXDIR_FORWARDS; 71.1071 + 71.1072 + ccptr->sampleoffset = 0; // reset it (in case other samples come in and get corrupted etc) 71.1073 + 71.1074 + 71.1075 + 71.1076 + // volume ramping 71.1077 + 71.1078 + ccptr->ramp_leftvolume = 0; 71.1079 + 71.1080 + ccptr->ramp_rightvolume = 0; 71.1081 + 71.1082 + ccptr->ramp_count = 0; 71.1083 + 71.1084 + } 71.1085 + 71.1086 + 71.1087 + 71.1088 + if (cptr->notectrl & FMUSIC_VOLUME) 71.1089 + 71.1090 + { 71.1091 + 71.1092 + float finalvol; 71.1093 + 71.1094 + int volume; 71.1095 + 71.1096 + 71.1097 + 71.1098 + finalvol = (float)cptr->envvol; // 6 bits ( 64) 71.1099 + 71.1100 + finalvol *= (cptr->volume+cptr->voldelta); // 6 bits ( 64) 71.1101 + 71.1102 + finalvol *= cptr->fadeoutvol; // 16 bits (65536) 71.1103 + 71.1104 + finalvol *= mod->globalvolume; // 6 bits ( 64) 71.1105 + 71.1106 + // ============== 71.1107 + 71.1108 + // 42 bits 71.1109 + 71.1110 + 71.1111 + 71.1112 + // Any half arsed compiler will convert this into 1 constant at compile time. 71.1113 + 71.1114 + finalvol *= (255.0f / (64.0f * 64.0f * 65536.0f * 64.0f)) * 0.5f; 71.1115 + 71.1116 + volume = (int)finalvol; 71.1117 + 71.1118 + 71.1119 + 71.1120 + if (ccptr) 71.1121 + 71.1122 + { 71.1123 + 71.1124 + ccptr->volume = ccptr->actualvolume = volume; 71.1125 + 71.1126 + ccptr->leftvolume = (volume * ccptr->actualpan) / 255; 71.1127 + 71.1128 + ccptr->rightvolume = (volume * (255L-ccptr->actualpan)) / 255; 71.1129 + 71.1130 + } 71.1131 + 71.1132 + 71.1133 + 71.1134 +// FSOUND_Software_SetVolume(&FSOUND_Channel[channel], (int)finalvol); 71.1135 + 71.1136 + } 71.1137 + 71.1138 + if (cptr->notectrl & FMUSIC_PAN) 71.1139 + 71.1140 + { 71.1141 + 71.1142 + int pan = cptr->pan+( (cptr->envpan-32) * ( (128-abs(cptr->pan-128))/32 ) ); 71.1143 + 71.1144 + 71.1145 + 71.1146 + if (pan < 0) 71.1147 + 71.1148 + pan = 0; 71.1149 + 71.1150 + if (pan > 255) 71.1151 + 71.1152 + pan = 255; 71.1153 + 71.1154 + 71.1155 + 71.1156 + if (ccptr) 71.1157 + 71.1158 + { 71.1159 + 71.1160 + ccptr->pan = ccptr->actualpan = pan; 71.1161 + 71.1162 + ccptr->leftvolume = (ccptr->actualvolume * pan) / 255; 71.1163 + 71.1164 + ccptr->rightvolume = (ccptr->actualvolume * (255L-pan)) / 255; 71.1165 + 71.1166 + } 71.1167 + 71.1168 + 71.1169 + 71.1170 +// FSOUND_Software_SetPan(&FSOUND_Channel[channel], finalpan); 71.1171 + 71.1172 + } 71.1173 + 71.1174 + if (cptr->notectrl & FMUSIC_FREQ) 71.1175 + 71.1176 + { 71.1177 + 71.1178 + int freq; 71.1179 + 71.1180 + 71.1181 + 71.1182 + if (mod->flags & FMUSIC_XMFLAGS_LINEARFREQUENCY) 71.1183 + 71.1184 + freq = FMUSIC_XMLINEARPERIOD2HZ(cptr->freq+cptr->freqdelta); 71.1185 + 71.1186 + else 71.1187 + 71.1188 + freq = FMUSIC_PERIOD2HZ(cptr->freq+cptr->freqdelta); 71.1189 + 71.1190 + 71.1191 + 71.1192 + ccptr->frequency = freq; 71.1193 + 71.1194 + 71.1195 + 71.1196 + if (freq < 100) 71.1197 + 71.1198 + freq = 100; 71.1199 + 71.1200 + 71.1201 + 71.1202 + __asm 71.1203 + 71.1204 + { 71.1205 + 71.1206 + push eax 71.1207 + 71.1208 + push ebx 71.1209 + 71.1210 + push ecx 71.1211 + 71.1212 + push edx 71.1213 + 71.1214 + 71.1215 + 71.1216 + // work out low fractional part of the speed using a 64bit divide 71.1217 + 71.1218 + mov ecx, ccptr 71.1219 + 71.1220 + mov ebx, FSOUND_MixRate 71.1221 + 71.1222 + mov eax, freq 71.1223 + 71.1224 + xor edx, edx 71.1225 + 71.1226 + div ebx // get quotient and remainder 71.1227 + 71.1228 + mov [ecx].speedhi, eax 71.1229 + 71.1230 + div ebx // now divide remainder by rate to get lower 32bit fraction 71.1231 + 71.1232 + mov [ecx].speedlo, eax 71.1233 + 71.1234 + 71.1235 + 71.1236 + pop edx 71.1237 + 71.1238 + pop ecx 71.1239 + 71.1240 + pop ebx 71.1241 + 71.1242 + pop eax 71.1243 + 71.1244 + } 71.1245 + 71.1246 + } 71.1247 + 71.1248 + if (cptr->notectrl & FMUSIC_STOP) 71.1249 + 71.1250 + { 71.1251 + 71.1252 +// FSOUND_StopSound(channel); 71.1253 + 71.1254 + 71.1255 + 71.1256 + ccptr->mixposlo = 0; 71.1257 + 71.1258 + ccptr->mixpos = 0; 71.1259 + 71.1260 +// ccptr->sptr = NULL; 71.1261 + 71.1262 + ccptr->sampleoffset = 0; // if this channel gets stolen it will be safe 71.1263 + 71.1264 + } 71.1265 + 71.1266 +} 71.1267 + 71.1268 + 71.1269 + 71.1270 + 71.1271 + 71.1272 + 71.1273 + 71.1274 +void FMUSIC_XM_Resetcptr(FMUSIC_CHANNEL *cptr, FSOUND_SAMPLE *sptr) 71.1275 + 71.1276 +{ 71.1277 + 71.1278 + cptr->volume = (int)sptr->defvol; 71.1279 + 71.1280 + cptr->pan = sptr->defpan; 71.1281 + 71.1282 + cptr->envvol = 64; 71.1283 + 71.1284 + cptr->envvolpos = 0; 71.1285 + 71.1286 + cptr->envvoltick = 0; 71.1287 + 71.1288 + cptr->envvoldelta = 0; 71.1289 + 71.1290 + 71.1291 + 71.1292 + cptr->envpan = 32; 71.1293 + 71.1294 + cptr->envpanpos = 0; 71.1295 + 71.1296 + cptr->envpantick = 0; 71.1297 + 71.1298 + cptr->envpandelta = 0; 71.1299 + 71.1300 + 71.1301 + 71.1302 + cptr->keyoff = FALSE; 71.1303 + 71.1304 + cptr->fadeoutvol = 65536; 71.1305 + 71.1306 + cptr->envvolstopped = FALSE; 71.1307 + 71.1308 + cptr->envpanstopped = FALSE; 71.1309 + 71.1310 + cptr->ivibsweeppos = 0; 71.1311 + 71.1312 + cptr->ivibpos = 0; 71.1313 + 71.1314 + 71.1315 + 71.1316 + // retrigger tremolo and vibrato waveforms 71.1317 + 71.1318 + if ((cptr->wavecontrol & 0xF) < 4) 71.1319 + 71.1320 + cptr->vibpos=0; 71.1321 + 71.1322 + if ((cptr->wavecontrol >> 4) < 4) 71.1323 + 71.1324 + cptr->tremolopos=0; 71.1325 + 71.1326 + 71.1327 + 71.1328 + cptr->tremorpos = 0; // retrigger tremor count 71.1329 + 71.1330 + 71.1331 + 71.1332 + cptr->notectrl |= FMUSIC_VOLUME; 71.1333 + 71.1334 + cptr->notectrl |= FMUSIC_PAN; 71.1335 + 71.1336 +} 71.1337 + 71.1338 + 71.1339 + 71.1340 + 71.1341 + 71.1342 + 71.1343 + 71.1344 +/* 71.1345 + 71.1346 +[API] 71.1347 + 71.1348 +[ 71.1349 + 71.1350 + [DESCRIPTION] 71.1351 + 71.1352 + 71.1353 + 71.1354 + [PARAMETERS] 71.1355 + 71.1356 + 71.1357 + 71.1358 + [RETURN_VALUE] 71.1359 + 71.1360 + 71.1361 + 71.1362 + [REMARKS] 71.1363 + 71.1364 + 71.1365 + 71.1366 + [SEE_ALSO] 71.1367 + 71.1368 +] 71.1369 + 71.1370 +*/ 71.1371 + 71.1372 +void FMUSIC_UpdateXMNote(FMUSIC_MODULE *mod) 71.1373 + 71.1374 +{ 71.1375 + 71.1376 + signed char breakflag=FALSE; 71.1377 + 71.1378 + signed char jumpflag=FALSE; 71.1379 + 71.1380 + FMUSIC_NOTE *current; 71.1381 + 71.1382 + int count; 71.1383 + 71.1384 + 71.1385 + 71.1386 + mod->nextorder = -1; 71.1387 + 71.1388 + mod->nextrow = -1; 71.1389 + 71.1390 + 71.1391 + 71.1392 + // Point our note pointer to the correct pattern buffer, and to the 71.1393 + 71.1394 + // correct offset in this buffer indicated by row and number of channels 71.1395 + 71.1396 + current = mod->pattern[mod->orderlist[mod->order]].data + (mod->row*mod->numchannels); 71.1397 + 71.1398 + 71.1399 + 71.1400 + if (!current) 71.1401 + 71.1402 + return; 71.1403 + 71.1404 + 71.1405 + 71.1406 + // Loop through each channel in the row until we have finished 71.1407 + 71.1408 + for (count=0; count<mod->numchannels; count++,current++) 71.1409 + 71.1410 + { 71.1411 + 71.1412 + FMUSIC_CHANNEL *cptr = NULL; 71.1413 + 71.1414 + FMUSIC_INSTRUMENT *iptr = NULL; 71.1415 + 71.1416 + FSOUND_SAMPLE *sptr = NULL; 71.1417 + 71.1418 + unsigned char paramx, paramy; 71.1419 + 71.1420 + int oldvolume, oldfreq, oldpan; 71.1421 + 71.1422 + signed char porta = FALSE; 71.1423 + 71.1424 + 71.1425 + 71.1426 + paramx = current->eparam >> 4; // get effect param x 71.1427 + 71.1428 + paramy = current->eparam & 0xF; // get effect param y 71.1429 + 71.1430 + 71.1431 + 71.1432 + cptr = &FMUSIC_Channel[count]; 71.1433 + 71.1434 + 71.1435 + 71.1436 + 71.1437 + 71.1438 +// **** FIXME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 71.1439 + 71.1440 +// if (LinkedListIsRootNode(cptr, &cptr->vchannelhead)) 71.1441 + 71.1442 +// cptr = &FMUSIC_DummyVirtualChannel; // no channels allocated yet 71.1443 + 71.1444 +// **** FIXME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 71.1445 + 71.1446 + 71.1447 + 71.1448 + 71.1449 + 71.1450 + porta = (current->effect == FMUSIC_XM_PORTATO || current->effect == FMUSIC_XM_PORTATOVOLSLIDE); 71.1451 + 71.1452 + 71.1453 + 71.1454 + // first store note and instrument number if there was one 71.1455 + 71.1456 + if (current->number && !porta) // bugfix 3.20 (&& !porta) 71.1457 + 71.1458 + cptr->inst = current->number-1; // remember the Instrument # 71.1459 + 71.1460 + 71.1461 + 71.1462 + if (current->note && current->note != FMUSIC_KEYOFF && !porta) // bugfix 3.20 (&& !porta) 71.1463 + 71.1464 + cptr->note = current->note-1; // remember the note 71.1465 + 71.1466 + 71.1467 + 71.1468 + if (cptr->inst >= (int)mod->numinsts) 71.1469 + 71.1470 + { 71.1471 + 71.1472 + iptr = &FMUSIC_DummyInstrument; 71.1473 + 71.1474 + sptr = &FMUSIC_DummySample; 71.1475 + 71.1476 + sptr->buff = NULL; 71.1477 + 71.1478 + } 71.1479 + 71.1480 + else 71.1481 + 71.1482 + { 71.1483 + 71.1484 + // set up some instrument and sample pointers 71.1485 + 71.1486 + iptr = &mod->instrument[cptr->inst]; 71.1487 + 71.1488 + if (iptr->keymap[cptr->note] >= 16) 71.1489 + 71.1490 + sptr = &FMUSIC_DummySample; 71.1491 + 71.1492 + else 71.1493 + 71.1494 + sptr = iptr->sample[iptr->keymap[cptr->note]]; 71.1495 + 71.1496 + 71.1497 + 71.1498 + if (!porta) 71.1499 + 71.1500 + cptr->sptr = sptr; 71.1501 + 71.1502 + } 71.1503 + 71.1504 + 71.1505 + 71.1506 + oldvolume = cptr->volume; 71.1507 + 71.1508 + oldfreq = cptr->freq; 71.1509 + 71.1510 + oldpan = cptr->pan; 71.1511 + 71.1512 + 71.1513 + 71.1514 + // if there is no more tremolo, set volume to volume + last tremolo delta 71.1515 + 71.1516 + if (cptr->recenteffect == FMUSIC_XM_TREMOLO && current->effect != FMUSIC_XM_TREMOLO) 71.1517 + 71.1518 + cptr->volume += cptr->voldelta; 71.1519 + 71.1520 + cptr->recenteffect = current->effect; 71.1521 + 71.1522 + 71.1523 + 71.1524 + cptr->voldelta = 0; 71.1525 + 71.1526 + cptr->notectrl = 0; 71.1527 + 71.1528 + 71.1529 + 71.1530 + //= PROCESS NOTE =============================================================================== 71.1531 + 71.1532 + if (current->note && current->note != FMUSIC_KEYOFF) 71.1533 + 71.1534 + { 71.1535 + 71.1536 + // get note according to relative note 71.1537 + 71.1538 + cptr->realnote = current->note + sptr->relative - 1; 71.1539 + 71.1540 + 71.1541 + 71.1542 + // get period according to realnote and finetune 71.1543 + 71.1544 + if (mod->flags & FMUSIC_XMFLAGS_LINEARFREQUENCY) 71.1545 + 71.1546 + { 71.1547 + 71.1548 + cptr->period = (10*12*16*4) - (cptr->realnote*16*4) - (sptr->finetune / 2); 71.1549 + 71.1550 + } 71.1551 + 71.1552 + else 71.1553 + 71.1554 + { 71.1555 + 71.1556 +#ifdef FMUSIC_XM_AMIGAPERIODS_ACTIVE 71.1557 + 71.1558 + cptr->period = FMUSIC_XM_GetAmigaPeriod(cptr->realnote, sptr->finetune); 71.1559 + 71.1560 +#endif 71.1561 + 71.1562 + } 71.1563 + 71.1564 + 71.1565 + 71.1566 + // frequency only changes if there are no portamento effects 71.1567 + 71.1568 + if (!porta) 71.1569 + 71.1570 + cptr->freq = cptr->period; 71.1571 + 71.1572 + 71.1573 + 71.1574 + cptr->notectrl = FMUSIC_TRIGGER; 71.1575 + 71.1576 + } 71.1577 + 71.1578 + 71.1579 + 71.1580 + cptr->freqdelta = 0; 71.1581 + 71.1582 + cptr->notectrl |= FMUSIC_FREQ; 71.1583 + 71.1584 + cptr->notectrl |= FMUSIC_VOLUME; 71.1585 + 71.1586 + 71.1587 + 71.1588 + 71.1589 + 71.1590 + //= PROCESS INSTRUMENT NUMBER ================================================================== 71.1591 + 71.1592 + if (current->number) 71.1593 + 71.1594 + FMUSIC_XM_Resetcptr(cptr,sptr); 71.1595 + 71.1596 + 71.1597 + 71.1598 + //= PROCESS VOLUME BYTE ======================================================================== 71.1599 + 71.1600 +#ifdef FMUSIC_XM_VOLUMEBYTE_ACTIVE 71.1601 + 71.1602 + if (current->volume) 71.1603 + 71.1604 + FMUSIC_XM_ProcessVolumeByte(cptr, current->volume); 71.1605 + 71.1606 +#endif 71.1607 + 71.1608 + 71.1609 + 71.1610 + //= PROCESS KEY OFF ============================================================================ 71.1611 + 71.1612 + if (current->note == FMUSIC_KEYOFF || current->effect == FMUSIC_XM_KEYOFF) 71.1613 + 71.1614 + cptr->keyoff = TRUE; 71.1615 + 71.1616 + 71.1617 + 71.1618 + //= PROCESS ENVELOPES ========================================================================== 71.1619 + 71.1620 +#ifdef FMUSIC_XM_VOLUMEENVELOPE_ACTIVE 71.1621 + 71.1622 + if (iptr->VOLtype & FMUSIC_ENVELOPE_ON) 71.1623 + 71.1624 + { 71.1625 + 71.1626 + if (!cptr->envvolstopped) 71.1627 + 71.1628 + FMUSIC_XM_ProcessEnvelope(cptr, &cptr->envvolpos, &cptr->envvoltick, iptr->VOLtype, iptr->VOLnumpoints, &iptr->VOLPoints[0], iptr->VOLLoopEnd, iptr->VOLLoopStart, iptr->VOLsustain, &cptr->envvol, &cptr->envvolfrac, &cptr->envvolstopped, &cptr->envvoldelta, FMUSIC_VOLUME); 71.1629 + 71.1630 + } 71.1631 + 71.1632 + else 71.1633 + 71.1634 +#endif 71.1635 + 71.1636 + if (cptr->keyoff) 71.1637 + 71.1638 + cptr->envvol = 0; 71.1639 + 71.1640 + 71.1641 + 71.1642 +#ifdef FMUSIC_XM_PANENVELOPE_ACTIVE 71.1643 + 71.1644 + if (iptr->PANtype & FMUSIC_ENVELOPE_ON && !cptr->envpanstopped) 71.1645 + 71.1646 + FMUSIC_XM_ProcessEnvelope(cptr, &cptr->envpanpos, &cptr->envpantick, iptr->PANtype, iptr->PANnumpoints, &iptr->PANPoints[0], iptr->PANLoopEnd, iptr->PANLoopStart, iptr->PANsustain, &cptr->envpan, &cptr->envpanfrac, &cptr->envpanstopped, &cptr->envpandelta, FMUSIC_PAN); 71.1647 + 71.1648 +#endif 71.1649 + 71.1650 + 71.1651 + 71.1652 + //= PROCESS VOLUME FADEOUT ===================================================================== 71.1653 + 71.1654 + if (cptr->keyoff) 71.1655 + 71.1656 + { 71.1657 + 71.1658 + cptr->fadeoutvol -= iptr->VOLfade; 71.1659 + 71.1660 + if (cptr->fadeoutvol < 0) 71.1661 + 71.1662 + cptr->fadeoutvol = 0; 71.1663 + 71.1664 + cptr->notectrl |= FMUSIC_VOLUME; 71.1665 + 71.1666 + } 71.1667 + 71.1668 + 71.1669 + 71.1670 + 71.1671 + 71.1672 + //= PROCESS TICK 0 EFFECTS ===================================================================== 71.1673 + 71.1674 +#if 1 71.1675 + 71.1676 + switch (current->effect) 71.1677 + 71.1678 + { 71.1679 + 71.1680 + // not processed on tick 0 71.1681 + 71.1682 +#ifdef FMUSIC_XM_ARPEGGIO_ACTIVE 71.1683 + 71.1684 + case FMUSIC_XM_ARPEGGIO : 71.1685 + 71.1686 + { 71.1687 + 71.1688 + break; 71.1689 + 71.1690 + } 71.1691 + 71.1692 +#endif 71.1693 + 71.1694 +#ifdef FMUSIC_XM_PORTAUP_ACTIVE 71.1695 + 71.1696 + case FMUSIC_XM_PORTAUP : 71.1697 + 71.1698 + { 71.1699 + 71.1700 + if (current->eparam) 71.1701 + 71.1702 + cptr->portaup = current->eparam; 71.1703 + 71.1704 + break; 71.1705 + 71.1706 + } 71.1707 + 71.1708 +#endif 71.1709 + 71.1710 +#ifdef FMUSIC_XM_PORTADOWN_ACTIVE 71.1711 + 71.1712 + case FMUSIC_XM_PORTADOWN : 71.1713 + 71.1714 + { 71.1715 + 71.1716 + if (current->eparam) 71.1717 + 71.1718 + cptr->portadown = current->eparam; 71.1719 + 71.1720 + break; 71.1721 + 71.1722 + } 71.1723 + 71.1724 +#endif 71.1725 + 71.1726 +#ifdef FMUSIC_XM_PORTATO_ACTIVE 71.1727 + 71.1728 + case FMUSIC_XM_PORTATO : 71.1729 + 71.1730 + { 71.1731 + 71.1732 + if (current->eparam) 71.1733 + 71.1734 + cptr->portaspeed = current->eparam; 71.1735 + 71.1736 + cptr->portatarget = cptr->period; 71.1737 + 71.1738 + cptr->notectrl &= ~FMUSIC_TRIGGER; 71.1739 + 71.1740 + cptr->notectrl &= ~FMUSIC_FREQ; 71.1741 + 71.1742 + break; 71.1743 + 71.1744 + } 71.1745 + 71.1746 +#endif 71.1747 + 71.1748 +#ifdef FMUSIC_XM_PORTATOVOLSLIDE_ACTIVE 71.1749 + 71.1750 + case FMUSIC_XM_PORTATOVOLSLIDE : 71.1751 + 71.1752 + { 71.1753 + 71.1754 + cptr->portatarget = cptr->period; 71.1755 + 71.1756 + if (current->eparam) 71.1757 + 71.1758 + cptr->volslide = current->eparam; 71.1759 + 71.1760 + cptr->notectrl &= ~FMUSIC_TRIGGER; 71.1761 + 71.1762 + cptr->notectrl &= ~FMUSIC_FREQ; 71.1763 + 71.1764 + break; 71.1765 + 71.1766 + } 71.1767 + 71.1768 +#endif 71.1769 + 71.1770 +#ifdef FMUSIC_XM_VIBRATO_ACTIVE 71.1771 + 71.1772 + case FMUSIC_XM_VIBRATO : 71.1773 + 71.1774 + { 71.1775 + 71.1776 + if (paramx) 71.1777 + 71.1778 + cptr->vibspeed = paramx; 71.1779 + 71.1780 + if (paramy) 71.1781 + 71.1782 + cptr->vibdepth = paramy; 71.1783 + 71.1784 + FMUSIC_XM_Vibrato(cptr); 71.1785 + 71.1786 + break; 71.1787 + 71.1788 + } 71.1789 + 71.1790 +#endif 71.1791 + 71.1792 +#ifdef FMUSIC_XM_VIBRATOVOLSLIDE_ACTIVE 71.1793 + 71.1794 + case FMUSIC_XM_VIBRATOVOLSLIDE : 71.1795 + 71.1796 + { 71.1797 + 71.1798 + if (current->eparam) 71.1799 + 71.1800 + cptr->volslide = current->eparam; 71.1801 + 71.1802 + FMUSIC_XM_Vibrato(cptr); 71.1803 + 71.1804 + break; // not processed on tick 0 71.1805 + 71.1806 + } 71.1807 + 71.1808 +#endif 71.1809 + 71.1810 +#ifdef FMUSIC_XM_TREMOLO_ACTIVE 71.1811 + 71.1812 + case FMUSIC_XM_TREMOLO : 71.1813 + 71.1814 + { 71.1815 + 71.1816 + if (paramx) 71.1817 + 71.1818 + cptr->tremolospeed = paramx; 71.1819 + 71.1820 + if (paramy) 71.1821 + 71.1822 + cptr->tremolodepth = paramy; 71.1823 + 71.1824 + break; 71.1825 + 71.1826 + } 71.1827 + 71.1828 +#endif 71.1829 + 71.1830 +#ifdef FMUSIC_XM_SETPANPOSITION_ACTIVE 71.1831 + 71.1832 + case FMUSIC_XM_SETPANPOSITION : 71.1833 + 71.1834 + { 71.1835 + 71.1836 + cptr->pan = current->eparam; 71.1837 + 71.1838 + cptr->notectrl |= FMUSIC_PAN; 71.1839 + 71.1840 + break; 71.1841 + 71.1842 + } 71.1843 + 71.1844 +#endif 71.1845 + 71.1846 +#ifdef FMUSIC_XM_SETSAMPLEOFFSET_ACTIVE 71.1847 + 71.1848 + case FMUSIC_XM_SETSAMPLEOFFSET : 71.1849 + 71.1850 + { 71.1851 + 71.1852 + unsigned int offset; 71.1853 + 71.1854 + 71.1855 + 71.1856 + if (current->eparam) 71.1857 + 71.1858 + cptr->sampleoffset = current->eparam; 71.1859 + 71.1860 + 71.1861 + 71.1862 + if (!cptr->cptr) break; 71.1863 + 71.1864 + 71.1865 + 71.1866 + offset = (int)(cptr->sampleoffset) << 8; 71.1867 + 71.1868 + 71.1869 + 71.1870 + if (offset >= sptr->loopstart + sptr->looplen) 71.1871 + 71.1872 + { 71.1873 + 71.1874 + cptr->notectrl &= ~FMUSIC_TRIGGER; 71.1875 + 71.1876 + cptr->notectrl |= FMUSIC_STOP; 71.1877 + 71.1878 + } 71.1879 + 71.1880 + else 71.1881 + 71.1882 + cptr->cptr->sampleoffset = offset; 71.1883 + 71.1884 + break; 71.1885 + 71.1886 + } 71.1887 + 71.1888 +#endif 71.1889 + 71.1890 +#ifdef FMUSIC_XM_VOLUMESLIDE_ACTIVE 71.1891 + 71.1892 + case FMUSIC_XM_VOLUMESLIDE : 71.1893 + 71.1894 + { 71.1895 + 71.1896 + if (current->eparam) 71.1897 + 71.1898 + cptr->volslide = current->eparam; 71.1899 + 71.1900 + break; 71.1901 + 71.1902 + } 71.1903 + 71.1904 +#endif 71.1905 + 71.1906 +#ifdef FMUSIC_XM_PATTERNJUMP_ACTIVE 71.1907 + 71.1908 + case FMUSIC_XM_PATTERNJUMP : // --- 00 B00 : --- 00 D63 , should put us at ord=0, row=63 71.1909 + 71.1910 + { 71.1911 + 71.1912 + mod->nextorder = current->eparam; 71.1913 + 71.1914 + mod->nextrow = 0; 71.1915 + 71.1916 + if (mod->nextorder >= (int)mod->numorders) 71.1917 + 71.1918 + mod->nextorder=0; 71.1919 + 71.1920 + jumpflag = 1; 71.1921 + 71.1922 + break; 71.1923 + 71.1924 + } 71.1925 + 71.1926 +#endif 71.1927 + 71.1928 +#ifdef FMUSIC_XM_SETVOLUME_ACTIVE 71.1929 + 71.1930 + case FMUSIC_XM_SETVOLUME : 71.1931 + 71.1932 + { 71.1933 + 71.1934 + cptr->volume = current->eparam; 71.1935 + 71.1936 + cptr->notectrl |= FMUSIC_VOLUME; 71.1937 + 71.1938 + break; 71.1939 + 71.1940 + } 71.1941 + 71.1942 +#endif 71.1943 + 71.1944 +#ifdef FMUSIC_XM_PATTERNBREAK_ACTIVE 71.1945 + 71.1946 + case FMUSIC_XM_PATTERNBREAK : 71.1947 + 71.1948 + { 71.1949 + 71.1950 + mod->nextrow = (paramx*10) + paramy; 71.1951 + 71.1952 + if (mod->nextrow > 63) 71.1953 + 71.1954 + mod->nextrow = 0; 71.1955 + 71.1956 + if (!breakflag && !jumpflag) 71.1957 + 71.1958 + mod->nextorder = mod->order+1; 71.1959 + 71.1960 + if (mod->nextorder >= (int)mod->numorders) 71.1961 + 71.1962 + mod->nextorder=0; 71.1963 + 71.1964 + break; 71.1965 + 71.1966 + } 71.1967 + 71.1968 +#endif 71.1969 + 71.1970 + case FMUSIC_XM_SPECIAL : 71.1971 + 71.1972 + { 71.1973 + 71.1974 + switch (paramx) 71.1975 + 71.1976 + { 71.1977 + 71.1978 + // not processed on tick 0 / unsupported 71.1979 + 71.1980 + case FMUSIC_XM_RETRIG : 71.1981 + 71.1982 + case FMUSIC_XM_NOTECUT : 71.1983 + 71.1984 + case FMUSIC_XM_SETFILTER : 71.1985 + 71.1986 + case FMUSIC_XM_FUNKREPEAT : 71.1987 + 71.1988 + case FMUSIC_XM_SETGLISSANDO : 71.1989 + 71.1990 + { 71.1991 + 71.1992 + break; 71.1993 + 71.1994 + } 71.1995 + 71.1996 +#ifdef FMUSIC_XM_FINEPORTAUP_ACTIVE 71.1997 + 71.1998 + case FMUSIC_XM_FINEPORTAUP : 71.1999 + 71.2000 + { 71.2001 + 71.2002 + if (paramy) 71.2003 + 71.2004 + cptr->fineportaup = paramy; 71.2005 + 71.2006 + cptr->freq -= (cptr->fineportaup << 2); 71.2007 + 71.2008 + break; 71.2009 + 71.2010 + } 71.2011 + 71.2012 +#endif 71.2013 + 71.2014 +#ifdef FMUSIC_XM_FINEPORTADOWN_ACTIVE 71.2015 + 71.2016 + case FMUSIC_XM_FINEPORTADOWN : 71.2017 + 71.2018 + { 71.2019 + 71.2020 + if (paramy) 71.2021 + 71.2022 + cptr->fineportadown = paramy; 71.2023 + 71.2024 + cptr->freq += (cptr->fineportadown << 2); 71.2025 + 71.2026 + break; 71.2027 + 71.2028 + } 71.2029 + 71.2030 +#endif 71.2031 + 71.2032 +#ifdef FMUSIC_XM_SETVIBRATOWAVE_ACTIVE 71.2033 + 71.2034 + case FMUSIC_XM_SETVIBRATOWAVE : 71.2035 + 71.2036 + { 71.2037 + 71.2038 + cptr->wavecontrol &= 0xF0; 71.2039 + 71.2040 + cptr->wavecontrol |= paramy; 71.2041 + 71.2042 + break; 71.2043 + 71.2044 + } 71.2045 + 71.2046 +#endif 71.2047 + 71.2048 +#ifdef FMUSIC_XM_SETFINETUNE_ACTIVE 71.2049 + 71.2050 + case FMUSIC_XM_SETFINETUNE : 71.2051 + 71.2052 + { 71.2053 + 71.2054 + sptr->finetune = paramy; 71.2055 + 71.2056 + break; 71.2057 + 71.2058 + } 71.2059 + 71.2060 +#endif 71.2061 + 71.2062 +#ifdef FMUSIC_XM_PATTERNLOOP_ACTIVE 71.2063 + 71.2064 + case FMUSIC_XM_PATTERNLOOP : 71.2065 + 71.2066 + { 71.2067 + 71.2068 + if (paramy == 0) 71.2069 + 71.2070 + cptr->patlooprow = mod->row; 71.2071 + 71.2072 + else 71.2073 + 71.2074 + { 71.2075 + 71.2076 + if (!cptr->patloopno) 71.2077 + 71.2078 + cptr->patloopno = paramy; 71.2079 + 71.2080 + else cptr->patloopno--; 71.2081 + 71.2082 + if (cptr->patloopno) 71.2083 + 71.2084 + mod->row = cptr->patlooprow-1; 71.2085 + 71.2086 + } 71.2087 + 71.2088 + break; 71.2089 + 71.2090 + } 71.2091 + 71.2092 +#endif 71.2093 + 71.2094 +#ifdef FMUSIC_XM_SETTREMOLOWAVE_ACTIVE 71.2095 + 71.2096 + case FMUSIC_XM_SETTREMOLOWAVE : 71.2097 + 71.2098 + { 71.2099 + 71.2100 + cptr->wavecontrol &= 0xF; 71.2101 + 71.2102 + cptr->wavecontrol |= (paramy<<4); 71.2103 + 71.2104 + break; 71.2105 + 71.2106 + } 71.2107 + 71.2108 +#endif 71.2109 + 71.2110 +#ifdef FMUSIC_XM_SETPANPOSITION16_ACTIVE 71.2111 + 71.2112 + case FMUSIC_XM_SETPANPOSITION16 : 71.2113 + 71.2114 + { 71.2115 + 71.2116 + cptr->pan = paramy<<4; 71.2117 + 71.2118 + cptr->notectrl |= FMUSIC_PAN; 71.2119 + 71.2120 + break; 71.2121 + 71.2122 + } 71.2123 + 71.2124 +#endif 71.2125 + 71.2126 +#ifdef FMUSIC_XM_FINEVOLUMESLIDEUP_ACTIVE 71.2127 + 71.2128 + case FMUSIC_XM_FINEVOLUMESLIDEUP : 71.2129 + 71.2130 + { 71.2131 + 71.2132 + if (paramy) 71.2133 + 71.2134 + cptr->finevslup = paramy; 71.2135 + 71.2136 + 71.2137 + 71.2138 + cptr->volume += cptr->finevslup; 71.2139 + 71.2140 + 71.2141 + 71.2142 + if (cptr->volume > 64) 71.2143 + 71.2144 + cptr->volume=64; 71.2145 + 71.2146 + 71.2147 + 71.2148 + cptr->notectrl |= FMUSIC_VOLUME; 71.2149 + 71.2150 + break; 71.2151 + 71.2152 + } 71.2153 + 71.2154 +#endif 71.2155 + 71.2156 +#ifdef FMUSIC_XM_FINEVOLUMESLIDEDOWN_ACTIVE 71.2157 + 71.2158 + case FMUSIC_XM_FINEVOLUMESLIDEDOWN : 71.2159 + 71.2160 + { 71.2161 + 71.2162 + if (paramy) cptr->finevslup = paramy; 71.2163 + 71.2164 + 71.2165 + 71.2166 + cptr->volume -= cptr->finevslup; 71.2167 + 71.2168 + 71.2169 + 71.2170 + if (cptr->volume < 0) 71.2171 + 71.2172 + cptr->volume =0; 71.2173 + 71.2174 + 71.2175 + 71.2176 + cptr->notectrl |= FMUSIC_VOLUME; 71.2177 + 71.2178 + break; 71.2179 + 71.2180 + } 71.2181 + 71.2182 +#endif 71.2183 + 71.2184 +#ifdef FMUSIC_XM_NOTEDELAY_ACTIVE 71.2185 + 71.2186 + case FMUSIC_XM_NOTEDELAY : 71.2187 + 71.2188 + { 71.2189 + 71.2190 + cptr->volume = oldvolume; 71.2191 + 71.2192 + cptr->freq = oldfreq; 71.2193 + 71.2194 + cptr->pan = oldpan; 71.2195 + 71.2196 + cptr->notectrl &= ~FMUSIC_FREQ; 71.2197 + 71.2198 + cptr->notectrl &= ~FMUSIC_VOLUME; 71.2199 + 71.2200 + cptr->notectrl &= ~FMUSIC_PAN; 71.2201 + 71.2202 + cptr->notectrl &= ~FMUSIC_TRIGGER; 71.2203 + 71.2204 + break; 71.2205 + 71.2206 + } 71.2207 + 71.2208 +#endif 71.2209 + 71.2210 +#ifdef FMUSIC_XM_PATTERNDELAY_ACTIVE 71.2211 + 71.2212 + case FMUSIC_XM_PATTERNDELAY : 71.2213 + 71.2214 + { 71.2215 + 71.2216 + mod->patterndelay = paramy; 71.2217 + 71.2218 + mod->patterndelay *= mod->speed; 71.2219 + 71.2220 + break; 71.2221 + 71.2222 + } 71.2223 + 71.2224 +#endif 71.2225 + 71.2226 + }; 71.2227 + 71.2228 + break; 71.2229 + 71.2230 + } 71.2231 + 71.2232 +#ifdef FMUSIC_XM_SETSPEED_ACTIVE 71.2233 + 71.2234 + case FMUSIC_XM_SETSPEED : 71.2235 + 71.2236 + { 71.2237 + 71.2238 + if (current->eparam < 0x20) 71.2239 + 71.2240 + mod->speed = current->eparam; 71.2241 + 71.2242 + else 71.2243 + 71.2244 + FMUSIC_SetBPM(mod, current->eparam); 71.2245 + 71.2246 + break; 71.2247 + 71.2248 + } 71.2249 + 71.2250 +#endif 71.2251 + 71.2252 +#ifdef FMUSIC_XM_SETGLOBALVOLUME_ACTIVE 71.2253 + 71.2254 + case FMUSIC_XM_SETGLOBALVOLUME : 71.2255 + 71.2256 + { 71.2257 + 71.2258 + mod->globalvolume = current->eparam; 71.2259 + 71.2260 + if (mod->globalvolume > 64) 71.2261 + 71.2262 + mod->globalvolume=64; 71.2263 + 71.2264 + cptr->notectrl |= FMUSIC_VOLUME; 71.2265 + 71.2266 + break; 71.2267 + 71.2268 + } 71.2269 + 71.2270 +#endif 71.2271 + 71.2272 +#ifdef FMUSIC_XM_GLOBALVOLSLIDE_ACTIVE 71.2273 + 71.2274 + case FMUSIC_XM_GLOBALVOLSLIDE : 71.2275 + 71.2276 + { 71.2277 + 71.2278 + if (current->eparam) 71.2279 + 71.2280 + mod->globalvsl = current->eparam; 71.2281 + 71.2282 + break; 71.2283 + 71.2284 + } 71.2285 + 71.2286 +#endif 71.2287 + 71.2288 +#ifdef FMUSIC_XM_SETENVELOPEPOS_ACTIVE 71.2289 + 71.2290 + case FMUSIC_XM_SETENVELOPEPOS : 71.2291 + 71.2292 + { 71.2293 + 71.2294 + int currpos, nextpos; 71.2295 + 71.2296 + int currtick, nexttick; 71.2297 + 71.2298 + int currvol, nextvol, tickdiff; 71.2299 + 71.2300 + 71.2301 + 71.2302 + if (!(iptr->VOLtype & FMUSIC_ENVELOPE_ON)) 71.2303 + 71.2304 + break; 71.2305 + 71.2306 + 71.2307 + 71.2308 + currpos = 0; 71.2309 + 71.2310 + 71.2311 + 71.2312 + // search and reinterpolate new envelope position 71.2313 + 71.2314 + while (current->eparam > iptr->VOLPoints[(currpos+1)<<1] && currpos < iptr->VOLnumpoints) currpos++; 71.2315 + 71.2316 + 71.2317 + 71.2318 + cptr->envvolpos = currpos; 71.2319 + 71.2320 + 71.2321 + 71.2322 + // if it is at the last position, abort the envelope and continue last volume 71.2323 + 71.2324 + if (cptr->envvolpos >= iptr->VOLnumpoints - 1) 71.2325 + 71.2326 + { 71.2327 + 71.2328 + cptr->envvol = iptr->VOLPoints[((iptr->VOLnumpoints-1)<<1)+1]; 71.2329 + 71.2330 + cptr->envvolstopped = TRUE; 71.2331 + 71.2332 + break; 71.2333 + 71.2334 + } 71.2335 + 71.2336 + 71.2337 + 71.2338 + cptr->envvolstopped = FALSE; 71.2339 + 71.2340 + cptr->envvoltick = current->eparam; 71.2341 + 71.2342 + 71.2343 + 71.2344 + nextpos = cptr->envvolpos + 1; 71.2345 + 71.2346 + 71.2347 + 71.2348 + currtick = iptr->VOLPoints[currpos<<1]; // get tick at this point 71.2349 + 71.2350 + nexttick = iptr->VOLPoints[nextpos<<1]; // get tick at next point 71.2351 + 71.2352 + 71.2353 + 71.2354 + currvol = iptr->VOLPoints[(currpos<<1)+1] << 16; // get VOL at this point << 16 71.2355 + 71.2356 + nextvol = iptr->VOLPoints[(nextpos<<1)+1] << 16; // get VOL at next point << 16 71.2357 + 71.2358 + 71.2359 + 71.2360 + // interpolate 2 points to find delta step 71.2361 + 71.2362 + tickdiff = nexttick - currtick; 71.2363 + 71.2364 + if (tickdiff) cptr->envvoldelta = (nextvol-currvol) / tickdiff; 71.2365 + 71.2366 + else cptr->envvoldelta = 0; 71.2367 + 71.2368 + 71.2369 + 71.2370 + tickdiff = cptr->envvoltick - currtick; 71.2371 + 71.2372 + 71.2373 + 71.2374 + cptr->envvolfrac = currvol + (cptr->envvoldelta * tickdiff); 71.2375 + 71.2376 + cptr->envvol = cptr->envvolfrac >> 16; 71.2377 + 71.2378 + cptr->envvolpos++; 71.2379 + 71.2380 + break; 71.2381 + 71.2382 + } 71.2383 + 71.2384 +#endif 71.2385 + 71.2386 +#ifdef FMUSIC_XM_PANSLIDE_ACTIVE 71.2387 + 71.2388 + case FMUSIC_XM_PANSLIDE : 71.2389 + 71.2390 + { 71.2391 + 71.2392 + if (current->eparam) 71.2393 + 71.2394 + { 71.2395 + 71.2396 + cptr->panslide = current->eparam; 71.2397 + 71.2398 + cptr->notectrl |= FMUSIC_PAN; 71.2399 + 71.2400 + } 71.2401 + 71.2402 + break; 71.2403 + 71.2404 + } 71.2405 + 71.2406 +#endif 71.2407 + 71.2408 +#ifdef FMUSIC_XM_MULTIRETRIG_ACTIVE 71.2409 + 71.2410 + case FMUSIC_XM_MULTIRETRIG: 71.2411 + 71.2412 + { 71.2413 + 71.2414 + if (current->eparam) 71.2415 + 71.2416 + { 71.2417 + 71.2418 + cptr->retrigx = paramx; 71.2419 + 71.2420 + cptr->retrigy = paramy; 71.2421 + 71.2422 + } 71.2423 + 71.2424 + break; 71.2425 + 71.2426 + } 71.2427 + 71.2428 +#endif 71.2429 + 71.2430 +#ifdef FMUSIC_XM_TREMOR_ACTIVE 71.2431 + 71.2432 + case FMUSIC_XM_TREMOR : 71.2433 + 71.2434 + { 71.2435 + 71.2436 + if (current->eparam) 71.2437 + 71.2438 + { 71.2439 + 71.2440 + cptr->tremoron = (paramx+1); 71.2441 + 71.2442 + cptr->tremoroff = (paramy+1); 71.2443 + 71.2444 + } 71.2445 + 71.2446 + FMUSIC_XM_Tremor(cptr); 71.2447 + 71.2448 + break; 71.2449 + 71.2450 + } 71.2451 + 71.2452 +#endif 71.2453 + 71.2454 +#ifdef FMUSIC_XM_EXTRAFINEPORTA_ACTIVE 71.2455 + 71.2456 + case FMUSIC_XM_EXTRAFINEPORTA : 71.2457 + 71.2458 + { 71.2459 + 71.2460 + 71.2461 + 71.2462 + if (paramx == 1) 71.2463 + 71.2464 + { 71.2465 + 71.2466 + if (paramy) 71.2467 + 71.2468 + cptr->xtraportaup = paramy; 71.2469 + 71.2470 + cptr->freq -= cptr->xtraportaup; 71.2471 + 71.2472 + } 71.2473 + 71.2474 + else if (paramx == 2) 71.2475 + 71.2476 + { 71.2477 + 71.2478 + if (paramy) 71.2479 + 71.2480 + cptr->xtraportadown = paramy; 71.2481 + 71.2482 + cptr->freq += cptr->xtraportadown; 71.2483 + 71.2484 + } 71.2485 + 71.2486 + break; 71.2487 + 71.2488 + } 71.2489 + 71.2490 +#endif 71.2491 + 71.2492 +// default: 71.2493 + 71.2494 +// __assume(0); 71.2495 + 71.2496 + }; 71.2497 + 71.2498 +#endif 71.2499 + 71.2500 + //= INSTRUMENT VIBRATO ============================================================================ 71.2501 + 71.2502 +#ifdef FMUSIC_XM_INSTRUMENTVIBRATO_ACTIVE 71.2503 + 71.2504 + FMUSIC_XM_InstrumentVibrato(cptr, iptr); // this gets added to previous freqdeltas 71.2505 + 71.2506 +#endif 71.2507 + 71.2508 + FMUSIC_XM_UpdateFlags(cptr,sptr,mod); 71.2509 + 71.2510 + } 71.2511 + 71.2512 + } 71.2513 + 71.2514 + 71.2515 + 71.2516 + 71.2517 + 71.2518 +/* 71.2519 + 71.2520 +[API] 71.2521 + 71.2522 +[ 71.2523 + 71.2524 + [DESCRIPTION] 71.2525 + 71.2526 + 71.2527 + 71.2528 + [PARAMETERS] 71.2529 + 71.2530 + 71.2531 + 71.2532 + [RETURN_VALUE] 71.2533 + 71.2534 + 71.2535 + 71.2536 + [REMARKS] 71.2537 + 71.2538 + 71.2539 + 71.2540 + [SEE_ALSO] 71.2541 + 71.2542 +] 71.2543 + 71.2544 +*/ 71.2545 + 71.2546 +void FMUSIC_UpdateXMEffects(FMUSIC_MODULE *mod) 71.2547 + 71.2548 +{ 71.2549 + 71.2550 + FMUSIC_NOTE *current; 71.2551 + 71.2552 + int count; 71.2553 + 71.2554 + 71.2555 + 71.2556 + current = mod->pattern[mod->orderlist[mod->order]].data + (mod->row*mod->numchannels); 71.2557 + 71.2558 + 71.2559 + 71.2560 + if (!current) 71.2561 + 71.2562 + return; 71.2563 + 71.2564 + 71.2565 + 71.2566 + for (count=0; count<mod->numchannels; count++,current++) 71.2567 + 71.2568 + { 71.2569 + 71.2570 + FMUSIC_CHANNEL *cptr = NULL; 71.2571 + 71.2572 + FMUSIC_INSTRUMENT *iptr = NULL; 71.2573 + 71.2574 + FSOUND_SAMPLE *sptr = NULL; 71.2575 + 71.2576 + unsigned char effect, paramx, paramy; 71.2577 + 71.2578 + 71.2579 + 71.2580 + cptr = &FMUSIC_Channel[count]; 71.2581 + 71.2582 + 71.2583 + 71.2584 +// **** FIXME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 71.2585 + 71.2586 +// cptr = LinkedListNextNode(&cptr->vchannelhead); 71.2587 + 71.2588 +// 71.2589 + 71.2590 +// if (LinkedListIsRootNode(cptr, &cptr->vchannelhead)) 71.2591 + 71.2592 +// cptr = &FMUSIC_DummyVirtualChannel; // no channels allocated yet 71.2593 + 71.2594 +// **** FIXME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 71.2595 + 71.2596 + 71.2597 + 71.2598 + if (cptr->inst >= (int)mod->numinsts) 71.2599 + 71.2600 + { 71.2601 + 71.2602 + iptr = &FMUSIC_DummyInstrument; 71.2603 + 71.2604 + sptr = &FMUSIC_DummySample; 71.2605 + 71.2606 + sptr->buff = NULL; 71.2607 + 71.2608 + } 71.2609 + 71.2610 + else 71.2611 + 71.2612 + { 71.2613 + 71.2614 + iptr = &mod->instrument[cptr->inst]; 71.2615 + 71.2616 + if (iptr->keymap[cptr->note] >= 16) 71.2617 + 71.2618 + sptr = &FMUSIC_DummySample; 71.2619 + 71.2620 + else 71.2621 + 71.2622 + sptr = iptr->sample[iptr->keymap[cptr->note]]; 71.2623 + 71.2624 + 71.2625 + 71.2626 + if (!sptr) 71.2627 + 71.2628 + sptr = &FMUSIC_DummySample; 71.2629 + 71.2630 + } 71.2631 + 71.2632 + 71.2633 + 71.2634 + effect = current->effect; // grab the effect number 71.2635 + 71.2636 + paramx = current->eparam >> 4; // grab the effect parameter x 71.2637 + 71.2638 + paramy = current->eparam & 0xF; // grab the effect parameter y 71.2639 + 71.2640 + 71.2641 + 71.2642 + cptr->voldelta = 0; // this is for tremolo / tremor etc 71.2643 + 71.2644 + cptr->freqdelta = 0; // this is for vibrato / arpeggio etc 71.2645 + 71.2646 + cptr->notectrl = 0; 71.2647 + 71.2648 + 71.2649 + 71.2650 + //= PROCESS ENVELOPES ========================================================================== 71.2651 + 71.2652 +#ifdef FMUSIC_XM_VOLUMEENVELOPE_ACTIVE 71.2653 + 71.2654 + if (iptr->VOLtype & FMUSIC_ENVELOPE_ON && !cptr->envvolstopped) 71.2655 + 71.2656 + FMUSIC_XM_ProcessEnvelope(cptr, &cptr->envvolpos, &cptr->envvoltick, iptr->VOLtype, iptr->VOLnumpoints, &iptr->VOLPoints[0], iptr->VOLLoopEnd, iptr->VOLLoopStart, iptr->VOLsustain, &cptr->envvol, &cptr->envvolfrac, &cptr->envvolstopped, &cptr->envvoldelta, FMUSIC_VOLUME); 71.2657 + 71.2658 +#endif 71.2659 + 71.2660 +#ifdef FMUSIC_XM_PANENVELOPE_ACTIVE 71.2661 + 71.2662 + if (iptr->PANtype & FMUSIC_ENVELOPE_ON && !cptr->envpanstopped) 71.2663 + 71.2664 + FMUSIC_XM_ProcessEnvelope(cptr, &cptr->envpanpos, &cptr->envpantick, iptr->PANtype, iptr->PANnumpoints, &iptr->PANPoints[0], iptr->PANLoopEnd, iptr->PANLoopStart, iptr->PANsustain, &cptr->envpan, &cptr->envpanfrac, &cptr->envpanstopped, &cptr->envpandelta, FMUSIC_PAN); 71.2665 + 71.2666 +#endif 71.2667 + 71.2668 + 71.2669 + 71.2670 + //= PROCESS VOLUME FADEOUT ===================================================================== 71.2671 + 71.2672 + if (cptr->keyoff) 71.2673 + 71.2674 + { 71.2675 + 71.2676 + cptr->fadeoutvol -= iptr->VOLfade; 71.2677 + 71.2678 + if (cptr->fadeoutvol < 0) 71.2679 + 71.2680 + cptr->fadeoutvol = 0; 71.2681 + 71.2682 + cptr->notectrl |= FMUSIC_VOLUME; 71.2683 + 71.2684 + } 71.2685 + 71.2686 + 71.2687 + 71.2688 + #ifdef FMUSIC_XM_VOLUMEBYTE_ACTIVE 71.2689 + 71.2690 + switch (current->volume >> 4) 71.2691 + 71.2692 + { 71.2693 + 71.2694 +// case 0x0: 71.2695 + 71.2696 +// case 0x1: 71.2697 + 71.2698 +// case 0x2: 71.2699 + 71.2700 +// case 0x3: 71.2701 + 71.2702 +// case 0x4: 71.2703 + 71.2704 +// case 0x5: 71.2705 + 71.2706 +// break; 71.2707 + 71.2708 + case 0x6: 71.2709 + 71.2710 + { 71.2711 + 71.2712 + cptr->volume -= (current->volume & 0xF); 71.2713 + 71.2714 + if (cptr->volume < 0) 71.2715 + 71.2716 + cptr->volume = 0; 71.2717 + 71.2718 + cptr->notectrl |= FMUSIC_VOLUME; 71.2719 + 71.2720 + break; 71.2721 + 71.2722 + } 71.2723 + 71.2724 + case 0x7 : 71.2725 + 71.2726 + { 71.2727 + 71.2728 + cptr->volume += (current->volume & 0xF); 71.2729 + 71.2730 + if (cptr->volume > 0x40) 71.2731 + 71.2732 + cptr->volume = 0x40; 71.2733 + 71.2734 + cptr->notectrl |= FMUSIC_VOLUME; 71.2735 + 71.2736 + break; 71.2737 + 71.2738 + } 71.2739 + 71.2740 +#ifdef FMUSIC_XM_VIBRATO_ACTIVE 71.2741 + 71.2742 + case 0xb : 71.2743 + 71.2744 + { 71.2745 + 71.2746 + cptr->vibdepth = (current->volume & 0xF); 71.2747 + 71.2748 + 71.2749 + 71.2750 + FMUSIC_XM_Vibrato(cptr); 71.2751 + 71.2752 + 71.2753 + 71.2754 + cptr->vibpos += cptr->vibspeed; 71.2755 + 71.2756 + if (cptr->vibpos > 31) 71.2757 + 71.2758 + cptr->vibpos -= 64; 71.2759 + 71.2760 + break; 71.2761 + 71.2762 + } 71.2763 + 71.2764 +#endif 71.2765 + 71.2766 + case 0xd : 71.2767 + 71.2768 + { 71.2769 + 71.2770 + cptr->pan -= (current->volume & 0xF); 71.2771 + 71.2772 + cptr->notectrl |= FMUSIC_PAN; 71.2773 + 71.2774 + break; 71.2775 + 71.2776 + } 71.2777 + 71.2778 + case 0xe : 71.2779 + 71.2780 + { 71.2781 + 71.2782 + cptr->pan += (current->volume & 0xF); 71.2783 + 71.2784 + cptr->notectrl |= FMUSIC_PAN; 71.2785 + 71.2786 + break; 71.2787 + 71.2788 + } 71.2789 + 71.2790 +#ifdef FMUSIC_XM_PORTATO_ACTIVE 71.2791 + 71.2792 + case 0xf : 71.2793 + 71.2794 + { 71.2795 + 71.2796 + FMUSIC_XM_Portamento(cptr); 71.2797 + 71.2798 + break; 71.2799 + 71.2800 + } 71.2801 + 71.2802 +#endif 71.2803 + 71.2804 +// default: 71.2805 + 71.2806 +// __assume(0); 71.2807 + 71.2808 + }; 71.2809 + 71.2810 + #endif 71.2811 + 71.2812 + 71.2813 + 71.2814 + 71.2815 + 71.2816 + switch(effect) 71.2817 + 71.2818 + { 71.2819 + 71.2820 +#ifdef FMUSIC_XM_ARPEGGIO_ACTIVE 71.2821 + 71.2822 + case FMUSIC_XM_ARPEGGIO : 71.2823 + 71.2824 + { 71.2825 + 71.2826 + if (current->eparam > 0) 71.2827 + 71.2828 + { 71.2829 + 71.2830 + switch (mod->tick % 3) 71.2831 + 71.2832 + { 71.2833 + 71.2834 + case 1: 71.2835 + 71.2836 + if (mod->flags & FMUSIC_XMFLAGS_LINEARFREQUENCY) 71.2837 + 71.2838 + cptr->freqdelta = paramx << 6; 71.2839 + 71.2840 +#ifdef FMUSIC_XM_AMIGAPERIODS_ACTIVE 71.2841 + 71.2842 + else 71.2843 + 71.2844 + cptr->freqdelta = FMUSIC_XM_GetAmigaPeriod(cptr->realnote+paramx, sptr->finetune) - 71.2845 + 71.2846 + FMUSIC_XM_GetAmigaPeriod(cptr->realnote, sptr->finetune); 71.2847 + 71.2848 +#endif 71.2849 + 71.2850 + break; 71.2851 + 71.2852 + case 2: 71.2853 + 71.2854 + if (mod->flags & FMUSIC_XMFLAGS_LINEARFREQUENCY) 71.2855 + 71.2856 + cptr->freqdelta = paramy << 6; 71.2857 + 71.2858 +#ifdef FMUSIC_XM_AMIGAPERIODS_ACTIVE 71.2859 + 71.2860 + else 71.2861 + 71.2862 + cptr->freqdelta = FMUSIC_XM_GetAmigaPeriod(cptr->realnote+paramy, sptr->finetune) - 71.2863 + 71.2864 + FMUSIC_XM_GetAmigaPeriod(cptr->realnote, sptr->finetune); 71.2865 + 71.2866 +#endif 71.2867 + 71.2868 + break; 71.2869 + 71.2870 + //default: 71.2871 + 71.2872 + //__assume(0); 71.2873 + 71.2874 + }; 71.2875 + 71.2876 + cptr->notectrl |= FMUSIC_FREQ; 71.2877 + 71.2878 + } 71.2879 + 71.2880 + break; 71.2881 + 71.2882 + } 71.2883 + 71.2884 +#endif 71.2885 + 71.2886 +#ifdef FMUSIC_XM_PORTAUP_ACTIVE 71.2887 + 71.2888 + case FMUSIC_XM_PORTAUP : 71.2889 + 71.2890 + { 71.2891 + 71.2892 + cptr->freqdelta = 0; 71.2893 + 71.2894 + 71.2895 + 71.2896 + cptr->freq -= cptr->portaup << 2; // subtract freq 71.2897 + 71.2898 + if (cptr->freq < 56) 71.2899 + 71.2900 + cptr->freq=56; // stop at B#8 71.2901 + 71.2902 + cptr->notectrl |= FMUSIC_FREQ; 71.2903 + 71.2904 + break; 71.2905 + 71.2906 + } 71.2907 + 71.2908 +#endif 71.2909 + 71.2910 +#ifdef FMUSIC_XM_PORTADOWN_ACTIVE 71.2911 + 71.2912 + case FMUSIC_XM_PORTADOWN : 71.2913 + 71.2914 + { 71.2915 + 71.2916 + cptr->freqdelta = 0; 71.2917 + 71.2918 + 71.2919 + 71.2920 + cptr->freq += cptr->portadown << 2; // subtract freq 71.2921 + 71.2922 + cptr->notectrl |= FMUSIC_FREQ; 71.2923 + 71.2924 + break; 71.2925 + 71.2926 + } 71.2927 + 71.2928 +#endif 71.2929 + 71.2930 +#ifdef FMUSIC_XM_PORTATO_ACTIVE 71.2931 + 71.2932 + case FMUSIC_XM_PORTATO : 71.2933 + 71.2934 + { 71.2935 + 71.2936 + cptr->freqdelta = 0; 71.2937 + 71.2938 + 71.2939 + 71.2940 + FMUSIC_XM_Portamento(cptr); 71.2941 + 71.2942 + break; 71.2943 + 71.2944 + } 71.2945 + 71.2946 +#endif 71.2947 + 71.2948 +#ifdef FMUSIC_XM_VIBRATO_ACTIVE 71.2949 + 71.2950 + case FMUSIC_XM_VIBRATO : 71.2951 + 71.2952 + { 71.2953 + 71.2954 + FMUSIC_XM_Vibrato(cptr); 71.2955 + 71.2956 + cptr->vibpos += cptr->vibspeed; 71.2957 + 71.2958 + if (cptr->vibpos > 31) 71.2959 + 71.2960 + cptr->vibpos -= 64; 71.2961 + 71.2962 + break; 71.2963 + 71.2964 + } 71.2965 + 71.2966 +#endif 71.2967 + 71.2968 +#ifdef FMUSIC_XM_PORTATOVOLSLIDE_ACTIVE 71.2969 + 71.2970 + case FMUSIC_XM_PORTATOVOLSLIDE : 71.2971 + 71.2972 + { 71.2973 + 71.2974 + cptr->freqdelta = 0; 71.2975 + 71.2976 + 71.2977 + 71.2978 + FMUSIC_XM_Portamento(cptr); 71.2979 + 71.2980 + 71.2981 + 71.2982 + paramx = cptr->volslide >> 4; // grab the effect parameter x 71.2983 + 71.2984 + paramy = cptr->volslide & 0xF; // grab the effect parameter y 71.2985 + 71.2986 + 71.2987 + 71.2988 + // slide up takes precedence over down 71.2989 + 71.2990 + if (paramx) 71.2991 + 71.2992 + { 71.2993 + 71.2994 + cptr->volume += paramx; 71.2995 + 71.2996 + if (cptr->volume > 64) 71.2997 + 71.2998 + cptr->volume = 64; 71.2999 + 71.3000 + } 71.3001 + 71.3002 + else if (paramy) 71.3003 + 71.3004 + { 71.3005 + 71.3006 + cptr->volume -= paramy; 71.3007 + 71.3008 + if (cptr->volume < 0) 71.3009 + 71.3010 + cptr->volume = 0; 71.3011 + 71.3012 + } 71.3013 + 71.3014 + 71.3015 + 71.3016 + cptr->notectrl |= FMUSIC_VOLUME; 71.3017 + 71.3018 + break; 71.3019 + 71.3020 + } 71.3021 + 71.3022 +#endif 71.3023 + 71.3024 +#ifdef FMUSIC_XM_VIBRATOVOLSLIDE_ACTIVE 71.3025 + 71.3026 + case FMUSIC_XM_VIBRATOVOLSLIDE : 71.3027 + 71.3028 + { 71.3029 + 71.3030 + FMUSIC_XM_Vibrato(cptr); 71.3031 + 71.3032 + cptr->vibpos += cptr->vibspeed; 71.3033 + 71.3034 + if (cptr->vibpos > 31) 71.3035 + 71.3036 + cptr->vibpos -= 64; 71.3037 + 71.3038 + 71.3039 + 71.3040 + paramx = cptr->volslide >> 4; // grab the effect parameter x 71.3041 + 71.3042 + paramy = cptr->volslide & 0xF; // grab the effect parameter y 71.3043 + 71.3044 + 71.3045 + 71.3046 + // slide up takes precedence over down 71.3047 + 71.3048 + if (paramx) 71.3049 + 71.3050 + { 71.3051 + 71.3052 + cptr->volume += paramx; 71.3053 + 71.3054 + if (cptr->volume > 64) 71.3055 + 71.3056 + cptr->volume = 64; 71.3057 + 71.3058 + } 71.3059 + 71.3060 + else if (paramy) 71.3061 + 71.3062 + { 71.3063 + 71.3064 + cptr->volume -= paramy; 71.3065 + 71.3066 + if (cptr->volume < 0) 71.3067 + 71.3068 + cptr->volume = 0; 71.3069 + 71.3070 + } 71.3071 + 71.3072 + 71.3073 + 71.3074 + cptr->notectrl |= FMUSIC_VOLUME; 71.3075 + 71.3076 + break; 71.3077 + 71.3078 + } 71.3079 + 71.3080 +#endif 71.3081 + 71.3082 +#ifdef FMUSIC_XM_TREMOLO_ACTIVE 71.3083 + 71.3084 + case FMUSIC_XM_TREMOLO : 71.3085 + 71.3086 + { 71.3087 + 71.3088 + FMUSIC_XM_Tremolo(cptr); 71.3089 + 71.3090 + break; 71.3091 + 71.3092 + } 71.3093 + 71.3094 +#endif 71.3095 + 71.3096 +#ifdef FMUSIC_XM_VOLUMESLIDE_ACTIVE 71.3097 + 71.3098 + case FMUSIC_XM_VOLUMESLIDE : 71.3099 + 71.3100 + { 71.3101 + 71.3102 + paramx = cptr->volslide >> 4; // grab the effect parameter x 71.3103 + 71.3104 + paramy = cptr->volslide & 0xF; // grab the effect parameter y 71.3105 + 71.3106 + 71.3107 + 71.3108 + // slide up takes precedence over down 71.3109 + 71.3110 + if (paramx) 71.3111 + 71.3112 + { 71.3113 + 71.3114 + cptr->volume += paramx; 71.3115 + 71.3116 + if (cptr->volume > 64) 71.3117 + 71.3118 + cptr->volume = 64; 71.3119 + 71.3120 + } 71.3121 + 71.3122 + else if (paramy) 71.3123 + 71.3124 + { 71.3125 + 71.3126 + cptr->volume -= paramy; 71.3127 + 71.3128 + if (cptr->volume < 0) 71.3129 + 71.3130 + cptr->volume = 0; 71.3131 + 71.3132 + } 71.3133 + 71.3134 + 71.3135 + 71.3136 + cptr->notectrl |= FMUSIC_VOLUME; 71.3137 + 71.3138 + break; 71.3139 + 71.3140 + } 71.3141 + 71.3142 +#endif 71.3143 + 71.3144 + // extended PT effects 71.3145 + 71.3146 + case FMUSIC_XM_SPECIAL: 71.3147 + 71.3148 + { 71.3149 + 71.3150 + switch (paramx) 71.3151 + 71.3152 + { 71.3153 + 71.3154 +#ifdef FMUSIC_XM_NOTECUT_ACTIVE 71.3155 + 71.3156 + case FMUSIC_XM_NOTECUT: 71.3157 + 71.3158 + { 71.3159 + 71.3160 + if (mod->tick==paramy) 71.3161 + 71.3162 + { 71.3163 + 71.3164 + cptr->volume = 0; 71.3165 + 71.3166 + cptr->notectrl |= FMUSIC_VOLUME; 71.3167 + 71.3168 + } 71.3169 + 71.3170 + break; 71.3171 + 71.3172 + } 71.3173 + 71.3174 +#endif 71.3175 + 71.3176 +#ifdef FMUSIC_XM_RETRIG_ACTIVE 71.3177 + 71.3178 + case FMUSIC_XM_RETRIG : 71.3179 + 71.3180 + { 71.3181 + 71.3182 + if (!paramy) 71.3183 + 71.3184 + break; // divide by 0 bugfix 71.3185 + 71.3186 + if (!(mod->tick % paramy)) 71.3187 + 71.3188 + { 71.3189 + 71.3190 + cptr->notectrl |= FMUSIC_TRIGGER; 71.3191 + 71.3192 + cptr->notectrl |= FMUSIC_VOLUME; 71.3193 + 71.3194 + cptr->notectrl |= FMUSIC_FREQ; 71.3195 + 71.3196 + } 71.3197 + 71.3198 + break; 71.3199 + 71.3200 + } 71.3201 + 71.3202 +#endif 71.3203 + 71.3204 +#ifdef FMUSIC_XM_NOTEDELAY_ACTIVE 71.3205 + 71.3206 + case FMUSIC_XM_NOTEDELAY : 71.3207 + 71.3208 + { 71.3209 + 71.3210 + if (mod->tick == paramy) 71.3211 + 71.3212 + { 71.3213 + 71.3214 + //= PROCESS INSTRUMENT NUMBER ================================================================== 71.3215 + 71.3216 + FMUSIC_XM_Resetcptr(cptr,sptr); 71.3217 + 71.3218 + 71.3219 + 71.3220 + cptr->freq = cptr->period; 71.3221 + 71.3222 + cptr->notectrl |= FMUSIC_FREQ; 71.3223 + 71.3224 +#ifdef FMUSIC_XM_VOLUMEBYTE_ACTIVE 71.3225 + 71.3226 + if (current->volume) 71.3227 + 71.3228 + FMUSIC_XM_ProcessVolumeByte(cptr, current->volume); 71.3229 + 71.3230 +#endif 71.3231 + 71.3232 + cptr->notectrl |= FMUSIC_TRIGGER; 71.3233 + 71.3234 + } 71.3235 + 71.3236 + else 71.3237 + 71.3238 + { 71.3239 + 71.3240 + cptr->notectrl &= ~FMUSIC_VOLUME; 71.3241 + 71.3242 + cptr->notectrl &= ~FMUSIC_FREQ; 71.3243 + 71.3244 + cptr->notectrl &= ~FMUSIC_PAN; 71.3245 + 71.3246 + cptr->notectrl &= ~FMUSIC_TRIGGER; 71.3247 + 71.3248 + } 71.3249 + 71.3250 + break; 71.3251 + 71.3252 + } 71.3253 + 71.3254 +#endif 71.3255 + 71.3256 + //default: 71.3257 + 71.3258 + //__assume(0); 71.3259 + 71.3260 + }; 71.3261 + 71.3262 + break; 71.3263 + 71.3264 + } 71.3265 + 71.3266 +#ifdef FMUSIC_XM_MULTIRETRIG_ACTIVE 71.3267 + 71.3268 + case FMUSIC_XM_MULTIRETRIG : 71.3269 + 71.3270 + { 71.3271 + 71.3272 + if (!cptr->retrigy) break; // divide by 0 bugfix 71.3273 + 71.3274 + 71.3275 + 71.3276 + if (!(mod->tick % cptr->retrigy)) 71.3277 + 71.3278 + { 71.3279 + 71.3280 + if (cptr->retrigx) 71.3281 + 71.3282 + { 71.3283 + 71.3284 + switch (cptr->retrigx) 71.3285 + 71.3286 + { 71.3287 + 71.3288 + case 1: cptr->volume--; 71.3289 + 71.3290 + break; 71.3291 + 71.3292 + case 2: cptr->volume -= 2; 71.3293 + 71.3294 + break; 71.3295 + 71.3296 + case 3: cptr->volume -= 4; 71.3297 + 71.3298 + break; 71.3299 + 71.3300 + case 4: cptr->volume -= 8; 71.3301 + 71.3302 + break; 71.3303 + 71.3304 + case 5: cptr->volume -= 16; 71.3305 + 71.3306 + break; 71.3307 + 71.3308 + case 6: cptr->volume = cptr->volume * 2 / 3; 71.3309 + 71.3310 + break; 71.3311 + 71.3312 + case 7: cptr->volume >>= 1; 71.3313 + 71.3314 + break; 71.3315 + 71.3316 + case 8: // ? 71.3317 + 71.3318 + break; 71.3319 + 71.3320 + case 9: cptr->volume++; 71.3321 + 71.3322 + break; 71.3323 + 71.3324 + case 0xA: cptr->volume += 2; 71.3325 + 71.3326 + break; 71.3327 + 71.3328 + case 0xB: cptr->volume += 4; 71.3329 + 71.3330 + break; 71.3331 + 71.3332 + case 0xC: cptr->volume += 8; 71.3333 + 71.3334 + break; 71.3335 + 71.3336 + case 0xD: cptr->volume += 16; 71.3337 + 71.3338 + break; 71.3339 + 71.3340 + case 0xE: cptr->volume = cptr->volume * 3 / 2; 71.3341 + 71.3342 + break; 71.3343 + 71.3344 + case 0xF: cptr->volume <<= 1; 71.3345 + 71.3346 + break; 71.3347 + 71.3348 + //default: 71.3349 + 71.3350 + //__assume(0); 71.3351 + 71.3352 + }; 71.3353 + 71.3354 + if (cptr->volume > 64) 71.3355 + 71.3356 + cptr->volume = 64; 71.3357 + 71.3358 + if (cptr->volume < 0) 71.3359 + 71.3360 + cptr->volume = 0; 71.3361 + 71.3362 + cptr->notectrl |= FMUSIC_VOLUME; 71.3363 + 71.3364 + } 71.3365 + 71.3366 + cptr->notectrl |= FMUSIC_TRIGGER; 71.3367 + 71.3368 + } 71.3369 + 71.3370 + break; 71.3371 + 71.3372 + } 71.3373 + 71.3374 +#endif 71.3375 + 71.3376 +#ifdef FMUSIC_XM_GLOBALVOLSLIDE_ACTIVE 71.3377 + 71.3378 + case FMUSIC_XM_GLOBALVOLSLIDE : 71.3379 + 71.3380 + { 71.3381 + 71.3382 + paramx = mod->globalvsl >> 4; // grab the effect parameter x 71.3383 + 71.3384 + paramy = mod->globalvsl & 0xF; // grab the effect parameter y 71.3385 + 71.3386 + 71.3387 + 71.3388 + // slide up takes precedence over down 71.3389 + 71.3390 + if (paramx) 71.3391 + 71.3392 + { 71.3393 + 71.3394 + mod->globalvolume += paramx; 71.3395 + 71.3396 + if (mod->globalvolume > 64) 71.3397 + 71.3398 + mod->globalvolume = 64; 71.3399 + 71.3400 + } 71.3401 + 71.3402 + else if (paramy) 71.3403 + 71.3404 + { 71.3405 + 71.3406 + mod->globalvolume -= paramy; 71.3407 + 71.3408 + if (mod->globalvolume < 0) 71.3409 + 71.3410 + mod->globalvolume = 0; 71.3411 + 71.3412 + } 71.3413 + 71.3414 + break; 71.3415 + 71.3416 + } 71.3417 + 71.3418 +#endif 71.3419 + 71.3420 +#ifdef FMUSIC_XM_PANSLIDE_ACTIVE 71.3421 + 71.3422 + case FMUSIC_XM_PANSLIDE : 71.3423 + 71.3424 + { 71.3425 + 71.3426 + paramx = cptr->panslide >> 4; // grab the effect parameter x 71.3427 + 71.3428 + paramy = cptr->panslide & 0xF; // grab the effect parameter y 71.3429 + 71.3430 + 71.3431 + 71.3432 + // slide right takes precedence over left 71.3433 + 71.3434 + if (paramx) 71.3435 + 71.3436 + { 71.3437 + 71.3438 + cptr->pan += paramx; 71.3439 + 71.3440 + if (cptr->pan > 255) 71.3441 + 71.3442 + cptr->pan = 255; 71.3443 + 71.3444 + } 71.3445 + 71.3446 + else if (paramy) 71.3447 + 71.3448 + { 71.3449 + 71.3450 + cptr->pan -= paramy; 71.3451 + 71.3452 + if (cptr->pan < 0) 71.3453 + 71.3454 + cptr->pan = 0; 71.3455 + 71.3456 + } 71.3457 + 71.3458 + 71.3459 + 71.3460 + cptr->notectrl |= FMUSIC_PAN; 71.3461 + 71.3462 + break; 71.3463 + 71.3464 + } 71.3465 + 71.3466 +#endif 71.3467 + 71.3468 +#ifdef FMUSIC_XM_TREMOR_ACTIVE 71.3469 + 71.3470 + case FMUSIC_XM_TREMOR : 71.3471 + 71.3472 + { 71.3473 + 71.3474 + FMUSIC_XM_Tremor(cptr); 71.3475 + 71.3476 + break; 71.3477 + 71.3478 + } 71.3479 + 71.3480 +#endif 71.3481 + 71.3482 +// default: 71.3483 + 71.3484 +// __assume(0); 71.3485 + 71.3486 + }; 71.3487 + 71.3488 + 71.3489 + 71.3490 + //= INSTRUMENT VIBRATO ============================================================================ 71.3491 + 71.3492 +#ifdef FMUSIC_XM_INSTRUMENTVIBRATO_ACTIVE 71.3493 + 71.3494 + FMUSIC_XM_InstrumentVibrato(cptr, iptr); // this gets added to previous freqdeltas 71.3495 + 71.3496 +#endif 71.3497 + 71.3498 + 71.3499 + 71.3500 + FMUSIC_XM_UpdateFlags(cptr, sptr,mod); 71.3501 + 71.3502 + } 71.3503 + 71.3504 +} 71.3505 + 71.3506 + 71.3507 + 71.3508 + 71.3509 + 71.3510 + 71.3511 + 71.3512 +/* 71.3513 + 71.3514 +[API] 71.3515 + 71.3516 +[ 71.3517 + 71.3518 + [DESCRIPTION] 71.3519 + 71.3520 + 71.3521 + 71.3522 + [PARAMETERS] 71.3523 + 71.3524 + 71.3525 + 71.3526 + [RETURN_VALUE] 71.3527 + 71.3528 + 71.3529 + 71.3530 + [REMARKS] 71.3531 + 71.3532 + 71.3533 + 71.3534 + [SEE_ALSO] 71.3535 + 71.3536 +] 71.3537 + 71.3538 +*/ 71.3539 + 71.3540 +void FMUSIC_UpdateXM(FMUSIC_MODULE *mod) 71.3541 + 71.3542 +{ 71.3543 + 71.3544 + if (mod->tick == 0) // new note 71.3545 + 71.3546 + { 71.3547 + 71.3548 + // process any rows commands to set the next order/row 71.3549 + 71.3550 + if (mod->nextorder >= 0) 71.3551 + 71.3552 + mod->order = mod->nextorder; 71.3553 + 71.3554 + if (mod->nextrow >= 0) 71.3555 + 71.3556 + mod->row = mod->nextrow; 71.3557 + 71.3558 + 71.3559 + 71.3560 + FMUSIC_UpdateXMNote(mod); // Update and play the note 71.3561 + 71.3562 + 71.3563 + 71.3564 + // if there were no row commands 71.3565 + 71.3566 + if (mod->nextrow == -1) 71.3567 + 71.3568 + { 71.3569 + 71.3570 + mod->nextrow = mod->row+1; 71.3571 + 71.3572 + if (mod->nextrow >= mod->pattern[mod->orderlist[mod->order]].rows) // if end of pattern 71.3573 + 71.3574 + { 71.3575 + 71.3576 + mod->nextorder = mod->order+1; // so increment the order 71.3577 + 71.3578 + if (mod->nextorder >= (int)mod->numorders) 71.3579 + 71.3580 + mod->nextorder = (int)mod->restart; 71.3581 + 71.3582 + mod->nextrow = 0; // start at top of pattn 71.3583 + 71.3584 + } 71.3585 + 71.3586 + } 71.3587 + 71.3588 + } 71.3589 + 71.3590 + else 71.3591 + 71.3592 + FMUSIC_UpdateXMEffects(mod); // Else update the inbetween row effects 71.3593 + 71.3594 + 71.3595 + 71.3596 + 71.3597 + 71.3598 + mod->tick++; 71.3599 + 71.3600 + if (mod->tick >= mod->speed + mod->patterndelay) 71.3601 + 71.3602 + { 71.3603 + 71.3604 + mod->patterndelay = 0; 71.3605 + 71.3606 + mod->tick = 0; 71.3607 + 71.3608 + } 71.3609 + 71.3610 +} 71.3611 + 71.3612 + 71.3613 + 71.3614 + 71.3615 + 71.3616 +/* 71.3617 + 71.3618 +[API] 71.3619 + 71.3620 +[ 71.3621 + 71.3622 + [DESCRIPTION] 71.3623 + 71.3624 + 71.3625 + 71.3626 + [PARAMETERS] 71.3627 + 71.3628 + 71.3629 + 71.3630 + [RETURN_VALUE] 71.3631 + 71.3632 + 71.3633 + 71.3634 + [REMARKS] 71.3635 + 71.3636 + 71.3637 + 71.3638 + [SEE_ALSO] 71.3639 + 71.3640 +] 71.3641 + 71.3642 +*/ 71.3643 + 71.3644 +signed char FMUSIC_LoadXM(FMUSIC_MODULE *mod, FSOUND_FILE_HANDLE *fp) 71.3645 + 71.3646 +{ 71.3647 + 71.3648 + unsigned short filenumpatterns=0; 71.3649 + 71.3650 + int count; 71.3651 + 71.3652 + unsigned int mainHDRsize; 71.3653 + 71.3654 + signed char str[256]; 71.3655 + 71.3656 + char *ComparisonStr = "Extended Module: "; 71.3657 + 71.3658 + 71.3659 + 71.3660 + //= VERIFY ================================================================================== 71.3661 + 71.3662 + 71.3663 + 71.3664 + FSOUND_File_Seek(fp, 0, SEEK_SET); 71.3665 + 71.3666 + 71.3667 + 71.3668 + FSOUND_File_Read(str, 17, fp); 71.3669 + 71.3670 + 71.3671 + 71.3672 + for (count=0; count < 17; count++) 71.3673 + 71.3674 + if (str[count] != ComparisonStr[count]) 71.3675 + 71.3676 + return FALSE; 71.3677 + 71.3678 + 71.3679 + 71.3680 + // set a few default values for this format 71.3681 + 71.3682 + mod->Update = &FMUSIC_UpdateXM; 71.3683 + 71.3684 + mod->defaultglobalvolume = 64; 71.3685 + 71.3686 + 71.3687 + 71.3688 +// FSOUND_File_Seek(fp, 21, SEEK_CUR); // read in module name. 71.3689 + 71.3690 + 71.3691 + 71.3692 + // Skip tracker name and version number 71.3693 + 71.3694 + FSOUND_File_Seek(fp, 60, SEEK_SET); 71.3695 + 71.3696 + FSOUND_File_Read(&mainHDRsize, 4, fp); 71.3697 + 71.3698 + 71.3699 + 71.3700 +#if 1 // WARNING! DONT CHANGE THE HEADER AROUND BECAUSE OF THIS HACK. 71.3701 + 71.3702 + FSOUND_File_Read(&mod->numorders, 6, fp); 71.3703 + 71.3704 +#else 71.3705 + 71.3706 + FSOUND_File_Read(&mod->numorders, 2, fp); 71.3707 + 71.3708 + FSOUND_File_Read(&mod->restart, 2, fp); 71.3709 + 71.3710 + FSOUND_File_Read(&mod->numchannels, 2, fp); 71.3711 + 71.3712 +#endif 71.3713 + 71.3714 + 71.3715 + 71.3716 + FSOUND_File_Read(&filenumpatterns, 2, fp); 71.3717 + 71.3718 + 71.3719 + 71.3720 +#if 1 // WARNING! DONT CHANGE THE HEADER AROUND BECAUSE OF THIS HACK. 71.3721 + 71.3722 + FSOUND_File_Read(&mod->numinsts, 256+8, fp); 71.3723 + 71.3724 +#else 71.3725 + 71.3726 + FSOUND_File_Read(&mod->numinsts, 2, fp); 71.3727 + 71.3728 + FSOUND_File_Read(&mod->flags, 2, fp); 71.3729 + 71.3730 + FSOUND_File_Read(&mod->defaultspeed, 2, fp); 71.3731 + 71.3732 + FSOUND_File_Read(&mod->defaultbpm, 2, fp); 71.3733 + 71.3734 + FSOUND_File_Read(&mod->orderlist, 256, fp); 71.3735 + 71.3736 +#endif 71.3737 + 71.3738 + 71.3739 + 71.3740 + // seek to patterndata 71.3741 + 71.3742 + FSOUND_File_Seek(fp, 60L+mainHDRsize, SEEK_SET); 71.3743 + 71.3744 + 71.3745 + 71.3746 + mod->numpatterns = 0; 71.3747 + 71.3748 + for (count=0; count<(int)mod->numorders; count++) 71.3749 + 71.3750 + { 71.3751 + 71.3752 + if (mod->orderlist[count] >= mod->numpatterns) 71.3753 + 71.3754 + mod->numpatterns = mod->orderlist[count]+1; 71.3755 + 71.3756 + } 71.3757 + 71.3758 + 71.3759 + 71.3760 + // alloc pattern array (whatever is bigger.. filenumpatterns or mod->numpatterns) 71.3761 + 71.3762 + mod->numpatternsmem = (mod->numpatterns > filenumpatterns ? mod->numpatterns : filenumpatterns); 71.3763 + 71.3764 + mod->pattern = (FMUSIC_PATTERN *)FSOUND_Memory_Calloc(mod->numpatternsmem * sizeof(FMUSIC_PATTERN)); //FIXME:MEMLEAK 71.3765 + 71.3766 + 71.3767 + 71.3768 + // unpack and read patterns 71.3769 + 71.3770 + for (count=0; count < filenumpatterns; count++) 71.3771 + 71.3772 + { 71.3773 + 71.3774 + FMUSIC_PATTERN *pptr; 71.3775 + 71.3776 + unsigned short patternsize, rows; 71.3777 + 71.3778 + unsigned int patternHDRsize; 71.3779 + 71.3780 + unsigned char tempchar = 0; 71.3781 + 71.3782 + 71.3783 + 71.3784 + pptr = &mod->pattern[count]; 71.3785 + 71.3786 + 71.3787 + 71.3788 + FSOUND_File_Read(&patternHDRsize, 4, fp); 71.3789 + 71.3790 + FSOUND_File_Read(&tempchar, 1, fp); 71.3791 + 71.3792 + FSOUND_File_Read(&rows, 2, fp); // length of pattern 71.3793 + 71.3794 + pptr->rows = rows; 71.3795 + 71.3796 + FSOUND_File_Read(&patternsize, 2, fp); // packed pattern size 71.3797 + 71.3798 + 71.3799 + 71.3800 + // allocate memory for pattern buffer 71.3801 + 71.3802 + pptr->data = (FMUSIC_NOTE *)FSOUND_Memory_Calloc(mod->numchannels * pptr->rows * sizeof(FMUSIC_NOTE)); //FIXME:MEMLEAK 71.3803 + 71.3804 + 71.3805 + 71.3806 + if (patternsize > 0) 71.3807 + 71.3808 + { 71.3809 + 71.3810 + int count2; 71.3811 + 71.3812 + FMUSIC_NOTE *nptr; 71.3813 + 71.3814 + 71.3815 + 71.3816 + nptr = pptr->data; 71.3817 + 71.3818 + 71.3819 + 71.3820 + for (count2=0; count2< (pptr->rows*mod->numchannels); count2++) 71.3821 + 71.3822 + { 71.3823 + 71.3824 + unsigned char dat; 71.3825 + 71.3826 + 71.3827 + 71.3828 + FSOUND_File_Read(&dat, 1, fp); 71.3829 + 71.3830 + if (dat & 0x80) 71.3831 + 71.3832 + { 71.3833 + 71.3834 + if (dat & 1) FSOUND_File_Read(&nptr->note, 1, fp); 71.3835 + 71.3836 + if (dat & 2) FSOUND_File_Read(&nptr->number, 1, fp); 71.3837 + 71.3838 + if (dat & 4) FSOUND_File_Read(&nptr->volume, 1, fp); 71.3839 + 71.3840 + if (dat & 8) FSOUND_File_Read(&nptr->effect, 1, fp); 71.3841 + 71.3842 + if (dat & 16) FSOUND_File_Read(&nptr->eparam, 1, fp); 71.3843 + 71.3844 + } 71.3845 + 71.3846 + else 71.3847 + 71.3848 + { 71.3849 + 71.3850 + if (dat) 71.3851 + 71.3852 + nptr->note = dat; 71.3853 + 71.3854 + 71.3855 + 71.3856 + FSOUND_File_Read(&nptr->number, 4, fp); 71.3857 + 71.3858 + 71.3859 + 71.3860 + } 71.3861 + 71.3862 + if (nptr->note == 97) 71.3863 + 71.3864 + nptr->note = FMUSIC_KEYOFF; 71.3865 + 71.3866 + 71.3867 + 71.3868 + if (nptr->number > 0x80) 71.3869 + 71.3870 + nptr->number = 0; 71.3871 + 71.3872 + 71.3873 + 71.3874 + nptr++; 71.3875 + 71.3876 + } 71.3877 + 71.3878 + } 71.3879 + 71.3880 + } 71.3881 + 71.3882 + 71.3883 + 71.3884 + // allocate and clean out any extra patterns 71.3885 + 71.3886 + if (mod->numpatterns > filenumpatterns) 71.3887 + 71.3888 + { 71.3889 + 71.3890 + for (count=filenumpatterns; count < mod->numpatterns; count++) 71.3891 + 71.3892 + { 71.3893 + 71.3894 + FMUSIC_PATTERN *pptr; 71.3895 + 71.3896 + 71.3897 + 71.3898 + pptr = &mod->pattern[count]; 71.3899 + 71.3900 + pptr->rows = 64; 71.3901 + 71.3902 + 71.3903 + 71.3904 + // allocate memory for pattern buffer 71.3905 + 71.3906 + pptr->data = (FMUSIC_NOTE *)FSOUND_Memory_Calloc(mod->numchannels * pptr->rows * sizeof(FMUSIC_NOTE)); 71.3907 + 71.3908 + } 71.3909 + 71.3910 + } 71.3911 + 71.3912 + 71.3913 + 71.3914 + 71.3915 + 71.3916 + // alloc instrument array 71.3917 + 71.3918 + mod->instrument = (FMUSIC_INSTRUMENT *)FSOUND_Memory_Calloc((int)(mod->numinsts) * sizeof(FMUSIC_INSTRUMENT)); 71.3919 + 71.3920 + 71.3921 + 71.3922 + // load instrument information 71.3923 + 71.3924 + for (count=0; count<(int)mod->numinsts; count++) 71.3925 + 71.3926 + { 71.3927 + 71.3928 + unsigned int count2; 71.3929 + 71.3930 + FMUSIC_INSTRUMENT *iptr; 71.3931 + 71.3932 + unsigned int instHDRsize; 71.3933 + 71.3934 + unsigned short numsamples; 71.3935 + 71.3936 + int firstsampleoffset; 71.3937 + 71.3938 + 71.3939 + 71.3940 + // point a pointer to that particular instrument 71.3941 + 71.3942 + iptr = &mod->instrument[count]; 71.3943 + 71.3944 + 71.3945 + 71.3946 + firstsampleoffset = FSOUND_File_Tell(fp); 71.3947 + 71.3948 + FSOUND_File_Read(&instHDRsize, 4, fp); // instrument size 71.3949 + 71.3950 + firstsampleoffset += instHDRsize; 71.3951 + 71.3952 + 71.3953 + 71.3954 + FSOUND_File_Seek(fp, 23, SEEK_CUR); // instrument name 71.3955 + 71.3956 + FSOUND_File_Read(&numsamples, 2, fp); // number of samples in this instrument 71.3957 + 71.3958 + 71.3959 + 71.3960 + if (numsamples >16) 71.3961 + 71.3962 + return FALSE; 71.3963 + 71.3964 + 71.3965 + 71.3966 + iptr->numsamples = numsamples; 71.3967 + 71.3968 + 71.3969 + 71.3970 + if (numsamples > 0) 71.3971 + 71.3972 + { 71.3973 + 71.3974 + unsigned int sampHDRsize; 71.3975 + 71.3976 + unsigned char tempchar = 0; 71.3977 + 71.3978 + 71.3979 + 71.3980 + FSOUND_File_Read(&sampHDRsize, 4, fp); // sampleheader size 71.3981 + 71.3982 + FSOUND_File_Read(iptr->keymap, 96, fp); // sample numbers 71.3983 + 71.3984 + FSOUND_File_Read(iptr->VOLPoints, 48, fp); // Volume Envelope (24 words) 71.3985 + 71.3986 + FSOUND_File_Read(iptr->PANPoints, 48, fp); // Panning Envelope (24 words) 71.3987 + 71.3988 + 71.3989 + 71.3990 +#if 1 // WARNING! DONT CHANGE THE HEADER AROUND BECAUSE OF THIS HACK. 71.3991 + 71.3992 + FSOUND_File_Read(&iptr->VOLnumpoints, 16, fp); 71.3993 + 71.3994 +#else 71.3995 + 71.3996 + iptr->VOLnumpoints = FSOUND_File_GetChar(fp); 71.3997 + 71.3998 + iptr->PANnumpoints = FSOUND_File_GetChar(fp); 71.3999 + 71.4000 + iptr->VOLsustain = FSOUND_File_GetChar(fp); 71.4001 + 71.4002 + iptr->VOLLoopStart = FSOUND_File_GetChar(fp); 71.4003 + 71.4004 + iptr->VOLLoopEnd = FSOUND_File_GetChar(fp); 71.4005 + 71.4006 + iptr->PANsustain = FSOUND_File_GetChar(fp); 71.4007 + 71.4008 + iptr->PANLoopStart = FSOUND_File_GetChar(fp); 71.4009 + 71.4010 + iptr->PANLoopEnd = FSOUND_File_GetChar(fp); 71.4011 + 71.4012 + iptr->VOLtype = FSOUND_File_GetChar(fp); 71.4013 + 71.4014 + iptr->PANtype = FSOUND_File_GetChar(fp); 71.4015 + 71.4016 + iptr->VIBtype = FSOUND_File_GetChar(fp); 71.4017 + 71.4018 + iptr->VIBsweep = FSOUND_File_GetChar(fp); 71.4019 + 71.4020 + iptr->VIBdepth = FSOUND_File_GetChar(fp); 71.4021 + 71.4022 + iptr->VIBrate = FSOUND_File_GetChar(fp); 71.4023 + 71.4024 + FSOUND_File_Read(&iptr->VOLfade, 2, fp); 71.4025 + 71.4026 +#endif 71.4027 + 71.4028 + 71.4029 + 71.4030 + iptr->VOLfade *= 2; // i DONT KNOW why i needed this.. it just made it work 71.4031 + 71.4032 + 71.4033 + 71.4034 + if (iptr->VOLnumpoints < 2) 71.4035 + 71.4036 + iptr->VOLtype = FMUSIC_ENVELOPE_OFF; 71.4037 + 71.4038 + if (iptr->PANnumpoints < 2) 71.4039 + 71.4040 + iptr->PANtype = FMUSIC_ENVELOPE_OFF; 71.4041 + 71.4042 + 71.4043 + 71.4044 + // seek to first sample 71.4045 + 71.4046 + FSOUND_File_Seek(fp, firstsampleoffset, SEEK_SET); 71.4047 + 71.4048 + for (count2=0; count2<numsamples; count2++) 71.4049 + 71.4050 + { 71.4051 + 71.4052 + FSOUND_SAMPLE *sptr; 71.4053 + 71.4054 + unsigned char dat; 71.4055 + 71.4056 + 71.4057 + 71.4058 + iptr->sample[count2] = (FSOUND_SAMPLE *)FSOUND_Memory_Calloc(sizeof(FSOUND_SAMPLE)); 71.4059 + 71.4060 + sptr = iptr->sample[count2]; 71.4061 + 71.4062 + 71.4063 + 71.4064 +#if 1 // WARNING! DONT CHANGE THE HEADER AROUND BECAUSE OF THIS HACK. 71.4065 + 71.4066 + FSOUND_File_Read(&sptr->length, 14, fp); 71.4067 + 71.4068 +#else 71.4069 + 71.4070 + FSOUND_File_Read(&sptr->length, 4, fp); 71.4071 + 71.4072 + FSOUND_File_Read(&sptr->loopstart, 4, fp); 71.4073 + 71.4074 + FSOUND_File_Read(&sptr->looplen, 4, fp); 71.4075 + 71.4076 + sptr->defvol = FSOUND_File_GetChar(fp); 71.4077 + 71.4078 + sptr->finetune = FSOUND_File_GetChar(fp); // finetune -128 to +127 71.4079 + 71.4080 +#endif 71.4081 + 71.4082 + 71.4083 + 71.4084 + // type of sample 71.4085 + 71.4086 + sptr->loopmode = FSOUND_LOOP_OFF; 71.4087 + 71.4088 + sptr->bits = 8; 71.4089 + 71.4090 + 71.4091 + 71.4092 + FSOUND_File_Read(&dat, 1, fp); 71.4093 + 71.4094 + if (dat & 1) 71.4095 + 71.4096 + { 71.4097 + 71.4098 + sptr->loopmode &= ~(FSOUND_LOOP_OFF); 71.4099 + 71.4100 + sptr->loopmode |= FSOUND_LOOP_NORMAL; 71.4101 + 71.4102 + } 71.4103 + 71.4104 + if (dat & 2) 71.4105 + 71.4106 + { 71.4107 + 71.4108 + sptr->loopmode &= ~(FSOUND_LOOP_OFF | FSOUND_LOOP_NORMAL); 71.4109 + 71.4110 + sptr->loopmode |= FSOUND_LOOP_BIDI; // bidirectional 71.4111 + 71.4112 + } 71.4113 + 71.4114 + if (dat & 16) sptr->bits = 16; 71.4115 + 71.4116 + 71.4117 + 71.4118 + 71.4119 + 71.4120 + if (sptr->loopmode & FSOUND_LOOP_OFF) 71.4121 + 71.4122 + { 71.4123 + 71.4124 + sptr->loopstart = 0; 71.4125 + 71.4126 + sptr->looplen = sptr->length; 71.4127 + 71.4128 + } 71.4129 + 71.4130 + 71.4131 + 71.4132 + if (sptr->bits == 16) 71.4133 + 71.4134 + { 71.4135 + 71.4136 + sptr->length >>= 1; 71.4137 + 71.4138 + sptr->loopstart >>= 1; 71.4139 + 71.4140 + sptr->looplen >>= 1; 71.4141 + 71.4142 + } 71.4143 + 71.4144 + 71.4145 + 71.4146 + if (!sptr->looplen) 71.4147 + 71.4148 + { 71.4149 + 71.4150 + sptr->loopstart = 0; 71.4151 + 71.4152 + sptr->looplen = sptr->length; 71.4153 + 71.4154 + sptr->loopmode = FSOUND_LOOP_OFF; 71.4155 + 71.4156 + } 71.4157 + 71.4158 + 71.4159 + 71.4160 + FSOUND_File_Read(&tempchar, 1, fp); 71.4161 + 71.4162 + sptr->defpan = (int)tempchar; 71.4163 + 71.4164 + FSOUND_File_Read(&tempchar, 1, fp); 71.4165 + 71.4166 + sptr->relative = (int)tempchar; 71.4167 + 71.4168 + 71.4169 + 71.4170 + FSOUND_File_Seek(fp, 23, SEEK_CUR); 71.4171 + 71.4172 + 71.4173 + 71.4174 + //= ALLOCATE MEMORY FOR THE SAMPLE BUFFER ============================================== 71.4175 + 71.4176 + 71.4177 + 71.4178 + { 71.4179 + 71.4180 + int lenbytes = sptr->length; 71.4181 + 71.4182 +// if (sptr->bits == 16) 71.4183 + 71.4184 + lenbytes <<= 1; 71.4185 + 71.4186 + 71.4187 + 71.4188 + if (sptr->buff) 71.4189 + 71.4190 + FSOUND_Memory_Free(sptr->buff); 71.4191 + 71.4192 + 71.4193 + 71.4194 + if (lenbytes) 71.4195 + 71.4196 + sptr->buff = (unsigned char *)FSOUND_Memory_Calloc(lenbytes+16); 71.4197 + 71.4198 + else 71.4199 + 71.4200 + sptr->buff = NULL; 71.4201 + 71.4202 + } 71.4203 + 71.4204 + 71.4205 + 71.4206 + } 71.4207 + 71.4208 + 71.4209 + 71.4210 + // clear out the rest of the samples 71.4211 + 71.4212 + for (;count2<16; count2++) 71.4213 + 71.4214 + iptr->sample[count2] = &FMUSIC_DummySample; 71.4215 + 71.4216 + 71.4217 + 71.4218 + 71.4219 + 71.4220 + 71.4221 + 71.4222 + // Load sample data 71.4223 + 71.4224 + for (count2=0; count2<numsamples; count2++) 71.4225 + 71.4226 + { 71.4227 + 71.4228 + FSOUND_SAMPLE *sptr = iptr->sample[count2]; 71.4229 + 71.4230 + unsigned int samplelenbytes = sptr->length * sptr->bits / 8; 71.4231 + 71.4232 + int count3; 71.4233 + 71.4234 + char *buff = NULL; 71.4235 + 71.4236 + 71.4237 + 71.4238 + if (sptr->length) 71.4239 + 71.4240 + { 71.4241 + 71.4242 + unsigned int mode; 71.4243 + 71.4244 + 71.4245 + 71.4246 + buff = FSOUND_Memory_Calloc((sptr->length * 2)+16); 71.4247 + 71.4248 + 71.4249 + 71.4250 + if (mod->samplecallback) 71.4251 + 71.4252 + { 71.4253 + 71.4254 + mod->samplecallback(buff, samplelenbytes, sptr->bits, count, count2); 71.4255 + 71.4256 + FSOUND_File_Seek(fp, samplelenbytes, SEEK_CUR); 71.4257 + 71.4258 + } 71.4259 + 71.4260 + else 71.4261 + 71.4262 + FSOUND_File_Read(buff, samplelenbytes, fp); 71.4263 + 71.4264 + 71.4265 + 71.4266 + if (sptr->bits == 8) 71.4267 + 71.4268 + { 71.4269 + 71.4270 + signed short *wptr; 71.4271 + 71.4272 + 71.4273 + 71.4274 + // promote to 16bits 71.4275 + 71.4276 + wptr = (signed short *)sptr->buff; 71.4277 + 71.4278 + 71.4279 + 71.4280 + for (count3=0; count3 < (int)sptr->length; count3++) 71.4281 + 71.4282 + *wptr++ = (signed short)(buff[count3]) << 8; 71.4283 + 71.4284 + 71.4285 + 71.4286 + sptr->bits = 16; 71.4287 + 71.4288 + 71.4289 + 71.4290 + FSOUND_Memory_Free(buff); 71.4291 + 71.4292 + } 71.4293 + 71.4294 + else 71.4295 + 71.4296 + { 71.4297 + 71.4298 + FSOUND_Memory_Free(sptr->buff); 71.4299 + 71.4300 + sptr->buff = buff; 71.4301 + 71.4302 + } 71.4303 + 71.4304 + 71.4305 + 71.4306 + mode = FSOUND_DELTA | FSOUND_SIGNED; 71.4307 + 71.4308 + mode |= FSOUND_16BITS; 71.4309 + 71.4310 + 71.4311 + 71.4312 + 71.4313 + 71.4314 + if (!mod->samplecallback) 71.4315 + 71.4316 + { 71.4317 + 71.4318 + void *destdata = sptr->buff; 71.4319 + 71.4320 + unsigned int count; 71.4321 + 71.4322 + unsigned char *bptr = (unsigned char *)destdata; 71.4323 + 71.4324 + unsigned short *wptr = (unsigned short *)destdata; 71.4325 + 71.4326 + int oldval, newval; 71.4327 + 71.4328 + 71.4329 + 71.4330 + // DO DELTA CONVERSION 71.4331 + 71.4332 + oldval = 0; 71.4333 + 71.4334 + for (count=0; count < sptr->length; count++) 71.4335 + 71.4336 + { 71.4337 + 71.4338 + newval = *wptr + oldval; 71.4339 + 71.4340 + *wptr = (short)newval; 71.4341 + 71.4342 + oldval = newval; 71.4343 + 71.4344 + wptr++; 71.4345 + 71.4346 + } 71.4347 + 71.4348 + } 71.4349 + 71.4350 + 71.4351 + 71.4352 + { 71.4353 + 71.4354 + signed short *buff = (signed short *)sptr->buff; 71.4355 + 71.4356 + 71.4357 + 71.4358 + // BUGFIX 1.3 - removed click for end of non looping sample (also size optimized a bit) 71.4359 + 71.4360 + if (sptr->loopmode == FSOUND_LOOP_BIDI) 71.4361 + 71.4362 + { 71.4363 + 71.4364 + buff[sptr->loopstart+sptr->looplen] = buff[sptr->loopstart+sptr->looplen-1];// fix it 71.4365 + 71.4366 + } 71.4367 + 71.4368 + else if (sptr->loopmode == FSOUND_LOOP_NORMAL) 71.4369 + 71.4370 + { 71.4371 + 71.4372 + buff[sptr->loopstart+sptr->looplen] = buff[sptr->loopstart];// fix it 71.4373 + 71.4374 + } 71.4375 + 71.4376 + } 71.4377 + 71.4378 + } 71.4379 + 71.4380 + } 71.4381 + 71.4382 + } 71.4383 + 71.4384 + else 71.4385 + 71.4386 + { 71.4387 + 71.4388 + // clear out the rest of the samples 71.4389 + 71.4390 + for (count2=0; count2<16; count2++) 71.4391 + 71.4392 + iptr->sample[count2] = &FMUSIC_DummySample; 71.4393 + 71.4394 + 71.4395 + 71.4396 + FSOUND_File_Seek(fp, firstsampleoffset, SEEK_SET); 71.4397 + 71.4398 + } 71.4399 + 71.4400 + } 71.4401 + 71.4402 + 71.4403 + 71.4404 + 71.4405 + 71.4406 + return TRUE; 71.4407 + 71.4408 +} 71.4409 +
72.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 72.2 +++ b/minifmod/music_formatxm.h Tue Nov 27 15:23:52 2007 +0100 72.3 @@ -0,0 +1,119 @@ 72.4 +/******************************************************************************/ 72.5 +/* FORMATXM.H */ 72.6 +/* ---------------- */ 72.7 +/* MiniFMOD public source code release. */ 72.8 +/* This source is provided as-is. Firelight Multimedia will not support */ 72.9 +/* or answer questions about the source provided. */ 72.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 72.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 72.12 +/* Firelight Multimedia is a registered business name. */ 72.13 +/* This source must not be redistributed without this notice. */ 72.14 +/******************************************************************************/ 72.15 + 72.16 +#ifndef _FMUSIC_FORMATXM 72.17 +#define _FMUSIC_FORMATXM 72.18 + 72.19 +#include "music.h" 72.20 +#include "system_file.h" 72.21 + 72.22 + 72.23 +enum FMUSIC_XMCOMMANDS 72.24 +{ 72.25 + FMUSIC_XM_ARPEGGIO, 72.26 + FMUSIC_XM_PORTAUP, 72.27 + FMUSIC_XM_PORTADOWN, 72.28 + FMUSIC_XM_PORTATO, 72.29 + FMUSIC_XM_VIBRATO, 72.30 + FMUSIC_XM_PORTATOVOLSLIDE, 72.31 + FMUSIC_XM_VIBRATOVOLSLIDE, 72.32 + FMUSIC_XM_TREMOLO, 72.33 + FMUSIC_XM_SETPANPOSITION, 72.34 + FMUSIC_XM_SETSAMPLEOFFSET, 72.35 + FMUSIC_XM_VOLUMESLIDE, 72.36 + FMUSIC_XM_PATTERNJUMP, 72.37 + FMUSIC_XM_SETVOLUME, 72.38 + FMUSIC_XM_PATTERNBREAK, 72.39 + FMUSIC_XM_SPECIAL, 72.40 + FMUSIC_XM_SETSPEED, 72.41 + FMUSIC_XM_SETGLOBALVOLUME, 72.42 + FMUSIC_XM_GLOBALVOLSLIDE, 72.43 + FMUSIC_XM_I, 72.44 + FMUSIC_XM_J, 72.45 + FMUSIC_XM_KEYOFF, 72.46 + FMUSIC_XM_SETENVELOPEPOS, 72.47 + FMUSIC_XM_M, 72.48 + FMUSIC_XM_N, 72.49 + FMUSIC_XM_O, 72.50 + FMUSIC_XM_PANSLIDE, 72.51 + FMUSIC_XM_Q, 72.52 + FMUSIC_XM_MULTIRETRIG, 72.53 + FMUSIC_XM_S, 72.54 + FMUSIC_XM_TREMOR, 72.55 + FMUSIC_XM_U, 72.56 + FMUSIC_XM_V, 72.57 + FMUSIC_XM_W, 72.58 + FMUSIC_XM_EXTRAFINEPORTA, 72.59 + FMUSIC_XM_Y, 72.60 + FMUSIC_XM_Z, 72.61 +}; 72.62 + 72.63 + 72.64 +enum FMUSIC_XMCOMMANDSSPECIAL 72.65 +{ 72.66 + FMUSIC_XM_SETFILTER, 72.67 + FMUSIC_XM_FINEPORTAUP, 72.68 + FMUSIC_XM_FINEPORTADOWN, 72.69 + FMUSIC_XM_SETGLISSANDO, 72.70 + FMUSIC_XM_SETVIBRATOWAVE, 72.71 + FMUSIC_XM_SETFINETUNE, 72.72 + FMUSIC_XM_PATTERNLOOP, 72.73 + FMUSIC_XM_SETTREMOLOWAVE, 72.74 + FMUSIC_XM_SETPANPOSITION16, 72.75 + FMUSIC_XM_RETRIG, 72.76 + FMUSIC_XM_FINEVOLUMESLIDEUP, 72.77 + FMUSIC_XM_FINEVOLUMESLIDEDOWN, 72.78 + FMUSIC_XM_NOTECUT, 72.79 + FMUSIC_XM_NOTEDELAY, 72.80 + FMUSIC_XM_PATTERNDELAY, 72.81 + FMUSIC_XM_FUNKREPEAT, 72.82 +}; 72.83 + 72.84 +#define FMUSIC_XMFLAGS_LINEARFREQUENCY 1 72.85 + 72.86 +typedef struct 72.87 +{ 72.88 + unsigned long instSize; // instrument size 72.89 + signed char instName[22]; // instrument filename 72.90 + unsigned char instType; // instrument type (now 0) 72.91 + unsigned short numSamples; // number of samples in instrument 72.92 +} FMUSIC_XM_INSTHEADER; 72.93 + 72.94 +typedef struct 72.95 +{ 72.96 + unsigned long headerSize; // sample header size 72.97 + unsigned char noteSmpNums[96]; // sample numbers for notes 72.98 + unsigned short volEnvelope[2*12]; // volume envelope points 72.99 + unsigned short panEnvelope[2*12]; // panning envelope points 72.100 + unsigned char numVolPoints; // number of volume envelope points 72.101 + unsigned char numPanPoints; // number of panning env. points 72.102 + unsigned char volSustain; // volume sustain point 72.103 + unsigned char volLoopStart; // volume loop start point 72.104 + unsigned char volLoopEnd; // volume loop end point 72.105 + unsigned char panSustain; // panning sustain point 72.106 + unsigned char panLoopStart; // panning loop start point 72.107 + unsigned char panLoopEnd; // panning loop end point 72.108 + unsigned char volEnvFlags; // volume envelope flags 72.109 + unsigned char panEnvFlags; // panning envelope flags 72.110 + 72.111 + unsigned char vibType; // vibrato type 72.112 + unsigned char vibSweep; // vibrato sweep 72.113 + unsigned char vibDepth; // vibrato depth 72.114 + unsigned char vibRate; // vibrato rate 72.115 + unsigned short volFadeout; // volume fadeout 72.116 + unsigned short reserved; 72.117 +} FMUSIC_XM_INSTSAMPLEHEADER; 72.118 + 72.119 + 72.120 +signed char FMUSIC_LoadXM(FMUSIC_MODULE *mod, FSOUND_FILE_HANDLE *fp); 72.121 + 72.122 +#endif 72.123 \ No newline at end of file
73.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 73.2 +++ b/minifmod/system_file.c Tue Nov 27 15:23:52 2007 +0100 73.3 @@ -0,0 +1,246 @@ 73.4 +/******************************************************************************/ 73.5 +/* SYSTEM_FILE.C */ 73.6 +/* ---------------- */ 73.7 +/* MiniFMOD public source code release. */ 73.8 +/* This source is provided as-is. Firelight Multimedia will not support */ 73.9 +/* or answer questions about the source provided. */ 73.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 73.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 73.12 +/* Firelight Multimedia is a registered business name. */ 73.13 +/* This source must not be redistributed without this notice. */ 73.14 +/******************************************************************************/ 73.15 + 73.16 +#include <stdio.h> 73.17 +#include <stdlib.h> 73.18 +#include <string.h> 73.19 + 73.20 +#include "minifmod.h" 73.21 +#include "system_file.h" 73.22 +#include "system_memory.h" 73.23 +#include "sound.h" 73.24 + 73.25 + 73.26 +unsigned int (*FSOUND_File_OpenCallback)(char *name) = NULL; 73.27 +void (*FSOUND_File_CloseCallback)(unsigned int handle) = NULL; 73.28 +int (*FSOUND_File_ReadCallback)(void *buffer, int size, unsigned int handle) = NULL; 73.29 +void (*FSOUND_File_SeekCallback)(unsigned int handle, int pos, signed char mode) = NULL; 73.30 +int (*FSOUND_File_TellCallback)(unsigned int handle) = NULL; 73.31 + 73.32 + 73.33 +/* 73.34 +[API] 73.35 +[ 73.36 + [DESCRIPTION] 73.37 + Specify user callbacks for FMOD's internal file manipulation. 73.38 + If ANY of these parameters are NULL, then FMOD will switch back to its own file routines. 73.39 + You can replace this with memory routines (ie name can be cast to a memory address for example, then open sets up 73.40 + a handle based on this information), or alternate file routines, ie a WAD file reader. 73.41 + 73.42 + [PARAMETERS] 73.43 + 73.44 + 'OpenCallback' 73.45 + Callback for opening a file. 73.46 + Parameters: 73.47 + ----------- 73.48 + "name" This is the filename. You may treat this how you like. 73.49 + Instructions: 73.50 + ------------- 73.51 + You MUST open the file and return a handle for future file function calls. Cast the handle to an unsigned int when returning it, then in later functions, cast it back to your own handle type. 73.52 + Return 0 signify an open error. This is very important. 73.53 + It is a good idea if you are using memory based file routines, to store the size of the file here, as it is needed to support SEEK_END in the seek function, described below. 73.54 + 73.55 + 'CloseCallback' 73.56 + Callback for closing a file. 73.57 + Parameters: 73.58 + ----------- 73.59 + "handle" This is the handle you returned from the open callback to use for your own file routines. 73.60 + Instructions: 73.61 + ------------- 73.62 + Close your file handle and do any cleanup here. 73.63 + 73.64 + 'ReadCallback' 73.65 + Callback for opening a file. 73.66 + Parameters: 73.67 + ----------- 73.68 + "buffer" You must read and copy your file data into this pointer. 73.69 + "length" You must read this many bytes from your file data. 73.70 + "handle" This is the handle you returned from the open callback to use for your own file routines. 73.71 + Instructions: 73.72 + ------------- 73.73 + You must read "length" number of bytes into the "buffer" provided, then if you need to, increment your file pointer. 73.74 + IMPORTANT: you MUST return the number of bytes that were *successfully* read here. Normally this is just the same as "length", but if you are at the end of the file, you will probably only read successfully the number of bytes up to the end of the file (if you tried to read more than that). 73.75 + 73.76 + 'SeekCallback' 73.77 + Callback for seeking within a file. There are 3 modes of seeking, as described below. 73.78 + Parameters: 73.79 + ----------- 73.80 + "handle" This is the handle you returned from the open callback to use for your own file routines. 73.81 + "pos" This is the position or offset to seek by depending on the mode. 73.82 + "mode" This is the seek command. It uses and is compatible with SEEK_SET, SEEK_CUR and SEEK_END from stdio.h, so use them. 73.83 + Instructions: 73.84 + ------------- 73.85 + You must reset your file pointer based on the commands given above. 73.86 + SEEK_END must reposition your file pointer at the END of the file, plus any negative offset. To do this you must know the size of the file, it is suggested you find and store this in the open function. Remember that a SEEK_END position value of -1 is the last byte. 73.87 + 73.88 + 'TellCallback' 73.89 + Callback for returning the offset from the base of the file in BYTES. 73.90 + Parameters: 73.91 + ----------- 73.92 + "handle" This is the handle you returned from the open callback to use for your own file routines. 73.93 + Instructions: 73.94 + ------------- 73.95 + You must return the offset from the base of the file, using this routine. 73.96 + 73.97 + [RETURN_VALUE] 73.98 + void 73.99 + 73.100 + [REMARKS] 73.101 + Memory loader FMOD functions are not affected, such as FMUSIC_LoadSongMemory etc. 73.102 + WARNING : This function is dangerous in the wrong hands. You must return the right values, and each 73.103 + command must work properly, or FMOD will not function, or it may even crash if you give it invalid data. 73.104 + You must support SEEK_SET, SEEK_CUR and SEEK_END properly, or FMOD will not work properly. See standard I/O help files on how these work under fseek(). 73.105 + Read the documentation in REMARKS and do exactly what it says. See the 'simple' example for how it is 73.106 + used properly. 73.107 +] 73.108 +*/ 73.109 +void FSOUND_File_SetCallbacks(unsigned int (*OpenCallback)(char *name), void (*CloseCallback)(unsigned int handle), int (*ReadCallback)(void *buffer, int size, unsigned int handle), void (*SeekCallback)(unsigned int handle, int pos, signed char mode), int (*TellCallback)(unsigned int handle)) 73.110 +{ 73.111 + if (!OpenCallback || !CloseCallback || !ReadCallback || !SeekCallback || !TellCallback) 73.112 + { 73.113 + FSOUND_File_OpenCallback = NULL; 73.114 + FSOUND_File_CloseCallback = NULL; 73.115 + FSOUND_File_ReadCallback = NULL; 73.116 + FSOUND_File_SeekCallback = NULL; 73.117 + FSOUND_File_TellCallback = NULL; 73.118 + } 73.119 + else 73.120 + { 73.121 + FSOUND_File_OpenCallback = OpenCallback; 73.122 + FSOUND_File_CloseCallback = CloseCallback; 73.123 + FSOUND_File_ReadCallback = ReadCallback; 73.124 + FSOUND_File_SeekCallback = SeekCallback; 73.125 + FSOUND_File_TellCallback = TellCallback; 73.126 + } 73.127 +} 73.128 + 73.129 + 73.130 +/* 73.131 +[ 73.132 + [DESCRIPTION] 73.133 + 73.134 + [PARAMETERS] 73.135 + 73.136 + [RETURN_VALUE] 73.137 + 73.138 + [REMARKS] 73.139 + 73.140 + [SEE_ALSO] 73.141 +] 73.142 +*/ 73.143 +FSOUND_FILE_HANDLE *FSOUND_File_Open(void *data, signed char type, int length) 73.144 +{ 73.145 + FSOUND_FILE_HANDLE *handle; 73.146 + 73.147 + handle = (FSOUND_FILE_HANDLE *)FSOUND_Memory_Alloc(sizeof(FSOUND_FILE_HANDLE)); 73.148 + handle->type = type; 73.149 + handle->length = length; 73.150 + handle->userhandle = FSOUND_File_OpenCallback(data); 73.151 + 73.152 + if (!handle->userhandle) 73.153 + { 73.154 + FSOUND_Memory_Free(handle); 73.155 + return NULL; 73.156 + } 73.157 + 73.158 + return handle; 73.159 +} 73.160 + 73.161 + 73.162 +/* 73.163 +[ 73.164 + [DESCRIPTION] 73.165 + 73.166 + [PARAMETERS] 73.167 + 73.168 + [RETURN_VALUE] 73.169 + 73.170 + [REMARKS] 73.171 + 73.172 + [SEE_ALSO] 73.173 +] 73.174 +*/ 73.175 +void FSOUND_File_Close(FSOUND_FILE_HANDLE *handle) 73.176 +{ 73.177 + if (!handle) 73.178 + return; 73.179 + 73.180 + FSOUND_File_CloseCallback(handle->userhandle); 73.181 + FSOUND_Memory_Free(handle); 73.182 +} 73.183 + 73.184 + 73.185 +/* 73.186 +[ 73.187 + [DESCRIPTION] 73.188 + 73.189 + [PARAMETERS] 73.190 + 73.191 + [RETURN_VALUE] 73.192 + 73.193 + [REMARKS] 73.194 + 73.195 + [SEE_ALSO] 73.196 +] 73.197 +*/ 73.198 +int FSOUND_File_Read(void *buffer, int size, FSOUND_FILE_HANDLE *handle) 73.199 +{ 73.200 + if (!handle) 73.201 + return 0; 73.202 + 73.203 + return FSOUND_File_ReadCallback(buffer, size, handle->userhandle); 73.204 +} 73.205 + 73.206 + 73.207 + 73.208 +/* 73.209 +[ 73.210 + [DESCRIPTION] 73.211 + 73.212 + [PARAMETERS] 73.213 + 73.214 + [RETURN_VALUE] 73.215 + 73.216 + [REMARKS] 73.217 + 73.218 + [SEE_ALSO] 73.219 +] 73.220 +*/ 73.221 +void FSOUND_File_Seek(FSOUND_FILE_HANDLE *handle, int pos, signed char mode) 73.222 +{ 73.223 + if (!handle) 73.224 + return; 73.225 + 73.226 + FSOUND_File_SeekCallback(handle->userhandle, pos, mode); 73.227 +} 73.228 + 73.229 + 73.230 +/* 73.231 +[ 73.232 + [DESCRIPTION] 73.233 + 73.234 + [PARAMETERS] 73.235 + 73.236 + [RETURN_VALUE] 73.237 + 73.238 + [REMARKS] 73.239 + 73.240 + [SEE_ALSO] 73.241 +] 73.242 +*/ 73.243 +int FSOUND_File_Tell(FSOUND_FILE_HANDLE *handle) 73.244 +{ 73.245 + if (!handle) 73.246 + return 0; 73.247 + 73.248 + return FSOUND_File_TellCallback(handle->userhandle); 73.249 +}
74.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 74.2 +++ b/minifmod/system_file.h Tue Nov 27 15:23:52 2007 +0100 74.3 @@ -0,0 +1,39 @@ 74.4 +/******************************************************************************/ 74.5 +/* SYSTEM_FILE.H */ 74.6 +/* ---------------- */ 74.7 +/* MiniFMOD public source code release. */ 74.8 +/* This source is provided as-is. Firelight Multimedia will not support */ 74.9 +/* or answer questions about the source provided. */ 74.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 74.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 74.12 +/* Firelight Multimedia is a registered business name. */ 74.13 +/* This source must not be redistributed without this notice. */ 74.14 +/******************************************************************************/ 74.15 + 74.16 +#ifndef _SYSTEM_FILE_H_ 74.17 +#define _SYSTEM_FILE_H_ 74.18 + 74.19 +typedef struct tag_FSOUND_FILE_HANDLE 74.20 +{ 74.21 + signed char type; 74.22 + void *fp; 74.23 + signed char *mem; 74.24 + int basepos; 74.25 + unsigned int userhandle; 74.26 + int length; 74.27 +} FSOUND_FILE_HANDLE; 74.28 + 74.29 +FSOUND_FILE_HANDLE *FSOUND_File_Open(void *data, signed char type, int length); 74.30 +void FSOUND_File_Close(FSOUND_FILE_HANDLE *handle); 74.31 +int FSOUND_File_Read(void *buffer, int size, FSOUND_FILE_HANDLE *handle); 74.32 +void FSOUND_File_Seek(FSOUND_FILE_HANDLE *handle, int pos, signed char mode); 74.33 +int FSOUND_File_Tell(FSOUND_FILE_HANDLE *handle); 74.34 + 74.35 + 74.36 +extern unsigned int (*FSOUND_File_OpenCallback)(char *name); 74.37 +extern void (*FSOUND_File_CloseCallback)(unsigned int handle); 74.38 +extern int (*FSOUND_File_ReadCallback)(void *buffer, int size, unsigned int handle); 74.39 +extern void (*FSOUND_File_SeekCallback)(unsigned int handle, int pos, signed char mode); 74.40 +extern int (*FSOUND_File_TellCallback)(unsigned int handle); 74.41 + 74.42 +#endif 74.43 \ No newline at end of file
75.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 75.2 +++ b/minifmod/system_memory.h Tue Nov 27 15:23:52 2007 +0100 75.3 @@ -0,0 +1,25 @@ 75.4 +/******************************************************************************/ 75.5 +/* SYSTEM_MEMORY.H */ 75.6 +/* ---------------- */ 75.7 +/* MiniFMOD public source code release. */ 75.8 +/* This source is provided as-is. Firelight Multimedia will not support */ 75.9 +/* or answer questions about the source provided. */ 75.10 +/* MiniFMOD Sourcecode is copyright (c) 2000, Firelight Multimedia. */ 75.11 +/* MiniFMOD Sourcecode is in no way representative of FMOD 3 source. */ 75.12 +/* Firelight Multimedia is a registered business name. */ 75.13 +/* This source must not be redistributed without this notice. */ 75.14 +/******************************************************************************/ 75.15 + 75.16 +#ifndef _SYSTEM_MEMORY_H_ 75.17 +#define _SYSTEM_MEMORY_H_ 75.18 + 75.19 +// include your system's header here 75.20 +#include <stdlib.h> 75.21 + 75.22 +// redefine here 75.23 +#define FSOUND_Memory_Free(_ptr) free(_ptr) 75.24 +#define FSOUND_Memory_Alloc(_len) calloc(_len, 1) 75.25 +#define FSOUND_Memory_Calloc(_len) calloc(_len, 1) 75.26 +#define FSOUND_Memory_Realloc(_ptr, _len) realloc(_ptr, _len) 75.27 + 75.28 +#endif
76.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 76.2 +++ b/minifmod/xmeffects.h Tue Nov 27 15:23:52 2007 +0100 76.3 @@ -0,0 +1,100 @@ 76.4 +// ============================================================================= 76.5 +// XM Effect header generated by FEXP.EXE, Copyright (c) 2000-2001, Firelight Multimedia. 76.6 +// ============================================================================= 76.7 + 76.8 +// Generated for urk7.xm 76.9 + 76.10 +#ifndef _XMEFFECTS_H 76.11 +#define _XMEFFECTS_H 76.12 + 76.13 +#ifdef FMUSIC_ALL_ACTIVE 76.14 + 76.15 +#define FMUSIC_XM_INSTRUMENTVIBRATO_ACTIVE 76.16 +#define FMUSIC_XM_VOLUMEENVELOPE_ACTIVE 76.17 +#define FMUSIC_XM_PANENVELOPE_ACTIVE 76.18 +#define FMUSIC_XM_VOLUMEBYTE_ACTIVE 76.19 +#define FMUSIC_XM_AMIGAPERIODS_ACTIVE 76.20 +#define FMUSIC_XM_TREMOLO_ACTIVE 76.21 +#define FMUSIC_XM_TREMOR_ACTIVE 76.22 +#define FMUSIC_XM_ARPEGGIO_ACTIVE 76.23 +#define FMUSIC_XM_PORTATO_ACTIVE 76.24 +#define FMUSIC_XM_PORTAUP_ACTIVE 76.25 +#define FMUSIC_XM_PORTADOWN_ACTIVE 76.26 +#define FMUSIC_XM_PORTATOVOLSLIDE_ACTIVE 76.27 +#define FMUSIC_XM_VIBRATO_ACTIVE 76.28 +#define FMUSIC_XM_VIBRATOVOLSLIDE_ACTIVE 76.29 +#define FMUSIC_XM_SETPANPOSITION_ACTIVE 76.30 +#define FMUSIC_XM_SETSAMPLEOFFSET_ACTIVE 76.31 +#define FMUSIC_XM_VOLUMESLIDE_ACTIVE 76.32 +#define FMUSIC_XM_PATTERNJUMP_ACTIVE 76.33 +#define FMUSIC_XM_SETVOLUME_ACTIVE 76.34 +#define FMUSIC_XM_PATTERNBREAK_ACTIVE 76.35 +#define FMUSIC_XM_FINEPORTAUP_ACTIVE 76.36 +#define FMUSIC_XM_FINEPORTADOWN_ACTIVE 76.37 +#define FMUSIC_XM_SETVIBRATOWAVE_ACTIVE 76.38 +#define FMUSIC_XM_SETFINETUNE_ACTIVE 76.39 +#define FMUSIC_XM_PATTERNLOOP_ACTIVE 76.40 +#define FMUSIC_XM_SETTREMOLOWAVE_ACTIVE 76.41 +#define FMUSIC_XM_SETPANPOSITION16_ACTIVE 76.42 +#define FMUSIC_XM_RETRIG_ACTIVE 76.43 +#define FMUSIC_XM_FINEVOLUMESLIDEUP_ACTIVE 76.44 +#define FMUSIC_XM_FINEVOLUMESLIDEDOWN_ACTIVE 76.45 +#define FMUSIC_XM_NOTECUT_ACTIVE 76.46 +#define FMUSIC_XM_NOTEDELAY_ACTIVE 76.47 +#define FMUSIC_XM_PATTERNDELAY_ACTIVE 76.48 +#define FMUSIC_XM_SETSPEED_ACTIVE 76.49 +#define FMUSIC_XM_SETGLOBALVOLUME_ACTIVE 76.50 +#define FMUSIC_XM_GLOBALVOLSLIDE_ACTIVE 76.51 +#define FMUSIC_XM_KEYOFF_ACTIVE 76.52 +#define FMUSIC_XM_SETENVELOPEPOS_ACTIVE 76.53 +#define FMUSIC_XM_PANSLIDE_ACTIVE 76.54 +#define FMUSIC_XM_MULTIRETRIG_ACTIVE 76.55 +#define FMUSIC_XM_EXTRAFINEPORTA_ACTIVE 76.56 + 76.57 +#else // FMUSIC_ALL_ACTIVE 76.58 + 76.59 +#define FMUSIC_XM_INSTRUMENTVIBRATO_ACTIVE 76.60 +#define FMUSIC_XM_VOLUMEENVELOPE_ACTIVE 76.61 +#define FMUSIC_XM_PANENVELOPE_ACTIVE 76.62 +#define FMUSIC_XM_VOLUMEBYTE_ACTIVE 76.63 +#define FMUSIC_XM_AMIGAPERIODS_ACTIVE 76.64 +#define FMUSIC_XM_TREMOLO_ACTIVE 76.65 +#define FMUSIC_XM_TREMOR_ACTIVE 76.66 +#define FMUSIC_XM_ARPEGGIO_ACTIVE 76.67 +#define FMUSIC_XM_PORTATO_ACTIVE 76.68 +#define FMUSIC_XM_PORTAUP_ACTIVE 76.69 +#define FMUSIC_XM_PORTADOWN_ACTIVE 76.70 +#define FMUSIC_XM_PORTATOVOLSLIDE_ACTIVE 76.71 +#define FMUSIC_XM_VIBRATO_ACTIVE 76.72 +#define FMUSIC_XM_VIBRATOVOLSLIDE_ACTIVE 76.73 +#define FMUSIC_XM_SETPANPOSITION_ACTIVE 76.74 +#define FMUSIC_XM_SETSAMPLEOFFSET_ACTIVE 76.75 +#define FMUSIC_XM_VOLUMESLIDE_ACTIVE 76.76 +#define FMUSIC_XM_PATTERNJUMP_ACTIVE 76.77 +#define FMUSIC_XM_SETVOLUME_ACTIVE 76.78 +#define FMUSIC_XM_PATTERNBREAK_ACTIVE 76.79 +#define FMUSIC_XM_FINEPORTAUP_ACTIVE 76.80 +#define FMUSIC_XM_FINEPORTADOWN_ACTIVE 76.81 +#define FMUSIC_XM_SETVIBRATOWAVE_ACTIVE 76.82 +#define FMUSIC_XM_SETFINETUNE_ACTIVE 76.83 +#define FMUSIC_XM_PATTERNLOOP_ACTIVE 76.84 +#define FMUSIC_XM_SETTREMOLOWAVE_ACTIVE 76.85 +#define FMUSIC_XM_SETPANPOSITION16_ACTIVE 76.86 +#define FMUSIC_XM_RETRIG_ACTIVE 76.87 +#define FMUSIC_XM_FINEVOLUMESLIDEUP_ACTIVE 76.88 +#define FMUSIC_XM_FINEVOLUMESLIDEDOWN_ACTIVE 76.89 +#define FMUSIC_XM_NOTECUT_ACTIVE 76.90 +#define FMUSIC_XM_NOTEDELAY_ACTIVE 76.91 +#define FMUSIC_XM_PATTERNDELAY_ACTIVE 76.92 +#define FMUSIC_XM_SETSPEED_ACTIVE 76.93 +#define FMUSIC_XM_SETGLOBALVOLUME_ACTIVE 76.94 +#define FMUSIC_XM_GLOBALVOLSLIDE_ACTIVE 76.95 +#define FMUSIC_XM_KEYOFF_ACTIVE 76.96 +#define FMUSIC_XM_SETENVELOPEPOS_ACTIVE 76.97 +#define FMUSIC_XM_PANSLIDE_ACTIVE 76.98 +#define FMUSIC_XM_MULTIRETRIG_ACTIVE 76.99 +#define FMUSIC_XM_EXTRAFINEPORTA_ACTIVE 76.100 + 76.101 +#endif // FMUSIC_ALL_ACTIVE 76.102 + 76.103 +#endif
77.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 77.2 +++ b/mth.cxx Tue Nov 27 15:23:52 2007 +0100 77.3 @@ -0,0 +1,144 @@ 77.4 +/** @file mth.h 77.5 + * 77.6 + * @brief mth facility 77.7 + * 77.8 + ***************************************************************************** 77.9 + * 77.10 + * @author psc80 77.11 + * 77.12 + * @date Created 2001/05 77.13 + * 77.14 + * @version $Id: mth.cxx,v 1.4 2004/01/16 23:38:23 psc80 Exp $ 77.15 + * 77.16 + ****************************************************************************/ 77.17 + 77.18 +#include "mth.h" 77.19 + 77.20 + 77.21 +namespace mth { 77.22 + 77.23 + /// Return the square root 77.24 + float Sqrt(const float& _a) { SYS_ASSERT(_a>=0); return sqrtf(_a);} 77.25 + double Sqrt(const double& _a) { SYS_ASSERT(_a>=0); return sqrt(_a);} 77.26 + 77.27 + float Tan(float _a) { return tan(_a);} 77.28 + 77.29 + 77.30 + float Abs(float _v) { if (_v<0) return -_v; return _v;} 77.31 + 77.32 + 77.33 + /// Return the maximum value between 2 value 77.34 + float Max(const float& a, const float& b) { return a<b? b:a; } 77.35 + 77.36 + 77.37 + /// Return the minimum value between 2 value 77.38 + float Min(const float& a, const float& b) { return a>b? b:a; } 77.39 + 77.40 + 77.41 + float Pow(const float& _a,const float& _b) { return powf(_a,_b);} 77.42 + 77.43 + /// Specialisation of pow for double 77.44 + double Pow(const double& _a,const double& _b) { return pow(_a,_b);} 77.45 + 77.46 + 77.47 + float Frac(const float& _x) { return _x-Floor(_x);} 77.48 + 77.49 + 77.50 + 77.51 + float Clamp(const float& _x,const float& _min,const float& _max) { 77.52 + return Max(Min(_x,_max),_min);} 77.53 + 77.54 + /// Return the cos 77.55 + float Cos(const float& _a) { return cosf((float)_a);} 77.56 + 77.57 + /// Specialisation of cos for double 77.58 + double Cos(const double& _a) { return cos(_a);} 77.59 + 77.60 + 77.61 + 77.62 + /// Return the sin 77.63 + float Sin(const float& _a) { return sinf((float)_a);} 77.64 + 77.65 + /// Specialisation of sin for double 77.66 + double Sin(const double& _a) { return sin(_a);} 77.67 + 77.68 + 77.69 + 77.70 + /// Return the atan 77.71 + float ATan(const float& _a) { return atanf((float)_a);} 77.72 + 77.73 + /// Specialisation of atan for double 77.74 + double ATan(const double& _a) { return atan(_a);} 77.75 + 77.76 + 77.77 + 77.78 + /// Return acos 77.79 + float ACos(const float& _a) { return acosf((float)_a);} 77.80 + 77.81 + /// Specialisation of acos for double 77.82 + double ACos(const double& _a) { return acos(_a);} 77.83 + 77.84 + 77.85 + 77.86 + /// Return asin 77.87 + float ASin(const float& _a) { return asinf((float)_a);} 77.88 + 77.89 + /// Specialisation of asin for double 77.90 + double ASin(const double& _a) { return asin(_a);} 77.91 + 77.92 + 77.93 + 77.94 + 77.95 + /// Return floor 77.96 + float Floor(const float& _a) { return floorf((float)_a);} 77.97 + 77.98 + /// Specialisation of floor for double 77.99 + double Floor(const double& _a) { return floor(_a);} 77.100 + 77.101 + 77.102 + 77.103 + /// Return ceil 77.104 + float Ceil(const float& _a) { return ceilf((float)_a);} 77.105 + 77.106 + /// Specialisation of ceil for double 77.107 + double Ceil(const double& _a) { return ceil(_a);} 77.108 + 77.109 + 77.110 + 77.111 + 77.112 + /// Return sign of a float 77.113 + float Sign(const float& _a) { if (_a<0) return -1; return 1;} 77.114 + 77.115 + 77.116 + 77.117 + 77.118 + 77.119 + /// floathe function returns a pseudo-random integer between 0 and RANDOM_MAX 77.120 + int Rand() { return rand();} 77.121 + 77.122 + 77.123 + /// floathe function returns a pseudo-random integer between 0 and RANDOM_MAX 77.124 + int Random() { 77.125 + static int i=0; 77.126 + srand(i++); 77.127 + return rand(); 77.128 + const int NOISE_WRAP_INDEX=256; 77.129 + return (float)((rand() % (NOISE_WRAP_INDEX + NOISE_WRAP_INDEX)) - 77.130 + NOISE_WRAP_INDEX) / NOISE_WRAP_INDEX; 77.131 + //return Rand(); 77.132 + } 77.133 + 77.134 + 77.135 + /** The SRand() function sets its argument as the seed for a new 77.136 + * sequence of pseudo-random integers to be returned by rand(). These 77.137 + * sequences are repeatable by calling srand() with the same seed value 77.138 + */ 77.139 + void SRand(unsigned int _seed) { srand(_seed);} 77.140 + 77.141 + 77.142 + 77.143 + 77.144 + 77.145 + 77.146 + 77.147 + } 77.148 \ No newline at end of file
78.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 78.2 +++ b/mth.h Tue Nov 27 15:23:52 2007 +0100 78.3 @@ -0,0 +1,152 @@ 78.4 +/** @file mth.h 78.5 + * 78.6 + * @brief mth facility 78.7 + * 78.8 + ***************************************************************************** 78.9 + * 78.10 + * @author psc80 78.11 + * 78.12 + * @date Created 2001/05 78.13 + * 78.14 + * @version $Id: mth.h,v 1.4 2004/01/16 23:38:23 psc80 Exp $ 78.15 + * 78.16 + ****************************************************************************/ 78.17 + 78.18 +#ifndef MTH_H 78.19 +#define MTH_H 78.20 + 78.21 +#include <cmath> 78.22 +#include <cstdlib> 78.23 +#include "sys_assert.h" 78.24 + 78.25 +namespace mth { 78.26 + 78.27 + typedef float Real_t; 78.28 + 78.29 + const double PI=3.14159265358979323846; 78.30 + const double TWOPI=2.0*PI; 78.31 + const double EPSILON=1e-6; 78.32 + 78.33 + 78.34 + 78.35 + /// Return the square root 78.36 + float Sqrt(const float& _a); 78.37 + double Sqrt(const double& _a); 78.38 + 78.39 + 78.40 + 78.41 + float Abs(float _v); 78.42 + 78.43 + 78.44 + 78.45 + /// Return the maximum value between 2 value 78.46 + float Max(const float& a, const float& b); 78.47 + 78.48 + 78.49 + /// Return the minimum value between 2 value 78.50 + float Min(const float& a, const float& b); 78.51 + 78.52 + 78.53 + float Pow(const float& _a,const float& _b); 78.54 + 78.55 + /// Specialisation of pow for double 78.56 + double Pow(const double& _a,const double& _b); 78.57 + 78.58 + 78.59 + float Frac(const float& _x); 78.60 + 78.61 + 78.62 + float Tan(float _a); 78.63 + 78.64 + 78.65 + float Clamp(const float& _x,const float& _min,const float& _max); 78.66 + 78.67 + /// Return the cos 78.68 + float Cos(const float& _a); 78.69 + 78.70 + /// Specialisation of cos for double 78.71 + double Cos(const double& _a); 78.72 + 78.73 + 78.74 + 78.75 + /// Return the sin 78.76 + float Sin(const float& _a); 78.77 + 78.78 + /// Specialisation of sin for double 78.79 + double Sin(const double& _a); 78.80 + 78.81 + 78.82 + 78.83 + /// Return the atan 78.84 + float ATan(const float& _a); 78.85 + 78.86 + /// Specialisation of atan for double 78.87 + double ATan(const double& _a); 78.88 + 78.89 + 78.90 + 78.91 + /// Return acos 78.92 + float ACos(const float& _a); 78.93 + 78.94 + /// Specialisation of acos for double 78.95 + double ACos(const double& _a); 78.96 + 78.97 + 78.98 + 78.99 + /// Return asin 78.100 + float ASin(const float& _a); 78.101 + 78.102 + /// Specialisation of asin for double 78.103 + double ASin(const double& _a); 78.104 + 78.105 + 78.106 + 78.107 + 78.108 + /// Return floor 78.109 + float Floor(const float& _a); 78.110 + 78.111 + /// Specialisation of floor for double 78.112 + double Floor(const double& _a); 78.113 + 78.114 + 78.115 + 78.116 + /// Return ceil 78.117 + float Ceil(const float& _a); 78.118 + 78.119 + /// Specialisation of ceil for double 78.120 + double Ceil(const double& _a); 78.121 + 78.122 + 78.123 + 78.124 + 78.125 + /// Return sign of a float 78.126 + float Sign(const float& _a); 78.127 + 78.128 + 78.129 + 78.130 + const unsigned int RANDOM_MAX=RAND_MAX; 78.131 + 78.132 + 78.133 + /// floathe function returns a pseudo-random integer between 0 and RANDOM_MAX 78.134 + int Rand(); 78.135 + 78.136 + 78.137 + int Random(); 78.138 + 78.139 + 78.140 + /** The SRand() function sets its argument as the seed for a new 78.141 + * sequence of pseudo-random integers to be returned by rand(). These 78.142 + * sequences are repeatable by calling srand() with the same seed value 78.143 + */ 78.144 + void SRand(unsigned int _seed); 78.145 + 78.146 + 78.147 + 78.148 + 78.149 + 78.150 +} 78.151 + 78.152 + 78.153 + 78.154 + 78.155 +#endif
79.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 79.2 +++ b/mth_hermite.h Tue Nov 27 15:23:52 2007 +0100 79.3 @@ -0,0 +1,317 @@ 79.4 +/** @file mth_hermite.h 79.5 + * 79.6 + * @brief hermite curve 79.7 + * 79.8 + ***************************************************************************** 79.9 + * 79.10 + * @author psc80 79.11 + * 79.12 + * @date Created 2003/05 modified for sota intro 79.13 + * 79.14 + * @version $Id: mth_hermite.h,v 1.4 2004/01/22 13:23:37 psc80 Exp $ 79.15 + * 79.16 + ****************************************************************************/ 79.17 + 79.18 +#ifndef MTH_HERMITE_H 79.19 +#define MTH_HERMITE_H 79.20 + 79.21 +#include "mth.h" 79.22 +#include "sys_assert.h" 79.23 + 79.24 +#define WITHOUT_EXTRADATA 79.25 + 79.26 +namespace mth { 79.27 + 79.28 + 79.29 + 79.30 + struct HermiteKey_t 79.31 + { 79.32 + typedef Vector3_t data_type; 79.33 + typedef float param_type; 79.34 +#ifndef WITHOUT_EXTRADATA 79.35 + param_type tens; 79.36 + param_type cont; 79.37 + param_type bias; 79.38 +#endif 79.39 + param_type time; 79.40 + 79.41 + data_type data; 79.42 + 79.43 + 79.44 + 79.45 + 79.46 + 79.47 + /** 79.48 + * Init internal parmaters 79.49 + */ 79.50 + void Init() { 79.51 + time=0; 79.52 +#ifndef WITHOUT_EXTRADATA 79.53 + tens=0; 79.54 + cont=0; 79.55 + bias=0; 79.56 +#endif 79.57 + } 79.58 + 79.59 + /** 79.60 + * Default Constructor 79.61 + */ 79.62 + HermiteKey_t() {Init();} 79.63 + 79.64 + 79.65 + 79.66 + void Init(const param_type& _time, 79.67 + const data_type& _data 79.68 +#ifndef WITHOUT_EXTRADATA 79.69 + ,const param_type& _tens=(param_type)0, 79.70 + const param_type& _cont=(param_type)0, 79.71 + const param_type& _bias=(param_type)0 79.72 +#endif 79.73 + ) 79.74 + { 79.75 + time=_time; 79.76 + data=_data; 79.77 +#ifndef WITHOUT_EXTRADATA 79.78 + tens=_tens; 79.79 + cont=_cont; 79.80 + bias=_bias; 79.81 +#endif 79.82 + } 79.83 + 79.84 + 79.85 + /** 79.86 + * Accessors 79.87 + */ 79.88 + const data_type& Data() const { return data;} 79.89 + data_type& Data() { return data;} 79.90 + 79.91 + }; 79.92 + 79.93 + 79.94 + 79.95 + 79.96 + 79.97 + 79.98 +/** 79.99 + * General hermite curve. 79.100 + */ 79.101 +class Hermite_t 79.102 +{ 79.103 + typedef HermiteKey_t* T2ptr_t; 79.104 + 79.105 + HermiteKey_t** keys; 79.106 + int nbKeys; 79.107 + 79.108 + // short cut of type 79.109 + typedef HermiteKey_t::param_type param_key; 79.110 + typedef HermiteKey_t::data_type data_key; 79.111 + 79.112 + 79.113 + 79.114 + void BuildSi(int _prev,int _cur,int _next,data_key& _ts) { 79.115 + 79.116 + SYS_ASSERT(_prev>=0 && _prev<nbKeys); 79.117 + SYS_ASSERT(_cur >=0 && _cur <nbKeys); 79.118 + SYS_ASSERT(_next>=0 && _next<nbKeys); 79.119 + 79.120 + data_key tmp1=keys[_cur]->Data()-keys[_prev]->Data(); 79.121 + data_key tmp2=keys[_next]->Data()-keys[_cur]->Data(); 79.122 + 79.123 + const param_key one=1; //just to avoid big syntax 79.124 + const param_key two=2; //just to avoid big syntax 79.125 + const param_key half=0.5; //just to avoid big syntax 79.126 + 79.127 +#ifndef WITHOUT_EXTRADATA 79.128 + param_key pars3= one - keys[_cur]->tens; 79.129 + param_key pars0= pars3 * ( one + keys[_cur]->bias )*( one - keys[_cur]->cont) * half; 79.130 + param_key pars1= pars3 * ( one - keys[_cur]->bias )*( one + keys[_cur]->cont) * half; 79.131 +#else 79.132 + const param_key pars0=0.5; 79.133 + const param_key pars1=0.5; 79.134 +#endif 79.135 + param_key curDeltaI=keys[_next]->time-keys[_cur]->time; 79.136 + param_key prevDeltaI=keys[_cur]->time-keys[_prev]->time; 79.137 + 79.138 + param_key delta=two * curDeltaI/(prevDeltaI+curDeltaI); 79.139 + 79.140 + _ts=(tmp1*pars0+tmp2*pars1)*delta; 79.141 + } 79.142 + 79.143 + 79.144 + void BuildDi(int _prev,int _cur,int _next,data_key& _td) { 79.145 + 79.146 + SYS_ASSERT(_prev>=0 && _prev<nbKeys); 79.147 + SYS_ASSERT(_cur >=0 && _cur <nbKeys); 79.148 + SYS_ASSERT(_next>=0 && _next<nbKeys); 79.149 + 79.150 + data_key tmp1=keys[_cur]->Data()-keys[_prev]->Data(); 79.151 + data_key tmp2=keys[_next]->Data()-keys[_cur]->Data(); 79.152 + 79.153 + const param_key one=1; //just to avoid big syntax 79.154 + const param_key two=2; //just to avoid big syntax 79.155 + const param_key half=0.5; //just to avoid big syntax 79.156 + 79.157 +#ifndef WITHOUT_EXTRADATA 79.158 + param_key pars3= one - keys[_cur]->tens; 79.159 + param_key pars0= pars3 * ( one + keys[_cur]->bias)*( one + keys[_cur]->cont) * half; 79.160 + param_key pars1= pars3 * ( one - keys[_cur]->bias)*( one - keys[_cur]->cont) * half; 79.161 +#else 79.162 + const param_key pars0=0.5; 79.163 + const param_key pars1=0.5; 79.164 + 79.165 +#endif 79.166 + param_key curDeltaI=keys[_next]->time-keys[_cur]->time; 79.167 + param_key prevDeltaI=keys[_cur]->time-keys[_prev]->time; 79.168 + 79.169 + param_key delta= two *prevDeltaI/(prevDeltaI+curDeltaI); 79.170 + 79.171 + _td=(tmp1*pars0+tmp2*pars1)*delta; 79.172 + } 79.173 + 79.174 + 79.175 + 79.176 + const int MAX_KEYS; 79.177 + 79.178 + public: 79.179 + 79.180 + /** 79.181 + * Default constructor 79.182 + */ 79.183 + Hermite_t(int _size) : MAX_KEYS(_size) { 79.184 + keys=new T2ptr_t[_size]; 79.185 + nbKeys=0; 79.186 + } 79.187 + 79.188 + ~Hermite_t() { 79.189 + delete [] keys; 79.190 + } 79.191 + 79.192 + 79.193 + 79.194 + /** 79.195 + * Clear the list of keyframes 79.196 + */ 79.197 + void Clear() { nbKeys=0;} 79.198 + 79.199 + /** 79.200 + * Insert a key frame with this time in the spline. 79.201 + * warning you can't insert more than one time an element 79.202 + * 79.203 + * @param mthHermiteKeyFrame_T* key to insert 79.204 + * @return 0 if ok else -1 79.205 + */ 79.206 + void AddKey(HermiteKey_t* _key) { 79.207 + 79.208 + SYS_ASSERT(_key); 79.209 + 79.210 + SYS_ASSERT(nbKeys<MAX_KEYS); 79.211 + keys[nbKeys++]=_key; 79.212 + } 79.213 + 79.214 + 79.215 + /** 79.216 + * GetData return a interpolated value from time given as parameter 79.217 + * We use data type defined by keyframe 79.218 + * 79.219 + * @param mthHermiteKeyFrame_T::param_type time step you want 79.220 + * @param mthHermiteKeyFrame_T::data_type& result of interpolation 79.221 + * @param bool loop or not 79.222 + * @return int 0 if ok else -1 79.223 + */ 79.224 + int GetData(param_key _time,data_key& _result,bool _loop=1) { 79.225 + 79.226 + if (!nbKeys) 79.227 + return -1; 79.228 + 79.229 + 79.230 + if (nbKeys<2) { 79.231 + _result=keys[0]->Data(); 79.232 + return 0; 79.233 + } 79.234 + 79.235 + 79.236 + // cheking range 79.237 + param_key limit_t0=keys[0]->time; 79.238 + param_key limit_t1=keys[nbKeys-1]->time; 79.239 + 79.240 + 79.241 + if (_loop) { 79.242 + // loop mode 79.243 + if (_time < limit_t0) 79.244 + _time=limit_t0; 79.245 + if (_time>limit_t1) { 79.246 + param_key dist=limit_t1-limit_t0; 79.247 + _time=_time/dist; 79.248 + _time=Frac(_time)*dist; 79.249 + } 79.250 + 79.251 + } else { 79.252 + // stop mode 79.253 + if (_time < limit_t0) 79.254 + _time=limit_t0; 79.255 + 79.256 + if (_time>limit_t1) 79.257 + _time=limit_t1; 79.258 + } 79.259 + 79.260 + 79.261 + int itPrev,itCur,itNext,itNext2; 79.262 + itCur=0; 79.263 + 79.264 + itCur++; //start at the second key 79.265 + // give me the good interval p0---t------p1 79.266 + while ( _time>keys[itCur]->time) { 79.267 + itCur++; 79.268 + } 79.269 + itCur--; 79.270 + 79.271 + // check valid prev and next 79.272 + itPrev=itCur; 79.273 + if (itCur!=0) 79.274 + itPrev--; 79.275 + 79.276 + itNext=itCur; 79.277 + if (itCur!=nbKeys-1) 79.278 + itNext++; 79.279 + 79.280 + 79.281 + param_key t=(_time-keys[itCur]->time)/(keys[itNext]->time-keys[itCur]->time); // rescale the time 79.282 + param_key t2=t*t; 79.283 + param_key t3=t2*t; 79.284 + 79.285 + param_key c2t3= t3 * (param_key)2; 79.286 + param_key c3t2= t2 * (param_key)3; 79.287 + 79.288 + // p=(2t3-3t2+1)*p0 + (t3-2t2+t)*tg0 + (-2t3+3t2)*p1 + (t3-t2)*tg1 79.289 + param_key one=1; 79.290 + param_key two=2; 79.291 + param_key h1= c2t3 - c3t2 + one; // 2t3-3t2+1 79.292 + param_key h2= t3 + t - t2 * two; // t3-2t2+t 79.293 + param_key h3= -c2t3 + c3t2; // -2t3+3t2 79.294 + param_key h4= t3 - t2; // t3-t2 79.295 + 79.296 + data_key tg0,tg1; 79.297 + 79.298 + BuildDi(itPrev,itCur,itNext,tg0); 79.299 + 79.300 + 79.301 + itNext2=itNext; 79.302 + if (itNext!=nbKeys-1) 79.303 + itNext2++; 79.304 + 79.305 + BuildSi(itCur,itNext,itNext2,tg1); 79.306 + 79.307 + _result=keys[itCur]->Data()*h1+ tg0*h2 + keys[itNext]->Data()*h3+ tg1*h4; 79.308 + return 0; 79.309 + } 79.310 + 79.311 + 79.312 +}; 79.313 + 79.314 +} 79.315 + 79.316 + 79.317 +#undef WITHOUT_EXTRADATA 79.318 + 79.319 + 79.320 +#endif
80.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 80.2 +++ b/mth_perlin.cxx Tue Nov 27 15:23:52 2007 +0100 80.3 @@ -0,0 +1,231 @@ 80.4 +/** @file mth_perlin.cxx 80.5 + * 80.6 + * @brief perlin noise class 80.7 + * 80.8 + ***************************************************************************** 80.9 + * 80.10 + * @author STV & psc80 80.11 + * 80.12 + * @date Created 2003/08 80.13 + * 80.14 + * @version $Id: mth_perlin.cxx,v 1.3 2004/01/10 22:38:31 psc80 Exp $ 80.15 + * 80.16 + ****************************************************************************/ 80.17 + 80.18 +#include "mth_perlin.h" 80.19 + 80.20 +/* coherent noise function over 1, 2 or 3 dimensions */ 80.21 +/* (copyright Ken Perlin) */ 80.22 + 80.23 +#include <stdlib.h> 80.24 +#include <stdio.h> 80.25 +#include <math.h> 80.26 + 80.27 + 80.28 +namespace mth { 80.29 + 80.30 + 80.31 + 80.32 +#define B 0x100 80.33 +#define BM 0xff 80.34 + 80.35 +#define N 0x1000 80.36 +#define NP 12 /* 2^N */ 80.37 +#define NM 0xfff 80.38 + 80.39 +static p[B + B + 2]; 80.40 +static float g3[B + B + 2][3]; 80.41 +static float g2[B + B + 2][2]; 80.42 +static float g1[B + B + 2]; 80.43 +static start = 1; 80.44 + 80.45 +static void init(void); 80.46 + 80.47 +#define s_curve(t) ( t * t * (3. - 2. * t) ) 80.48 + 80.49 +#define lerp(t, a, b) ( a + t * (b - a) ) 80.50 + 80.51 +void setup(int i,float* vec,float& t,int& b0,int& b1,float& r0,float& r1) 80.52 +{ 80.53 + t = vec[i] + N; 80.54 + b0 = ((int)t) & BM; 80.55 + b1 = (b0+1) & BM; 80.56 + r0 = t - (int)t; 80.57 + r1 = r0 - 1.; 80.58 +} 80.59 + 80.60 +double noise1(double arg) 80.61 +{ 80.62 + int bx0, bx1; 80.63 + float rx0, rx1, sx, t, u, v, vec[1]; 80.64 + 80.65 + vec[0] = arg; 80.66 + if (start) { 80.67 + start = 0; 80.68 + init(); 80.69 + } 80.70 + 80.71 +// setup(0, bx0,bx1, rx0,rx1); 80.72 + 80.73 + sx = s_curve(rx0); 80.74 + 80.75 + u = rx0 * g1[ p[ bx0 ] ]; 80.76 + v = rx1 * g1[ p[ bx1 ] ]; 80.77 + 80.78 + return lerp(sx, u, v); 80.79 +} 80.80 + 80.81 +float noise2(float vec[2]) 80.82 +{ 80.83 + int bx0, bx1, by0, by1, b00, b10, b01, b11; 80.84 + float rx0, rx1, ry0, ry1, *q, sx, sy, a, b, t, u, v; 80.85 + register i, j; 80.86 + 80.87 + if (start) { 80.88 + start = 0; 80.89 + init(); 80.90 + } 80.91 + 80.92 + setup(0,vec,t,bx0,bx1, rx0,rx1); 80.93 + setup(1,vec,t, by0,by1, ry0,ry1); 80.94 + 80.95 + i = p[ bx0 ]; 80.96 + j = p[ bx1 ]; 80.97 + 80.98 + b00 = p[ i + by0 ]; 80.99 + b10 = p[ j + by0 ]; 80.100 + b01 = p[ i + by1 ]; 80.101 + b11 = p[ j + by1 ]; 80.102 + 80.103 + sx = s_curve(rx0); 80.104 + sy = s_curve(ry0); 80.105 + 80.106 +#define at2(rx,ry) ( rx * q[0] + ry * q[1] ) 80.107 + 80.108 + q = g2[ b00 ] ; u = at2(rx0,ry0); 80.109 + q = g2[ b10 ] ; v = at2(rx1,ry0); 80.110 + a = lerp(sx, u, v); 80.111 + 80.112 + q = g2[ b01 ] ; u = at2(rx0,ry1); 80.113 + q = g2[ b11 ] ; v = at2(rx1,ry1); 80.114 + b = lerp(sx, u, v); 80.115 + 80.116 + return lerp(sy, a, b); 80.117 +} 80.118 + 80.119 +float noise3(float vec[3]) 80.120 +{ 80.121 + int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11; 80.122 + float rx0, rx1, ry0, ry1, rz0, rz1, *q, sy, sz, a, b, c, d, t, u, v; 80.123 + register i, j; 80.124 + 80.125 + if (start) { 80.126 + start = 0; 80.127 + init(); 80.128 + } 80.129 + 80.130 +// setup(0, bx0,bx1, rx0,rx1); 80.131 +// setup(1, by0,by1, ry0,ry1); 80.132 +// setup(2, bz0,bz1, rz0,rz1); 80.133 + 80.134 + i = p[ bx0 ]; 80.135 + j = p[ bx1 ]; 80.136 + 80.137 + b00 = p[ i + by0 ]; 80.138 + b10 = p[ j + by0 ]; 80.139 + b01 = p[ i + by1 ]; 80.140 + b11 = p[ j + by1 ]; 80.141 + 80.142 + t = s_curve(rx0); 80.143 + sy = s_curve(ry0); 80.144 + sz = s_curve(rz0); 80.145 + 80.146 +#define at3(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] ) 80.147 + 80.148 + q = g3[ b00 + bz0 ] ; u = at3(rx0,ry0,rz0); 80.149 + q = g3[ b10 + bz0 ] ; v = at3(rx1,ry0,rz0); 80.150 + a = lerp(t, u, v); 80.151 + 80.152 + q = g3[ b01 + bz0 ] ; u = at3(rx0,ry1,rz0); 80.153 + q = g3[ b11 + bz0 ] ; v = at3(rx1,ry1,rz0); 80.154 + b = lerp(t, u, v); 80.155 + 80.156 + c = lerp(sy, a, b); 80.157 + 80.158 + q = g3[ b00 + bz1 ] ; u = at3(rx0,ry0,rz1); 80.159 + q = g3[ b10 + bz1 ] ; v = at3(rx1,ry0,rz1); 80.160 + a = lerp(t, u, v); 80.161 + 80.162 + q = g3[ b01 + bz1 ] ; u = at3(rx0,ry1,rz1); 80.163 + q = g3[ b11 + bz1 ] ; v = at3(rx1,ry1,rz1); 80.164 + b = lerp(t, u, v); 80.165 + 80.166 + d = lerp(sy, a, b); 80.167 + 80.168 + return lerp(sz, c, d); 80.169 +} 80.170 + 80.171 +static void normalize2(float v[2]) 80.172 +{ 80.173 + float s; 80.174 + 80.175 + s = Sqrt(v[0] * v[0] + v[1] * v[1]); 80.176 + v[0] = v[0] / s; 80.177 + v[1] = v[1] / s; 80.178 +} 80.179 + 80.180 +static void normalize3(float v[3]) 80.181 +{ 80.182 + float s; 80.183 + 80.184 + s = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); 80.185 + v[0] = v[0] / s; 80.186 + v[1] = v[1] / s; 80.187 + v[2] = v[2] / s; 80.188 +} 80.189 + 80.190 +static void init(void) 80.191 +{ 80.192 + int i, j, k; 80.193 + 80.194 + for (i = 0 ; i < B ; i++) { 80.195 + p[i] = i; 80.196 + 80.197 + g1[i] = (float)((Random() % (B + B)) - B) / B; 80.198 + 80.199 + for (j = 0 ; j < 2 ; j++) 80.200 + g2[i][j] = (float)((Random() % (B + B)) - B) / B; 80.201 + normalize2(g2[i]); 80.202 + 80.203 + for (j = 0 ; j < 3 ; j++) 80.204 + g3[i][j] = (float)((Random() % (B + B)) - B) / B; 80.205 + normalize3(g3[i]); 80.206 + } 80.207 + 80.208 + while (--i) { 80.209 + k = p[i]; 80.210 + p[i] = p[j = Random() % B]; 80.211 + p[j] = k; 80.212 + } 80.213 + 80.214 + for (i = 0 ; i < B + 2 ; i++) { 80.215 + p[B + i] = p[i]; 80.216 + g1[B + i] = g1[i]; 80.217 + for (j = 0 ; j < 2 ; j++) 80.218 + g2[B + i][j] = g2[i][j]; 80.219 + for (j = 0 ; j < 3 ; j++) 80.220 + g3[B + i][j] = g3[i][j]; 80.221 + } 80.222 +} 80.223 + 80.224 + 80.225 + 80.226 +float noise2d(float _x,float _y) 80.227 +{ 80.228 + float a[2]={_x,_y}; 80.229 + return noise2(a); 80.230 +} 80.231 + 80.232 + 80.233 + 80.234 +} 80.235 \ No newline at end of file
81.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 81.2 +++ b/mth_perlin.h Tue Nov 27 15:23:52 2007 +0100 81.3 @@ -0,0 +1,27 @@ 81.4 +/** @file mth_perlin.h 81.5 + * 81.6 + * @brief perlin noise class 81.7 + * 81.8 + ***************************************************************************** 81.9 + * 81.10 + * @author original by [stv] modified by psc80 81.11 + * 81.12 + * @date Created 2003/08 81.13 + * 81.14 + * @version $Id: mth_perlin.h,v 1.3 2004/01/10 22:38:31 psc80 Exp $ 81.15 + * 81.16 + ****************************************************************************/ 81.17 + 81.18 +#ifndef MTH_PERLIN_H 81.19 +#define MTH_PERLIN_H 81.20 + 81.21 + 81.22 +#include "mth.h" 81.23 + 81.24 +namespace mth { 81.25 + 81.26 + float noise2d(float _x,float _y); 81.27 + 81.28 +} 81.29 + 81.30 +#endif
82.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 82.2 +++ b/mth_plane3.h Tue Nov 27 15:23:52 2007 +0100 82.3 @@ -0,0 +1,126 @@ 82.4 +/** @file mth_plane3.h 82.5 + * 82.6 + * @brief Oriented plane 82.7 + * 82.8 + ***************************************************************************** 82.9 + * 82.10 + * @author Cedric Pinson 82.11 + * 82.12 + * @date Created 2001/08 82.13 + * 82.14 + * @version $Id: mth_plane3.h,v 1.1 2004/01/09 21:41:22 mryoung Exp $ 82.15 + * 82.16 + ****************************************************************************/ 82.17 + 82.18 +#ifndef MTH_PLANE3_H 82.19 +#define MTH_PLANE3_H 82.20 + 82.21 +#include "mth_vector3.h" 82.22 + 82.23 + 82.24 + 82.25 +/** Oriented plane 82.26 + * 82.27 + * An oriented plane is described by a normal and a signed distance to the 82.28 + * origin with respect to this normal. 82.29 + * 82.30 + */ 82.31 +namespace mth { 82.32 + 82.33 + struct Plane3_t { 82.34 + 82.35 + /// Normal of plane 82.36 + Vector3_t normal; 82.37 + 82.38 + /// position on axis 82.39 + float pos; 82.40 + 82.41 + 82.42 + /** Default constructor*/ 82.43 + Plane3_t() { } 82.44 + 82.45 + 82.46 + /** Initialize a plane with a normal and a signed position*/ 82.47 + Plane3_t(const Vector3_t& n, const float p) : normal(n), pos(p) { } 82.48 + 82.49 + 82.50 + 82.51 + Plane3_t(const Plane3_t& v) 82.52 + { normal=v.normal; pos=v.pos; } 82.53 + 82.54 + 82.55 + /** Initialise a plane passing through three points v, v1 and v2 82.56 + * 82.57 + * @param v point to pass through 82.58 + * @param v1 point to pass through 82.59 + * @param v2 point to pass through 82.60 + * 82.61 + * @return 0 if no error, -1 if the plane could not be determined 82.62 + * 82.63 + */ 82.64 + int Init(const Vector3_t& v, const Vector3_t& v1, const Vector3_t& v2) { 82.65 + normal = (v1-v).Cross((v2-v)); 82.66 + if (normal.Normalize() < 0) return -1; 82.67 + pos = v.Dot(normal); 82.68 + return 0; 82.69 + } 82.70 + 82.71 + 82.72 + /** Initialize a plane with a normal and a signed position*/ 82.73 + void Init(const Vector3_t& n, const float p) { normal=n; pos=p; } 82.74 + 82.75 + 82.76 + /** Initialize a plane with a normal and a signed position*/ 82.77 + void Init(const Plane3_t& n) { normal=n.normal; pos=n.pos; } 82.78 + 82.79 + 82.80 + 82.81 + /** Initialize a plane with a normal and a vector*/ 82.82 + void Init(const Vector3_t& n, const Vector3_t &p) { normal=n; pos=n*p ; } 82.83 + 82.84 + 82.85 + 82.86 + /** Constructor from three points*/ 82.87 + Plane3_t(const Vector3_t& v, const Vector3_t& v1, const Vector3_t& v2) { 82.88 + Init(v, v1, v2); 82.89 + } 82.90 + 82.91 + 82.92 + /** Return the signed distance of a point from the plane. 82.93 + * 82.94 + * @param p Point to test 82.95 + * 82.96 + * @return positive if in the front half space, negative otherwise. 82.97 + * 82.98 + */ 82.99 + float Dist(const Vector3_t& p) const { 82.100 + return p.Dot(normal) - pos; } 82.101 + 82.102 + 82.103 + /// Return normal 82.104 + const Vector3_t& Direction() const { return normal;} 82.105 + 82.106 + /// Return position on axis 82.107 + const float& Position() const { return pos;} 82.108 + 82.109 + 82.110 + /** unari minus operator*/ 82.111 + const Plane3_t operator - () const { 82.112 + return Plane3_t(-normal, -pos); } 82.113 + 82.114 + 82.115 + /** operator translation*/ 82.116 + const Plane3_t operator + (const Vector3_t & v) const { 82.117 + return Plane3_t(normal, pos + v.Dot(normal)); 82.118 + } 82.119 + 82.120 + 82.121 + /** operator translation inverse*/ 82.122 + const Plane3_t operator - (const Vector3_t & v) const { 82.123 + return Plane3_t(normal, pos - v.Dot(normal)); 82.124 + } 82.125 + 82.126 + }; 82.127 + 82.128 +} 82.129 +#endif
83.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 83.2 +++ b/mth_quaternion.h Tue Nov 27 15:23:52 2007 +0100 83.3 @@ -0,0 +1,182 @@ 83.4 +/** @file mth_quaternion.h 83.5 + * 83.6 + * @brief quaternion class 83.7 + * 83.8 + ***************************************************************************** 83.9 + * 83.10 + * @author psc80 83.11 + * 83.12 + * @date Created 2001/05 83.13 + * 83.14 + * @version $Id: mth_quaternion.h,v 1.1 2004/01/18 07:16:45 psc80 Exp $ 83.15 + * 83.16 + ****************************************************************************/ 83.17 + 83.18 +#ifndef MTH_QUATERNION_H 83.19 +#define MTH_QUATERNION_H 83.20 + 83.21 +#include <cmath> 83.22 +#include "mth.h" 83.23 +#include "mth_vector3.h" 83.24 + 83.25 +namespace mth { 83.26 + 83.27 + 83.28 + /** 83.29 + * Class Quaternion, essentially used for rotation in some cases @see phy 83.30 + */ 83.31 + class Quaternion_t { 83.32 + 83.33 + float n; 83.34 + Vector3_t v; 83.35 + 83.36 + public: 83.37 + 83.38 + /// do nothing 83.39 + Quaternion_t() {} 83.40 + 83.41 + 83.42 + /// constructor with four scalar 83.43 + Quaternion_t(const float& _n,const float& _v0, const float& _v1, const float& _v2) {n=_n;v.Init(_v0,_v1,_v2);} 83.44 + 83.45 + 83.46 + /// constructor with n and a vector3 83.47 + Quaternion_t(const float& _n,const Vector3_t& _v) {n=_n;v=_v;} 83.48 + 83.49 + 83.50 + /// Constructor with three scalar to build a rotation quaternion 83.51 + Quaternion_t(const float& _y,const float& _p,const float& _r) { MakeFromEuler(_y,_p,_r);} 83.52 + 83.53 + 83.54 + /// Set the quaternion to 0 83.55 + void Init() { n=0;v.Init();} 83.56 + 83.57 + 83.58 + /// Return the scalar part of the quaternion 83.59 + const float& Scalar() { return n;} 83.60 + 83.61 + 83.62 + /// Return the vector part of the quaternion 83.63 + const Vector3_t& Vector() { return v;} 83.64 + 83.65 + 83.66 + /// return the magnitude squared 83.67 + float MagSqr() { return v.MagSqr()+n*n;} 83.68 + 83.69 + 83.70 + /// return the magnitude 83.71 + float Mag() { return Sqrt(MagSqr());} 83.72 + 83.73 + 83.74 + /// Return a conjugate quaternion 83.75 + Quaternion_t Conjugate() const { return Quaternion_t(n,-v);} 83.76 + 83.77 + 83.78 + /// Normalize 83.79 + void Normalize() { float a=1.0/Mag();n*=a;v*=a;} 83.80 + 83.81 + 83.82 + 83.83 + /// Rotate a vector 83.84 + Vector3_t Rotate(const Vector3_t& _v) const { 83.85 + return ((*this)*_v*Conjugate()).Vector();} 83.86 + 83.87 + 83.88 + /// Rotate a vector 83.89 + //Quaternion_t Rotate(const Quaternion_t& _q) const { 83.90 + // return ((*this)*_q*Conjugate()).Vector();} 83.91 + 83.92 + 83.93 + /// Return the angle of rotation about the axis represented by the vector part 83.94 + float Angle() { return ACos(n);} 83.95 + 83.96 + 83.97 + /// Return a unit vector along the axis of rotation represented by the vector part 83.98 + Vector3_t Axis() { 83.99 + float m=v.Mag(); 83.100 + if (m<=(float)0.0) 83.101 + return v; 83.102 + return v*(1.0/m);} 83.103 + 83.104 + 83.105 + 83.106 + void MakeFromEuler(const float& _y,const float& _p,const float& _r) { 83.107 + Quaternion_t roll( Cos(_r*0.5), Vector3_t(Sin(_r*0.5),0,0)); 83.108 + Quaternion_t pitch( Cos(_p*0.5), Vector3_t(0,Sin(_p*0.5),0)); 83.109 + Quaternion_t yaw( Cos(_y*0.5), Vector3_t(0,0,Sin(_y*0.5))); 83.110 + (*this)=yaw*pitch*roll; 83.111 + } 83.112 + 83.113 + 83.114 + /// multiplication operator 83.115 + Quaternion_t operator * (const Vector3_t& _v) const { 83.116 + Quaternion_t r(0,_v); 83.117 + return (*this)*r;} 83.118 + 83.119 + 83.120 + /// Multiplication operator 83.121 + Quaternion_t operator * (const Quaternion_t& _q) const { 83.122 + return Quaternion_t( n*_q.n - ( v*_q.v ), 83.123 + n*_q.v[0] + v[0]*_q.n + v[1]*_q.v[2] - v[2]*_q.v[1], 83.124 + n*_q.v[1] + v[1]*_q.n + v[2]*_q.v[0] - v[0]*_q.v[2], 83.125 + n*_q.v[2] + v[2]*_q.n + v[0]*_q.v[1] - v[1]*_q.v[0]);} 83.126 + 83.127 + /// Multiplication operator 83.128 + Quaternion_t operator * ( const float& _v ) const { 83.129 + return Quaternion_t(n*_v,v*_v);} 83.130 + 83.131 + 83.132 + /// Add two quaternion 83.133 + Quaternion_t operator + (const Quaternion_t& _q) const { 83.134 + return Quaternion_t(n+_q.n,v+_q.v); } 83.135 + 83.136 + 83.137 + /// Sub two quaternion 83.138 + Quaternion_t operator - (const Quaternion_t& _q) const { 83.139 + return Quaternion_t(n-_q.n,v-_q.v); } 83.140 + 83.141 + 83.142 + 83.143 + /// Comparaison operator == 83.144 + bool operator == ( const Quaternion_t& _q ) const { 83.145 + return n == _q.n && v==_q.v; } 83.146 + 83.147 + 83.148 + /// Comparaison operator != 83.149 + bool operator != ( const Quaternion_t& _q ) const { 83.150 + return !(*this==_q); } 83.151 + 83.152 + 83.153 + /// += operator 83.154 + const Quaternion_t& operator += ( const Quaternion_t& _q ) { 83.155 + n+=_q.n; v+=_q.v; return *this;} 83.156 + 83.157 + 83.158 + /// -= operator 83.159 + const Quaternion_t& operator -= ( const Quaternion_t& _q ) { 83.160 + n-=_q.n; v-=_q.v; return *this;} 83.161 + 83.162 + 83.163 + /// *= operator 83.164 + const Quaternion_t& operator *= ( const float& _v ) { 83.165 + n*=_v; v*=_v; return *this;} 83.166 + 83.167 + 83.168 + /// /= operator 83.169 + const Quaternion_t& operator /= ( const float& _v ) { 83.170 + float a=(float)1.0/_v; 83.171 + n*=a; v*=a; return *this;} 83.172 + 83.173 + 83.174 + /// Operator - 83.175 + Quaternion_t operator - () const { 83.176 + return Quaternion_t(-n,-v);} 83.177 + 83.178 + 83.179 + }; 83.180 + 83.181 + 83.182 +} 83.183 + 83.184 + 83.185 +#endif
84.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 84.2 +++ b/mth_vector2.h Tue Nov 27 15:23:52 2007 +0100 84.3 @@ -0,0 +1,89 @@ 84.4 +/** @file mth_vector3.h 84.5 + * 84.6 + * @brief 3 dimensional vectors 84.7 + * 84.8 + ***************************************************************************** 84.9 + * 84.10 + * @author psc80 84.11 + * 84.12 + * @date Created 2001/05 84.13 + * 84.14 + * @version $Id: mth_vector2.h,v 1.3 2004/01/23 07:16:09 psc80 Exp $ 84.15 + * 84.16 + ****************************************************************************/ 84.17 + 84.18 +#ifndef MTH_VECTOR2_H 84.19 +#define MTH_VECTOR2_H 84.20 + 84.21 + 84.22 +#include <cmath> 84.23 +#include "mth.h" 84.24 +#include "sys_assert.h" 84.25 + 84.26 +namespace mth { 84.27 + 84.28 + 84.29 + class Vector2_t { 84.30 + 84.31 + protected: 84.32 + 84.33 + float c[2]; 84.34 + 84.35 + public: 84.36 + 84.37 + 84.38 + /// do nothing 84.39 + Vector2_t() {} 84.40 + 84.41 + 84.42 + /// constructo with scalar 84.43 + Vector2_t(float _a,float _b) { 84.44 + c[0]=_a;c[1]=_b; 84.45 + } 84.46 + 84.47 + 84.48 + 84.49 + /// Initialize the vector with another vector 84.50 + Vector2_t(const Vector2_t& _v) { 84.51 + c[0]=_v.c[0];c[1]=_v.c[1]; 84.52 + } 84.53 + 84.54 + 84.55 + /// Set the vector to 0 84.56 + void Init() { 84.57 + c[0]=0; c[1]=0; 84.58 + } 84.59 + 84.60 + 84.61 + void Init(float _i,float _j) {c[0]=_i;c[1]=_j;} 84.62 + 84.63 + /// Coordinates accessor operator 84.64 + float& operator [] (const int& _i) { return c[_i]; } 84.65 + 84.66 + 84.67 + /// Const coordinates accessor operator 84.68 + const float& operator [] (const int& _i) const { return c[_i]; } 84.69 + 84.70 + 84.71 + /// Substract of two vectors 84.72 + Vector2_t operator - (const Vector2_t& _v) const { 84.73 + return Vector2_t(c[0]-_v.c[0],c[1]-_v.c[1]); 84.74 + } 84.75 + 84.76 + 84.77 + /// Addition of two vectors 84.78 + Vector2_t operator + (const Vector2_t& _v) const { 84.79 + return Vector2_t(c[0]+_v.c[0],c[1]+_v.c[1]); 84.80 + } 84.81 + 84.82 + 84.83 + typedef const float* ConversionForGL; 84.84 + operator ConversionForGL() const { return &c[0];} 84.85 + 84.86 + 84.87 + }; 84.88 + 84.89 + 84.90 +} 84.91 + 84.92 +#endif
85.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 85.2 +++ b/mth_vector3.h Tue Nov 27 15:23:52 2007 +0100 85.3 @@ -0,0 +1,238 @@ 85.4 +/** @file mth_vector3.h 85.5 + * 85.6 + * @brief 3 dimensional vectors 85.7 + * 85.8 + ***************************************************************************** 85.9 + * 85.10 + * @author psc80 85.11 + * 85.12 + * @date Created 2001/05 85.13 + * 85.14 + * @version $Id: mth_vector3.h,v 1.3 2004/01/22 10:53:04 psc80 Exp $ 85.15 + * 85.16 + ****************************************************************************/ 85.17 + 85.18 +#ifndef MTH_VECTOR3_H 85.19 +#define MTH_VECTOR3_H 85.20 + 85.21 + 85.22 +#include <cmath> 85.23 +#include "mth.h" 85.24 +#include "sys_assert.h" 85.25 + 85.26 +namespace mth { 85.27 + 85.28 + 85.29 + class Vector3_t { 85.30 + 85.31 + protected: 85.32 + 85.33 + float c[3]; 85.34 + 85.35 + public: 85.36 + 85.37 + 85.38 + /// do nothing 85.39 + Vector3_t() {} 85.40 + 85.41 + 85.42 + /// constructo with scalar 85.43 + Vector3_t(float _a,float _b,float _c) { 85.44 + Init(_a,_b,_c); 85.45 + } 85.46 + 85.47 + 85.48 + 85.49 + /// Initialize the vector with another vector 85.50 + Vector3_t(const Vector3_t& _v) { 85.51 + c[0]=(float)_v[0]; c[1]=(float)_v[1]; c[2]=(float)_v[2]; 85.52 + } 85.53 + 85.54 + 85.55 + void InitRandomVectorInBox(float _sizeBox) { 85.56 + for (int j=0;j<3;j++) 85.57 + c[j]=-_sizeBox/2 + (_sizeBox*mth::Rand()/(mth::RANDOM_MAX+1)); 85.58 + } 85.59 + 85.60 + 85.61 + /// Set the vector to 0 85.62 + void Init() { 85.63 + c[0]=0; c[1]=0; c[2]=0; 85.64 + } 85.65 + 85.66 + 85.67 + /// Set the vector to 0 85.68 + void Init(float _a,float _b,float _c) { 85.69 + c[0]=_a; c[1]=_b; c[2]=_c; 85.70 + } 85.71 + 85.72 + 85.73 + /// Initialize the vector with another vector 85.74 + void Init(const Vector3_t& _v) { 85.75 + c[0]=(float)_v.c[0]; c[1]=(float)_v.c[1]; c[2]=(float)_v.c[2]; 85.76 + } 85.77 + 85.78 + 85.79 + 85.80 + /// Compute the dot product against another vector 85.81 + float Dot(const Vector3_t& _v) const { 85.82 + return c[0]*_v.c[0]+c[1]*_v.c[1]+c[2]*_v.c[2]; 85.83 + } 85.84 + 85.85 + 85.86 + 85.87 + /// Multiply by row 85.88 + Vector3_t Multiply(const Vector3_t& _v) const { 85.89 + return Vector3_t(c[0]*_v.c[0],c[1]*_v.c[1],c[2]*_v.c[2]); 85.90 + } 85.91 + 85.92 + 85.93 + 85.94 + /// Return the squared magnitude (length) of the vector 85.95 + float MagSqr() const { 85.96 + return c[0]*c[0]+c[1]*c[1]+c[2]*c[2]; 85.97 + } 85.98 + 85.99 + 85.100 + /// Return the magnitude (length) of the vector 85.101 + float Mag() const { return Sqrt(MagSqr()); } 85.102 + 85.103 + 85.104 + 85.105 + /// Return the squared distance between two vectors 85.106 + float DistSqr(const Vector3_t& _v) const { 85.107 + return (*this-_v).MagSqr();} 85.108 + 85.109 + 85.110 + /// Return the distance between two vectors 85.111 + float Dist(const Vector3_t& _v) const { 85.112 + return (*this-_v).Mag(); } 85.113 + 85.114 + 85.115 + 85.116 + 85.117 + /** Normalize this vector 85.118 + * 85.119 + * @return int 0 if succeded, -1 if the vector was zero or too small 85.120 + * (its squared magnitude was less than MTH_EPSILON) 85.121 + */ 85.122 + int Normalize() { 85.123 + float a = MagSqr(); 85.124 + SYS_ASSERT(a>=0); 85.125 + *this *= (float)(1./Sqrt(a)); 85.126 + return 0; 85.127 + } 85.128 + 85.129 + 85.130 + /// Cross product 85.131 + Vector3_t Cross( const Vector3_t& _v ) const { 85.132 + return Vector3_t(c[1]*_v.c[2] - c[2]*_v.c[1], 85.133 + c[2]*_v.c[0] - c[0]*_v.c[2], 85.134 + c[0]*_v.c[1] - c[1]*_v.c[0]); 85.135 + } 85.136 + 85.137 + 85.138 + 85.139 + 85.140 + 85.141 + 85.142 + Vector3_t operator ^ (const Vector3_t& _v) const { 85.143 + return this->Cross(_v); } 85.144 + 85.145 + 85.146 + /// Coordinates accessor operator 85.147 + float& operator [] (int _i) { return c[_i]; } 85.148 + 85.149 + 85.150 + /// Const coordinates accessor operator 85.151 + const float& operator [] (int _i) const { return c[_i]; } 85.152 + 85.153 + 85.154 + /// Operator * (dot product) 85.155 + float operator * (const Vector3_t& _v) const { 85.156 + return this->Dot(_v);} 85.157 + 85.158 + 85.159 + /// Addition of two vectors 85.160 + Vector3_t operator + (const Vector3_t& _v) const { 85.161 + return Vector3_t(c[0]+_v.c[0],c[1]+_v.c[1],c[2]+_v.c[2]); 85.162 + } 85.163 + 85.164 + 85.165 + /// Substract of two vectors 85.166 + Vector3_t operator - (const Vector3_t& _v) const { 85.167 + return Vector3_t(c[0]-_v.c[0],c[1]-_v.c[1],c[2]-_v.c[2]); 85.168 + } 85.169 + 85.170 + 85.171 + /// Comparaison operator 85.172 + bool operator == ( const Vector3_t& _v ) const { 85.173 + return c[0]==_v.c[0] && c[1]==_v.c[1] && c[2]==_v.c[2]; 85.174 + } 85.175 + 85.176 + 85.177 + /// Comparaison operator 85.178 + bool operator != ( const Vector3_t& _v ) const { 85.179 + return !(*this==_v);} 85.180 + 85.181 + 85.182 + /// += operator 85.183 + const Vector3_t& operator += ( const Vector3_t& _v ) { 85.184 + c[0]+=_v.c[0]; c[1]+=_v.c[1]; c[2]+=_v.c[2]; 85.185 + return *this;} 85.186 + 85.187 + 85.188 + /// -= operator 85.189 + const Vector3_t& operator -= ( const Vector3_t& _v ) { 85.190 + c[0]-=_v.c[0]; c[1]-=_v.c[1]; c[2]-=_v.c[2]; 85.191 + return *this;} 85.192 + 85.193 + 85.194 + /// *= operator 85.195 + const Vector3_t& operator *= ( const float& _v ) { 85.196 + c[0]*=_v; c[1]*=_v; c[2]*=_v; 85.197 + return *this;} 85.198 + 85.199 + 85.200 + /// /= operator 85.201 + const Vector3_t& operator /= ( const float& _v ) { 85.202 + float a=(float)1.0/_v; 85.203 + c[0]*=a; c[1]*=a; c[2]*=a; 85.204 + return *this;} 85.205 + 85.206 + 85.207 + 85.208 + /// Operator - 85.209 + Vector3_t operator - () const { 85.210 + return Vector3_t(-c[0],-c[1],-c[2]); 85.211 + } 85.212 + 85.213 + 85.214 + /// Mutliplication by a scalar value (to the right) 85.215 + Vector3_t operator * ( const float& _a) const { 85.216 + return Vector3_t(c[0]*_a,c[1]*_a,c[2]*_a); 85.217 + } 85.218 + 85.219 + 85.220 + /// Division by a scalar value 85.221 + Vector3_t operator / (const float& _v) const { 85.222 + float a=(float)1.0/_v; 85.223 + return Vector3_t(c[0]*a,c[1]*a,c[2]*a); 85.224 + } 85.225 + 85.226 + 85.227 + 85.228 + typedef const float* ConversionForGL; 85.229 + operator ConversionForGL() const { return &c[0];} 85.230 + 85.231 + 85.232 + }; 85.233 + 85.234 + 85.235 +// Vector3_t operator * (const float& _a, const Vector3_t& _v) { 85.236 +// return Vector3_t(_a*_v[0], _a*_v[1], _a*_v[2]); } 85.237 + 85.238 + 85.239 +} 85.240 + 85.241 +#endif
86.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 86.2 +++ b/phy.h Tue Nov 27 15:23:52 2007 +0100 86.3 @@ -0,0 +1,19 @@ 86.4 +/** @file phy.h 86.5 + * 86.6 + * @brief physic types ... 86.7 + * 86.8 + ***************************************************************************** 86.9 + * 86.10 + * @author psc80 86.11 + * 86.12 + * @date Created 2003/02 86.13 + * 86.14 + * @version $Id: phy.h,v 1.1 2004/01/09 21:41:22 mryoung Exp $ 86.15 + * 86.16 + ****************************************************************************/ 86.17 + 86.18 +#ifndef PHY_H 86.19 +#define PHY_H 86.20 + 86.21 + 86.22 +#endif
87.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 87.2 +++ b/phy_element.h Tue Nov 27 15:23:52 2007 +0100 87.3 @@ -0,0 +1,127 @@ 87.4 +/** @file phy_element.h 87.5 + * 87.6 + * @brief element base class 87.7 + * 87.8 + ***************************************************************************** 87.9 + * 87.10 + * @author psc80 87.11 + * 87.12 + * @date Created 2003/02 87.13 + * 87.14 + * @version $Id: phy_element.h,v 1.5 2004/01/14 20:36:54 psc80 Exp $ 87.15 + * 87.16 + ****************************************************************************/ 87.17 + 87.18 +#ifndef PHY_ELEMENT_H 87.19 +#define PHY_ELEMENT_H 87.20 + 87.21 + 87.22 +#include "sys_assert.h" 87.23 +#include "mth_vector3.h" 87.24 + 87.25 + 87.26 +namespace phy { 87.27 + 87.28 + class Element_t 87.29 + { 87.30 + 87.31 + mth::Vector3_t position; 87.32 + mth::Vector3_t force; 87.33 + mth::Vector3_t velocity; 87.34 + float mass; 87.35 + 87.36 + bool blocked; 87.37 + 87.38 + void Init() { 87.39 + position.Init(); 87.40 + force.Init(); 87.41 + velocity.Init(); 87.42 + mass=1; 87.43 + blocked=false; 87.44 + } 87.45 + 87.46 + public: 87.47 + 87.48 + 87.49 + Element_t() { Init();} 87.50 + ~Element_t() {} 87.51 + 87.52 + void Blocked() { blocked=true;} 87.53 + bool IsBlocked() { return blocked;} 87.54 + 87.55 + void Mass(float _m) { mass=_m;} 87.56 + float Mass() const { return mass;} 87.57 + 87.58 + void Position(const mth::Vector3_t& _pos) { position=_pos;} 87.59 + const mth::Vector3_t& Position() const { return position;} 87.60 + mth::Vector3_t& Position() { return position;} 87.61 + 87.62 + void InitForce() { force.Init();} 87.63 + void ApplyForce(const mth::Vector3_t& _f) { force+=_f;} 87.64 + 87.65 + 87.66 + mth::Vector3_t& Velocity() { return velocity;} 87.67 + const mth::Vector3_t& Velocity() const { return velocity;} 87.68 + void Velocity(const mth::Vector3_t& _vel) {velocity=_vel;} 87.69 + void Update(double _dt) { 87.70 + SYS_ASSERT(mass>0); 87.71 + mth::Vector3_t acceleration=force/mass; 87.72 + velocity+=acceleration*_dt; 87.73 + position+=velocity*_dt; 87.74 + } 87.75 + 87.76 + }; 87.77 + 87.78 + 87.79 + 87.80 + class SpringDamper_t { 87.81 + 87.82 + Element_t* link[2]; 87.83 + 87.84 + float ks,kd; 87.85 + float l; 87.86 + 87.87 + 87.88 + void Init() { 87.89 + link[0]=link[1]=0; 87.90 + ks=kd=0; 87.91 + } 87.92 + 87.93 + public: 87.94 + 87.95 + SpringDamper_t() { Init(); } 87.96 + 87.97 + void Init(float _ks, float _kd,float _l) { ks=_ks;kd=_kd;l=_l;} 87.98 + void Init(Element_t* _e0, Element_t* _e1) { link[0]=_e0;link[1]=_e1;} 87.99 + 87.100 + void Update(/*double _dt*/) { 87.101 + 87.102 + SYS_ASSERT(link[0] && link[1]); 87.103 + mth::Vector3_t L=link[0]->Position()-link[1]->Position(); 87.104 + mth::Vector3_t vel=link[0]->Velocity()-link[1]->Velocity(); 87.105 + 87.106 + float magL=L.MagSqr(); 87.107 + if (magL>1e-5) 87.108 + magL=mth::Sqrt(magL); 87.109 + //L*=1.0/magL; 87.110 + 87.111 + float springTension=((magL-l)*(ks)); 87.112 +// mth::Vector3_t force=L*((magL-l)*(-ks)); 87.113 + 87.114 + float val=(springTension + ( (vel*L)*kd / magL ))/magL ; 87.115 + //val=mth::Sign(val)*mth::Abs(mth::Min(50,val)); 87.116 + mth::Vector3_t force= L * (-val); 87.117 + 87.118 + if (!link[0]->IsBlocked()) 87.119 + link[0]->ApplyForce(force); 87.120 + if (!link[1]->IsBlocked()) 87.121 + link[1]->ApplyForce(-force); 87.122 + 87.123 + } 87.124 + 87.125 + }; 87.126 + 87.127 + 87.128 +} 87.129 + 87.130 +#endif
88.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 88.2 +++ b/phy_server.cxx Tue Nov 27 15:23:52 2007 +0100 88.3 @@ -0,0 +1,82 @@ 88.4 +/** @file phy_server.cxx 88.5 + * 88.6 + * @brief server for solving physic entity 88.7 + * 88.8 + ***************************************************************************** 88.9 + * 88.10 + * @author psc80 88.11 + * 88.12 + * @date Created 2003/11 88.13 + * 88.14 + * @version $Id: phy_server.cxx,v 1.4 2004/01/18 04:06:08 psc80 Exp $ 88.15 + * 88.16 + ****************************************************************************/ 88.17 + 88.18 +#include "phy_server.h" 88.19 + 88.20 +namespace phy { 88.21 + 88.22 + const int MaxLinks=16384; 88.23 + const int MaxElements=16384*2; 88.24 + 88.25 + 88.26 + typedef SpringDamper_t* SDptr_t; 88.27 + typedef Element_t* Eptr_t; 88.28 + 88.29 + Server_t::Server_t() 88.30 + { 88.31 + links=new SDptr_t[MaxLinks]; 88.32 + elements=new Eptr_t[MaxElements]; 88.33 + Init(); 88.34 + } 88.35 + 88.36 + void Server_t::Init() 88.37 + { 88.38 + nbLinks=0; 88.39 + nbElements=0; 88.40 + } 88.41 + 88.42 + 88.43 + void Server_t::StartForceSession() 88.44 + { 88.45 + mth::Vector3_t gravity(0,-38.81,0); 88.46 + for (int i=0;i<nbElements;i++) { 88.47 + elements[i]->InitForce(); 88.48 + elements[i]->ApplyForce(gravity*elements[i]->Mass()); 88.49 + } 88.50 + } 88.51 + 88.52 + 88.53 + void Server_t::EndForceSession() 88.54 + { 88.55 + for (int i=0;i<nbLinks;i++) 88.56 + links[i]->Update(); 88.57 + } 88.58 + 88.59 + 88.60 + int Server_t::Try1(const double& _dt) 88.61 + { 88.62 + for (int j=0;j<nbElements;j++) 88.63 + if (!elements[j]->IsBlocked()) 88.64 + elements[j]->Update(_dt); 88.65 + 88.66 + return 0; 88.67 + } 88.68 + 88.69 + 88.70 + 88.71 + void Server_t::AddElement(Element_t* _element) 88.72 + { 88.73 + elements[nbElements++]=_element; 88.74 + SYS_ASSERT(_element && nbElements<MaxElements && "Too many elements increase MaxElements"); 88.75 + } 88.76 + 88.77 + 88.78 + void Server_t::AddLink(SpringDamper_t* _element) 88.79 + { 88.80 + links[nbLinks++]=_element; 88.81 + SYS_ASSERT(_element && nbLinks<MaxLinks && "Too many links increase MaxLinks"); 88.82 + } 88.83 + 88.84 + 88.85 +}
89.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 89.2 +++ b/phy_server.h Tue Nov 27 15:23:52 2007 +0100 89.3 @@ -0,0 +1,194 @@ 89.4 +/** @file phy_server.h 89.5 + * 89.6 + * @brief server for solving physic entity 89.7 + * 89.8 + ***************************************************************************** 89.9 + * 89.10 + * @author psc80 89.11 + * 89.12 + * @date Created 2003/11 89.13 + * 89.14 + * @version $Id: phy_server.h,v 1.1 2004/01/09 21:41:22 mryoung Exp $ 89.15 + * 89.16 + ****************************************************************************/ 89.17 + 89.18 +#ifndef PHY_SERVER_H 89.19 +#define PHY_SERVER_H 89.20 + 89.21 +#include "phy.h" 89.22 +#include "phy_element.h" 89.23 + 89.24 + 89.25 +namespace phy { 89.26 + 89.27 + 89.28 + class Server_t 89.29 + { 89.30 + 89.31 + SpringDamper_t** links; 89.32 + Element_t** elements; 89.33 + 89.34 + 89.35 + int nbLinks; 89.36 + int nbElements; 89.37 + 89.38 + 89.39 + void Init(); 89.40 + 89.41 + public: 89.42 + 89.43 + 89.44 + Server_t(); 89.45 + 89.46 + int Try1(const double& _dt); 89.47 + void StartForceSession(); 89.48 + void EndForceSession(); 89.49 + 89.50 +#if 0 89.51 + /// Return the state of the simulation 89.52 + int Try(const float& _dt) { 89.53 + 89.54 + nbCollisions=0; 89.55 + nbPenetrations=0; 89.56 + nbContacts=0; 89.57 + 89.58 + for (typename EntityContainer_t::iterator it=entities.begin();it!=entities.end();it++) 89.59 + (*it)->Update(_dt); 89.60 + 89.61 + for (typename EntityContainer_t::iterator it1=entities.begin();it1!=entities.end();it1++) { 89.62 + for (typename EntityContainer_t::iterator it2=it1+1;it2!=entities.end();it2++) 89.63 + currentNbContacts+=CheckCollision(*it1, 89.64 + *it2, 89.65 + &contactElements[currentNbContacts], 89.66 + nbMaxContacts-currentNbContacts); 89.67 + 89.68 + for (typename EntityContainer_t::iterator it3=staticEntities.begin();it3!=staticEntities.end();it3++) 89.69 + currentNbContacts+=CheckCollision(*it1, 89.70 + *it3, 89.71 + &contactElements[currentNbContacts], 89.72 + nbMaxContacts-currentNbContacts); 89.73 + } 89.74 + 89.75 + 89.76 + 89.77 + if (nbPenetrations) 89.78 + return PENETRATION; 89.79 + 89.80 + else if (nbCollisions) { 89.81 + for (int i=0;i<nbCollisions;i++) 89.82 + collisions[i]->ApplyCollision(); 89.83 + 89.84 + return COLLISION; 89.85 + } else if (nbContacts) 89.86 + return CONTACT; 89.87 + return NO_COLLISION; 89.88 + } 89.89 + 89.90 + 89.91 + 89.92 + /// Return the state of the simulation 89.93 + CollisionType_t Try(const float& _dt) { 89.94 + 89.95 + nbCollisions=0; 89.96 + nbPenetrations=0; 89.97 + nbContacts=0; 89.98 + 89.99 + int currentNbContacts=0; 89.100 + 89.101 + for (typename EntityContainer_t::iterator it=entities.begin();it!=entities.end();it++) 89.102 + (*it)->Update(_dt); 89.103 + 89.104 + for (typename EntityContainer_t::iterator it1=entities.begin();it1!=entities.end();it1++) { 89.105 + for (typename EntityContainer_t::iterator it2=it1+1;it2!=entities.end();it2++) 89.106 + currentNbContacts+=CheckCollision(*it1, 89.107 + *it2, 89.108 + &contactElements[currentNbContacts], 89.109 + nbMaxContacts-currentNbContacts); 89.110 + 89.111 + for (typename EntityContainer_t::iterator it3=staticEntities.begin();it3!=staticEntities.end();it3++) 89.112 + currentNbContacts+=CheckCollision(*it1, 89.113 + *it3, 89.114 + &contactElements[currentNbContacts], 89.115 + nbMaxContacts-currentNbContacts); 89.116 + } 89.117 + 89.118 + 89.119 + 89.120 + if (nbPenetrations) 89.121 + return PENETRATION; 89.122 + 89.123 + else if (nbCollisions) { 89.124 + for (int i=0;i<nbCollisions;i++) 89.125 + collisions[i]->ApplyCollision(); 89.126 + 89.127 + return COLLISION; 89.128 + } else if (nbContacts) 89.129 + return CONTACT; 89.130 + return NO_COLLISION; 89.131 + } 89.132 + 89.133 + 89.134 + void Validate() { 89.135 + for (typename EntityContainer_t::iterator it=entities.begin();it!=entities.end();it++) 89.136 + (*it)->ValidateStep(); 89.137 + } 89.138 + 89.139 + void ComputeForces() { 89.140 + 89.141 + for (typename EntityContainer_t::iterator it=entities.begin();it!=entities.end();it++) 89.142 + (*it)->StartForces(); 89.143 + 89.144 + nbContacts=0; 89.145 + int currentNbContacts=0; 89.146 + 89.147 + // check contacts force (not efficient) 89.148 + for (typename EntityContainer_t::iterator it=staticEntities.begin();it!=staticEntities.end();it++) 89.149 + for (typename EntityContainer_t::iterator it1=entities.begin();it1!=entities.end();it1++) 89.150 + currentNbContacts+=CheckContact(*it1, 89.151 + *it, 89.152 + &contactElements[currentNbContacts], 89.153 + nbMaxContacts-currentNbContacts); 89.154 + 89.155 + for (int i=0;i<nbContacts;i++) 89.156 + contacts[i]->ApplyContact(); 89.157 + 89.158 +// if (nbContacts) 89.159 +// std::cout << "contact found " << nbContacts << "\n"; 89.160 + 89.161 + for (typename EntityContainer_t::iterator it=entities.begin();it!=entities.end();it++) 89.162 + (*it)->EndForces(); 89.163 + 89.164 + } 89.165 + 89.166 + 89.167 + 89.168 + int NbCollisions() { return nbCollisions;} 89.169 + int NbContacts() { return nbContacts;} 89.170 + 89.171 + 89.172 + 89.173 + void AddElement(Element_T<T>* _element) { 89.174 + SYS_ASSERT(_element); 89.175 + if (_element->Type()==PLANE) 89.176 + staticEntities.push_back(_element); 89.177 + else 89.178 + entities.push_back(_element); 89.179 + } 89.180 + 89.181 +#endif 89.182 + 89.183 + 89.184 + void AddElement(Element_t* _element); 89.185 + void AddLink(SpringDamper_t* _element); 89.186 + 89.187 + 89.188 + }; 89.189 + 89.190 + 89.191 + 89.192 + 89.193 + 89.194 + 89.195 +} 89.196 + 89.197 +#endif
90.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 90.2 +++ b/rdr_font.cxx Tue Nov 27 15:23:52 2007 +0100 90.3 @@ -0,0 +1,187 @@ 90.4 +/** @file rdr_font.cxx 90.5 + * 90.6 + * @brief use font 2d in screen 90.7 + * 90.8 + ***************************************************************************** 90.9 + * 90.10 + * @author psc80 90.11 + * 90.12 + * @date Created 2001/11 90.13 + * 90.14 + * @version $Id: rdr_font.cxx,v 1.7 2004/01/21 06:01:04 psc80 Exp $ 90.15 + * 90.16 + ****************************************************************************/ 90.17 + 90.18 +#include "rdr_font.h" 90.19 +#include "cmn_texture.h" 90.20 +#include "cmn_intro.h" 90.21 +#include <cstdarg> 90.22 +#include <cstdio> 90.23 +#include <cctype> 90.24 +#include "sys_assert.h" 90.25 + 90.26 + 90.27 +/** take trace of cursor on screen*/ 90.28 +static int RdrFontScreenPositionX=0; 90.29 +static int RdrFontScreenPositionY=0; 90.30 + 90.31 + 90.32 +rdrFont_t::rdrFont_t() 90.33 +{ 90.34 + texture=0 ; 90.35 + scalex=1.0; 90.36 + scaley=1.0; 90.37 + z=0; 90.38 +} 90.39 + 90.40 + 90.41 +rdrFont_t::~rdrFont_t() 90.42 +{ 90.43 + Kill() ; 90.44 +} 90.45 + 90.46 + 90.47 +void rdrFont_t::Kill() 90.48 +{ 90.49 +// if (texture) 90.50 +// glDelete(texture); 90.51 + texture=0 ; 90.52 +} 90.53 + 90.54 + 90.55 +void rdrFont_t::Init() 90.56 +{ 90.57 + Kill() ; 90.58 + sizeCharX=sizeCharY=0 ; 90.59 + firstChar=lastChar=0 ; 90.60 +} 90.61 + 90.62 + 90.63 +int rdrFont_t::Init(GLuint _t,int _firstCharInFont ,int _sizeOfCharX,int _widthOfTexture,int _heightOfTexture) 90.64 +{ 90.65 + SYS_ASSERT(_t); 90.66 + 90.67 + Init() ; 90.68 + texture=_t ; 90.69 + 90.70 + firstChar=_firstCharInFont; 90.71 + sizeCharX=_sizeOfCharX; 90.72 + textureWidth=_widthOfTexture; 90.73 + textureHeight=_heightOfTexture; 90.74 + sizeCharY=_heightOfTexture; 90.75 + lastChar=firstChar+textureWidth*1.0/sizeCharX ; 90.76 + return 0 ; 90.77 +} 90.78 + 90.79 + 90.80 + 90.81 +void rdrFont_t::GetUVsOfChar(char _letter,float& _u,float& _v) 90.82 +{ 90.83 + _letter=toupper(_letter) ; 90.84 + _letter-=firstChar; 90.85 + _u=_letter*sizeCharX*1.0/textureWidth; 90.86 + _v=0; 90.87 +} 90.88 + 90.89 + 90.90 + 90.91 +/// TODO use echap command from ascii character 90.92 +void rdrFont_t::_Print(int &x,int &y,char *s) 90.93 +{ 90.94 + SYS_ASSERT(texture); 90.95 + 90.96 + int sizex=textureWidth; 90.97 + 90.98 +// cmnPushMatrix(); 90.99 + 90.100 + //glDisable(GL_BLEND); 90.101 + 90.102 +// cmnSetPlanarView(); 90.103 + 90.104 +// glColor4f(1,1,1,1); 90.105 +// glDisable(GL_DEPTH_TEST); 90.106 + 90.107 + 90.108 + txtBindTexture2d(texture,0); 90.109 + 90.110 + int c,tx ; 90.111 + 90.112 + double div=sizeCharX*1.0/sizex; 90.113 + 90.114 + glBegin(GL_QUADS); 90.115 + while ( (c = *s++) ) { 90.116 + c=toupper(c) ; 90.117 + 90.118 + if (c=='\n') { 90.119 + y-=sizeCharY*scaley; 90.120 + x=0; 90.121 + 90.122 + } else if ( c >= firstChar && c <= lastChar) { 90.123 + 90.124 + c-=firstChar ; 90.125 + tx=c ; 90.126 + 90.127 + float x1,y1,z1; 90.128 + x1=x; 90.129 + y1=y; 90.130 + z1=0; 90.131 + 90.132 + glTexCoord2f(tx*div,0); 90.133 + glVertex3f(x1,y1,z); 90.134 + 90.135 + glTexCoord2f((tx+1)*div,0); 90.136 + glVertex3f(x1+sizeCharX*scalex,y1,z); 90.137 + 90.138 + glTexCoord2f((tx+1)*div,1); 90.139 + glVertex3f(x1+sizeCharX*scalex,y1+sizeCharY*scaley,z); 90.140 + 90.141 + glTexCoord2f(tx*div,1); 90.142 + glVertex3f(x1,y1+sizeCharY*scaley,z); 90.143 + 90.144 + x+=sizeCharX*scalex ; 90.145 + } 90.146 + } 90.147 + 90.148 + glEnd(); 90.149 + 90.150 + txtUnBindTexture2d(0); 90.151 + 90.152 +// cmnPopMatrix(); 90.153 +} 90.154 + 90.155 + 90.156 +void rdrFont_t::Clear() 90.157 +{ 90.158 + RdrFontScreenPositionY=RY-sizeCharY ; 90.159 +// RdrFontScreenPositionY=0; 90.160 + RdrFontScreenPositionX=0 ; 90.161 +} 90.162 + 90.163 + 90.164 +void rdrFont_t::Print(const char *fmt,...) 90.165 +{ 90.166 + va_list list; 90.167 + va_start(list, fmt); 90.168 + 90.169 + char str[32768] ; 90.170 + va_start(list, fmt); 90.171 + vsprintf(str, fmt, list); 90.172 + va_end(list); 90.173 + 90.174 + _Print(RdrFontScreenPositionX,RdrFontScreenPositionY,str) ; 90.175 +} 90.176 + 90.177 +void rdrFont_t::Print(int x,int y,const char *fmt,...) 90.178 +{ 90.179 + va_list list; 90.180 + va_start(list, fmt); 90.181 + 90.182 + char str[32768] ; 90.183 + va_start(list, fmt); 90.184 + vsprintf(str, fmt, list); 90.185 + va_end(list); 90.186 + 90.187 + int x2=x ; 90.188 + int y2=y ; 90.189 + _Print(x2,y2,str) ; 90.190 +}
91.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 91.2 +++ b/rdr_font.h Tue Nov 27 15:23:52 2007 +0100 91.3 @@ -0,0 +1,88 @@ 91.4 +/** @file rdr_font.cxx 91.5 + * 91.6 + * @brief use font 2d in screen 91.7 + * 91.8 + ***************************************************************************** 91.9 + * 91.10 + * @author psc80 91.11 + * 91.12 + * @date Created 2001/11 91.13 + * 91.14 + * @version $Id: rdr_font.h,v 1.5 2004/01/18 08:42:17 psc80 Exp $ 91.15 + * 91.16 + ****************************************************************************/ 91.17 +#ifndef RDR_FONT_H 91.18 +#define RDR_FONT_H 91.19 + 91.20 +#include "gl_header.h" 91.21 + 91.22 +class rdrFont_t 91.23 +{ 91.24 + 91.25 + /** texture used*/ 91.26 + GLuint texture ; 91.27 + 91.28 + int sizeCharX; 91.29 + int sizeCharY; 91.30 + 91.31 + int textureWidth; 91.32 + int textureHeight; 91.33 + 91.34 + 91.35 + int firstChar ; 91.36 + int lastChar ; 91.37 + 91.38 + 91.39 + float z; 91.40 + 91.41 + float scalex; 91.42 + float scaley; 91.43 + 91.44 + /** Print the string to screen*/ 91.45 + void _Print(int &x,int &y,char *s) ; 91.46 + 91.47 + void Init(); 91.48 + 91.49 + public: 91.50 + 91.51 + rdrFont_t() ; 91.52 + ~rdrFont_t() ; 91.53 + 91.54 + 91.55 + /// Kill the font 91.56 + void Kill() ; 91.57 + 91.58 + void SetScale(float _a) { scalex=_a; scaley=_a;} 91.59 + void SetScaleX(float _a) { scalex=_a;} 91.60 + void SetScaleY(float _a) { scaley=_a;} 91.61 + 91.62 + 91.63 + void SetZ(float _z) { z=_z;} 91.64 + 91.65 + float SizeOfCharX() { return scalex*sizeCharX;} 91.66 + float SizeOfCharY() { return scaley*sizeCharY;} 91.67 + 91.68 + /// Init the font with the given texture name 91.69 + int Init(GLuint _t,int _firstCharInFont,int _sizeOfCharX,int _widthOfTexture,int _heightOfTexture); 91.70 + 91.71 + 91.72 + /// Print like printf 91.73 + void Print(const char *s,...) ; 91.74 + 91.75 + 91.76 + /// Print like printf a the given location on screen 91.77 + void Print(int x,int y,const char *s,...) ; 91.78 + 91.79 + void GetUVsOfChar(char _letter,float& _u,float& _v); 91.80 + 91.81 + /// Init the virtual buffer to write top of screen 91.82 + void Clear() ; 91.83 + 91.84 + 91.85 + int TextureWidth() { return textureWidth;} 91.86 + GLuint TextureId() { return texture;} 91.87 + 91.88 +} ; 91.89 + 91.90 + 91.91 +#endif
92.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 92.2 +++ b/resource.h Tue Nov 27 15:23:52 2007 +0100 92.3 @@ -0,0 +1,34 @@ 92.4 +//{{NO_DEPENDENCIES}} 92.5 +// Microsoft Developer Studio generated include file. 92.6 +// Used by Script5.rc 92.7 +// 92.8 +#define IDR_DATA1 105 92.9 +#define IDR_DATA2 108 92.10 +#define IDR_DATA3 108 92.11 +#define IDR_DATA4 108 92.12 +#define IDR_DATA5 108 92.13 +#define IDR_DATA6 108 92.14 +#define IDR_DATA7 108 92.15 +#define IDR_DATA8 108 92.16 +#define IDR_DATA9 108 92.17 +#define IDR_DATA10 108 92.18 +#define IDR_DATA11 108 92.19 +#define IDR_DATA12 108 92.20 +#define IDB_BITMAP1 120 92.21 +#define IDB_BITMAP2 120 92.22 +#define IDB_BITMAP3 120 92.23 +#define IDB_BITMAP4 120 92.24 +#define IDB_BITMAP5 120 92.25 +#define IDB_BITMAP6 120 92.26 +#define IDB_BITMAP7 120 92.27 + 92.28 +// Next default values for new objects 92.29 +// 92.30 +#ifdef APSTUDIO_INVOKED 92.31 +#ifndef APSTUDIO_READONLY_SYMBOLS 92.32 +#define _APS_NEXT_RESOURCE_VALUE 133 92.33 +#define _APS_NEXT_COMMAND_VALUE 40001 92.34 +#define _APS_NEXT_CONTROL_VALUE 1000 92.35 +#define _APS_NEXT_SYMED_VALUE 101 92.36 +#endif 92.37 +#endif
93.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 93.2 +++ b/smplInfo.h Tue Nov 27 15:23:52 2007 +0100 93.3 @@ -0,0 +1,32 @@ 93.4 + 93.5 +#ifndef __SMPL_INFO__ 93.6 +#define __SMPL_INFO__ 93.7 + 93.8 +#define NB_INST 7 93.9 +#define AVGFILTER_NBELEMTS 16 93.10 + 93.11 +#define SMPL_INC 0 93.12 +#define SMPL_DEC 1 93.13 +#define SMPL_LEVEL 2 93.14 + 93.15 +enum SamplesDef 93.16 +{ 93.17 + INST_BASS = 0, 93.18 + INST_HHAT = 1, 93.19 + INST_BDRUM = 2, 93.20 + INST_SNARE = 3, 93.21 + INST_SBDRUM = 4, 93.22 + INST_NAP1 = 5, 93.23 + INST_NAP2 = 6, 93.24 + INST_BIGBD = 7, 93.25 + INST_GROOVE = 8 93.26 +}; 93.27 + 93.28 + 93.29 +typedef struct 93.30 +{ 93.31 + bool playing; 93.32 + float volume; 93.33 +} SamplesData; 93.34 + 93.35 +#endif 93.36 \ No newline at end of file
94.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 94.2 +++ b/sndDetect.cxx Tue Nov 27 15:23:52 2007 +0100 94.3 @@ -0,0 +1,664 @@ 94.4 + 94.5 +#include "sndDetect.h" 94.6 + 94.7 +// MiniFmod ... 94.8 +extern FMUSIC_MODULE * intro_mod; 94.9 + 94.10 + 94.11 +sndDetect :: sndDetect() 94.12 +{ 94.13 + // Nada ! 94.14 +} 94.15 + 94.16 +sndDetect :: ~sndDetect() 94.17 +{ 94.18 + // Nada ! 94.19 +} 94.20 + 94.21 +SamplesData sndDetect :: GetSampleData( enum SamplesDef sample ) 94.22 +{ 94.23 + 94.24 + SamplesData result; 94.25 + result.playing = false; 94.26 + 94.27 + switch( sample ) 94.28 + { 94.29 + /* 94.30 + * Bass Sync ... 94.31 + */ 94.32 + case INST_BASS: 94.33 + 94.34 + switch( FMUSIC_GetOrder( intro_mod ) ) 94.35 + { 94.36 + case 0: 94.37 + case 1: 94.38 + case 2: 94.39 + 94.40 + switch( FMUSIC_GetRow( intro_mod ) ) 94.41 + { 94.42 + case 0: 94.43 + case 6: 94.44 + case 12: 94.45 + case 48: 94.46 + case 54: 94.47 + case 60: 94.48 + result.playing = true; 94.49 + result.volume = 1.0f; 94.50 + break; 94.51 + } 94.52 + break; 94.53 + 94.54 + case 3: 94.55 + case 4: 94.56 + case 5: 94.57 + case 6: 94.58 + 94.59 + switch( FMUSIC_GetRow( intro_mod ) ) 94.60 + { 94.61 + case 0: 94.62 + case 6: 94.63 + case 12: 94.64 + case 60: 94.65 + result.playing = true; 94.66 + result.volume = 1.0f; 94.67 + break; 94.68 + 94.69 + case 54: 94.70 + result.playing = true; 94.71 + result.volume = 0.6f; 94.72 + break; 94.73 + } 94.74 + break; 94.75 + 94.76 + case 7: 94.77 + 94.78 + switch( FMUSIC_GetRow( intro_mod ) ) 94.79 + { 94.80 + case 0: 94.81 + case 6: 94.82 + case 12: 94.83 + case 32: 94.84 + case 48: 94.85 + result.playing = true; 94.86 + result.volume = 1.0f; 94.87 + break; 94.88 + } 94.89 + break; 94.90 + 94.91 + } 94.92 + break; 94.93 + 94.94 + case INST_HHAT: 94.95 + 94.96 + switch( FMUSIC_GetOrder( intro_mod ) ) 94.97 + { 94.98 + case 2: 94.99 + case 3: 94.100 + case 4: 94.101 + case 5: 94.102 + case 6: 94.103 + 94.104 + if( !( FMUSIC_GetRow( intro_mod ) % 2 ) ) 94.105 + { 94.106 + result.playing = true; 94.107 + 94.108 + if( !( FMUSIC_GetRow( intro_mod ) %4 ) ) 94.109 + 94.110 + result.volume = 1.0f; 94.111 + else 94.112 + result.volume = 0.25f; 94.113 + } 94.114 + else 94.115 + { 94.116 + if( FMUSIC_GetRow( intro_mod ) == 63 ) 94.117 + { 94.118 + result.playing = true; 94.119 + result.volume = 0.5f; 94.120 + } 94.121 + } 94.122 + 94.123 + break; 94.124 + 94.125 + case 7: 94.126 + 94.127 + if( !( FMUSIC_GetRow( intro_mod ) % 2 ) && ( FMUSIC_GetRow( intro_mod ) <= 56 ) ) 94.128 + { 94.129 + result.playing = true; 94.130 + 94.131 + if( !( FMUSIC_GetRow( intro_mod ) %4 ) ) 94.132 + 94.133 + result.volume = 1.0f; 94.134 + else 94.135 + result.volume = 0.25f; 94.136 + } 94.137 + else 94.138 + { 94.139 + switch( FMUSIC_GetRow( intro_mod ) ) 94.140 + { 94.141 + case 7: 94.142 + case 23: 94.143 + case 37: 94.144 + case 47: 94.145 + case 59: 94.146 + result.playing = true; 94.147 + result.volume = 0.5f; 94.148 + break; 94.149 + case 62: 94.150 + result.playing = true; 94.151 + result.volume = 0.25f; 94.152 + break; 94.153 + } 94.154 + } 94.155 + 94.156 + break; 94.157 + } 94.158 + 94.159 + break; 94.160 + 94.161 + case INST_BDRUM: 94.162 + 94.163 + switch( FMUSIC_GetOrder( intro_mod ) ) 94.164 + { 94.165 + case 2: 94.166 + 94.167 + switch( FMUSIC_GetRow( intro_mod ) ) 94.168 + { 94.169 + case 62: 94.170 + result.playing = true; 94.171 + result.volume = 1.0f; 94.172 + break; 94.173 + case 61: 94.174 + result.playing = true; 94.175 + result.volume = 0.25f; 94.176 + break; 94.177 + } 94.178 + break; 94.179 + 94.180 + case 3: 94.181 + case 5: 94.182 + 94.183 + switch( FMUSIC_GetRow( intro_mod ) ) 94.184 + { 94.185 + case 0: 94.186 + case 6: 94.187 + case 16: 94.188 + case 26: 94.189 + case 32: 94.190 + case 42: 94.191 + case 48: 94.192 + case 58: 94.193 + case 62: 94.194 + result.playing = true; 94.195 + result.volume = 1.0f; 94.196 + break; 94.197 + case 19: 94.198 + case 61: 94.199 + result.playing = true; 94.200 + result.volume = 0.25f; 94.201 + break; 94.202 + } 94.203 + break; 94.204 + 94.205 + case 4: 94.206 + case 6: 94.207 + 94.208 + switch( FMUSIC_GetRow( intro_mod ) ) 94.209 + { 94.210 + case 0: 94.211 + case 10: 94.212 + case 16: 94.213 + case 26: 94.214 + case 32: 94.215 + case 42: 94.216 + case 48: 94.217 + case 58: 94.218 + case 62: 94.219 + result.playing = true; 94.220 + result.volume = 1.0f; 94.221 + break; 94.222 + case 19: 94.223 + case 61: 94.224 + result.playing = true; 94.225 + result.volume = 0.25f; 94.226 + break; 94.227 + } 94.228 + break; 94.229 + 94.230 + case 7: 94.231 + 94.232 + switch( FMUSIC_GetRow( intro_mod ) ) 94.233 + { 94.234 + case 0: 94.235 + case 6: 94.236 + case 16: 94.237 + case 26: 94.238 + case 32: 94.239 + case 42: 94.240 + case 48: 94.241 + result.playing = true; 94.242 + result.volume = 1.0f; 94.243 + break; 94.244 + case 3: 94.245 + case 9: 94.246 + case 19: 94.247 + case 51: 94.248 + result.playing = true; 94.249 + result.volume = 0.25f; 94.250 + break; 94.251 + } 94.252 + 94.253 + break; 94.254 + 94.255 + case 0x0E: 94.256 + case 0x0F: 94.257 + case 0x10: 94.258 + case 0x11: 94.259 + case 0x12: 94.260 + case 0x13: 94.261 + case 0x14: 94.262 + 94.263 + if( ( FMUSIC_GetRow( intro_mod ) % 16 ) == 0 ) 94.264 + result.playing = true; 94.265 + 94.266 + break; 94.267 + 94.268 + } 94.269 + 94.270 + break; 94.271 + 94.272 + case INST_SNARE: 94.273 + 94.274 + switch( FMUSIC_GetOrder( intro_mod ) ) 94.275 + { 94.276 + case 2: 94.277 + 94.278 + switch( FMUSIC_GetRow( intro_mod ) ) 94.279 + { 94.280 + case 60: 94.281 + result.playing = true; 94.282 + result.volume = 1.0f; 94.283 + break; 94.284 + case 63: 94.285 + result.playing = true; 94.286 + result.volume = 0.5f; 94.287 + break; 94.288 + } 94.289 + 94.290 + break; 94.291 + 94.292 + case 3: 94.293 + case 5: 94.294 + 94.295 + switch( FMUSIC_GetRow( intro_mod ) ) 94.296 + { 94.297 + case 4: 94.298 + case 10: 94.299 + case 20: 94.300 + case 28: 94.301 + case 36: 94.302 + case 44: 94.303 + case 52: 94.304 + case 60: 94.305 + result.playing = true; 94.306 + result.volume = 1.0f; 94.307 + break; 94.308 + case 7: 94.309 + case 31: 94.310 + case 47: 94.311 + case 63: 94.312 + result.playing = true; 94.313 + result.volume = 0.25f; 94.314 + break; 94.315 + } 94.316 + 94.317 + break; 94.318 + 94.319 + case 4: 94.320 + case 6: 94.321 + 94.322 + switch( FMUSIC_GetRow( intro_mod ) ) 94.323 + { 94.324 + case 4: 94.325 + case 12: 94.326 + case 20: 94.327 + case 28: 94.328 + case 36: 94.329 + case 44: 94.330 + case 52: 94.331 + case 60: 94.332 + result.playing = true; 94.333 + result.volume = 1.0f; 94.334 + break; 94.335 + case 7: 94.336 + case 27: 94.337 + case 31: 94.338 + case 47: 94.339 + result.playing = true; 94.340 + result.volume = 0.25f; 94.341 + break; 94.342 + } 94.343 + 94.344 + break; 94.345 + 94.346 + case 7: 94.347 + 94.348 + switch( FMUSIC_GetRow( intro_mod ) ) 94.349 + { 94.350 + case 4: 94.351 + case 10: 94.352 + case 20: 94.353 + case 28: 94.354 + case 36: 94.355 + case 38: 94.356 + case 44: 94.357 + case 52: 94.358 + result.playing = true; 94.359 + result.volume = 1.0f; 94.360 + break; 94.361 + case 7: 94.362 + case 13: 94.363 + case 31: 94.364 + case 41: 94.365 + case 47: 94.366 + result.playing = true; 94.367 + result.volume = 0.25f; 94.368 + break; 94.369 + } 94.370 + 94.371 + break; 94.372 + 94.373 + case 0x0a: 94.374 + case 0x0c: 94.375 + 94.376 + switch( FMUSIC_GetRow( intro_mod ) ) 94.377 + { 94.378 + case 4: 94.379 + case 10: 94.380 + case 20: 94.381 + case 28: 94.382 + case 31: 94.383 + case 36: 94.384 + case 38: 94.385 + case 44: 94.386 + case 52: 94.387 + case 60: 94.388 + case 62: 94.389 + case 63: 94.390 + result.playing = true; 94.391 + break; 94.392 + } 94.393 + 94.394 + break; 94.395 + 94.396 + case 0x0b: 94.397 + 94.398 + switch( FMUSIC_GetRow( intro_mod ) ) 94.399 + { 94.400 + case 4: 94.401 + case 10: 94.402 + case 20: 94.403 + case 28: 94.404 + case 31: 94.405 + case 36: 94.406 + case 38: 94.407 + case 44: 94.408 + case 52: 94.409 + case 60: 94.410 + case 63: 94.411 + result.playing = true; 94.412 + break; 94.413 + } 94.414 + 94.415 + break; 94.416 + 94.417 + case 0x0d: 94.418 + 94.419 + switch( FMUSIC_GetRow( intro_mod ) ) 94.420 + { 94.421 + case 4: 94.422 + case 10: 94.423 + case 20: 94.424 + case 28: 94.425 + case 31: 94.426 + case 36: 94.427 + case 38: 94.428 + case 44: 94.429 + case 54: 94.430 + case 57: 94.431 + case 60: 94.432 + result.playing = true; 94.433 + break; 94.434 + } 94.435 + 94.436 + break; 94.437 + 94.438 + } 94.439 + 94.440 + break; 94.441 + 94.442 + case INST_SBDRUM: 94.443 + 94.444 + switch( FMUSIC_GetOrder( intro_mod ) ) 94.445 + { 94.446 + case 3: 94.447 + case 5: 94.448 + 94.449 + switch( FMUSIC_GetRow( intro_mod ) ) 94.450 + { 94.451 + case 12: 94.452 + case 23: 94.453 + case 39: 94.454 + case 46: 94.455 + case 55: 94.456 + result.playing = true; 94.457 + result.volume = 1.0f; 94.458 + break; 94.459 + } 94.460 + 94.461 + break; 94.462 + 94.463 + case 4: 94.464 + case 6: 94.465 + 94.466 + switch( FMUSIC_GetRow( intro_mod ) ) 94.467 + { 94.468 + case 23: 94.469 + case 30: 94.470 + case 39: 94.471 + case 46: 94.472 + case 55: 94.473 + result.playing = true; 94.474 + result.volume = 1.0f; 94.475 + break; 94.476 + } 94.477 + 94.478 + break; 94.479 + 94.480 + case 7: 94.481 + 94.482 + switch( FMUSIC_GetRow( intro_mod ) ) 94.483 + { 94.484 + case 12: 94.485 + case 23: 94.486 + case 39: 94.487 + case 46: 94.488 + case 55: 94.489 + result.playing = true; 94.490 + result.volume = 1.0f; 94.491 + break; 94.492 + case 59: 94.493 + result.playing = true; 94.494 + result.volume = 0.5f; 94.495 + break; 94.496 + case 61: 94.497 + result.playing = true; 94.498 + result.volume = 0.25f; 94.499 + break; 94.500 + } 94.501 + 94.502 + break; 94.503 + 94.504 + } 94.505 + 94.506 + break; 94.507 + 94.508 + case INST_NAP1: 94.509 + 94.510 + if( ( FMUSIC_GetRow( intro_mod ) < 32 ) && ( FMUSIC_GetOrder( intro_mod ) < 8 ) ) 94.511 + result.playing = true; 94.512 + 94.513 + break; 94.514 + 94.515 + case INST_NAP2: 94.516 + 94.517 + if( ( FMUSIC_GetRow( intro_mod ) >= 32 ) && ( FMUSIC_GetOrder( intro_mod ) < 7 ) ) 94.518 + result.playing = true; 94.519 + 94.520 + break; 94.521 + 94.522 + case INST_BIGBD: 94.523 + 94.524 + switch( FMUSIC_GetOrder( intro_mod ) ) 94.525 + { 94.526 + case 10: 94.527 + case 12: 94.528 + switch( FMUSIC_GetRow( intro_mod ) ) 94.529 + { 94.530 + case 0: 94.531 + case 12: 94.532 + case 16: 94.533 + case 26: 94.534 + case 32: 94.535 + case 42: 94.536 + case 48: 94.537 + case 58: 94.538 + case 61: 94.539 + result.playing = true; 94.540 + break; 94.541 + } 94.542 + 94.543 + break; 94.544 + 94.545 + case 11: 94.546 + switch( FMUSIC_GetRow( intro_mod ) ) 94.547 + { 94.548 + case 0: 94.549 + case 12: 94.550 + case 16: 94.551 + case 26: 94.552 + case 32: 94.553 + case 42: 94.554 + case 48: 94.555 + case 58: 94.556 + case 62: 94.557 + result.playing = true; 94.558 + break; 94.559 + } 94.560 + 94.561 + break; 94.562 + 94.563 + case 13: 94.564 + switch( FMUSIC_GetRow( intro_mod ) ) 94.565 + { 94.566 + case 0: 94.567 + case 12: 94.568 + case 16: 94.569 + case 26: 94.570 + case 32: 94.571 + case 42: 94.572 + case 48: 94.573 + result.playing = true; 94.574 + break; 94.575 + } 94.576 + 94.577 + break; 94.578 + 94.579 + case 0x15: 94.580 + case 0x16: 94.581 + case 0x17: 94.582 + case 0x18: 94.583 + case 0x19: 94.584 + case 0x1a: 94.585 + case 0x1b: 94.586 + case 0x1c: 94.587 + if( ( FMUSIC_GetRow( intro_mod ) % 8 ) == 0 ) 94.588 + result.playing = true; 94.589 + 94.590 + break; 94.591 + } 94.592 + 94.593 + 94.594 + break; 94.595 + 94.596 + case INST_GROOVE: 94.597 + 94.598 + switch( FMUSIC_GetOrder( intro_mod ) ) 94.599 + { 94.600 + 94.601 + case 0x08: 94.602 + case 0x09: 94.603 + case 0x0a: 94.604 + case 0x0b: 94.605 + case 0x0c: 94.606 + 94.607 + switch( FMUSIC_GetRow( intro_mod ) ) 94.608 + { 94.609 + case 2: 94.610 + case 8: 94.611 + case 18: 94.612 + case 24: 94.613 + case 34: 94.614 + case 40: 94.615 + case 50: 94.616 + case 56: 94.617 + result.playing = true; 94.618 + 94.619 + break; 94.620 + } 94.621 + 94.622 + break; 94.623 + 94.624 + case 0x0d: 94.625 + 94.626 + switch( FMUSIC_GetRow( intro_mod ) ) 94.627 + { 94.628 + case 2: 94.629 + case 8: 94.630 + case 18: 94.631 + case 24: 94.632 + case 34: 94.633 + case 40: 94.634 + result.playing = true; 94.635 + 94.636 + break; 94.637 + } 94.638 + 94.639 + break; 94.640 + 94.641 + } 94.642 + 94.643 + break; 94.644 + 94.645 + } 94.646 + 94.647 + return result; 94.648 + 94.649 +} 94.650 + 94.651 +bool sndDetect :: InFxScreen1( void ) 94.652 +{ 94.653 + if( ( FMUSIC_GetOrder( intro_mod ) >=0 ) && 94.654 + ( FMUSIC_GetOrder( intro_mod ) <=7 ) ) 94.655 + return true; 94.656 + else 94.657 + return false; 94.658 +} 94.659 + 94.660 +bool sndDetect :: InFxScreen2( void ) 94.661 +{ 94.662 + if( ( FMUSIC_GetOrder( intro_mod ) >= 8 ) && 94.663 + ( FMUSIC_GetOrder( intro_mod ) <= 13 ) ) 94.664 + return true; 94.665 + else 94.666 + return false; 94.667 +} 94.668 \ No newline at end of file
95.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 95.2 +++ b/sndDetect.h Tue Nov 27 15:23:52 2007 +0100 95.3 @@ -0,0 +1,25 @@ 95.4 + 95.5 +#ifndef __SND_DETECT__ 95.6 +#define __SND_DETECT__ 95.7 + 95.8 +#include "smplInfo.h" 95.9 +#include "minifmod/minifmod.h" 95.10 + 95.11 +class sndDetect 95.12 +{ 95.13 + 95.14 +private: 95.15 + 95.16 +public: 95.17 + sndDetect(); 95.18 + ~sndDetect(); 95.19 + 95.20 + SamplesData GetSampleData( enum SamplesDef ); 95.21 + 95.22 + // Fx Related ... 95.23 + bool InFxScreen1( void ); 95.24 + bool InFxScreen2( void ); 95.25 + 95.26 +}; 95.27 + 95.28 +#endif 95.29 \ No newline at end of file
96.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 96.2 +++ b/sys_assert.cxx Tue Nov 27 15:23:52 2007 +0100 96.3 @@ -0,0 +1,9 @@ 96.4 +#include <cstdlib> 96.5 +#include <cstdio> 96.6 + 96.7 +void sysAssertInternal(const char* text, const char* file, int line) 96.8 +{ 96.9 + fprintf(stderr, text, file, line); 96.10 + *((const char**)0) = text; 96.11 + exit(1); 96.12 +}
97.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 97.2 +++ b/sys_assert.h Tue Nov 27 15:23:52 2007 +0100 97.3 @@ -0,0 +1,46 @@ 97.4 +/** @file sys_assert.h 97.5 + * 97.6 + * @brief Assert debug function 97.7 + * 97.8 + ***************************************************************************** 97.9 + * 97.10 + * @author psc80 97.11 + * 97.12 + * @date Created 2001/05 97.13 + * 97.14 + * @version $Id: sys_assert.h,v 1.2 2004/01/18 10:43:42 psc80 Exp $ 97.15 + * 97.16 + ****************************************************************************/ 97.17 + 97.18 +#ifndef SYS_ASSERT_H 97.19 +#define SYS_ASSERT_H 97.20 + 97.21 +#ifndef FINALE_RELEASE 97.22 + 97.23 + 97.24 +void sysAssertInternal(const char* text, const char* file, int line); 97.25 + 97.26 +inline void sysAssert(bool test, const char* text, 97.27 + const char* file, int line) { 97.28 +if (!test) 97.29 +sysAssertInternal(text, file, line); 97.30 +} 97.31 + 97.32 +#define SYS_ASSERT(test) \ 97.33 + sysAssert(test, \ 97.34 + "\nSYS_ASSERT FAILED AT %s (%d) : '"#test"'\n\n", __FILE__, __LINE__) 97.35 + 97.36 +#else // #if SYS_USE_ASSERT 97.37 + 97.38 +#define SYS_ASSERT(test) // nothing ... 97.39 + 97.40 + 97.41 + 97.42 +#endif // #ifdef SYS_ASSERT_H 97.43 + 97.44 + 97.45 + 97.46 + 97.47 + 97.48 + 97.49 +#endif 97.50 \ No newline at end of file
98.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 98.2 +++ b/trans_crossradial.cxx Tue Nov 27 15:23:52 2007 +0100 98.3 @@ -0,0 +1,30 @@ 98.4 +#include "trans_crossradial.h" 98.5 +#include "gl_header.h" 98.6 +#include "cmn_intro.h" 98.7 +#include "cmn_texture.h" 98.8 + 98.9 + 98.10 +void transCrossRadial_t::GetBuffer1() 98.11 +{ 98.12 + fade.GetBuffer1(); 98.13 +} 98.14 + 98.15 +void transCrossRadial_t::GetBuffer2() 98.16 +{ 98.17 + fade.GetBuffer2(); 98.18 +} 98.19 + 98.20 + 98.21 +void transCrossRadial_t::DrawRadialForCurrentScreen() 98.22 +{ 98.23 + radial.GetBuffer1(); 98.24 + radial.Draw(0); 98.25 +} 98.26 + 98.27 + 98.28 + 98.29 +void transCrossRadial_t::Init() 98.30 +{ 98.31 + fade.Init(); 98.32 + radial.Init(); 98.33 +}
99.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 99.2 +++ b/trans_crossradial.h Tue Nov 27 15:23:52 2007 +0100 99.3 @@ -0,0 +1,28 @@ 99.4 +#ifndef TRANS_CROSSRADIAL_H 99.5 +#define TRANS_CROSSRADIAL_H 99.6 + 99.7 +#include "gl_header.h" 99.8 +#include "cmn_texture.h" 99.9 +#include "trans_radial.h" 99.10 +#include "trans_fade.h" 99.11 + 99.12 +class transCrossRadial_t 99.13 +{ 99.14 + 99.15 + transFade_t fade; 99.16 + transRadial_t radial; 99.17 + 99.18 +public: 99.19 + 99.20 + transCrossRadial_t(){} 99.21 + void Init(); 99.22 + 99.23 + void DrawRadialForCurrentScreen(); 99.24 + void GetBuffer1(); 99.25 + void GetBuffer2(); 99.26 + void Draw(float _time); 99.27 + 99.28 +}; 99.29 + 99.30 + 99.31 +#endif 99.32 \ No newline at end of file
100.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 100.2 +++ b/trans_explode.cxx Tue Nov 27 15:23:52 2007 +0100 100.3 @@ -0,0 +1,206 @@ 100.4 +#include "trans_explode.h" 100.5 +#include "gl_header.h" 100.6 +#include "cmn_intro.h" 100.7 +#include "cmn_texture.h" 100.8 + 100.9 +trans_Explode_t::trans_Explode_t(int max_x_quads, int max_y_quads) 100.10 +{ 100.11 + res_x = max_x_quads; 100.12 + res_y = max_y_quads; 100.13 + 100.14 + quads = new transExplodeQuad[max_x_quads*max_y_quads]; 100.15 + 100.16 +} 100.17 + 100.18 +trans_Explode_t::~trans_Explode_t(void) 100.19 +{ 100.20 + if (quads) 100.21 + delete [] quads; 100.22 + 100.23 +} 100.24 + 100.25 +GLuint trans_Explode_t::CreateTextureTransition(int x, int y) 100.26 +{ 100.27 + GLuint txtnumber; 100.28 + unsigned char *data; 100.29 + 100.30 + glEnable(GL_TEXTURE_2D); 100.31 + 100.32 + data = (unsigned char *)new GLuint[((x * y)*4*sizeof(unsigned int))]; 100.33 + 100.34 + glGenTextures(1, &txtnumber); 100.35 + glBindTexture(GL_TEXTURE_2D, txtnumber); 100.36 + glTexImage2D(GL_TEXTURE_2D, 0, 4, x, y, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); 100.37 + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 100.38 + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 100.39 + 100.40 + delete [] data; 100.41 + 100.42 + return txtnumber; 100.43 +} 100.44 + 100.45 + 100.46 +#define TEST_PSC80 100.47 + 100.48 +void trans_Explode_t::PutOneQuad(float size, float px, float py, float pz, float u, float v, float rx, float ry, float rz) 100.49 +{ 100.50 + glPushMatrix(); 100.51 + 100.52 + glTranslatef(px, py, pz); 100.53 + 100.54 + float uv_size = 256.f*size; 100.55 + 100.56 +#ifdef TEST_PSC80 100.57 + float quad_size = 2.f/res_x; 100.58 + uv_size=quad_size/256.0; 100.59 + uv_size=1.0/res_x; 100.60 + 100.61 + glBegin(GL_QUADS); 100.62 + glTexCoord2f(u, v); glVertex3f(-size, -size, 0.f); 100.63 + glTexCoord2f(u, v+uv_size); glVertex3f(-size, size, 0.f); 100.64 + glTexCoord2f(u+uv_size, v+uv_size); glVertex3f( size, size, 0.f); 100.65 + glTexCoord2f(u+uv_size, v); glVertex3f( size, -size, 0.f); 100.66 + glEnd(); 100.67 + 100.68 +#else 100.69 + 100.70 + glBegin(GL_QUADS); 100.71 + glTexCoord2f(u-uv_size, v-uv_size); glVertex3f(-size, -size, 0.f); 100.72 + glTexCoord2f(u-uv_size, v+uv_size); glVertex3f(-size, size, 0.f); 100.73 + glTexCoord2f(u+uv_size, v+uv_size); glVertex3f( size, size, 0.f); 100.74 + glTexCoord2f(u+uv_size, v-uv_size); glVertex3f( size, -size, 0.f); 100.75 + glEnd(); 100.76 +#endif 100.77 + 100.78 + glPopMatrix(); 100.79 +} 100.80 + 100.81 +void trans_Explode_t::SetQuadsProperty(void) 100.82 +{ 100.83 + float quad_size = 2.f/res_x; 100.84 + 100.85 + for (int x=0; x<res_x; x++) 100.86 + { 100.87 + for (int y=0; y<res_y; y++) 100.88 + { 100.89 + quads[x+y*res_x].Position[0] = (quad_size/2) + x * quad_size - res_x * (quad_size/2); 100.90 + quads[x+y*res_y].Position[1] = (quad_size/2) + y * quad_size - res_y * (quad_size/2); 100.91 + quads[x+y*res_x].Position[2] = 0.f; 100.92 + 100.93 + // quads[x+y*res_x].Uvs[0] = x * 256.f / ((quad_size/2) * quad_size - res_x * (quad_size/2)); 100.94 + // quads[x+y*res_x].Uvs[1] = y * 256.f / ((quad_size/2) * quad_size - res_y * (quad_size/2)); 100.95 +#ifndef TEST_PSC80 // your version 100.96 + quads[x+y*res_x].Uvs[0] = x * 256.f / quads[x+y*res_x].Position[0]; 100.97 + quads[x+y*res_x].Uvs[1] = y * 256.f / quads[x+y*res_x].Position[1]; 100.98 +#else 100.99 + quads[x+y*res_x].Uvs[0] = x / (quad_size*res_x);//+ 256.f / (quad_size*rex_x); 100.100 + quads[x+y*res_x].Uvs[1] = y / (quad_size*res_y);//+ 256.f / (quad_size*rex_x); 100.101 +#endif 100.102 + quads[x+y*res_x].Uvs[2] = 0.f; 100.103 + } 100.104 + } 100.105 + 100.106 + for (int i=0; i<res_x*res_y; i++) 100.107 + { 100.108 + quads[i].size = 0.1f; 100.109 + 100.110 + quads[i].Velocity[0] = float(4000-mth::Rand()%8000)/1000.f; 100.111 + quads[i].Velocity[1] = float(4000-mth::Rand()%8000)/1000.f; 100.112 + quads[i].Velocity[2] = float(mth::Rand()%4000)/1000.f; 100.113 + 100.114 + quads[i].Rotation[0] = 10.f;//float(mth::Rand()%2000)/100.f; 100.115 + quads[i].Rotation[1] = 20.f;//float(mth::Rand()%2000)/100.f; 100.116 + quads[i].Rotation[2] = 30.f;//float(mth::Rand()%2000)/100.f; 100.117 + 100.118 + quads[i].alpha = 1.f; 100.119 + 100.120 + } 100.121 + 100.122 +} 100.123 + 100.124 +void trans_Explode_t::GetScene(GLuint texture) 100.125 +{ 100.126 + glDisable(GL_BLEND); 100.127 + 100.128 + 100.129 +#ifdef TEST_PSC80 100.130 + 100.131 + txtBindTexture2d(texture,0); 100.132 + glCopyTexSubImage2D(GL_TEXTURE_2D,0,0,0,200,200,256,256); 100.133 + txtUnBindTexture2d(0); 100.134 + 100.135 + 100.136 +#else 100.137 + glViewport(0, 0, 256, 256); 100.138 + 100.139 + glEnable(GL_TEXTURE_2D); 100.140 + glBindTexture(GL_TEXTURE_2D, texture); 100.141 + 100.142 + // glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 100.143 + // glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 100.144 + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 100.145 + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 100.146 + 100.147 + glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 256, 256, 0); 100.148 + 100.149 + // glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 100.150 + glDisable(GL_TEXTURE_2D); 100.151 + 100.152 + glViewport(0, 0, RX, RY); 100.153 +#endif 100.154 + glEnable(GL_BLEND); 100.155 +} 100.156 + 100.157 +void trans_Explode_t::Draw(float speed) 100.158 +{ 100.159 + cmnSetFrustrum(90); 100.160 + cmnSetCamera( mth::Vector3_t(0, 0, 1), mth::Vector3_t(0 ,0, 0)); 100.161 + 100.162 + //glEnable(GL_BLEND); 100.163 + //glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA); 100.164 + 100.165 + glDisable(GL_BLEND); 100.166 + 100.167 + for (int i=0; i<res_x*res_y; i++) 100.168 + { 100.169 + glColor4f(1.f, 1.f, 1.f, quads[i].alpha); 100.170 + 100.171 + PutOneQuad(quads[i].size, 100.172 + quads[i].Position[0], quads[i].Position[1], quads[i].Position[2], 100.173 + quads[i].Uvs[0], quads[i].Uvs[1], 100.174 + quads[i].Rotation[0]+speed, quads[i].Rotation[1]+speed, quads[i].Rotation[2]+speed); 100.175 + 100.176 +#define DEBUG_QUADS 100.177 +#ifdef DEBUG_QUADS 100.178 + 100.179 + glLineWidth(2.f); 100.180 + 100.181 + glDisable(GL_TEXTURE_2D); 100.182 + 100.183 + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); 100.184 + PutOneQuad(quads[i].size, 100.185 + quads[i].Position[0], quads[i].Position[1], quads[i].Position[2], 100.186 + quads[i].Uvs[0], quads[i].Uvs[1], 100.187 + quads[i].Rotation[0]+speed, quads[i].Rotation[1]+speed, quads[i].Rotation[2]+speed); 100.188 + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); 100.189 + 100.190 + glEnable(GL_TEXTURE_2D); 100.191 +#endif 100.192 + 100.193 + } 100.194 + 100.195 + glEnable(GL_BLEND); 100.196 +} 100.197 + 100.198 +void trans_Explode_t::Animate(float start_time, float end_time, float speed) 100.199 +{ 100.200 + for (int i=0; i<=res_x*res_y; i++) 100.201 + { 100.202 + if (quads[i].alpha > 0.f) quads[i].alpha -= speed*2.f; 100.203 + 100.204 + quads[i].Position[0] += 6.f*quads[i].Velocity[0]*speed/2.f; 100.205 + quads[i].Position[1] += 6.f*quads[i].Velocity[1]*speed/2.f; 100.206 + quads[i].Position[2] -= quads[i].Velocity[2]*speed; 100.207 + } 100.208 + 100.209 +}
101.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 101.2 +++ b/trans_explode.h Tue Nov 27 15:23:52 2007 +0100 101.3 @@ -0,0 +1,45 @@ 101.4 +#ifndef TRANS_EXPLODE_H 101.5 +#define TRANS_EXPLODE_H 101.6 + 101.7 +#include "mth_vector3.h" 101.8 +#include "gl_header.h" 101.9 + 101.10 +typedef struct transExplodeQuad 101.11 +{ 101.12 + mth::Vector3_t Position; // Position for one quad 101.13 + mth::Vector3_t Rotation; // Rotation for one quad 101.14 + mth::Vector3_t Velocity; // Velocity for one quad 101.15 + mth::Vector3_t Uvs; // Uv for one quad ... Uvs[2] will be always at 0.f ! 101.16 + 101.17 + float alpha; // Alpha for one quad 101.18 + 101.19 + // Size for a quad - Size is computed from the center of quad to one border, so the real 101.20 + // quad size is size*2 101.21 + float size; 101.22 + 101.23 + 101.24 +}transExplodeQuad; 101.25 + 101.26 +class trans_Explode_t 101.27 +{ 101.28 + 101.29 +public: 101.30 + 101.31 + GLuint explode_map; 101.32 + int res_x, res_y; 101.33 + 101.34 + transExplodeQuad *quads; 101.35 + 101.36 + trans_Explode_t(int max_x_quads, int max_y_quads); 101.37 + ~trans_Explode_t(); 101.38 + 101.39 + GLuint CreateTextureTransition(int x, int y); 101.40 + void PutOneQuad(float size, float px, float py, float pz, float u, float v, float rx, float ry, float rz); 101.41 + void GetScene(GLuint texture); 101.42 + void SetQuadsProperty(void); 101.43 + void Draw(float speed); 101.44 + void Animate(float start, float end, float speed); 101.45 + 101.46 +}; 101.47 + 101.48 +#endif 101.49 \ No newline at end of file
102.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 102.2 +++ b/trans_explode2.cxx Tue Nov 27 15:23:52 2007 +0100 102.3 @@ -0,0 +1,143 @@ 102.4 +#include "trans_explode2.h" 102.5 +#include "gl_header.h" 102.6 +#include "cmn_intro.h" 102.7 +#include "cmn_texture.h" 102.8 + 102.9 + 102.10 + 102.11 + 102.12 + 102.13 + 102.14 + 102.15 +void transExplode2_t::Init(int _xsection,int _ysection) 102.16 +{ 102.17 + texture=txtCreateEmptyTexture(1024,1024); 102.18 + 102.19 + nbElements=_xsection*_ysection; 102.20 + resY=_ysection; 102.21 + resX=_xsection; 102.22 + 102.23 + 102.24 + elements=new transExplode2Element_t[nbElements]; 102.25 + 102.26 + float divx=RX*1.0/1024/resX; 102.27 + float divy=RY*1.0/1024/resY; 102.28 + 102.29 + const float SizeX=1.5*800.0/600/resX; 102.30 + const float SizeY=SizeX; 102.31 + 102.32 + 102.33 + int i,j; 102.34 + for (j=0;j<resY;j++) 102.35 + for (i=0;i<resX;i++) { 102.36 + elements[i+j*resX].position.Init(i*SizeX-resX*SizeX/2+SizeX/2,j*SizeY-resY*SizeY/2+SizeY/2,0); 102.37 + elements[i+j*resX].size[0]=SizeX*1.0/2; 102.38 + elements[i+j*resX].size[1]=SizeY*1.0/2; 102.39 + elements[i+j*resX].uvs.Init(i*divx,j*divy); 102.40 + elements[i+j*resX].uvsVec.Init(divx,divy); 102.41 +// elements[i+j*resX].uvs.Init(0,0); 102.42 +// elements[i+j*resX].uvsVec.Init(800.0/1024,600.0/1024); 102.43 + elements[i+j*resX].alpha=1.0; 102.44 + elements[i+j*resX].angle=5; 102.45 + elements[i+j*resX].rotation.InitRandomVectorInBox(20); 102.46 + elements[i+j*resX].rotation.Normalize(); 102.47 + elements[i+j*resX].velocity.InitRandomVectorInBox(20); 102.48 + elements[i+j*resX].velocity[2]=-mth::Abs(elements[i+j*resX].velocity[2]); 102.49 + elements[i+j*resX].velocity.Normalize(); 102.50 + //elements[i+j*resX].velocity*=5; 102.51 + } 102.52 + 102.53 + 102.54 + started=false; 102.55 +} 102.56 + 102.57 + 102.58 +void transExplode2_t::GetBuffer1() 102.59 +{ 102.60 + CopyBackBufferToTexture(texture,RX,RY); 102.61 + //started=true; 102.62 +} 102.63 + 102.64 + 102.65 + 102.66 +void transExplode2Element_t::Update() 102.67 +{ 102.68 + const float AngleAdd=100; 102.69 + const float AlphaAdd=-0.5; 102.70 + 102.71 + double dt=Timer->GetFrameTime(); 102.72 + angle+=AngleAdd*dt; 102.73 + position+=velocity*dt; 102.74 + alpha+=AlphaAdd*dt; 102.75 + 102.76 +} 102.77 + 102.78 + 102.79 + 102.80 + 102.81 +void transExplode2Element_t::Draw() 102.82 +{ 102.83 + 102.84 +// cmnDisplayBackground(texture[0]); 102.85 +// return ; 102.86 + 102.87 + cmnPushMatrix(); 102.88 + glMatrixMode(GL_MODELVIEW); 102.89 + glTranslatef(position[0],position[1],position[2]); 102.90 + glRotatef(angle,rotation[0],rotation[1],rotation[2]); 102.91 + 102.92 + glBegin(GL_QUADS); 102.93 + glColor4f(1,1,1,alpha); 102.94 + glTexCoord2f(uvs[0],uvs[1]+uvsVec[1]); 102.95 + glVertex3f(-size[0],size[1],0); 102.96 + 102.97 + glColor4f(1,1,1,alpha); 102.98 + glTexCoord2f(uvs[0]+uvsVec[0],uvs[1]+uvsVec[1]); 102.99 + glVertex3f(size[0],size[1],0); 102.100 + 102.101 + glColor4f(1,1,1,alpha); 102.102 + glTexCoord2f(uvs[0]+uvsVec[0],uvs[1]); 102.103 + glVertex3f(size[0],-size[1],0); 102.104 + 102.105 + glColor4f(1,1,1,alpha); 102.106 + glTexCoord2f(uvs[0],uvs[1]); 102.107 + glVertex3f(-size[0],-size[1],0); 102.108 + glEnd(); 102.109 + //glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_COLOR); 102.110 + 102.111 + cmnPopMatrix(); 102.112 +} 102.113 + 102.114 + 102.115 +void transExplode2_t::Draw() 102.116 +{ 102.117 + int i; 102.118 + 102.119 + cmnPushMatrix(); 102.120 + cmnSetFrustrum(90); 102.121 + cmnSetCamera(mth::Vector3_t(0,0,1),mth::Vector3_t(0,0,0)); 102.122 + glMatrixMode(GL_MODELVIEW); 102.123 + //glLoadIdentity(); 102.124 + glEnable(GL_BLEND); 102.125 + //glEnable(GL_BLEND); 102.126 + glBlendFunc(GL_SRC_ALPHA,GL_ONE); 102.127 + glDisable(GL_DEPTH_TEST); 102.128 + glDisable(GL_CULL_FACE); 102.129 + txtBindTexture2d(texture,0); 102.130 + for (i=0;i<nbElements;i++) 102.131 + elements[i].Draw(); 102.132 + 102.133 + txtUnBindTexture2d(0); 102.134 + 102.135 + cmnPopMatrix(); 102.136 +} 102.137 + 102.138 + 102.139 +void transExplode2_t::Update() 102.140 +{ 102.141 + int i; 102.142 + for (i=0;i<nbElements;i++) 102.143 + elements[i].Update(); 102.144 +// elements[i].position+=mth::Vector3_t(0,0,-10)*Timer->GetFrameTime(); 102.145 + 102.146 +}
103.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 103.2 +++ b/trans_explode2.h Tue Nov 27 15:23:52 2007 +0100 103.3 @@ -0,0 +1,53 @@ 103.4 +#ifndef TRANS_EXPLODE2_H 103.5 +#define TRANS_EXPLODE2_H 103.6 + 103.7 +#include "gl_header.h" 103.8 +#include "cmn_texture.h" 103.9 +#include "mth_vector3.h" 103.10 +#include "mth_vector2.h" 103.11 + 103.12 +struct transExplode2Element_t 103.13 +{ 103.14 + mth::Vector2_t uvs; 103.15 + mth::Vector2_t uvsVec; 103.16 + mth::Vector3_t rotation; 103.17 + mth::Vector3_t position; 103.18 + mth::Vector3_t velocity; 103.19 + float angle; 103.20 + float size[2]; 103.21 + float alpha; 103.22 + 103.23 + void Draw(); 103.24 + void Update(); 103.25 +}; 103.26 + 103.27 + 103.28 +class transExplode2_t 103.29 +{ 103.30 + GLuint texture; 103.31 + 103.32 + 103.33 + transExplode2Element_t* elements; 103.34 + int nbElements; 103.35 + 103.36 + int resX; 103.37 + int resY; 103.38 + 103.39 + bool started; 103.40 + 103.41 +public: 103.42 + 103.43 + transExplode2_t(){} 103.44 + void Init(int _xsection,int _ysection); 103.45 + 103.46 + 103.47 + void GetBuffer1(); 103.48 + void Draw(); 103.49 + void Update(); 103.50 + 103.51 + bool Started() { return started;} 103.52 + void Start() { started=true;} 103.53 + 103.54 +}; 103.55 + 103.56 +#endif
104.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 104.2 +++ b/trans_fade.cxx Tue Nov 27 15:23:52 2007 +0100 104.3 @@ -0,0 +1,73 @@ 104.4 +#include "trans_fade.h" 104.5 +#include "gl_header.h" 104.6 +#include "cmn_intro.h" 104.7 +#include "cmn_texture.h" 104.8 + 104.9 + 104.10 + 104.11 + 104.12 + 104.13 + 104.14 + 104.15 +void transFade_t::Init() 104.16 +{ 104.17 + texture[0]=txtCreateEmptyTexture(1024,1024); 104.18 + texture[1]=txtCreateEmptyTexture(1024,1024); 104.19 + alpha[0]=1; 104.20 + alpha[1]=0; 104.21 +} 104.22 + 104.23 + 104.24 +void transFade_t::GetBuffer1() 104.25 +{ 104.26 + CopyBackBufferToTexture(texture[0],RX,RY); 104.27 +} 104.28 + 104.29 +void transFade_t::GetBuffer2() 104.30 +{ 104.31 + CopyBackBufferToTexture(texture[1],RX,RY); 104.32 +} 104.33 + 104.34 + 104.35 +void transFade_t::Draw(float _time) 104.36 +{ 104.37 + alpha[1]=_time; 104.38 + alpha[0]=1-_time; 104.39 + 104.40 + 104.41 +// cmnDisplayBackground(texture[0]); 104.42 +// return ; 104.43 + 104.44 + cmnPushMatrix(); 104.45 + cmnSetPlanarView(); 104.46 + //glDisable(GL_BLEND); 104.47 + glEnable(GL_BLEND); 104.48 + glBlendFunc(GL_SRC_ALPHA,GL_ONE); 104.49 + glDisable(GL_DEPTH_TEST); 104.50 + 104.51 + for (int i=0;i<2;i++) { 104.52 + txtBindTexture2d(texture[i],0); 104.53 + glBegin(GL_QUADS); 104.54 + glColor4f(1,1,1,alpha[i]); 104.55 + glTexCoord2f(0,RY*1.0/1024); 104.56 + glVertex2f(0,RY); 104.57 + 104.58 + glColor4f(1,1,1,alpha[i]); 104.59 + glTexCoord2f(RX*1.0/1024,RY*1.0/1024); 104.60 + glVertex2f(RX,RY); 104.61 + 104.62 + glColor4f(1,1,1,alpha[i]); 104.63 + glTexCoord2f(RX*1.0/1024,0); 104.64 + glVertex2f(RX,0); 104.65 + 104.66 + glColor4f(1,1,1,alpha[i]); 104.67 + glTexCoord2f(0,0); 104.68 + glVertex2f(0,0); 104.69 + glEnd(); 104.70 + //glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_COLOR); 104.71 + } 104.72 + txtUnBindTexture2d(0); 104.73 + 104.74 + cmnPopMatrix(); 104.75 + glMatrixMode(GL_MODELVIEW); 104.76 +}
105.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 105.2 +++ b/trans_fade.h Tue Nov 27 15:23:52 2007 +0100 105.3 @@ -0,0 +1,24 @@ 105.4 +#ifndef TRANS_FADE_H 105.5 +#define TRANS_FADE_H 105.6 + 105.7 +#include "gl_header.h" 105.8 +#include "cmn_texture.h" 105.9 + 105.10 +class transFade_t 105.11 +{ 105.12 + GLuint texture[2]; 105.13 + float alpha[2]; 105.14 + 105.15 +public: 105.16 + 105.17 + transFade_t(){} 105.18 + void Init(); 105.19 + 105.20 + 105.21 + void GetBuffer1(); 105.22 + void GetBuffer2(); 105.23 + void Draw(float _time); 105.24 + 105.25 +}; 105.26 + 105.27 +#endif 105.28 \ No newline at end of file
106.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 106.2 +++ b/trans_glow.cxx Tue Nov 27 15:23:52 2007 +0100 106.3 @@ -0,0 +1,152 @@ 106.4 +#include "trans_glow.h" 106.5 +#include "gl_header.h" 106.6 +#include "cmn_intro.h" 106.7 + 106.8 +GLuint trans_Glow_t::CreateOnePass(int x, int y) 106.9 +{ 106.10 + GLuint txtnumber; 106.11 + unsigned char *data; 106.12 + 106.13 + glEnable(GL_TEXTURE_2D); 106.14 + 106.15 + data = (unsigned char *)new GLuint[((x * y)*4*sizeof(unsigned int))]; 106.16 + 106.17 + glGenTextures(1, &txtnumber); 106.18 + glBindTexture(GL_TEXTURE_2D, txtnumber); 106.19 + glTexImage2D(GL_TEXTURE_2D, 0, 4, x, y, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); 106.20 +#ifdef USE_MOZAIK 106.21 + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); 106.22 + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); 106.23 +#else 106.24 + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 106.25 + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 106.26 +#endif 106.27 + delete [] data; 106.28 + 106.29 + return txtnumber; 106.30 +} 106.31 + 106.32 +void trans_Glow_t::RenderSceneToQuad(GLuint dst, float alpha) 106.33 +{ 106.34 + glEnable(GL_TEXTURE_2D); 106.35 + glBindTexture(GL_TEXTURE_2D, dst); 106.36 + 106.37 + glLoadIdentity(); 106.38 + 106.39 + glEnable(GL_BLEND); 106.40 + glDepthMask(false); 106.41 + 106.42 + glColor4f( 1, 1, 1, alpha); 106.43 + 106.44 + glBegin(GL_QUADS); 106.45 + glTexCoord2f(0.f, 0.f); glVertex3f(-1.f, -1.f, 0.f); 106.46 + glTexCoord2f(0.f, 1.f); glVertex3f(-1.f, 1.f, 0.f); 106.47 + glTexCoord2f(1.f, 1.f); glVertex3f(1.f, 1.f, 0.f); 106.48 + glTexCoord2f(1.f, 0.f); glVertex3f(1.f, -1.f, 0.f); 106.49 + glEnd(); 106.50 + 106.51 + glDepthMask(true); 106.52 +} 106.53 + 106.54 +void trans_Glow_t::StartGlow(void) 106.55 +{ 106.56 + glMatrixMode(GL_MODELVIEW); 106.57 + glLoadIdentity(); 106.58 + 106.59 + glMatrixMode(GL_PROJECTION); 106.60 + glLoadIdentity(); 106.61 + 106.62 + gluPerspective(90.f,1.33333f,1.f,5000.0f); 106.63 + 106.64 + glDisable(GL_LIGHTING); 106.65 + 106.66 + glViewport(0, 0, 32, 32); 106.67 +} 106.68 + 106.69 +void trans_Glow_t::EndGlow(void) 106.70 +{ 106.71 + glMatrixMode(GL_MODELVIEW); 106.72 + glLoadIdentity(); 106.73 + 106.74 + glMatrixMode(GL_PROJECTION); 106.75 + glLoadIdentity(); 106.76 + 106.77 + glViewport(0, 0, RX, RY); 106.78 + 106.79 + glEnable(GL_LIGHTING); 106.80 +} 106.81 + 106.82 +void trans_Glow_t::StartRendering(GLuint dst, int x, int y) 106.83 +{ 106.84 + glEnable(GL_TEXTURE_2D); 106.85 + glBindTexture(GL_TEXTURE_2D, dst); 106.86 + 106.87 +#ifdef USE_MOZAIK 106.88 + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 106.89 + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 106.90 +#else 106.91 + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 106.92 + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 106.93 +#endif 106.94 + glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, x, y, 0); 106.95 + 106.96 + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 106.97 + glDisable(GL_TEXTURE_2D); 106.98 +} 106.99 + 106.100 +void trans_Glow_t::AddPass(GLuint src, GLuint dst, int render_size_x, int render_size_y) 106.101 +{ 106.102 + glViewport(0, 0, render_size_x, render_size_y); 106.103 + 106.104 + glPushMatrix(); 106.105 + 106.106 + glDisable(GL_CULL_FACE); 106.107 + RenderSceneToQuad(src, 1.f); 106.108 + glEnable(GL_CULL_FACE); 106.109 + 106.110 + glPopMatrix(); 106.111 + 106.112 + glEnable(GL_TEXTURE_2D); 106.113 + glBindTexture(GL_TEXTURE_2D,dst); 106.114 + 106.115 +#ifdef USE_MOZAIK 106.116 + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 106.117 + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 106.118 +#else 106.119 + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 106.120 + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 106.121 +#endif 106.122 + glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, render_size_x, render_size_y, 0); 106.123 + 106.124 + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 106.125 + glDisable(GL_TEXTURE_2D); 106.126 +} 106.127 + 106.128 +void trans_Glow_t::DoAllDefaultPasses(void) 106.129 +{ 106.130 + glDisable(GL_LIGHTING); 106.131 + 106.132 + AddPass(glowPass[0], glowPass[1], 64, 64); 106.133 + AddPass(glowPass[1], glowPass[2], 128, 128); 106.134 + AddPass(glowPass[2], glowPass[3], 256, 256); 106.135 + 106.136 + glEnable(GL_LIGHTING); 106.137 +} 106.138 + 106.139 +void trans_Glow_t::ApplyGlowToScene(GLuint last_glow_pass, float alpha) 106.140 +{ 106.141 + glDisable(GL_CULL_FACE); 106.142 + glDisable(GL_LIGHTING); 106.143 + glEnable(GL_BLEND); 106.144 + glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA); 106.145 + // glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR); 106.146 + // glBlendFunc(GL_SRC_ALPHA, GL_SRC_COLOR); 106.147 + // glBlendFunc(GL_ONE_MINUS_SRC_COLOR, GL_DST_ALPHA); 106.148 + 106.149 + glDisable(GL_CULL_FACE); 106.150 + RenderSceneToQuad(last_glow_pass, alpha); 106.151 + glEnable(GL_CULL_FACE); 106.152 + 106.153 + glDisable(GL_BLEND); 106.154 + glEnable(GL_LIGHTING); 106.155 +}
107.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 107.2 +++ b/trans_glow.h Tue Nov 27 15:23:52 2007 +0100 107.3 @@ -0,0 +1,25 @@ 107.4 +#ifndef TRANS_GLOW_H 107.5 +#define TRANS_GLOW_H 107.6 + 107.7 +#include "mth_vector3.h" 107.8 +#include "gl_header.h" 107.9 + 107.10 +#define USE_MOZAIK 107.11 + 107.12 +class trans_Glow_t 107.13 +{ 107.14 +public: 107.15 + GLuint glowPass[4]; 107.16 + 107.17 + GLuint CreateOnePass(int x, int y); 107.18 + void RenderSceneToQuad(GLuint dst, float alpha); 107.19 + void StartGlow(void); 107.20 + void EndGlow(void); 107.21 + void StartRendering(GLuint dst, int x, int y); 107.22 + void AddPass(GLuint src, GLuint dst, int render_size_x, int render_size_y); 107.23 + void DoAllDefaultPasses(void); 107.24 + void ApplyGlowToScene(GLuint last_glow_pass, float alpha); 107.25 + 107.26 +}; 107.27 + 107.28 +#endif 107.29 \ No newline at end of file
108.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 108.2 +++ b/trans_puzzle.cxx Tue Nov 27 15:23:52 2007 +0100 108.3 @@ -0,0 +1,159 @@ 108.4 +#include "trans_puzzle.h" 108.5 +#include "gl_header.h" 108.6 +#include "cmn_intro.h" 108.7 +#include "cmn_texture.h" 108.8 + 108.9 + 108.10 + 108.11 + 108.12 + 108.13 + 108.14 + 108.15 +void transPuzzle_t::Init(int _xsection,int _ysection) 108.16 +{ 108.17 + internalTime=0; 108.18 + texture[0]=txtCreateEmptyTexture(1024,1024); 108.19 + texture[1]=txtCreateEmptyTexture(1024,1024); 108.20 + 108.21 + nbElements=_xsection*_ysection; 108.22 + resY=_ysection; 108.23 + resX=_xsection; 108.24 + 108.25 + 108.26 + elements=new transPuzzleElement_t[nbElements]; 108.27 + 108.28 + float divx=RX*1.0/1024/resX; 108.29 + float divy=RY*1.0/1024/resY; 108.30 + 108.31 + const float SizeX=1.5*800.0/600/resX; 108.32 + const float SizeY=SizeX; 108.33 + const float TimeStep=0.5/nbElements; 108.34 + const float MaxDist=mth::Sqrt(1.0*(resY*resY+resX*resX)); 108.35 + 108.36 + int i,j; 108.37 + for (j=0;j<resY;j++) 108.38 + for (i=0;i<resX;i++) { 108.39 + elements[i+j*resX].position.Init(i*SizeX-resX*SizeX/2+SizeX/2,j*SizeY-resY*SizeY/2+SizeY/2,0); 108.40 + elements[i+j*resX].size[0]=SizeX*1.0/2; 108.41 + elements[i+j*resX].size[1]=SizeY*1.0/2; 108.42 + elements[i+j*resX].uvs.Init(i*divx,j*divy); 108.43 + elements[i+j*resX].uvsVec.Init(divx,divy); 108.44 + elements[i+j*resX].angle=0; 108.45 +// elements[i+j*resX].start=TimeStep*(i+j*resX); 108.46 + elements[i+j*resX].start=0.5*mth::Sqrt(1.0*(i*i+j*j))/MaxDist; 108.47 + elements[i+j*resX].rotation.Init(0,1,0); 108.48 + } 108.49 + 108.50 + 108.51 + started=false; 108.52 +} 108.53 + 108.54 + 108.55 +void transPuzzle_t::GetBuffer1() 108.56 +{ 108.57 + CopyBackBufferToTexture(texture[0],RX,RY); 108.58 + //started=true; 108.59 +} 108.60 + 108.61 +void transPuzzle_t::GetBuffer2() 108.62 +{ 108.63 + CopyBackBufferToTexture(texture[1],RX,RY); 108.64 + //started=true; 108.65 +} 108.66 + 108.67 + 108.68 + 108.69 + 108.70 + 108.71 +void transPuzzleElement_t::Draw(bool reverse) 108.72 +{ 108.73 + 108.74 +// cmnDisplayBackground(texture[0]); 108.75 +// return ; 108.76 + 108.77 + cmnPushMatrix(); 108.78 + glMatrixMode(GL_MODELVIEW); 108.79 + 108.80 + glTranslatef(position[0],position[1],position[2]); 108.81 + glRotatef(angle,rotation[0],rotation[1],rotation[2]); 108.82 + 108.83 + glBegin(GL_QUADS); 108.84 + if (reverse) { 108.85 + 108.86 + glTexCoord2f(uvs[0]+uvsVec[0],uvs[1]+uvsVec[1]); 108.87 + glVertex3f(-size[0],size[1],0); 108.88 + 108.89 + glTexCoord2f(uvs[0],uvs[1]+uvsVec[1]); 108.90 + glVertex3f(size[0],size[1],0); 108.91 + 108.92 + glTexCoord2f(uvs[0],uvs[1]); 108.93 + glVertex3f(size[0],-size[1],0); 108.94 + 108.95 + glTexCoord2f(uvs[0]+uvsVec[0],uvs[1]); 108.96 + glVertex3f(-size[0],-size[1],0); 108.97 + 108.98 + 108.99 + } else { 108.100 + 108.101 + glTexCoord2f(uvs[0],uvs[1]); 108.102 + glVertex3f(-size[0],-size[1],0); 108.103 + 108.104 + glTexCoord2f(uvs[0]+uvsVec[0],uvs[1]); 108.105 + glVertex3f(size[0],-size[1],0); 108.106 + 108.107 + glTexCoord2f(uvs[0]+uvsVec[0],uvs[1]+uvsVec[1]); 108.108 + glVertex3f(size[0],size[1],0); 108.109 + 108.110 + glTexCoord2f(uvs[0],uvs[1]+uvsVec[1]); 108.111 + glVertex3f(-size[0],size[1],0); 108.112 + 108.113 + 108.114 + } 108.115 + glEnd(); 108.116 + cmnPopMatrix(); 108.117 +} 108.118 + 108.119 + 108.120 +void transPuzzle_t::Draw() 108.121 +{ 108.122 + int i; 108.123 + 108.124 + cmnPushMatrix(); 108.125 + cmnSetFrustrum(90); 108.126 + cmnSetCamera(mth::Vector3_t(0,0,1),mth::Vector3_t(0,0,0)); 108.127 + glMatrixMode(GL_MODELVIEW); 108.128 + //glLoadIdentity(); 108.129 + glDisable(GL_BLEND); 108.130 + glBlendFunc(GL_SRC_ALPHA,GL_ONE); 108.131 + glDisable(GL_DEPTH_TEST); 108.132 + glEnable(GL_CULL_FACE); 108.133 + //glDisable(GL_CULL_FACE); 108.134 + txtBindTexture2d(texture[0],0); 108.135 + for (i=0;i<nbElements;i++) 108.136 + elements[i].Draw(); 108.137 + txtBindTexture2d(texture[1],0); 108.138 + for (i=0;i<nbElements;i++) 108.139 + elements[i].Draw(true); 108.140 + txtUnBindTexture2d(0); 108.141 + 108.142 + cmnPopMatrix(); 108.143 +} 108.144 + 108.145 + 108.146 +void transPuzzle_t::Update(float _time) 108.147 +{ 108.148 + int i; 108.149 + const float AngleAdd=360; 108.150 + const float MaxAngle=180; 108.151 + 108.152 + double dt=Timer->GetFrameTime(); 108.153 + internalTime+=dt; 108.154 + 108.155 + for (i=0;i<nbElements;i++) 108.156 + if (elements[i].start<=_time) { 108.157 + elements[i].angle=AngleAdd*(_time-elements[i].start); 108.158 + elements[i].angle=mth::Min(MaxAngle,elements[i].angle); 108.159 + } 108.160 +// elements[i].position+=mth::Vector3_t(0,0,-10)*Timer->GetFrameTime(); 108.161 + 108.162 +}
109.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 109.2 +++ b/trans_puzzle.h Tue Nov 27 15:23:52 2007 +0100 109.3 @@ -0,0 +1,55 @@ 109.4 +#ifndef TRANS_PUZZLE_H 109.5 +#define TRANS_PUZZLE_H 109.6 + 109.7 +#include "gl_header.h" 109.8 +#include "cmn_texture.h" 109.9 +#include "mth_vector3.h" 109.10 +#include "mth_vector2.h" 109.11 + 109.12 +struct transPuzzleElement_t 109.13 +{ 109.14 + mth::Vector2_t uvs; 109.15 + mth::Vector2_t uvsVec; 109.16 + mth::Vector3_t position; 109.17 + mth::Vector3_t rotation; 109.18 + float angle; 109.19 + float size[2]; 109.20 + float start; 109.21 + 109.22 + void Draw(bool _reverse=false); 109.23 +}; 109.24 + 109.25 + 109.26 + 109.27 + 109.28 +class transPuzzle_t 109.29 +{ 109.30 + double internalTime; 109.31 + 109.32 + GLuint texture[2]; 109.33 + 109.34 + transPuzzleElement_t* elements; 109.35 + int nbElements; 109.36 + 109.37 + int resX; 109.38 + int resY; 109.39 + 109.40 + bool started; 109.41 + 109.42 +public: 109.43 + 109.44 + transPuzzle_t(){} 109.45 + void Init(int _xsection,int _ysection); 109.46 + 109.47 + 109.48 + void GetBuffer1(); 109.49 + void GetBuffer2(); 109.50 + void Draw(); 109.51 + void Update(float _time); 109.52 + 109.53 + bool Started() { return started;} 109.54 + void Start() { started=true;} 109.55 + 109.56 +}; 109.57 + 109.58 +#endif
110.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 110.2 +++ b/trans_radial.cxx Tue Nov 27 15:23:52 2007 +0100 110.3 @@ -0,0 +1,64 @@ 110.4 +#include "trans_radial.h" 110.5 +#include "gl_header.h" 110.6 +#include "cmn_intro.h" 110.7 +#include "cmn_texture.h" 110.8 + 110.9 + 110.10 +void transRadial_t::Init() 110.11 +{ 110.12 + level=0; 110.13 + texture=txtCreateEmptyTexture(1024,1024); 110.14 +} 110.15 + 110.16 + 110.17 +void transRadial_t::GetBuffer1() 110.18 +{ 110.19 + CopyBackBufferToTexture(texture,RX,RY); 110.20 +} 110.21 + 110.22 +void transRadial_t::Draw(float _time) 110.23 +{ 110.24 + 110.25 + const NbPasses=5; 110.26 + const Scale=30; 110.27 + const Alpha=1.0/NbPasses; 110.28 + 110.29 + cmnPushMatrix(); 110.30 + cmnSetPlanarView(); 110.31 + glEnable(GL_BLEND); 110.32 + glBlendFunc(GL_SRC_ALPHA,GL_ONE); 110.33 + //glBlendFunc(GL_ONE,GL_ONE); 110.34 + glDisable(GL_DEPTH_TEST); 110.35 + 110.36 +// float scale=Scale*_time; 110.37 + float tr=0; 110.38 + float alpha=0; 110.39 + 110.40 + for (int i=0;i<NbPasses;i++) { 110.41 + txtBindTexture2d(texture,0); 110.42 + glBegin(GL_QUADS); 110.43 + glColor4f(1,1,1,alpha); 110.44 + glTexCoord2f(0,RY*1.0/1024); 110.45 + glVertex2f(0-tr,RY+tr); 110.46 + 110.47 + glColor4f(1,1,1,alpha); 110.48 + glTexCoord2f(RX*1.0/1024,RY*1.0/1024); 110.49 + glVertex2f(RX+tr,RY+tr); 110.50 + 110.51 + glColor4f(1,1,1,alpha); 110.52 + glTexCoord2f(RX*1.0/1024,0); 110.53 + glVertex2f(RX+tr,0-tr); 110.54 + 110.55 + glColor4f(1,1,1,alpha); 110.56 + glTexCoord2f(0,0); 110.57 + glVertex2f(0-tr,0-tr); 110.58 + glEnd(); 110.59 + tr+=Scale*_time; 110.60 + alpha+=Alpha*_time; 110.61 + //glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_COLOR); 110.62 + } 110.63 + txtUnBindTexture2d(0); 110.64 + 110.65 + cmnPopMatrix(); 110.66 + glMatrixMode(GL_MODELVIEW); 110.67 +}
111.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 111.2 +++ b/trans_radial.h Tue Nov 27 15:23:52 2007 +0100 111.3 @@ -0,0 +1,22 @@ 111.4 +#ifndef TRANS_RADIAL_H 111.5 +#define TRANS_RADIAL_H 111.6 + 111.7 +#include "gl_header.h" 111.8 +#include "cmn_texture.h" 111.9 + 111.10 +class transRadial_t 111.11 +{ 111.12 + GLuint texture; 111.13 + float level; 111.14 + 111.15 +public: 111.16 + 111.17 + transRadial_t(){} 111.18 + void Init(); 111.19 + 111.20 + void GetBuffer1(); 111.21 + void Draw(float _time); 111.22 + 111.23 +}; 111.24 + 111.25 +#endif 111.26 \ No newline at end of file
112.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 112.2 +++ b/window_fmod_init.cpp Tue Nov 27 15:23:52 2007 +0100 112.3 @@ -0,0 +1,605 @@ 112.4 +#include <stdio.h> 112.5 + 112.6 +#include <stdlib.h> 112.7 + 112.8 +#include <windows.h> 112.9 + 112.10 +#include <math.h> 112.11 + 112.12 +#include <gl/gl.h> 112.13 + 112.14 +#include <gl/glu.h> 112.15 + 112.16 + 112.17 +HDC hDC = NULL; 112.18 + 112.19 +HGLRC hRC = NULL; 112.20 + 112.21 +HWND hWnd = NULL; 112.22 + 112.23 +HINSTANCE hInstance; 112.24 + 112.25 +SYSTEMTIME tm; 112.26 + 112.27 + 112.28 + 112.29 +BOOL fullscreen = TRUE; 112.30 + 112.31 +BOOL done = TRUE; 112.32 + 112.33 + 112.34 + 112.35 +typedef struct 112.36 + 112.37 +{ 112.38 + 112.39 + int length; 112.40 + 112.41 + int pos; 112.42 + 112.43 + void *data; 112.44 + 112.45 +} MEMFILE; 112.46 + 112.47 + 112.48 + 112.49 + 112.50 + 112.51 +unsigned int memopen(char *name) 112.52 + 112.53 +{ 112.54 + 112.55 + MEMFILE *memfile; 112.56 + 112.57 + 112.58 + 112.59 + memfile = (MEMFILE *)calloc(sizeof(MEMFILE),1); 112.60 + 112.61 + 112.62 + 112.63 + // hey look some load from resource code! 112.64 + 112.65 + HRSRC rec; 112.66 + 112.67 + HGLOBAL handle; 112.68 + 112.69 + 112.70 + 112.71 + rec = FindResource(NULL, name, RT_RCDATA); 112.72 + 112.73 + handle = LoadResource(NULL, rec); 112.74 + 112.75 + 112.76 + 112.77 + memfile->data = LockResource(handle); 112.78 + 112.79 + memfile->length = SizeofResource(NULL, rec); 112.80 + 112.81 + memfile->pos = 0; 112.82 + 112.83 + 112.84 + 112.85 + return (unsigned int)memfile; 112.86 + 112.87 +} 112.88 + 112.89 + 112.90 + 112.91 +void memclose(unsigned int handle) 112.92 + 112.93 +{ 112.94 + 112.95 + MEMFILE *memfile = (MEMFILE *)handle; 112.96 + 112.97 + 112.98 + 112.99 + free(memfile); 112.100 + 112.101 +} 112.102 + 112.103 + 112.104 + 112.105 +int memread(void *buffer, int size, unsigned int handle) 112.106 + 112.107 +{ 112.108 + 112.109 + MEMFILE *memfile = (MEMFILE *)handle; 112.110 + 112.111 + 112.112 + 112.113 + if (memfile->pos + size >= memfile->length) 112.114 + 112.115 + size = memfile->length - memfile->pos; 112.116 + 112.117 + 112.118 + 112.119 + memcpy(buffer, (char *)memfile->data+memfile->pos, size); 112.120 + 112.121 + memfile->pos += size; 112.122 + 112.123 + 112.124 + 112.125 + return size; 112.126 + 112.127 +} 112.128 + 112.129 + 112.130 + 112.131 +void memseek(unsigned int handle, int pos, signed char mode) 112.132 + 112.133 +{ 112.134 + 112.135 + MEMFILE *memfile = (MEMFILE *)handle; 112.136 + 112.137 + 112.138 + 112.139 + if (mode == SEEK_SET) 112.140 + 112.141 + memfile->pos = pos; 112.142 + 112.143 + else if (mode == SEEK_CUR) 112.144 + 112.145 + memfile->pos += pos; 112.146 + 112.147 + else if (mode == SEEK_END) 112.148 + 112.149 + memfile->pos = memfile->length + pos; 112.150 + 112.151 + 112.152 + 112.153 + if (memfile->pos > memfile->length) 112.154 + 112.155 + memfile->pos = memfile->length; 112.156 + 112.157 +} 112.158 + 112.159 + 112.160 + 112.161 +int memtell(unsigned int handle) 112.162 + 112.163 +{ 112.164 + 112.165 + MEMFILE *memfile = (MEMFILE *)handle; 112.166 + 112.167 + 112.168 + 112.169 + return memfile->pos; 112.170 + 112.171 +} 112.172 + 112.173 + 112.174 + 112.175 +LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) 112.176 + 112.177 +{ 112.178 + 112.179 + switch (uMsg) 112.180 + 112.181 + { 112.182 + 112.183 + case WM_CREATE : 112.184 + 112.185 + break; 112.186 + 112.187 + 112.188 + 112.189 + case WM_CLOSE: 112.190 + 112.191 + { 112.192 + 112.193 + PostQuitMessage(0); 112.194 + 112.195 + done = NULL; 112.196 + 112.197 + return 0; 112.198 + 112.199 + } 112.200 + 112.201 + 112.202 + 112.203 + case WM_QUIT: 112.204 + 112.205 + { 112.206 + 112.207 + PostQuitMessage(0); 112.208 + 112.209 + done = NULL; 112.210 + 112.211 + return 0; 112.212 + 112.213 + } 112.214 + 112.215 + 112.216 + 112.217 + case WM_KEYDOWN : 112.218 + 112.219 + { 112.220 + 112.221 + switch ( wParam ) 112.222 + 112.223 + { 112.224 + 112.225 + case VK_ESCAPE : 112.226 + 112.227 + done = NULL; 112.228 + 112.229 + PostQuitMessage( 0 ); 112.230 + break; 112.231 + 112.232 + } 112.233 + 112.234 + break; 112.235 + 112.236 + } 112.237 + 112.238 + 112.239 + 112.240 + } 112.241 + 112.242 + 112.243 + 112.244 + return DefWindowProc(hWnd,uMsg,wParam,lParam); 112.245 + 112.246 +} 112.247 + 112.248 + 112.249 + 112.250 + 112.251 + 112.252 +void KillGLWindow( void ) 112.253 + 112.254 +{ 112.255 + 112.256 + if ( fullscreen ) 112.257 + 112.258 + { 112.259 + 112.260 + ChangeDisplaySettings( NULL, 0 ); 112.261 + 112.262 + ShowCursor( TRUE ); 112.263 + 112.264 + } 112.265 + 112.266 + 112.267 + 112.268 + if ( hRC ) 112.269 + 112.270 + { 112.271 + 112.272 + if ( !wglMakeCurrent( NULL, NULL ) ) 112.273 + 112.274 + { 112.275 + 112.276 + MessageBox( NULL, "Release Of DC And RC Failed.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION ); 112.277 + 112.278 + } 112.279 + 112.280 + 112.281 + 112.282 + if ( !wglDeleteContext( hRC ) ) 112.283 + 112.284 + { 112.285 + 112.286 + MessageBox( NULL, "Release Rendering Context Failed.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION ); 112.287 + 112.288 + } 112.289 + 112.290 + hRC = NULL; 112.291 + 112.292 + } 112.293 + 112.294 +} 112.295 + 112.296 + 112.297 + 112.298 +BOOL CreateGLWindow(char* title, int width, int height, int bits, bool fullscreenflag) 112.299 + 112.300 +{ 112.301 + 112.302 + GLuint PixelFormat; 112.303 + 112.304 + WNDCLASS wc; 112.305 + 112.306 + DWORD dwExStyle; 112.307 + 112.308 + DWORD dwStyle; 112.309 + 112.310 + RECT WindowRect; 112.311 + 112.312 + WindowRect.left=(long)0; 112.313 + 112.314 + WindowRect.right=(long)width; 112.315 + 112.316 + WindowRect.top=(long)0; 112.317 + 112.318 + WindowRect.bottom=(long)height; 112.319 + 112.320 + 112.321 + 112.322 + fullscreen = fullscreenflag; 112.323 + 112.324 + 112.325 + 112.326 + hInstance = GetModuleHandle(NULL); 112.327 + 112.328 + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; 112.329 + 112.330 + wc.lpfnWndProc = (WNDPROC) WndProc; 112.331 + 112.332 + wc.cbClsExtra = 0; 112.333 + 112.334 + wc.cbWndExtra = 0; 112.335 + 112.336 + wc.hInstance = hInstance; 112.337 + 112.338 + wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); 112.339 + 112.340 + wc.hCursor = LoadCursor(NULL, IDC_ARROW); 112.341 + 112.342 + wc.hbrBackground = NULL; 112.343 + 112.344 + wc.lpszMenuName = NULL; 112.345 + 112.346 + wc.lpszClassName = "OpenGL"; 112.347 + 112.348 + 112.349 + 112.350 + if (!RegisterClass(&wc)) 112.351 + 112.352 + { 112.353 + 112.354 + MessageBox(NULL,"Failed To Register The Window Class.","ERROR",MB_OK|MB_ICONEXCLAMATION); 112.355 + 112.356 + return FALSE; 112.357 + 112.358 + } 112.359 + 112.360 + 112.361 + 112.362 + if (fullscreen) 112.363 + 112.364 + { 112.365 + 112.366 + DEVMODE dmScreenSettings; 112.367 + 112.368 + memset(&dmScreenSettings,0,sizeof(dmScreenSettings)); 112.369 + 112.370 + dmScreenSettings.dmSize=sizeof(dmScreenSettings); 112.371 + 112.372 + dmScreenSettings.dmPelsWidth = width; 112.373 + 112.374 + dmScreenSettings.dmPelsHeight = height; 112.375 + 112.376 + dmScreenSettings.dmBitsPerPel = bits; 112.377 + 112.378 + dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT; 112.379 + 112.380 + 112.381 + 112.382 + 112.383 + 112.384 + if (ChangeDisplaySettings( &dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL ) 112.385 + 112.386 + { 112.387 + 112.388 + 112.389 + 112.390 + if (MessageBox(NULL,"The Requested Fullscreen Mode Is Not Supported By\nYour Video Card. Use Windowed Mode Instead?","NeHe GL",MB_YESNO|MB_ICONEXCLAMATION)==IDYES) 112.391 + 112.392 + { 112.393 + 112.394 + fullscreen=FALSE; 112.395 + 112.396 + } 112.397 + 112.398 + else 112.399 + 112.400 + { 112.401 + 112.402 + 112.403 + 112.404 + MessageBox(NULL,"Program Will Now Close.","ERROR",MB_OK|MB_ICONSTOP); 112.405 + 112.406 + return FALSE; 112.407 + 112.408 + } 112.409 + 112.410 + } 112.411 + 112.412 + } 112.413 + 112.414 + 112.415 + 112.416 + if (fullscreen) // Are We Still In Fullscreen Mode? 112.417 + 112.418 + { 112.419 + 112.420 + dwExStyle=WS_EX_APPWINDOW; // Window Extended Style 112.421 + 112.422 + dwStyle=WS_POPUP; // Windows Style 112.423 + 112.424 + ShowCursor(FALSE); // Hide Mouse Pointer 112.425 + 112.426 + } 112.427 + 112.428 + else 112.429 + 112.430 + { 112.431 + 112.432 + dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; // Window Extended Style 112.433 + 112.434 + dwStyle=WS_OVERLAPPEDWINDOW; // Windows Style 112.435 + 112.436 + } 112.437 + 112.438 + 112.439 + 112.440 + AdjustWindowRectEx(&WindowRect, dwStyle, FALSE, dwExStyle); // Adjust Window To True Requested Size 112.441 + 112.442 + 112.443 + 112.444 + // Create The Window 112.445 + 112.446 + if (!(hWnd=CreateWindowEx( dwExStyle, // Extended Style For The Window 112.447 + 112.448 + "OpenGL", // Class Name 112.449 + 112.450 + title, // Window Title 112.451 + 112.452 + dwStyle | // Defined Window Style 112.453 + 112.454 + WS_CLIPSIBLINGS | // Required Window Style 112.455 + 112.456 + WS_CLIPCHILDREN, // Required Window Style 112.457 + 112.458 + 0, 0, // Window Position 112.459 + 112.460 + WindowRect.right-WindowRect.left, // Calculate Window Width 112.461 + 112.462 + WindowRect.bottom-WindowRect.top, // Calculate Window Height 112.463 + 112.464 + NULL, // No Parent Window 112.465 + 112.466 + NULL, // No Menu 112.467 + 112.468 + hInstance, // Instance 112.469 + 112.470 + NULL))) // Dont Pass Anything To WM_CREATE 112.471 + 112.472 + { 112.473 + 112.474 + KillGLWindow(); // Reset The Display 112.475 + 112.476 + MessageBox(NULL,"Window Creation Error.","ERROR",MB_OK|MB_ICONEXCLAMATION); 112.477 + 112.478 + return FALSE; // Return FALSE 112.479 + 112.480 + } 112.481 + 112.482 + 112.483 + 112.484 + static PIXELFORMATDESCRIPTOR pfd= // pfd Tells Windows How We Want Things To Be 112.485 + 112.486 + { 112.487 + 112.488 + sizeof(PIXELFORMATDESCRIPTOR), // Size Of This Pixel Format Descriptor 112.489 + 112.490 + 1, // Version Number 112.491 + 112.492 + PFD_DRAW_TO_WINDOW | // Format Must Support Window 112.493 + 112.494 + PFD_SUPPORT_OPENGL | // Format Must Support OpenGL 112.495 + 112.496 + PFD_DOUBLEBUFFER, // Must Support Double Buffering 112.497 + 112.498 + PFD_TYPE_RGBA, // Request An RGBA Format 112.499 + 112.500 + bits, // Select Our Color Depth 112.501 + 112.502 + 0, 0, 0, 0, 0, 0, // Color Bits Ignored 112.503 + 112.504 + 0, // No Alpha Buffer 112.505 + 112.506 + 0, // Shift Bit Ignored 112.507 + 112.508 + 0, // No Accumulation Buffer 112.509 + 112.510 + 0, 0, 0, 0, // Accumulation Bits Ignored 112.511 + 112.512 + 32, // 16Bit Z-Buffer (Depth Buffer) 112.513 + 112.514 + 32, // No Stencil Buffer 112.515 + 112.516 + 0, // No Auxiliary Buffer 112.517 + 112.518 + PFD_MAIN_PLANE, // Main Drawing Layer 112.519 + 112.520 + 0, // Reserved 112.521 + 112.522 + 0, 0, 0 // Layer Masks Ignored 112.523 + 112.524 + }; 112.525 + 112.526 + 112.527 + 112.528 + if (!(hDC=GetDC(hWnd))) // Did We Get A Device Context? 112.529 + 112.530 + { 112.531 + 112.532 + KillGLWindow(); // Reset The Display 112.533 + 112.534 + MessageBox(NULL,"Can't Create A GL Device Context.","ERROR",MB_OK|MB_ICONEXCLAMATION); 112.535 + 112.536 + return FALSE; // Return FALSE 112.537 + 112.538 + } 112.539 + 112.540 + 112.541 + 112.542 + if (!(PixelFormat=ChoosePixelFormat(hDC,&pfd))) // Did Windows Find A Matching Pixel Format? 112.543 + 112.544 + { 112.545 + 112.546 + KillGLWindow(); // Reset The Display 112.547 + 112.548 + MessageBox(NULL,"Can't Find A Suitable PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION); 112.549 + 112.550 + return FALSE; // Return FALSE 112.551 + 112.552 + } 112.553 + 112.554 + 112.555 + 112.556 + if(!SetPixelFormat(hDC,PixelFormat,&pfd)) // Are We Able To Set The Pixel Format? 112.557 + 112.558 + { 112.559 + 112.560 + KillGLWindow(); // Reset The Display 112.561 + 112.562 + MessageBox(NULL,"Can't Set The PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION); 112.563 + 112.564 + return FALSE; // Return FALSE 112.565 + 112.566 + } 112.567 + 112.568 + 112.569 + 112.570 + if (!(hRC=wglCreateContext(hDC))) // Are We Able To Get A Rendering Context? 112.571 + 112.572 + { 112.573 + 112.574 + KillGLWindow(); // Reset The Display 112.575 + 112.576 + MessageBox(NULL,"Can't Create A GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION); 112.577 + 112.578 + return FALSE; // Return FALSE 112.579 + 112.580 + } 112.581 + 112.582 + 112.583 + 112.584 + if(!wglMakeCurrent(hDC,hRC)) // Try To Activate The Rendering Context 112.585 + 112.586 + { 112.587 + 112.588 + KillGLWindow(); // Reset The Display 112.589 + 112.590 + MessageBox(NULL,"Can't Activate The GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION); 112.591 + 112.592 + return FALSE; // Return FALSE 112.593 + 112.594 + } 112.595 + 112.596 + 112.597 + 112.598 + ShowWindow(hWnd,SW_SHOW); // Show The Window 112.599 + 112.600 + SetForegroundWindow(hWnd); // Slightly Higher Priority 112.601 + 112.602 + SetFocus(hWnd); // Sets Keyboard Focus To The Window 112.603 + 112.604 + 112.605 + 112.606 + return TRUE; // Success 112.607 + 112.608 +} 112.609 \ No newline at end of file
113.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 113.2 +++ b/window_fmod_init.h Tue Nov 27 15:23:52 2007 +0100 113.3 @@ -0,0 +1,37 @@ 113.4 +// Fmod 113.5 + 113.6 +typedef struct 113.7 + 113.8 +{ 113.9 + 113.10 + int length; 113.11 + 113.12 + int pos; 113.13 + 113.14 + void *data; 113.15 + 113.16 +} MEMFILE; 113.17 + 113.18 + 113.19 + 113.20 +unsigned int memopen(char *); 113.21 + 113.22 +void memclose(unsigned int); 113.23 + 113.24 +int memread(void *, int, unsigned int); 113.25 + 113.26 +void memseek(unsigned int, int, signed char); 113.27 + 113.28 +int memtell(unsigned int); 113.29 + 113.30 + 113.31 + 113.32 +// Windows 113.33 + 113.34 +LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 113.35 + 113.36 +void KillGLWindow(void); 113.37 + 113.38 +BOOL CreateGLWindow(char*, int, int, int, bool); 113.39 + 113.40 + 113.41 \ No newline at end of file
