123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- {
- $Id$
- Translation of the GLUT 3.7 headers for Free Pascal, Linux version
- Copyright (C) 1999-2000 Sebastian Guenther, [email protected]
- Copyright (c) Mark J. Kilgard, 1994, 1995, 1996, 1998.
- This program is freely distributable without licensing fees and is
- provided without guarantee or warrantee expressed or implied. This
- program is -not- in the public domain.
- }
- unit GLUT;
- {$MODE delphi}
- interface
- uses GL;
- function InitGLUTFromLibrary(const libname: PChar): Boolean;
- // determines automatically which library to use:
- function InitGLUT: Boolean;
- var
- GLUTInitialized: Boolean;
- { Set the following value to True if you want to have a list of all
- unresolved GLUT functions dumped to the console }
- GLUTDumpUnresolvedFunctions: Boolean;
- %GLUTDecls
- { The following stuff does not exist in the Win32 version: }
- (* commented out because cvars don't work in Delphi mode...
- // Stroke font opaque addresses (use constants instead in source code).
- var
- glutStrokeRoman, glutStrokeMonoRoman: Pointer; cvar; external;
- // Stroke font constants (use these in GLUT program).
- const
- GLUT_STROKE_ROMAN = @glutStrokeRoman;
- GLUT_STROKE_MONO_ROMAN = @glutStrokeMonoRoman;
- // Bitmap font opaque addresses (use constants instead in source code).
- var
- glutBitmap9By15, glutBitmap8By13, glutBitmapTimesRoman10,
- glutBitmapTimesRoman24, glutBitmapHelvetica10, glutBitmapHelvetica12,
- glutBitmapHelvetica18: Pointer; cdecl; external;
- // Bitmap font constants (use these in GLUT program).
- const
- GLUT_BITMAP_9_BY_15 = @glutBitmap9By15;
- GLUT_BITMAP_8_BY_13 = @glutBitmap8By13;
- GLUT_BITMAP_TIMES_ROMAN_10 = @glutBitmapTimesRoman10;
- GLUT_BITMAP_TIMES_ROMAN_24 = @glutBitmapTimesRoman24;
- GLUT_BITMAP_HELVETICA_10 = @glutBitmapHelvetica10;
- GLUT_BITMAP_HELVETICA_12 = @glutBitmapHelvetica12;
- GLUT_BITMAP_HELVETICA_18 = @glutBitmapHelvetica18;*)
- %GLUTProcs1
- implementation
- {$LINKLIB Xmu}
- function dlopen(const AFile: PChar; mode: LongInt): Pointer; external 'dl';
- function dlclose(handle: Pointer): LongInt; external 'dl';
- function dlsym(handle: Pointer; const name: PChar): Pointer; external 'dl';
- function LoadLibrary(const name: PChar): Pointer;
- begin
- Result := dlopen(name, $101 {RTLD_GLOBAL or RTLD_LAZY});
- end;
- procedure FreeLibrary(handle: Pointer);
- begin
- dlclose(handle);
- end;
- function GetProc(handle: Pointer; const name: PChar): Pointer;
- begin
- Result := dlsym(handle, name);
- if not Assigned(Result) and GLUTDumpUnresolvedFunctions then
- WriteLn('Unresolved: ', name);
- end;
- var
- libGLUT: Pointer;
- function InitGLUTFromLibrary(const libname: PChar): Boolean;
- begin
- Result := False;
- libGLUT := LoadLibrary(libname);
- if not Assigned(libGLUT) then
- exit;
- %GLUTProcs2
- GLUTInitialized := True;
- Result := True;
- end;
- function InitGLUT: Boolean;
- begin
- Result := InitGLUTFromLibrary('libglut.so') or InitGLUTFromLibrary('libglut.so.3');
- end;
- finalization
- if Assigned(libGLUT) then
- FreeLibrary(libGLUT);
- end.
|