fpc/packages/opengl/build/glaux_w32d.tem
peter 7039100d0d * new updated version
* gtkglarea unit and demo
  * win32 opengl headers
  * morph3d demo
2000-09-03 21:25:44 +00:00

505 lines
15 KiB
Plaintext

{
$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
{$MACRO ON}
{$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.