Forráskód Böngészése

added working templates

alex 25 éve
szülő
commit
4ad1171122

+ 502 - 0
packages/opengl/build2/glaux_w32d.tem

@@ -0,0 +1,502 @@
+{
+  $Id$
+
+  Translation of the GLaux headers for FreePascal
+  Version for static linking in Win32 environment by Alexander Stohr.
+  Latest change: 1999-11-13
+
+  Further information:
+
+  GLaux is an outdated toolkit from SGI and later used by Microsoft.
+}
+{*++ BUILD Version: 0004    // Increment this if a change has global effects
+
+Copyright (c) 1985-95, Microsoft Corporation
+
+Module Name:
+
+    glaux.h
+
+Abstract:
+
+    Procedure declarations, constant definitions and macros for the OpenGL
+    Auxiliary Library.
+
+--*}
+{*
+ * (c) Copyright 1993, Silicon Graphics, Inc.
+ * ALL RIGHTS RESERVED 
+ * Permission to use, copy, modify, and distribute this software for 
+ * any purpose and without fee is hereby granted, provided that the above
+ * copyright notice appear in all copies and that both the copyright notice
+ * and this permission notice appear in supporting documentation, and that 
+ * the name of Silicon Graphics, Inc. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. 
+ *
+ * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
+ * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
+ * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
+ * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
+ * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
+ * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
+ * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
+ * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
+ * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
+ * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * US Government Users Restricted Rights 
+ * Use, duplication, or disclosure by the Government is subject to
+ * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
+ * clause at DFARS 252.227-7013 and/or in similar or successor
+ * clauses in the FAR or the DOD or NASA FAR Supplement.
+ * Unpublished-- rights reserved under the copyright laws of the
+ * United States.  Contractor/manufacturer is Silicon Graphics,
+ * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
+ *
+ * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
+ *}
+
+{$MODE delphi}
+
+{You have to enable Macros (compiler switch "-Sm") for compiling this unit!
+ This is necessary for supporting different platforms with different calling
+ conventions via a single unit.}
+
+{$define WINNT}
+{$define GLauximp}
+{x$define UNICODE}
+
+unit GLaux; { version which does statically linking }
+
+
+interface
+
+{$IFDEF Win32}
+  {$DEFINE glaux_dll := external 'Glauximp.dll'}
+  {$DEFINE glaux_callback := cdecl}
+{$ELSE}
+  {$MESSAGE Unsupported platform.}
+{$ENDIF}
+
+
+USES
+  windows,
+  GL;
+{
+#include <windows.h>
+#include <GL/glu.h>
+}
+
+TYPE
+  LPCSTR  = Pointer;   { pointer on a zero terminated string }
+  LPCWSTR = Pointer;   { pointer on a zero terminated unicode string }
+
+{*
+** ToolKit Window Types
+** In the future, AUX_RGBA may be a combination of both RGB and ALPHA
+*}
+
+const
+    AUX_RGB             = 0;
+    AUX_RGBA            = AUX_RGB;
+    AUX_INDEX           = 1;
+    AUX_SINGLE          = 0;
+    AUX_DOUBLE          = 2;
+    AUX_DIRECT          = 0;
+    AUX_INDIRECT        = 4;
+
+    AUX_ACCUM           = 8;
+    AUX_ALPHA           = 16;
+    AUX_DEPTH24         = 32;      {* 24-bit depth buffer *}
+    AUX_STENCIL         = 64;
+    AUX_AUX             = 128;
+    AUX_DEPTH16         = 256;     {* 16-bit depth buffer *}
+    AUX_FIXED_332_PAL   = 512;
+    AUX_DEPTH           = AUX_DEPTH16; {* default is 16-bit depth buffer *}
+
+{*
+** Window Masks
+*}
+
+{ These have been macros and were converted to boolean funtions }
+FUNCTION AUX_WIND_IS_RGB            (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_IS_INDEX          (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_IS_SINGLE         (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_IS_DOUBLE         (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_IS_INDIRECT       (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_IS_DIRECT         (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_HAS_ACCUM         (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_HAS_ALPHA         (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_HAS_DEPTH         (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_HAS_STENCIL       (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_USES_FIXED_332_PAL(x : DWORD) : BOOLEAN;
+
+{*
+** ToolKit Event Structure
+*}
+type
+    AUX_EVENTREC = RECORD
+    {BEGIN}
+        event : GLint;
+        data  : ARRAY[0..3] OF GLint;
+    END;
+
+{*
+** ToolKit Event Types
+*}
+CONST
+    AUX_EXPOSE      = 1;
+    AUX_CONFIG      = 2;
+    AUX_DRAW        = 4;
+    AUX_KEYEVENT    = 8;
+    AUX_MOUSEDOWN   = 16;
+    AUX_MOUSEUP     = 32;
+    AUX_MOUSELOC    = 64;
+
+{*
+** Toolkit Event Data Indices
+*}
+    AUX_WINDOWX             = 0;
+    AUX_WINDOWY             = 1;
+    AUX_MOUSEX              = 0;
+    AUX_MOUSEY              = 1;
+    AUX_MOUSESTATUS         = 3;
+    AUX_KEY                 = 0;
+    AUX_KEYSTATUS           = 1;
+
+{*
+** ToolKit Event Status Messages
+*}
+    AUX_LEFTBUTTON          = 1;
+    AUX_RIGHTBUTTON         = 2;
+    AUX_MIDDLEBUTTON        = 4;
+    AUX_SHIFT               = 1;
+    AUX_CONTROL             = 2;
+
+{*
+** ToolKit Key Codes
+*}
+    AUX_RETURN              = #$0D;
+    AUX_ESCAPE              = #$1B;
+    AUX_SPACE               = #$20;
+    AUX_LEFT                = #$25;
+    AUX_UP                  = #$26;
+    AUX_RIGHT               = #$27;
+    AUX_DOWN                = #$28;
+    AUX_A                   = 'A';
+    AUX_B                   = 'B';
+    AUX_C                   = 'C';
+    AUX_D                   = 'D';
+    AUX_E                   = 'E';
+    AUX_F                   = 'F';
+    AUX_G                   = 'G';
+    AUX_H                   = 'H';
+    AUX_I                   = 'I';
+    AUX_J                   = 'J';
+    AUX_K                   = 'K';
+    AUX_L                   = 'L';
+    AUX_M                   = 'M';
+    AUX_N                   = 'N';
+    AUX_O                   = 'O';
+    AUX_P                   = 'P';
+    AUX_Q                   = 'Q';
+    AUX_R                   = 'R';
+    AUX_S                   = 'S';
+    AUX_T                   = 'T';
+    AUX_U                   = 'U';
+    AUX_V                   = 'V';
+    AUX_W                   = 'W';
+    AUX_X                   = 'X';
+    AUX_Y                   = 'Y';
+    AUX_Z                   = 'Z';
+    AUX_a_                  = 'a';
+    AUX_b_                  = 'b';
+    AUX_c_                  = 'c';
+    AUX_d_                  = 'd';
+    AUX_e_                  = 'e';
+    AUX_f_                  = 'f';
+    AUX_g_                  = 'g';
+    AUX_h_                  = 'h';
+    AUX_i_                  = 'i';
+    AUX_j_                  = 'j';
+    AUX_k_                  = 'k';
+    AUX_l_                  = 'l';
+    AUX_m_                  = 'm';
+    AUX_n_                  = 'n';
+    AUX_o_                  = 'o';
+    AUX_p_                  = 'p';
+    AUX_q_                  = 'q';
+    AUX_r_                  = 'r';
+    AUX_s_                  = 's';
+    AUX_t_                  = 't';
+    AUX_u_                  = 'u';
+    AUX_v_                  = 'v';
+    AUX_w_                  = 'w';
+    AUX_x_                  = 'x';
+    AUX_y_                  = 'y';
+    AUX_z_                  = 'z';
+    AUX_0                   = '0';
+    AUX_1                   = '1';
+    AUX_2                   = '2';
+    AUX_3                   = '3';
+    AUX_4                   = '4';
+    AUX_5                   = '5';
+    AUX_6                   = '6';
+    AUX_7                   = '7';
+    AUX_8                   = '8';
+    AUX_9                   = '9';
+
+{*
+** ToolKit Gets and Sets
+*}
+    AUX_FD                  = 1;  {* return fd (long) *}
+    AUX_COLORMAP            = 3;  {* pass buf of r, g and b (unsigned char) *}
+    AUX_GREYSCALEMAP        = 4;
+    AUX_FOGMAP              = 5;  {* pass fog and color bits (long) *}
+    AUX_ONECOLOR            = 6;  {* pass index, r, g, and b (long) *}
+
+{*
+** Color Macros
+*}
+
+    AUX_BLACK               = 0;
+    AUX_RED                 = 13;
+    AUX_GREEN               = 14;
+    AUX_YELLOW              = 15;
+    AUX_BLUE                = 16;
+    AUX_MAGENTA             = 17;
+    AUX_CYAN                = 18;
+    AUX_WHITE               = 19;
+
+{ this was a macro and is now a procedure }
+{ PROCEDURE AUX_SETCOLOR(x, y); - TODO }
+
+{*
+** RGB Image Structure
+*}
+
+type
+    AUX_RGBImageRec = RECORD
+    {BEGIN}
+        sizeX, sizeY : GLint;
+        data : ^BYTE;
+    END;
+    pAUX_RGBImageRec = ^AUX_RGBImageRec;
+
+{*
+** Prototypes
+*}
+
+Procedure auxInitDisplayMode(mode:GLenum); glaux_dll;
+Procedure auxInitPosition(x,y,w,h:Integer); glaux_dll;
+
+{$ifndef WINNT}
+FUNCTION  auxInitWindow(name:LPCSTR)  : GLenum; glaux_dll;
+{$else}
+{$ifdef UNICODE }
+FUNCTION  auxInitWindow (name:LPCWSTR) : GLenum; glaux_dll name 'auxInitWindowW';
+{$else}
+FUNCTION  auxInitWindow (name:LPCSTR)  : GLenum; glaux_dll name 'auxInitWindowA';
+{$endif}
+FUNCTION  auxInitWindowA(name:LPCSTR)  : GLenum; glaux_dll;
+FUNCTION  auxInitWindowW(name:LPCWSTR) : GLenum; glaux_dll;
+{$endif}
+
+PROCEDURE auxCloseWindow; glaux_dll;
+PROCEDURE auxQuit;        glaux_dll;
+PROCEDURE auxSwapBuffers; glaux_dll;
+
+{ callbacks }
+type
+  TAUXMAINPROC    = PROCEDURE;                           glaux_callback;
+  TAUXEXPOSEPROC  = PROCEDURE(w, h : integer);           glaux_callback;
+  TAUXRESHAPEPROC = PROCEDURE(w, h : GLsizei);           glaux_callback;
+  TAUXIDLEPROC    = PROCEDURE;                           glaux_callback;
+  TAUXKEYPROC     = PROCEDURE;                           glaux_callback;
+  TAUXMOUSEPROC   = PROCEDURE(VAR event : AUX_EVENTREC); glaux_callback;
+
+{ callback setup routines }
+PROCEDURE auxMainLoop   (func : TAUXMAINPROC); glaux_dll;
+PROCEDURE auxExposeFunc (func : TAUXEXPOSEPROC); glaux_dll;
+PROCEDURE auxReshapeFunc(func : TAUXRESHAPEPROC); glaux_dll;
+PROCEDURE auxIdleFunc   (func : TAUXIDLEPROC); glaux_dll;
+PROCEDURE auxKeyFunc    (val : integer; func : TAUXKEYPROC); glaux_dll;
+PROCEDURE auxMouseFunc  (v1, v2 :integer; func : TAUXMOUSEPROC); glaux_dll;
+
+FUNCTION  auxGetColorMapSize : integer; glaux_dll;
+PROCEDURE auxGetMouseLoc(var x, y : integer); glaux_dll;
+PROCEDURE auxSetOneColor(id : integer; r, g, b : GLfloat); glaux_dll;
+PROCEDURE auxSetFogRamp(v1, v2 : integer); glaux_dll;
+PROCEDURE auxSetGreyRamp; glaux_dll;
+PROCEDURE auxSetRGBMap(id : integer; var map : GLfloat); glaux_dll;
+
+{$ifndef WINNT}
+FUNCTION auxRGBImageLoad(name : LPCSTR) : pAUX_RGBImageRec; glaux_dll;
+{$else}
+{$ifndef GLAUXIMP}{ not present in GLauximp.dll }
+{$ifdef UNICODE}
+FUNCTION auxRGBImageLoad (name : LPCWSTR): pAUX_RGBImageRec; glaux_dll name 'auxRGBImageLoadW';
+{$else}
+FUNCTION auxRGBImageLoad (name : LPCSTR) : pAUX_RGBImageRec; glaux_dll name 'auxRGBImageLoadA';
+{$endif}
+FUNCTION auxRGBImageLoadA(name : LPCSTR) : pAUX_RGBImageRec; glaux_dll;
+FUNCTION auxRGBImageLoadW(name : LPCWSTR): pAUX_RGBImageRec; glaux_dll;
+{$endif}
+{$endif}
+
+{$ifndef WINNT}
+{ this function is Windows specific! }
+FUNCTION auxDIBImageLoad(name : LPCSTR) : pAUX_RGBImageRec; glaux_dll;
+{$else}
+{$ifndef GLAUXIMP}{ not present in GLauximp.dll }
+{$ifdef UNICODE }
+FUNCTION auxDIBImageLoad (name : LPCWSTR): pAUX_RGBImageRec; glaux_dll name 'auxDIBImageLoadW';
+{$else}
+FUNCTION auxDIBImageLoad (name : LPCSTR) : pAUX_RGBImageRec; glaux_dll name 'auxDIBImageLoadA';
+{$endif}
+FUNCTION auxDIBImageLoadA(name : LPCSTR) : pAUX_RGBImageRec; glaux_dll;
+FUNCTION auxDIBImageLoadW(name : LPCWSTR): pAUX_RGBImageRec; glaux_dll;
+{$endif}
+{$endif}
+
+PROCEDURE auxCreateFont; glaux_dll;
+
+{$ifndef WINNT}
+PROCEDURE auxDrawStr (name : LPCSTR);  glaux_dll;
+{$else}
+{$ifndef GLAUXIMP}{ not present in GLauximp.dll }
+{$ifdef UNICODE }
+PROCEDURE auxDrawStr (name : LPCWSTR); glaux_dll name 'auxDrawStrW';
+{$else}
+PROCEDURE auxDrawStr (name : LPCSTR);  glaux_dll name 'auxDrawStrA';
+{$endif}
+PROCEDURE auxDrawStrA(name : LPCSTR);  glaux_dll;
+PROCEDURE auxDrawStrW(name : LPCWSTR); glaux_dll;
+{$endif}
+{$endif}
+
+PROCEDURE auxWireSphere(v : GLdouble); glaux_dll;
+PROCEDURE auxSolidSphere(v : GLdouble); glaux_dll;
+PROCEDURE auxWireCube(v : GLdouble); glaux_dll;
+PROCEDURE auxSolidCube(v : GLdouble); glaux_dll;
+PROCEDURE auxWireBox(v1, v2, v3 : GLdouble); glaux_dll;
+PROCEDURE auxSolidBox(v1, v2, v3 : GLdouble); glaux_dll;
+PROCEDURE auxWireTorus(v1, v2 : GLdouble); glaux_dll;
+PROCEDURE auxSolidTorus(v1, v2 : GLdouble); glaux_dll;
+PROCEDURE auxWireCylinder(v1, v2 : GLdouble); glaux_dll;
+PROCEDURE auxSolidCylinder(v1, v2 :  GLdouble); glaux_dll;
+PROCEDURE auxWireIcosahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxSolidIcosahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxWireOctahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxSolidOctahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxWireTetrahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxSolidTetrahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxWireDodecahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxSolidDodecahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxWireCone(v1, v2 : GLdouble); glaux_dll;
+PROCEDURE auxSolidCone(v1, v2 : GLdouble); glaux_dll;
+PROCEDURE auxWireTeapot(v : GLdouble); glaux_dll;
+PROCEDURE auxSolidTeapot(v: GLdouble); glaux_dll;
+
+{*
+** Window specific functions
+** hwnd, hdc, and hglrc valid after auxInitWindow()
+*}
+FUNCTION  auxGetHWND : HWND; glaux_dll;
+FUNCTION  auxGetHDC : HDC; glaux_dll;
+FUNCTION  auxGetHGLRC : HGLRC; glaux_dll;
+
+{*
+** Viewperf support functions and constants
+*}
+{* Display Mode Selection Criteria *}
+
+CONST { was an unnamed enum }
+    AUX_USE_ID                  = 1;
+    AUX_EXACT_MATCH             = 2;
+    AUX_MINIMUM_CRITERIA        = 3;
+
+PROCEDURE auxInitDisplayModePolicy(val : GLenum); glaux_dll;
+FUNCTION  auxInitDisplayModeID(val : GLint) : GLenum; glaux_dll;
+FUNCTION  auxGetDisplayModePolicy : GLenum; glaux_dll;
+FUNCTION  auxGetDisplayModeID : GLint; glaux_dll;
+FUNCTION  auxGetDisplayMode : GLenum; glaux_dll;
+
+
+implementation
+
+{ these functions are resolved macros -
+  they should be "inline" if compile can do this }
+
+FUNCTION AUX_WIND_IS_RGB(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_IS_RGB := ((x AND AUX_INDEX) = 0);
+END;
+
+FUNCTION AUX_WIND_IS_INDEX(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_IS_INDEX := ((x AND AUX_INDEX) <> 0);
+END;
+
+FUNCTION AUX_WIND_IS_SINGLE(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_IS_SINGLE := ((x AND AUX_DOUBLE) = 0);
+END;
+
+FUNCTION AUX_WIND_IS_DOUBLE(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_IS_DOUBLE := ((x AND AUX_DOUBLE) <> 0);
+END;
+
+FUNCTION AUX_WIND_IS_INDIRECT(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_IS_INDIRECT := ((x AND AUX_INDIRECT) <> 0);
+END;
+
+FUNCTION AUX_WIND_IS_DIRECT(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_IS_DIRECT := ((x AND AUX_INDIRECT) = 0);
+END;
+
+FUNCTION AUX_WIND_HAS_ACCUM(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_HAS_ACCUM := ((x AND AUX_ACCUM) <> 0);
+END;
+
+FUNCTION AUX_WIND_HAS_ALPHA(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_HAS_ALPHA := ((x AND AUX_ALPHA) <> 0);
+END;
+
+FUNCTION AUX_WIND_HAS_DEPTH(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_HAS_DEPTH := ((x AND (AUX_DEPTH24 OR AUX_DEPTH16)) <> 0);
+END;
+
+FUNCTION AUX_WIND_HAS_STENCIL(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_HAS_STENCIL := ((x AND AUX_STENCIL) <> 0);
+END;
+
+FUNCTION AUX_WIND_USES_FIXED_332_PAL(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_USES_FIXED_332_PAL := ((x AND AUX_FIXED_332_PAL) <> 0);
+END;
+
+{extern float auxRGBMap[20][3];
+
+PROCEDURE AUX_SETCOLOR(x, y);
+BEGIN
+  IF (AUX_WIND_IS_RGB((x))
+  THEN glColor3fv(auxRGBMap[y])
+  ELSE glIndexf(y));
+END;
+ - TODO}
+
+
+{begin{of init}
+end.

+ 502 - 0
packages/opengl/build2/glaux_w32s.tem

@@ -0,0 +1,502 @@
+{
+  $Id$
+
+  Translation of the GLaux headers for FreePascal
+  Version for static linking in Win32 environment by Alexander Stohr.
+  Latest change: 1999-11-13
+
+  Further information:
+
+  GLaux is an outdated toolkit from SGI and later used by Microsoft.
+}
+{*++ BUILD Version: 0004    // Increment this if a change has global effects
+
+Copyright (c) 1985-95, Microsoft Corporation
+
+Module Name:
+
+    glaux.h
+
+Abstract:
+
+    Procedure declarations, constant definitions and macros for the OpenGL
+    Auxiliary Library.
+
+--*}
+{*
+ * (c) Copyright 1993, Silicon Graphics, Inc.
+ * ALL RIGHTS RESERVED 
+ * Permission to use, copy, modify, and distribute this software for 
+ * any purpose and without fee is hereby granted, provided that the above
+ * copyright notice appear in all copies and that both the copyright notice
+ * and this permission notice appear in supporting documentation, and that 
+ * the name of Silicon Graphics, Inc. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. 
+ *
+ * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
+ * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
+ * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
+ * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
+ * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
+ * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
+ * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
+ * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
+ * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
+ * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
+ * 
+ * US Government Users Restricted Rights 
+ * Use, duplication, or disclosure by the Government is subject to
+ * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
+ * clause at DFARS 252.227-7013 and/or in similar or successor
+ * clauses in the FAR or the DOD or NASA FAR Supplement.
+ * Unpublished-- rights reserved under the copyright laws of the
+ * United States.  Contractor/manufacturer is Silicon Graphics,
+ * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
+ *
+ * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
+ *}
+
+{$MODE delphi}
+
+{You have to enable Macros (compiler switch "-Sm") for compiling this unit!
+ This is necessary for supporting different platforms with different calling
+ conventions via a single unit.}
+
+{$define WINNT}
+{$define GLauximp}
+{x$define UNICODE}
+
+unit GLaux; { version which does statically linking }
+
+
+interface
+
+{$IFDEF Win32}
+  {$DEFINE glaux_dll := external 'Glauximp.dll'}
+  {$DEFINE glaux_callback := cdecl}
+{$ELSE}
+  {$MESSAGE Unsupported platform.}
+{$ENDIF}
+
+
+USES
+  windows,
+  GL;
+{
+#include <windows.h>
+#include <GL/glu.h>
+}
+
+TYPE
+  LPCSTR  = Pointer;   { pointer on a zero terminated string }
+  LPCWSTR = Pointer;   { pointer on a zero terminated unicode string }
+
+{*
+** ToolKit Window Types
+** In the future, AUX_RGBA may be a combination of both RGB and ALPHA
+*}
+
+const
+    AUX_RGB             = 0;
+    AUX_RGBA            = AUX_RGB;
+    AUX_INDEX           = 1;
+    AUX_SINGLE          = 0;
+    AUX_DOUBLE          = 2;
+    AUX_DIRECT          = 0;
+    AUX_INDIRECT        = 4;
+
+    AUX_ACCUM           = 8;
+    AUX_ALPHA           = 16;
+    AUX_DEPTH24         = 32;      {* 24-bit depth buffer *}
+    AUX_STENCIL         = 64;
+    AUX_AUX             = 128;
+    AUX_DEPTH16         = 256;     {* 16-bit depth buffer *}
+    AUX_FIXED_332_PAL   = 512;
+    AUX_DEPTH           = AUX_DEPTH16; {* default is 16-bit depth buffer *}
+
+{*
+** Window Masks
+*}
+
+{ These have been macros and were converted to boolean funtions }
+FUNCTION AUX_WIND_IS_RGB            (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_IS_INDEX          (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_IS_SINGLE         (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_IS_DOUBLE         (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_IS_INDIRECT       (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_IS_DIRECT         (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_HAS_ACCUM         (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_HAS_ALPHA         (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_HAS_DEPTH         (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_HAS_STENCIL       (x : DWORD) : BOOLEAN;
+FUNCTION AUX_WIND_USES_FIXED_332_PAL(x : DWORD) : BOOLEAN;
+
+{*
+** ToolKit Event Structure
+*}
+type
+    AUX_EVENTREC = RECORD
+    {BEGIN}
+        event : GLint;
+        data  : ARRAY[0..3] OF GLint;
+    END;
+
+{*
+** ToolKit Event Types
+*}
+CONST
+    AUX_EXPOSE      = 1;
+    AUX_CONFIG      = 2;
+    AUX_DRAW        = 4;
+    AUX_KEYEVENT    = 8;
+    AUX_MOUSEDOWN   = 16;
+    AUX_MOUSEUP     = 32;
+    AUX_MOUSELOC    = 64;
+
+{*
+** Toolkit Event Data Indices
+*}
+    AUX_WINDOWX             = 0;
+    AUX_WINDOWY             = 1;
+    AUX_MOUSEX              = 0;
+    AUX_MOUSEY              = 1;
+    AUX_MOUSESTATUS         = 3;
+    AUX_KEY                 = 0;
+    AUX_KEYSTATUS           = 1;
+
+{*
+** ToolKit Event Status Messages
+*}
+    AUX_LEFTBUTTON          = 1;
+    AUX_RIGHTBUTTON         = 2;
+    AUX_MIDDLEBUTTON        = 4;
+    AUX_SHIFT               = 1;
+    AUX_CONTROL             = 2;
+
+{*
+** ToolKit Key Codes
+*}
+    AUX_RETURN              = #$0D;
+    AUX_ESCAPE              = #$1B;
+    AUX_SPACE               = #$20;
+    AUX_LEFT                = #$25;
+    AUX_UP                  = #$26;
+    AUX_RIGHT               = #$27;
+    AUX_DOWN                = #$28;
+    AUX_A                   = 'A';
+    AUX_B                   = 'B';
+    AUX_C                   = 'C';
+    AUX_D                   = 'D';
+    AUX_E                   = 'E';
+    AUX_F                   = 'F';
+    AUX_G                   = 'G';
+    AUX_H                   = 'H';
+    AUX_I                   = 'I';
+    AUX_J                   = 'J';
+    AUX_K                   = 'K';
+    AUX_L                   = 'L';
+    AUX_M                   = 'M';
+    AUX_N                   = 'N';
+    AUX_O                   = 'O';
+    AUX_P                   = 'P';
+    AUX_Q                   = 'Q';
+    AUX_R                   = 'R';
+    AUX_S                   = 'S';
+    AUX_T                   = 'T';
+    AUX_U                   = 'U';
+    AUX_V                   = 'V';
+    AUX_W                   = 'W';
+    AUX_X                   = 'X';
+    AUX_Y                   = 'Y';
+    AUX_Z                   = 'Z';
+    AUX_a_                  = 'a';
+    AUX_b_                  = 'b';
+    AUX_c_                  = 'c';
+    AUX_d_                  = 'd';
+    AUX_e_                  = 'e';
+    AUX_f_                  = 'f';
+    AUX_g_                  = 'g';
+    AUX_h_                  = 'h';
+    AUX_i_                  = 'i';
+    AUX_j_                  = 'j';
+    AUX_k_                  = 'k';
+    AUX_l_                  = 'l';
+    AUX_m_                  = 'm';
+    AUX_n_                  = 'n';
+    AUX_o_                  = 'o';
+    AUX_p_                  = 'p';
+    AUX_q_                  = 'q';
+    AUX_r_                  = 'r';
+    AUX_s_                  = 's';
+    AUX_t_                  = 't';
+    AUX_u_                  = 'u';
+    AUX_v_                  = 'v';
+    AUX_w_                  = 'w';
+    AUX_x_                  = 'x';
+    AUX_y_                  = 'y';
+    AUX_z_                  = 'z';
+    AUX_0                   = '0';
+    AUX_1                   = '1';
+    AUX_2                   = '2';
+    AUX_3                   = '3';
+    AUX_4                   = '4';
+    AUX_5                   = '5';
+    AUX_6                   = '6';
+    AUX_7                   = '7';
+    AUX_8                   = '8';
+    AUX_9                   = '9';
+
+{*
+** ToolKit Gets and Sets
+*}
+    AUX_FD                  = 1;  {* return fd (long) *}
+    AUX_COLORMAP            = 3;  {* pass buf of r, g and b (unsigned char) *}
+    AUX_GREYSCALEMAP        = 4;
+    AUX_FOGMAP              = 5;  {* pass fog and color bits (long) *}
+    AUX_ONECOLOR            = 6;  {* pass index, r, g, and b (long) *}
+
+{*
+** Color Macros
+*}
+
+    AUX_BLACK               = 0;
+    AUX_RED                 = 13;
+    AUX_GREEN               = 14;
+    AUX_YELLOW              = 15;
+    AUX_BLUE                = 16;
+    AUX_MAGENTA             = 17;
+    AUX_CYAN                = 18;
+    AUX_WHITE               = 19;
+
+{ this was a macro and is now a procedure }
+{ PROCEDURE AUX_SETCOLOR(x, y); - TODO }
+
+{*
+** RGB Image Structure
+*}
+
+type
+    AUX_RGBImageRec = RECORD
+    {BEGIN}
+        sizeX, sizeY : GLint;
+        data : ^BYTE;
+    END;
+    pAUX_RGBImageRec = ^AUX_RGBImageRec;
+
+{*
+** Prototypes
+*}
+
+Procedure auxInitDisplayMode(mode:GLenum); glaux_dll;
+Procedure auxInitPosition(x,y,w,h:Integer); glaux_dll;
+
+{$ifndef WINNT}
+FUNCTION  auxInitWindow(name:LPCSTR)  : GLenum; glaux_dll;
+{$else}
+{$ifdef UNICODE }
+FUNCTION  auxInitWindow (name:LPCWSTR) : GLenum; glaux_dll name 'auxInitWindowW';
+{$else}
+FUNCTION  auxInitWindow (name:LPCSTR)  : GLenum; glaux_dll name 'auxInitWindowA';
+{$endif}
+FUNCTION  auxInitWindowA(name:LPCSTR)  : GLenum; glaux_dll;
+FUNCTION  auxInitWindowW(name:LPCWSTR) : GLenum; glaux_dll;
+{$endif}
+
+PROCEDURE auxCloseWindow; glaux_dll;
+PROCEDURE auxQuit;        glaux_dll;
+PROCEDURE auxSwapBuffers; glaux_dll;
+
+{ callbacks }
+type
+  TAUXMAINPROC    = PROCEDURE;                           glaux_callback;
+  TAUXEXPOSEPROC  = PROCEDURE(w, h : integer);           glaux_callback;
+  TAUXRESHAPEPROC = PROCEDURE(w, h : GLsizei);           glaux_callback;
+  TAUXIDLEPROC    = PROCEDURE;                           glaux_callback;
+  TAUXKEYPROC     = PROCEDURE;                           glaux_callback;
+  TAUXMOUSEPROC   = PROCEDURE(VAR event : AUX_EVENTREC); glaux_callback;
+
+{ callback setup routines }
+PROCEDURE auxMainLoop   (func : TAUXMAINPROC); glaux_dll;
+PROCEDURE auxExposeFunc (func : TAUXEXPOSEPROC); glaux_dll;
+PROCEDURE auxReshapeFunc(func : TAUXRESHAPEPROC); glaux_dll;
+PROCEDURE auxIdleFunc   (func : TAUXIDLEPROC); glaux_dll;
+PROCEDURE auxKeyFunc    (val : integer; func : TAUXKEYPROC); glaux_dll;
+PROCEDURE auxMouseFunc  (v1, v2 :integer; func : TAUXMOUSEPROC); glaux_dll;
+
+FUNCTION  auxGetColorMapSize : integer; glaux_dll;
+PROCEDURE auxGetMouseLoc(var x, y : integer); glaux_dll;
+PROCEDURE auxSetOneColor(id : integer; r, g, b : GLfloat); glaux_dll;
+PROCEDURE auxSetFogRamp(v1, v2 : integer); glaux_dll;
+PROCEDURE auxSetGreyRamp; glaux_dll;
+PROCEDURE auxSetRGBMap(id : integer; var map : GLfloat); glaux_dll;
+
+{$ifndef WINNT}
+FUNCTION auxRGBImageLoad(name : LPCSTR) : pAUX_RGBImageRec; glaux_dll;
+{$else}
+{$ifndef GLAUXIMP}{ not present in GLauximp.dll }
+{$ifdef UNICODE}
+FUNCTION auxRGBImageLoad (name : LPCWSTR): pAUX_RGBImageRec; glaux_dll name 'auxRGBImageLoadW';
+{$else}
+FUNCTION auxRGBImageLoad (name : LPCSTR) : pAUX_RGBImageRec; glaux_dll name 'auxRGBImageLoadA';
+{$endif}
+FUNCTION auxRGBImageLoadA(name : LPCSTR) : pAUX_RGBImageRec; glaux_dll;
+FUNCTION auxRGBImageLoadW(name : LPCWSTR): pAUX_RGBImageRec; glaux_dll;
+{$endif}
+{$endif}
+
+{$ifndef WINNT}
+{ this function is Windows specific! }
+FUNCTION auxDIBImageLoad(name : LPCSTR) : pAUX_RGBImageRec; glaux_dll;
+{$else}
+{$ifndef GLAUXIMP}{ not present in GLauximp.dll }
+{$ifdef UNICODE }
+FUNCTION auxDIBImageLoad (name : LPCWSTR): pAUX_RGBImageRec; glaux_dll name 'auxDIBImageLoadW';
+{$else}
+FUNCTION auxDIBImageLoad (name : LPCSTR) : pAUX_RGBImageRec; glaux_dll name 'auxDIBImageLoadA';
+{$endif}
+FUNCTION auxDIBImageLoadA(name : LPCSTR) : pAUX_RGBImageRec; glaux_dll;
+FUNCTION auxDIBImageLoadW(name : LPCWSTR): pAUX_RGBImageRec; glaux_dll;
+{$endif}
+{$endif}
+
+PROCEDURE auxCreateFont; glaux_dll;
+
+{$ifndef WINNT}
+PROCEDURE auxDrawStr (name : LPCSTR);  glaux_dll;
+{$else}
+{$ifndef GLAUXIMP}{ not present in GLauximp.dll }
+{$ifdef UNICODE }
+PROCEDURE auxDrawStr (name : LPCWSTR); glaux_dll name 'auxDrawStrW';
+{$else}
+PROCEDURE auxDrawStr (name : LPCSTR);  glaux_dll name 'auxDrawStrA';
+{$endif}
+PROCEDURE auxDrawStrA(name : LPCSTR);  glaux_dll;
+PROCEDURE auxDrawStrW(name : LPCWSTR); glaux_dll;
+{$endif}
+{$endif}
+
+PROCEDURE auxWireSphere(v : GLdouble); glaux_dll;
+PROCEDURE auxSolidSphere(v : GLdouble); glaux_dll;
+PROCEDURE auxWireCube(v : GLdouble); glaux_dll;
+PROCEDURE auxSolidCube(v : GLdouble); glaux_dll;
+PROCEDURE auxWireBox(v1, v2, v3 : GLdouble); glaux_dll;
+PROCEDURE auxSolidBox(v1, v2, v3 : GLdouble); glaux_dll;
+PROCEDURE auxWireTorus(v1, v2 : GLdouble); glaux_dll;
+PROCEDURE auxSolidTorus(v1, v2 : GLdouble); glaux_dll;
+PROCEDURE auxWireCylinder(v1, v2 : GLdouble); glaux_dll;
+PROCEDURE auxSolidCylinder(v1, v2 :  GLdouble); glaux_dll;
+PROCEDURE auxWireIcosahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxSolidIcosahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxWireOctahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxSolidOctahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxWireTetrahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxSolidTetrahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxWireDodecahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxSolidDodecahedron(v : GLdouble); glaux_dll;
+PROCEDURE auxWireCone(v1, v2 : GLdouble); glaux_dll;
+PROCEDURE auxSolidCone(v1, v2 : GLdouble); glaux_dll;
+PROCEDURE auxWireTeapot(v : GLdouble); glaux_dll;
+PROCEDURE auxSolidTeapot(v: GLdouble); glaux_dll;
+
+{*
+** Window specific functions
+** hwnd, hdc, and hglrc valid after auxInitWindow()
+*}
+FUNCTION  auxGetHWND : HWND; glaux_dll;
+FUNCTION  auxGetHDC : HDC; glaux_dll;
+FUNCTION  auxGetHGLRC : HGLRC; glaux_dll;
+
+{*
+** Viewperf support functions and constants
+*}
+{* Display Mode Selection Criteria *}
+
+CONST { was an unnamed enum }
+    AUX_USE_ID                  = 1;
+    AUX_EXACT_MATCH             = 2;
+    AUX_MINIMUM_CRITERIA        = 3;
+
+PROCEDURE auxInitDisplayModePolicy(val : GLenum); glaux_dll;
+FUNCTION  auxInitDisplayModeID(val : GLint) : GLenum; glaux_dll;
+FUNCTION  auxGetDisplayModePolicy : GLenum; glaux_dll;
+FUNCTION  auxGetDisplayModeID : GLint; glaux_dll;
+FUNCTION  auxGetDisplayMode : GLenum; glaux_dll;
+
+
+implementation
+
+{ these functions are resolved macros -
+  they should be "inline" if compile can do this }
+
+FUNCTION AUX_WIND_IS_RGB(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_IS_RGB := ((x AND AUX_INDEX) = 0);
+END;
+
+FUNCTION AUX_WIND_IS_INDEX(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_IS_INDEX := ((x AND AUX_INDEX) <> 0);
+END;
+
+FUNCTION AUX_WIND_IS_SINGLE(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_IS_SINGLE := ((x AND AUX_DOUBLE) = 0);
+END;
+
+FUNCTION AUX_WIND_IS_DOUBLE(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_IS_DOUBLE := ((x AND AUX_DOUBLE) <> 0);
+END;
+
+FUNCTION AUX_WIND_IS_INDIRECT(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_IS_INDIRECT := ((x AND AUX_INDIRECT) <> 0);
+END;
+
+FUNCTION AUX_WIND_IS_DIRECT(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_IS_DIRECT := ((x AND AUX_INDIRECT) = 0);
+END;
+
+FUNCTION AUX_WIND_HAS_ACCUM(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_HAS_ACCUM := ((x AND AUX_ACCUM) <> 0);
+END;
+
+FUNCTION AUX_WIND_HAS_ALPHA(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_HAS_ALPHA := ((x AND AUX_ALPHA) <> 0);
+END;
+
+FUNCTION AUX_WIND_HAS_DEPTH(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_HAS_DEPTH := ((x AND (AUX_DEPTH24 OR AUX_DEPTH16)) <> 0);
+END;
+
+FUNCTION AUX_WIND_HAS_STENCIL(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_HAS_STENCIL := ((x AND AUX_STENCIL) <> 0);
+END;
+
+FUNCTION AUX_WIND_USES_FIXED_332_PAL(x : DWORD) : BOOLEAN;
+BEGIN
+  AUX_WIND_USES_FIXED_332_PAL := ((x AND AUX_FIXED_332_PAL) <> 0);
+END;
+
+{extern float auxRGBMap[20][3];
+
+PROCEDURE AUX_SETCOLOR(x, y);
+BEGIN
+  IF (AUX_WIND_IS_RGB((x))
+  THEN glColor3fv(auxRGBMap[y])
+  ELSE glIndexf(y));
+END;
+ - TODO}
+
+
+{begin{of init}
+end.

+ 117 - 0
packages/opengl/build2/glu_w32d.tem

@@ -0,0 +1,117 @@
+{
+  $Id$
+
+  Translation of the Mesa GLU headers for FreePascal
+  Copyright (C) 1999 Sebastian Guenther
+
+
+  Mesa 3-D graphics library
+  Version:  3.0
+  Copyright (C) 1995-1998  Brian Paul
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Library General Public
+  License as published by the Free Software Foundation; either
+  version 2 of the License, or (at your option) any later version.
+    
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Library General Public License for more details.
+    
+  You should have received a copy of the GNU Library General Public
+  License along with this library; if not, write to the Free
+  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+}
+
+{$MODE delphi}	// objfpc would not work because of direct proc var assignments
+
+{You have to enable Macros (compiler switch "-Sm") for compiling this unit!
+ This is necessary for supporting different platforms with different calling
+ conventions via a single unit.}
+
+unit GLU;
+
+interface
+
+{$IFDEF Win32}
+  {$DEFINE glu_dll := }
+  uses Windows, GL;
+{$ELSE}
+  {$MESSAGE Unsupported platform.}
+{$ENDIF}
+
+
+// =======================================================
+//   Unit specific extensions
+// =======================================================
+
+function InitGLUFromLibrary(libname: PChar): Boolean;
+
+
+// determines automatically which libraries to use:
+function InitGLU: Boolean;
+
+
+var
+  GLUInitialized: Boolean;
+
+
+// =======================================================
+//   GLU consts, types and functions
+// =======================================================
+
+%GLUDeclsIF
+
+var
+%GLUProcsPD
+
+
+// =======================================================
+//
+// =======================================================
+
+implementation
+
+type
+  HInstance = LongWord;
+
+var
+  libGLU : HInstance;
+
+function GetProc(handle: HInstance; name: PChar): Pointer;
+begin
+  Result := GetProcAddress(handle, name);
+  if Result = nil then WriteLn('Unresolved: ', name);
+end;
+
+function InitGLUFromLibrary(libname: PChar): Boolean;
+begin
+  Result := False;
+  libGLU := LoadLibrary(libname);
+  if libGLU = 0 then exit;
+
+%GLUProcsPL
+
+  GLUInitialized := True;
+  Result := True;
+end;
+
+
+function InitGLU: Boolean;
+begin
+  Result := InitGLUFromLibrary('glu32.dll');
+end;
+
+
+finalization
+  if libGLU <> 0 then FreeLibrary(libGLU);
+end.
+
+
+{
+  $Log$
+  Revision 1.1  2000-05-31 00:35:14  alex
+  added working templates
+
+}

+ 81 - 0
packages/opengl/build2/glu_w32s.tem

@@ -0,0 +1,81 @@
+{
+  $Id$
+
+  Translation of the Mesa GLU headers for FreePascal
+  Copyright (C) 1999 Sebastian Guenther
+  Version for static linking in Win32 environment.
+  Latest change: 1999-11-11
+
+  Original copyright notice:
+
+  Mesa 3-D graphics library
+  Version:  3.0
+  Copyright (C) 1995-1998  Brian Paul
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Library General Public
+  License as published by the Free Software Foundation; either
+  version 2 of the License, or (at your option) any later version.
+    
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Library General Public License for more details.
+    
+  You should have received a copy of the GNU Library General Public
+  License along with this library; if not, write to the Free
+  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+}
+
+{$MODE delphi}	// objfpc would not work because of direct proc var assignments
+
+{You have to enable Macros (compiler switch "-Sm") for compiling this unit!
+ This is necessary for supporting different platforms with different calling
+ conventions via a single unit.}
+
+unit GLU; // version with static linking
+
+
+interface
+
+{$IFDEF Win32}
+  {$DEFINE glu_dll := external 'glu32.dll'}
+  uses
+    Windows,
+    GL;        { for definition of GL_TRUE/FALS }
+{$ELSE}
+  {$MESSAGE Unsupported platform.}
+{$ENDIF}
+
+// =======================================================
+//   Unit specific extensions
+// =======================================================
+
+// none - no special init required
+
+
+// =======================================================
+//   GLU consts, types and functions
+// =======================================================
+
+%GLUDeclsIF
+
+%GLUProcsPS
+
+// =======================================================
+//
+// =======================================================
+
+implementation
+
+
+{BEGIN{OF INIT}
+end.
+
+
+{
+  $Log$
+  Revision 1.1  2000-05-31 00:35:14  alex
+  added working templates
+
+}