From 391d30716d48dc709f6444b19c008e82311623b9 Mon Sep 17 00:00:00 2001 From: eddie-0815 Date: Thu, 1 Nov 2007 19:34:40 +0000 Subject: Mac OS X version compiles and links. I hope I didn't break too many files on windows/linux. Added switches.inc to all files. Changed many IFDEFs. For Windows-only code please use MSWINDOWS instead of WIN32 now. WIN32 is also used by the Mac port. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@546 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/TextGL.pas | 10 +- Game/Code/Classes/UAudio_FFMpeg.pas | 8 +- Game/Code/Classes/UAudio_bass.pas | 20 +- Game/Code/Classes/UCatCovers.pas | 3 + Game/Code/Classes/UCommandLine.pas | 3 + Game/Code/Classes/UCommon.pas | 196 +- Game/Code/Classes/UCore.pas | 985 +- Game/Code/Classes/UCoreModule.pas | 7 +- Game/Code/Classes/UCovers.pas | 4 +- Game/Code/Classes/UDLLManager.pas | 17 +- Game/Code/Classes/UDataBase.pas | 5 +- Game/Code/Classes/UDraw.pas | 8 +- Game/Code/Classes/UFiles.pas | 4 +- Game/Code/Classes/UGraphic.pas | 4 - Game/Code/Classes/UGraphicClasses.pas | 4 - Game/Code/Classes/UHooks.pas | 9 +- Game/Code/Classes/UIni.pas | 4 +- Game/Code/Classes/ULCD.pas | 1 + Game/Code/Classes/ULanguage.pas | 6 +- Game/Code/Classes/ULight.pas | 8 +- Game/Code/Classes/ULog.pas | 10 +- Game/Code/Classes/ULyrics.pas | 4 - Game/Code/Classes/ULyrics_bak.pas | 4 - Game/Code/Classes/UMain.pas | 275 +- Game/Code/Classes/UMedia_dummy.pas | 5 +- Game/Code/Classes/UModules.pas | 3 + Game/Code/Classes/UMusic.pas | 4 - Game/Code/Classes/UParty.pas | 5 +- Game/Code/Classes/UPlaylist.pas | 6 +- Game/Code/Classes/UPliki.pas | 2 + Game/Code/Classes/UPluginInterface.pas | 3 + Game/Code/Classes/URecord.pas | 4 - Game/Code/Classes/UServices.pas | 11 +- Game/Code/Classes/USingNotes.pas | 3 + Game/Code/Classes/USingScores.pas | 8 +- Game/Code/Classes/USkins.pas | 7 +- Game/Code/Classes/USongs.pas | 88 +- Game/Code/Classes/UTextClasses.pas | 3 + Game/Code/Classes/UTexture.pas | 12 +- Game/Code/Classes/UThemes.pas | 4 +- Game/Code/Classes/UTime.pas | 4 +- Game/Code/Classes/UVideo.pas | 4 +- Game/Code/Classes/uPluginLoader.pas | 1582 ++-- Game/Code/MacOSX/Platform.inc | 13 - Game/Code/MacOSX/UltraStarDX.pas | 7 +- Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.mode1 | 423 +- .../MacOSX/UltraStarDX.xcodeproj/eddie.pbxuser | 1083 ++- .../MacOSX/UltraStarDX.xcodeproj/project.pbxproj | 425 +- Game/Code/MacOSX/Wrapper/Graphics.pas | 2 +- Game/Code/MacOSX/Wrapper/JPEG.pas | 4 +- Game/Code/MacOSX/Wrapper/MacClasses.pas | 2 +- Game/Code/MacOSX/Wrapper/Messages.pas | 30 + Game/Code/MacOSX/Wrapper/MidiFile.pas | 2 +- Game/Code/MacOSX/Wrapper/MidiOut.pas | 2 +- Game/Code/MacOSX/Wrapper/OpenGL12.pas | 9397 ++++++++++---------- Game/Code/MacOSX/Wrapper/PNGImage.pas | 2 +- Game/Code/MacOSX/Wrapper/Windows.pas | 306 +- Game/Code/MacOSX/Wrapper/zlportio.pas | 2 +- Game/Code/Menu/UDisplay.pas | 6 +- Game/Code/Menu/UDrawTexture.pas | 3 + Game/Code/Menu/UMenu.pas | 4 +- Game/Code/Menu/UMenuButton.pas | 3 + Game/Code/Menu/UMenuButtonCollection.pas | 3 + Game/Code/Menu/UMenuInteract.pas | 2 + Game/Code/Menu/UMenuSelect.pas | 3 + Game/Code/Menu/UMenuSelectSlide.pas | 4 +- Game/Code/Menu/UMenuStatic.pas | 3 + Game/Code/Menu/UMenuText.pas | 37 +- Game/Code/Screens/UScreenCredits.pas | 4 - Game/Code/Screens/UScreenEdit.pas | 2 + Game/Code/Screens/UScreenEditConvert.pas | 4 - Game/Code/Screens/UScreenEditHeader.pas | 2 + Game/Code/Screens/UScreenEditSub.pas | 4 - Game/Code/Screens/UScreenLevel.pas | 2 + Game/Code/Screens/UScreenLoading.pas | 4 - Game/Code/Screens/UScreenMain.pas | 4 +- Game/Code/Screens/UScreenName.pas | 2 + Game/Code/Screens/UScreenOpen.pas | 2 + Game/Code/Screens/UScreenOptions.pas | 2 + Game/Code/Screens/UScreenOptionsAdvanced.pas | 2 + Game/Code/Screens/UScreenOptionsGame.pas | 2 + Game/Code/Screens/UScreenOptionsGraphics.pas | 2 + Game/Code/Screens/UScreenOptionsLyrics.pas | 2 + Game/Code/Screens/UScreenOptionsRecord.pas | 2 + Game/Code/Screens/UScreenOptionsSound.pas | 2 + Game/Code/Screens/UScreenOptionsThemes.pas | 2 + Game/Code/Screens/UScreenPartyNewRound.pas | 5 +- Game/Code/Screens/UScreenPartyOptions.pas | 4 +- Game/Code/Screens/UScreenPartyPlayer.pas | 2 + Game/Code/Screens/UScreenPartyScore.pas | 2 + Game/Code/Screens/UScreenPartyWin.pas | 2 + Game/Code/Screens/UScreenPopup.pas | 2 + Game/Code/Screens/UScreenScore.pas | 4 +- Game/Code/Screens/UScreenSing.pas | 4 - Game/Code/Screens/UScreenSingModi.pas | 907 +- Game/Code/Screens/UScreenSong.pas | 8 +- Game/Code/Screens/UScreenSongJumpto.pas | 2 + Game/Code/Screens/UScreenSongMenu.pas | 4 +- Game/Code/Screens/UScreenStatDetail.pas | 2 + Game/Code/Screens/UScreenStatMain.pas | 9 +- Game/Code/Screens/UScreenTop5.pas | 5 +- Game/Code/Screens/UScreenWelcome.pas | 2 + Game/Code/UltraStar.dpr | 250 +- Game/Code/lib/FreeImage/FreeBitmap.pas | 1740 ++++ Game/Code/lib/FreeImage/FreeImage.pas | 743 ++ Game/Code/lib/FreeImage/libfreeimage.dylib | Bin 0 -> 3068680 bytes Game/Code/lib/SQLite/SQLite3.pas | 10 + Game/Code/lib/SQLite/SQLiteTable3.pas | 4 +- Game/Code/lib/bass/MacOSX/Bass.pas | 984 ++ Game/Code/switches.inc | 62 +- 110 files changed, 12544 insertions(+), 7384 deletions(-) delete mode 100755 Game/Code/MacOSX/Platform.inc create mode 100644 Game/Code/MacOSX/Wrapper/Messages.pas create mode 100755 Game/Code/lib/FreeImage/FreeBitmap.pas create mode 100755 Game/Code/lib/FreeImage/FreeImage.pas create mode 100755 Game/Code/lib/FreeImage/libfreeimage.dylib create mode 100755 Game/Code/lib/bass/MacOSX/Bass.pas (limited to 'Game') diff --git a/Game/Code/Classes/TextGL.pas b/Game/Code/Classes/TextGL.pas index fbe9a050..af60c4ff 100644 --- a/Game/Code/Classes/TextGL.pas +++ b/Game/Code/Classes/TextGL.pas @@ -2,9 +2,7 @@ unit TextGL; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} +{$I switches.inc} uses OpenGL12, @@ -80,7 +78,7 @@ uses UMain, lcltype, {$ENDIF} SysUtils, - {$IFDEF FPC} + {$IFDEF LAZARUS} LResources, {$ENDIF} UGraphic; @@ -88,7 +86,7 @@ uses UMain, procedure BuildFont; // Build Our Bitmap Font procedure loadfont( aID : integer; aType, aResourceName : String); - {$IFDEF FPC} + {$IFDEF LAZARUS} var lLazRes : TLResource; lResData : TStringStream; @@ -541,7 +539,7 @@ begin end; -{$IFDEF FPC} +{$IFDEF LAZARUS} {$IFDEF win32} initialization {$I UltraStar.lrs} diff --git a/Game/Code/Classes/UAudio_FFMpeg.pas b/Game/Code/Classes/UAudio_FFMpeg.pas index 35822a3b..675dfd3c 100644 --- a/Game/Code/Classes/UAudio_FFMpeg.pas +++ b/Game/Code/Classes/UAudio_FFMpeg.pas @@ -13,9 +13,7 @@ This unit is primarily based upon - interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} +{$I switches.inc} uses Classes, @@ -67,7 +65,7 @@ type implementation uses - {$IFDEF FPC} + {$IFDEF LAZARUS} lclintf, libc, {$ENDIF} @@ -590,7 +588,7 @@ begin len1 := len; - {$ifdef win32} + {$ifdef WIN32} lSrc := PUInt8( integer( laudio_buf ) + audio_buf_index ); CopyMemory(stream, lSrc , len1); {$else} diff --git a/Game/Code/Classes/UAudio_bass.pas b/Game/Code/Classes/UAudio_bass.pas index 985eede5..463a6c7f 100644 --- a/Game/Code/Classes/UAudio_bass.pas +++ b/Game/Code/Classes/UAudio_bass.pas @@ -2,9 +2,7 @@ unit UAudio_bass; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} +{$I switches.inc} uses Classes, @@ -24,7 +22,7 @@ uses Classes, implementation uses - {$IFDEF FPC} + {$IFDEF LAZARUS} lclintf, {$ENDIF} URecord, @@ -111,7 +109,7 @@ var function TAudio_bass.GetName: String; begin - result := 'BASS'; + result := 'BASS'; end; procedure TAudio_bass.InitializePlayback; @@ -637,11 +635,11 @@ initialization writeln( 'UAudio_Bass - Register Input' ); AudioManager.add( IAudioInput( singleton_MusicBass ) ); -finalization - writeln( 'UAudio_Bass - UnRegister Playback' ); - AudioManager.Remove( IAudioPlayback( singleton_MusicBass ) ); - - writeln( 'UAudio_Bass - UnRegister Input' ); - AudioManager.Remove( IAudioInput( singleton_MusicBass ) ); +finalization + writeln( 'UAudio_Bass - UnRegister Playback' ); + AudioManager.Remove( IAudioPlayback( singleton_MusicBass ) ); + + writeln( 'UAudio_Bass - UnRegister Input' ); + AudioManager.Remove( IAudioInput( singleton_MusicBass ) ); end. diff --git a/Game/Code/Classes/UCatCovers.pas b/Game/Code/Classes/UCatCovers.pas index d40b2564..b1c91e48 100644 --- a/Game/Code/Classes/UCatCovers.pas +++ b/Game/Code/Classes/UCatCovers.pas @@ -5,6 +5,9 @@ unit UCatCovers; ///////////////////////////////////////////////////////////////////////// interface + +{$I switches.inc} + uses UIni; type diff --git a/Game/Code/Classes/UCommandLine.pas b/Game/Code/Classes/UCommandLine.pas index 259c6e16..1539ffaf 100644 --- a/Game/Code/Classes/UCommandLine.pas +++ b/Game/Code/Classes/UCommandLine.pas @@ -2,6 +2,9 @@ unit UCommandLine; interface +{$I switches.inc} + + type //----------- // TCMDParams - Class Reaads Infos from ParamStr and set some easy Interface Variables diff --git a/Game/Code/Classes/UCommon.pas b/Game/Code/Classes/UCommon.pas index 44ec6bb3..b532f775 100644 --- a/Game/Code/Classes/UCommon.pas +++ b/Game/Code/Classes/UCommon.pas @@ -2,16 +2,17 @@ unit UCommon; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} +{$I switches.inc} uses SysUtils, -{$IFDEF FPC} +{$IFDEF LAZARUS} lResources, {$ENDIF} ULog, +{$IFDEF DARWIN} + messages, +{$ENDIF} {$IFDEF win32} windows; {$ELSE} @@ -27,22 +28,23 @@ type TWin32FindData = LongInt; {$ENDIF} -{$IFDEF FPC} - -type - TWndMethod = procedure(var Message: TMessage) of object; +{$IFDEF LAZARUS} + function LazFindResource( const aName, aType : String ): TLResource; +{$ENDIF} -function LazFindResource( const aName, aType : String ): TLResource; +{$IFDEF FPC} function RandomRange(aMin: Integer; aMax: Integer) : Integer; function MaxValue(const Data: array of Double): Double; function MinValue(const Data: array of Double): Double; -{$IFDEF Win32} -function AllocateHWnd(Method: TWndMethod): HWND; -procedure DeallocateHWnd(Wnd: HWND); -{$ENDIF} // Win32 + {$IFDEF WIN32} + type + TWndMethod = procedure(var Message: TMessage) of object; + function AllocateHWnd(Method: TWndMethod): HWND; + procedure DeallocateHWnd(Wnd: HWND); + {$ENDIF} // Win32 {$ENDIF} // FPC Only @@ -58,24 +60,24 @@ function AdaptFilePaths( const aPath : widestring ): widestring; procedure ZeroMemory( Destination: Pointer; Length: DWORD ); {$ENDIF} -{$IFDEF Win32} +{$IFDEF MSWINDOWS} type TSearchRecW = record - Time: Integer; - Size: Integer; - Attr: Integer; - Name: WideString; - ExcludeAttr: Integer; - FindHandle: THandle; - FindData: TWin32FindDataW; - end; - - function FindFirstW(const Path: WideString; Attr: Integer; var F: TSearchRecW): Integer; - function FindNextW(var F: TSearchRecW): Integer; - procedure FindCloseW(var F: TSearchRecW); - function FindMatchingFileW(var F: TSearchRecW): Integer; - function DirectoryExistsW(const Directory: widestring): Boolean; + Time: Integer; + Size: Integer; + Attr: Integer; + Name: WideString; + ExcludeAttr: Integer; + FindHandle: THandle; + FindData: TWin32FindDataW; + end; + + function FindFirstW(const Path: WideString; Attr: Integer; var F: TSearchRecW): Integer; + function FindNextW(var F: TSearchRecW): Integer; + procedure FindCloseW(var F: TSearchRecW); + function FindMatchingFileW(var F: TSearchRecW): Integer; + function DirectoryExistsW(const Directory: widestring): Boolean; {$endif} implementation @@ -143,7 +145,7 @@ end; {$ENDIF} -{$IFDEF FPC} +{$IFDEF LAZARUS} function LazFindResource( const aName, aType : String ): TLResource; var @@ -161,7 +163,9 @@ begin end; end; end; +{$ENDIF} +{$IFDEF FPC} function MaxValue(const Data: array of Double): Double; var I: Integer; @@ -191,7 +195,7 @@ end; // NOTE !!!!!!!!!! // AllocateHWnd is in lclintfh.inc -{$IFDEF Win32} +{$IFDEF MSWINDOWS} // TODO : JB this is dodgey and bad... find a REAL solution ! function AllocateHWnd(Method: TWndMethod): HWND; var @@ -209,72 +213,82 @@ begin DestroyWindow(Wnd); end; {$ENDIF} +{$IFDEF DARWIN} +// TODO : Situation for the mac isn't better ! +function AllocateHWnd(Method: TWndMethod): HWND; +begin +end; + +procedure DeallocateHWnd(Wnd: HWND); +begin +end; +{$ENDIF} + - {$ENDIF} -{$ifdef win32} -function FindFirstW(const Path: widestring; Attr: Integer; var F: TSearchRecW): Integer; -const - faSpecial = faHidden or faSysFile or faVolumeID or faDirectory; -begin - F.ExcludeAttr := not Attr and faSpecial; - F.FindHandle := FindFirstFileW(PWideChar(Path), F.FindData); - if F.FindHandle <> INVALID_HANDLE_VALUE then - begin - Result := FindMatchingFileW(F); - if Result <> 0 then FindCloseW(F); - end else - Result := GetLastError; -end; - -function FindNextW(var F: TSearchRecW): Integer; -begin - if FindNextFileW(F.FindHandle, F.FindData) then - Result := FindMatchingFileW(F) - else - Result := GetLastError; -end; - -procedure FindCloseW(var F: TSearchRecW); -begin - if F.FindHandle <> INVALID_HANDLE_VALUE then - begin - Windows.FindClose(F.FindHandle); - F.FindHandle := INVALID_HANDLE_VALUE; - end; -end; - -function FindMatchingFileW(var F: TSearchRecW): Integer; -var - LocalFileTime: TFileTime; -begin - with F do - begin - while FindData.dwFileAttributes and ExcludeAttr <> 0 do - if not FindNextFileW(FindHandle, FindData) then - begin - Result := GetLastError; - Exit; - end; - FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime); - FileTimeToDosDateTime(LocalFileTime, LongRec(Time).Hi, LongRec(Time).Lo); - Size := FindData.nFileSizeLow; - Attr := FindData.dwFileAttributes; - Name := FindData.cFileName; - end; - Result := 0; -end; - -function DirectoryExistsW(const Directory: widestring): Boolean; -var - Code: Integer; -begin - Code := GetFileAttributesW(PWideChar(Directory)); - Result := (Code <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code <> 0); -end; +{$ifdef MSWINDOWS} +function FindFirstW(const Path: widestring; Attr: Integer; var F: TSearchRecW): Integer; +const + faSpecial = faHidden or faSysFile or faVolumeID or faDirectory; +begin + F.ExcludeAttr := not Attr and faSpecial; + F.FindHandle := FindFirstFileW(PWideChar(Path), F.FindData); + if F.FindHandle <> INVALID_HANDLE_VALUE then + begin + Result := FindMatchingFileW(F); + if Result <> 0 then FindCloseW(F); + end else + Result := GetLastError; +end; + +function FindNextW(var F: TSearchRecW): Integer; +begin + if FindNextFileW(F.FindHandle, F.FindData) then + Result := FindMatchingFileW(F) + else + Result := GetLastError; +end; + +procedure FindCloseW(var F: TSearchRecW); +begin + if F.FindHandle <> INVALID_HANDLE_VALUE then + begin + Windows.FindClose(F.FindHandle); + F.FindHandle := INVALID_HANDLE_VALUE; + end; +end; + +function FindMatchingFileW(var F: TSearchRecW): Integer; +var + LocalFileTime: TFileTime; +begin + with F do + begin + while FindData.dwFileAttributes and ExcludeAttr <> 0 do + if not FindNextFileW(FindHandle, FindData) then + begin + Result := GetLastError; + Exit; + end; + FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime); + FileTimeToDosDateTime(LocalFileTime, LongRec(Time).Hi, LongRec(Time).Lo); + Size := FindData.nFileSizeLow; + Attr := FindData.dwFileAttributes; + Name := FindData.cFileName; + end; + Result := 0; +end; + +function DirectoryExistsW(const Directory: widestring): Boolean; +var + Code: Integer; +begin + Code := GetFileAttributesW(PWideChar(Directory)); + Result := (Code <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code <> 0); +end; {$endif} diff --git a/Game/Code/Classes/UCore.pas b/Game/Code/Classes/UCore.pas index 9c31e79a..091868f2 100644 --- a/Game/Code/Classes/UCore.pas +++ b/Game/Code/Classes/UCore.pas @@ -1,495 +1,492 @@ -unit UCore; - -interface -uses uPluginDefs, uCoreModule, UHooks, UServices, UModules; -{********************* - TCore - Class manages all CoreModules, teh StartUp, teh MainLoop and the shutdown process - Also it does some Error Handling, and maybe sometime multithreaded Loading ;) -*********************} - -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} - -{$I switches.inc} - -type - TModuleListItem = record - Module: TCoreModule; //Instance of the Modules Class - Info: TModuleInfo; //ModuleInfo returned by Modules Modulinfo Proc - NeedsDeInit: Boolean; //True if Module was succesful inited - end; - - TCore = class - private - //Some Hook Handles. See Plugin SDKs Hooks.txt for Infos - hLoadingFinished: THandle; - hMainLoop: THandle; - hTranslate: THandle; - hLoadTextures: THandle; - hExitQuery: THandle; - hExit: THandle; - hDebug: THandle; - hError: THandle; - sReportError: THandle; - sReportDebug: THandle; - sShowMessage: THandle; - sRetranslate: THandle; - sReloadTextures: THandle; - sGetModuleInfo: THandle; - sGetApplicationHandle: THandle; - - Modules: Array [0..High(CORE_MODULES_TO_LOAD)] of TModuleListItem; - - //Function Get all Modules and Creates them - Function GetModules: Boolean; - - //Loads Core and all Modules - Function Load: Boolean; - - //Inits Core and all Modules - Function Init: Boolean; - - //DeInits Core and all Modules - Function DeInit: Boolean; - - //Load the Core - Function LoadCore: Boolean; - - //Init the Core - Function InitCore: Boolean; - - //DeInit the Core - Function DeInitCore: Boolean; - - //Called one Time per Frame - Function MainLoop: Boolean; - - public - Hooks: THookManager; //Teh Hook Manager ;) - Services: TServiceManager;//The Service Manager - - CurExecuted: Integer; //ID of Plugin or Module curently Executed - - Name: String; //Name of this Application - Version: LongWord; //Version of this ". For Info Look PluginDefs Functions - - LastErrorReporter:String; //Who Reported the Last Error String - LastErrorString: String; //Last Error String reported - - - //--------------- - //Main Methods to control the Core: - //--------------- - Constructor Create(const cName: String; const cVersion: LongWord); - - //Starts Loading and Init Process. Then Runs MainLoop. DeInits on Shutdown - Procedure Run; - - //Method for other Classes to get Pointer to a specific Module - Function GetModulebyName(const Name: String): PCoreModule; - - //-------------- - // Hook and Service Procs: - //-------------- - Function ShowMessage(wParam, lParam: DWord): integer; //Shows a Message (lParam: PChar Text, wParam: Symbol) - Function ReportError(wParam, lParam: DWord): integer; //Shows a Message (wParam: Pchar(Message), lParam: PChar(Reportername)) - Function ReportDebug(wParam, lParam: DWord): integer; //Shows a Message (wParam: Pchar(Message), lParam: PChar(Reportername)) - Function Retranslate(wParam, lParam: DWord): integer; //Calls Translate hook - Function ReloadTextures(wParam, lParam: DWord): integer; //Calls LoadTextures hook - Function GetModuleInfo(wParam, lParam: DWord): integer; //If lParam = nil then get length of Moduleinfo Array. If lparam <> nil then write array of TModuleInfo to address at lparam - Function GetApplicationHandle(wParam, lParam: DWord): integer; //Returns Application Handle - end; - -var - Core: TCore; - -implementation -uses SysUtils, -{$IFDEF win32} -Windows -{$ENDIF}; - -//------------- -// Create - Creates Class + Hook and Service Manager -//------------- -Constructor TCore.Create(const cName: String; const cVersion: LongWord); -begin - Name := cName; - Version := cVersion; - CurExecuted := 0; - - LastErrorReporter := ''; - LastErrorString := ''; - - Hooks := THookManager.Create(50); - Services := TServiceManager.Create; -end; - -//------------- -//Starts Loading and Init Process. Then Runs MainLoop. DeInits on Shutdown -//------------- -Procedure TCore.Run; -var - noError: Boolean; -begin - //Get Modules - Try - noError := GetModules; - Except - noError := False; - end; - - //Loading - if (noError) then - begin - Try - noError := Load; - Except - noError := False; - end; - - if (noError) then - begin //Init - Try - noError := Init; - Except - noError := False; - end; - - If noError then - begin - //Call Translate Hook - noError := (Hooks.CallEventChain(hTranslate, 0, 0) = 0); - - If noError then - begin //Calls LoadTextures Hook - noError := (Hooks.CallEventChain(hLoadTextures, 0, 0) = 0); - - if noError then - begin //Calls Loading Finished Hook - noError := (Hooks.CallEventChain(hLoadingFinished, 0, 0) = 0); - - If noError then - begin - //Start MainLoop - While noError do - begin - noError := MainLoop; - // to-do : Call Display Draw here - end; - end - else - begin - If (LastErrorString <> '') then - Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error calling LoadingFinished Hook: ' + LastErrorString))) - else - Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error calling LoadingFinished Hook'))); - end; - end - else - begin - If (LastErrorString <> '') then - Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error loading textures: ' + LastErrorString))) - else - Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error loading textures'))); - end; - end - else - begin - If (LastErrorString <> '') then - Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error translating: ' + LastErrorString))) - else - Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error translating'))); - end; - - end - else - begin - If (LastErrorString <> '') then - Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error initing Modules: ' + LastErrorString))) - else - Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error initing Modules'))); - end; - end - else - begin - If (LastErrorString <> '') then - Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error loading Modules: ' + LastErrorString))) - else - Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error loading Modules'))); - end; - end - else - begin - If (LastErrorString <> '') then - Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error Getting Modules: ' + LastErrorString))) - else - Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error Getting Modules'))); - end; - - //DeInit - DeInit; -end; - -//------------- -//Called one Time per Frame -//------------- -Function TCore.MainLoop: Boolean; -begin - Result := False; - -end; - -//------------- -//Function Get all Modules and Creates them -//------------- -Function TCore.GetModules: Boolean; -var - I: Integer; -begin - Result := False; - try - For I := 0 to high(Modules) do - begin - Modules[I].NeedsDeInit := False; - Modules[I].Module := CORE_MODULES_TO_LOAD[I].Create; - Modules[I].Module.Info(@Modules[I].Info); - end; - Result := True; - except - ReportError(Integer(PChar('Can''t get module #' + InttoStr(I) + ' "' + Modules[I].Info.Name + '"')), Integer(PChar('Core'))); - end; -end; - -//------------- -//Loads Core and all Modules -//------------- -Function TCore.Load: Boolean; -var - I: Integer; -begin - Result := LoadCore; - - I := 0; - While ((Result = True) AND (I <= High(CORE_MODULES_TO_LOAD))) do - begin - try - Result := Modules[I].Module.Load; - except - Result := False; - ReportError(Integer(PChar('Error loading module #' + InttoStr(I) + ' "' + Modules[I].Info.Name + '"')), Integer(PChar('Core'))); - end; - - Inc(I); - end; -end; - -//------------- -//Inits Core and all Modules -//------------- -Function TCore.Init: Boolean; -var - I: Integer; -begin - Result := InitCore; - - I := 0; - While ((Result = True) AND (I <= High(CORE_MODULES_TO_LOAD))) do - begin - try - Result := Modules[I].Module.Init; - except - Result := False; - ReportError(Integer(PChar('Error initing module #' + InttoStr(I) + ' "' + Modules[I].Info.Name + '"')), Integer(PChar('Core'))); - end; - - Modules[I].NeedsDeInit := Result; - Inc(I); - end; -end; - -//------------- -//DeInits Core and all Modules -//------------- -Function TCore.DeInit: Boolean; -var - I: Integer; -label Continue; -begin - I := High(CORE_MODULES_TO_LOAD); - - Continue: - Try - While (I >= 0) do - begin - If (Modules[I].NeedsDeInit) then - Modules[I].Module.DeInit; - - Dec(I); - end; - Except - - - end; - If (I >= 0) then - GoTo Continue; - - DeInitCore; -end; - -//------------- -//Load the Core -//------------- -Function TCore.LoadCore: Boolean; -begin - hLoadingFinished := Hooks.AddEvent('Core/LoadingFinished'); - hMainLoop := Hooks.AddEvent('Core/MainLoop'); - hTranslate := Hooks.AddEvent('Core/Translate'); - hLoadTextures := Hooks.AddEvent('Core/LoadTextures'); - hExitQuery := Hooks.AddEvent('Core/ExitQuery'); - hExit := Hooks.AddEvent('Core/Exit'); - hDebug := Hooks.AddEvent('Core/NewDebugInfo'); - hError := Hooks.AddEvent('Core/NewError'); - - sReportError := Services.AddService('Core/ReportError', nil, Self.ReportError); - sReportDebug := Services.AddService('Core/ReportDebug', nil, Self.ReportDebug); - sShowMessage := Services.AddService('Core/ShowMessage', nil, Self.ShowMessage); - sRetranslate := Services.AddService('Core/Retranslate', nil, Self.Retranslate); - sReloadTextures := Services.AddService('Core/ReloadTextures', nil, Self.ReloadTextures); - sGetModuleInfo := Services.AddService('Core/GetModuleInfo', nil, Self.GetModuleInfo); - sGetApplicationHandle := Services.AddService('Core/GetApplicationHandle', nil, Self.GetApplicationHandle); - - //A little Test - Hooks.AddSubscriber('Core/NewError', HookTest); -end; - -//------------- -//Init the Core -//------------- -Function TCore.InitCore: Boolean; -begin - //Dont Init s.th. atm. -end; - -//------------- -//DeInit the Core -//------------- -Function TCore.DeInitCore: Boolean; -begin - - - // to-do : write TService-/HookManager.Free and call it here -end; - -//------------- -//Method for other Classes to get Pointer to a specific Module -//------------- -Function TCore.GetModulebyName(const Name: String): PCoreModule; -var I: Integer; -begin - Result := nil; - For I := 0 to high(Modules) do - If (Modules[I].Info.Name = Name) then - begin - Result := @Modules[I].Module; - Break; - end; -end; - -//------------- -// Shows a MessageDialog (lParam: PChar Text, wParam: Symbol) -//------------- -Function TCore.ShowMessage(wParam, lParam: DWord): integer; -var Params: Cardinal; -begin - Result := -1; - - {$IFDEF win32} - If (ptr(lParam)<>nil) then - begin - Params := MB_OK; - Case wParam of - CORE_SM_ERROR: Params := Params or MB_ICONERROR; - CORE_SM_WARNING: Params := Params or MB_ICONWARNING; - CORE_SM_INFO: Params := Params or MB_ICONINFORMATION; - end; - - //Anzeigen: - Result := Messagebox(0, ptr(lParam), PChar(Name), Params); - end; - {$ENDIF} - - // to-do : write ShowMessage for other OSes -end; - -//------------- -// Calls NewError HookChain (wParam: Pchar(Message), lParam: PChar(Reportername)) -//------------- -Function TCore.ReportError(wParam, lParam: DWord): integer; -begin - //Update LastErrorReporter and LastErrorString - LastErrorReporter := String(PChar(Ptr(lParam))); - LastErrorString := String(PChar(Ptr(wParam))); - - Hooks.CallEventChain(hError, wParam, lParam); -end; - -//------------- -// Calls NewDebugInfo HookChain (wParam: Pchar(Message), lParam: PChar(Reportername)) -//------------- -Function TCore.ReportDebug(wParam, lParam: DWord): integer; -begin - Hooks.CallEventChain(hDebug, wParam, lParam); -end; - -//------------- -// Calls Translate hook -//------------- -Function TCore.Retranslate(wParam, lParam: DWord): integer; -begin - Hooks.CallEventChain(hTranslate, 0, 1); -end; - -//------------- -// Calls LoadTextures hook -//------------- -Function TCore.ReloadTextures(wParam, lParam: DWord): integer; -begin - Hooks.CallEventChain(hLoadTextures, 0, 1); -end; - -//------------- -// If lParam = nil then get length of Moduleinfo Array. If lparam <> nil then write array of TModuleInfo to address at lparam -//------------- -Function TCore.GetModuleInfo(wParam, lParam: DWord): integer; -begin - if (ptr(lParam) = nil) then - begin - Result := Length(Modules); - end - else - begin - Try - For Result := 0 to High(Modules) do - begin - AModuleInfo(ptr(lParam))[Result].Name := Modules[Result].Info.Name; - AModuleInfo(ptr(lParam))[Result].Version := Modules[Result].Info.Version; - AModuleInfo(ptr(lParam))[Result].Description := Modules[Result].Info.Description; - end; - Except - Result := -1; - end; - end; -end; - -//------------- -// Returns Application Handle -//------------- -Function TCore.GetApplicationHandle(wParam, lParam: DWord): integer; -begin - Result := hInstance; -end; - +unit UCore; + +interface + +{$I switches.inc} + +uses uPluginDefs, uCoreModule, UHooks, UServices, UModules; +{********************* + TCore + Class manages all CoreModules, teh StartUp, teh MainLoop and the shutdown process + Also it does some Error Handling, and maybe sometime multithreaded Loading ;) +*********************} + +type + TModuleListItem = record + Module: TCoreModule; //Instance of the Modules Class + Info: TModuleInfo; //ModuleInfo returned by Modules Modulinfo Proc + NeedsDeInit: Boolean; //True if Module was succesful inited + end; + + TCore = class + private + //Some Hook Handles. See Plugin SDKs Hooks.txt for Infos + hLoadingFinished: THandle; + hMainLoop: THandle; + hTranslate: THandle; + hLoadTextures: THandle; + hExitQuery: THandle; + hExit: THandle; + hDebug: THandle; + hError: THandle; + sReportError: THandle; + sReportDebug: THandle; + sShowMessage: THandle; + sRetranslate: THandle; + sReloadTextures: THandle; + sGetModuleInfo: THandle; + sGetApplicationHandle: THandle; + + Modules: Array [0..High(CORE_MODULES_TO_LOAD)] of TModuleListItem; + + //Function Get all Modules and Creates them + Function GetModules: Boolean; + + //Loads Core and all Modules + Function Load: Boolean; + + //Inits Core and all Modules + Function Init: Boolean; + + //DeInits Core and all Modules + Function DeInit: Boolean; + + //Load the Core + Function LoadCore: Boolean; + + //Init the Core + Function InitCore: Boolean; + + //DeInit the Core + Function DeInitCore: Boolean; + + //Called one Time per Frame + Function MainLoop: Boolean; + + public + Hooks: THookManager; //Teh Hook Manager ;) + Services: TServiceManager;//The Service Manager + + CurExecuted: Integer; //ID of Plugin or Module curently Executed + + Name: String; //Name of this Application + Version: LongWord; //Version of this ". For Info Look PluginDefs Functions + + LastErrorReporter:String; //Who Reported the Last Error String + LastErrorString: String; //Last Error String reported + + + //--------------- + //Main Methods to control the Core: + //--------------- + Constructor Create(const cName: String; const cVersion: LongWord); + + //Starts Loading and Init Process. Then Runs MainLoop. DeInits on Shutdown + Procedure Run; + + //Method for other Classes to get Pointer to a specific Module + Function GetModulebyName(const Name: String): PCoreModule; + + //-------------- + // Hook and Service Procs: + //-------------- + Function ShowMessage(wParam, lParam: DWord): integer; //Shows a Message (lParam: PChar Text, wParam: Symbol) + Function ReportError(wParam, lParam: DWord): integer; //Shows a Message (wParam: Pchar(Message), lParam: PChar(Reportername)) + Function ReportDebug(wParam, lParam: DWord): integer; //Shows a Message (wParam: Pchar(Message), lParam: PChar(Reportername)) + Function Retranslate(wParam, lParam: DWord): integer; //Calls Translate hook + Function ReloadTextures(wParam, lParam: DWord): integer; //Calls LoadTextures hook + Function GetModuleInfo(wParam, lParam: DWord): integer; //If lParam = nil then get length of Moduleinfo Array. If lparam <> nil then write array of TModuleInfo to address at lparam + Function GetApplicationHandle(wParam, lParam: DWord): integer; //Returns Application Handle + end; + +var + Core: TCore; + +implementation +uses SysUtils, +{$IFDEF win32} +Windows +{$ENDIF}; + +//------------- +// Create - Creates Class + Hook and Service Manager +//------------- +Constructor TCore.Create(const cName: String; const cVersion: LongWord); +begin + Name := cName; + Version := cVersion; + CurExecuted := 0; + + LastErrorReporter := ''; + LastErrorString := ''; + + Hooks := THookManager.Create(50); + Services := TServiceManager.Create; +end; + +//------------- +//Starts Loading and Init Process. Then Runs MainLoop. DeInits on Shutdown +//------------- +Procedure TCore.Run; +var + noError: Boolean; +begin + //Get Modules + Try + noError := GetModules; + Except + noError := False; + end; + + //Loading + if (noError) then + begin + Try + noError := Load; + Except + noError := False; + end; + + if (noError) then + begin //Init + Try + noError := Init; + Except + noError := False; + end; + + If noError then + begin + //Call Translate Hook + noError := (Hooks.CallEventChain(hTranslate, 0, 0) = 0); + + If noError then + begin //Calls LoadTextures Hook + noError := (Hooks.CallEventChain(hLoadTextures, 0, 0) = 0); + + if noError then + begin //Calls Loading Finished Hook + noError := (Hooks.CallEventChain(hLoadingFinished, 0, 0) = 0); + + If noError then + begin + //Start MainLoop + While noError do + begin + noError := MainLoop; + // to-do : Call Display Draw here + end; + end + else + begin + If (LastErrorString <> '') then + Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error calling LoadingFinished Hook: ' + LastErrorString))) + else + Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error calling LoadingFinished Hook'))); + end; + end + else + begin + If (LastErrorString <> '') then + Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error loading textures: ' + LastErrorString))) + else + Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error loading textures'))); + end; + end + else + begin + If (LastErrorString <> '') then + Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error translating: ' + LastErrorString))) + else + Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error translating'))); + end; + + end + else + begin + If (LastErrorString <> '') then + Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error initing Modules: ' + LastErrorString))) + else + Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error initing Modules'))); + end; + end + else + begin + If (LastErrorString <> '') then + Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error loading Modules: ' + LastErrorString))) + else + Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error loading Modules'))); + end; + end + else + begin + If (LastErrorString <> '') then + Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error Getting Modules: ' + LastErrorString))) + else + Self.ShowMessage(CORE_SM_ERROR, Integer(PChar('Error Getting Modules'))); + end; + + //DeInit + DeInit; +end; + +//------------- +//Called one Time per Frame +//------------- +Function TCore.MainLoop: Boolean; +begin + Result := False; + +end; + +//------------- +//Function Get all Modules and Creates them +//------------- +Function TCore.GetModules: Boolean; +var + I: Integer; +begin + Result := False; + try + For I := 0 to high(Modules) do + begin + Modules[I].NeedsDeInit := False; + Modules[I].Module := CORE_MODULES_TO_LOAD[I].Create; + Modules[I].Module.Info(@Modules[I].Info); + end; + Result := True; + except + ReportError(Integer(PChar('Can''t get module #' + InttoStr(I) + ' "' + Modules[I].Info.Name + '"')), Integer(PChar('Core'))); + end; +end; + +//------------- +//Loads Core and all Modules +//------------- +Function TCore.Load: Boolean; +var + I: Integer; +begin + Result := LoadCore; + + I := 0; + While ((Result = True) AND (I <= High(CORE_MODULES_TO_LOAD))) do + begin + try + Result := Modules[I].Module.Load; + except + Result := False; + ReportError(Integer(PChar('Error loading module #' + InttoStr(I) + ' "' + Modules[I].Info.Name + '"')), Integer(PChar('Core'))); + end; + + Inc(I); + end; +end; + +//------------- +//Inits Core and all Modules +//------------- +Function TCore.Init: Boolean; +var + I: Integer; +begin + Result := InitCore; + + I := 0; + While ((Result = True) AND (I <= High(CORE_MODULES_TO_LOAD))) do + begin + try + Result := Modules[I].Module.Init; + except + Result := False; + ReportError(Integer(PChar('Error initing module #' + InttoStr(I) + ' "' + Modules[I].Info.Name + '"')), Integer(PChar('Core'))); + end; + + Modules[I].NeedsDeInit := Result; + Inc(I); + end; +end; + +//------------- +//DeInits Core and all Modules +//------------- +Function TCore.DeInit: Boolean; +var + I: Integer; +label Continue; +begin + I := High(CORE_MODULES_TO_LOAD); + + Continue: + Try + While (I >= 0) do + begin + If (Modules[I].NeedsDeInit) then + Modules[I].Module.DeInit; + + Dec(I); + end; + Except + + + end; + If (I >= 0) then + GoTo Continue; + + DeInitCore; +end; + +//------------- +//Load the Core +//------------- +Function TCore.LoadCore: Boolean; +begin + hLoadingFinished := Hooks.AddEvent('Core/LoadingFinished'); + hMainLoop := Hooks.AddEvent('Core/MainLoop'); + hTranslate := Hooks.AddEvent('Core/Translate'); + hLoadTextures := Hooks.AddEvent('Core/LoadTextures'); + hExitQuery := Hooks.AddEvent('Core/ExitQuery'); + hExit := Hooks.AddEvent('Core/Exit'); + hDebug := Hooks.AddEvent('Core/NewDebugInfo'); + hError := Hooks.AddEvent('Core/NewError'); + + sReportError := Services.AddService('Core/ReportError', nil, Self.ReportError); + sReportDebug := Services.AddService('Core/ReportDebug', nil, Self.ReportDebug); + sShowMessage := Services.AddService('Core/ShowMessage', nil, Self.ShowMessage); + sRetranslate := Services.AddService('Core/Retranslate', nil, Self.Retranslate); + sReloadTextures := Services.AddService('Core/ReloadTextures', nil, Self.ReloadTextures); + sGetModuleInfo := Services.AddService('Core/GetModuleInfo', nil, Self.GetModuleInfo); + sGetApplicationHandle := Services.AddService('Core/GetApplicationHandle', nil, Self.GetApplicationHandle); + + //A little Test + Hooks.AddSubscriber('Core/NewError', HookTest); +end; + +//------------- +//Init the Core +//------------- +Function TCore.InitCore: Boolean; +begin + //Dont Init s.th. atm. +end; + +//------------- +//DeInit the Core +//------------- +Function TCore.DeInitCore: Boolean; +begin + + + // to-do : write TService-/HookManager.Free and call it here +end; + +//------------- +//Method for other Classes to get Pointer to a specific Module +//------------- +Function TCore.GetModulebyName(const Name: String): PCoreModule; +var I: Integer; +begin + Result := nil; + For I := 0 to high(Modules) do + If (Modules[I].Info.Name = Name) then + begin + Result := @Modules[I].Module; + Break; + end; +end; + +//------------- +// Shows a MessageDialog (lParam: PChar Text, wParam: Symbol) +//------------- +Function TCore.ShowMessage(wParam, lParam: DWord): integer; +var Params: Cardinal; +begin + Result := -1; + + {$IFDEF MSWINDOWS} + If (ptr(lParam)<>nil) then + begin + Params := MB_OK; + Case wParam of + CORE_SM_ERROR: Params := Params or MB_ICONERROR; + CORE_SM_WARNING: Params := Params or MB_ICONWARNING; + CORE_SM_INFO: Params := Params or MB_ICONINFORMATION; + end; + + //Anzeigen: + Result := Messagebox(0, ptr(lParam), PChar(Name), Params); + end; + {$ENDIF} + + // to-do : write ShowMessage for other OSes +end; + +//------------- +// Calls NewError HookChain (wParam: Pchar(Message), lParam: PChar(Reportername)) +//------------- +Function TCore.ReportError(wParam, lParam: DWord): integer; +begin + //Update LastErrorReporter and LastErrorString + LastErrorReporter := String(PChar(Pointer(lParam))); + LastErrorString := String(PChar(Pointer(wParam))); + + Hooks.CallEventChain(hError, wParam, lParam); +end; + +//------------- +// Calls NewDebugInfo HookChain (wParam: Pchar(Message), lParam: PChar(Reportername)) +//------------- +Function TCore.ReportDebug(wParam, lParam: DWord): integer; +begin + Hooks.CallEventChain(hDebug, wParam, lParam); +end; + +//------------- +// Calls Translate hook +//------------- +Function TCore.Retranslate(wParam, lParam: DWord): integer; +begin + Hooks.CallEventChain(hTranslate, 0, 1); +end; + +//------------- +// Calls LoadTextures hook +//------------- +Function TCore.ReloadTextures(wParam, lParam: DWord): integer; +begin + Hooks.CallEventChain(hLoadTextures, 0, 1); +end; + +//------------- +// If lParam = nil then get length of Moduleinfo Array. If lparam <> nil then write array of TModuleInfo to address at lparam +//------------- +Function TCore.GetModuleInfo(wParam, lParam: DWord): integer; +begin + if (Pointer(lParam) = nil) then + begin + Result := Length(Modules); + end + else + begin + Try + For Result := 0 to High(Modules) do + begin + AModuleInfo(Pointer(lParam))[Result].Name := Modules[Result].Info.Name; + AModuleInfo(Pointer(lParam))[Result].Version := Modules[Result].Info.Version; + AModuleInfo(Pointer(lParam))[Result].Description := Modules[Result].Info.Description; + end; + Except + Result := -1; + end; + end; +end; + +//------------- +// Returns Application Handle +//------------- +Function TCore.GetApplicationHandle(wParam, lParam: DWord): integer; +begin + Result := hInstance; +end; + end. \ No newline at end of file diff --git a/Game/Code/Classes/UCoreModule.pas b/Game/Code/Classes/UCoreModule.pas index e5a874f0..b135089c 100644 --- a/Game/Code/Classes/UCoreModule.pas +++ b/Game/Code/Classes/UCoreModule.pas @@ -1,6 +1,9 @@ unit UCoreModule; interface + +{$I switches.inc} + {********************* TCoreModule Dummy Class that has Methods that will be called from Core @@ -8,10 +11,6 @@ interface *********************} uses UPluginDefs; -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} - type PCoreModule = ^TCoreModule; TCoreModule = class diff --git a/Game/Code/Classes/UCovers.pas b/Game/Code/Classes/UCovers.pas index 966277cd..f4ede329 100644 --- a/Game/Code/Classes/UCovers.pas +++ b/Game/Code/Classes/UCovers.pas @@ -2,9 +2,7 @@ unit UCovers; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} +{$I switches.inc} uses OpenGL12, {$IFDEF win32} diff --git a/Game/Code/Classes/UDLLManager.pas b/Game/Code/Classes/UDLLManager.pas index ff6c16a4..358be9af 100644 --- a/Game/Code/Classes/UDLLManager.pas +++ b/Game/Code/Classes/UDLLManager.pas @@ -1,12 +1,9 @@ unit UDLLManager; -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - - interface +{$I switches.inc} + uses ModiSDK, UFiles; @@ -44,15 +41,19 @@ var const DLLPath = 'Plugins'; - {$IFDEF win32} + {$IFDEF MSWINDOWS} DLLExt = '.dll'; - {$ELSE} + {$ENDIF} + {$IFDEF LINUX} DLLExt = '.so'; {$ENDIF} + {$IFDEF DARWIN} + DLLExt = '.dylib'; + {$ENDIF} implementation -uses {$IFDEF win32} +uses {$IFDEF MSWINDOWS} windows, {$ELSE} dynlibs, diff --git a/Game/Code/Classes/UDataBase.pas b/Game/Code/Classes/UDataBase.pas index bacb0d98..0cafc9fd 100644 --- a/Game/Code/Classes/UDataBase.pas +++ b/Game/Code/Classes/UDataBase.pas @@ -2,10 +2,7 @@ unit UDataBase; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - +{$I switches.inc} uses USongs, SQLiteTable3; diff --git a/Game/Code/Classes/UDraw.pas b/Game/Code/Classes/UDraw.pas index 2a5528b8..350926d8 100644 --- a/Game/Code/Classes/UDraw.pas +++ b/Game/Code/Classes/UDraw.pas @@ -2,9 +2,7 @@ unit UDraw; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} +{$I switches.inc} uses UThemes, ModiSDK, @@ -243,7 +241,7 @@ begin lTmpA := (Right-Left); lTmpB := (Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].Koniec - Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote); - {$IFDEF FPC} + {$IFDEF LAZARUS} (* writeln( 'UDRAW (Right-Left) : ' + floattostr( lTmpA ) ); writeln( 'UDRAW : ' + floattostr( lTmpB ) ); @@ -479,7 +477,7 @@ begin lTmpA := (Right-Left); lTmpB := (Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].Koniec - Czesci[NrCzesci].Czesc[Czesci[NrCzesci].Akt].StartNote); - {$IFDEF FPC} + {$IFDEF LAZARUS} {* writeln( 'UDRAW (Right-Left) : ' + floattostr( lTmpA ) ); writeln( 'UDRAW : ' + floattostr( lTmpB ) ); diff --git a/Game/Code/Classes/UFiles.pas b/Game/Code/Classes/UFiles.pas index 717d20e2..5f168ead 100644 --- a/Game/Code/Classes/UFiles.pas +++ b/Game/Code/Classes/UFiles.pas @@ -2,9 +2,7 @@ unit UFiles; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} +{$I switches.inc} uses SysUtils, ULog, diff --git a/Game/Code/Classes/UGraphic.pas b/Game/Code/Classes/UGraphic.pas index 5847e41c..26601f2d 100644 --- a/Game/Code/Classes/UGraphic.pas +++ b/Game/Code/Classes/UGraphic.pas @@ -4,10 +4,6 @@ interface {$I switches.inc} -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - uses SDL, OpenGL12, diff --git a/Game/Code/Classes/UGraphicClasses.pas b/Game/Code/Classes/UGraphicClasses.pas index c04a0ad8..2acd5530 100644 --- a/Game/Code/Classes/UGraphicClasses.pas +++ b/Game/Code/Classes/UGraphicClasses.pas @@ -5,10 +5,6 @@ interface {$I switches.inc} -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - uses UTexture; const DelayBetweenFrames : Cardinal = 60; diff --git a/Game/Code/Classes/UHooks.pas b/Game/Code/Classes/UHooks.pas index c3684ed1..ea31ec50 100644 --- a/Game/Code/Classes/UHooks.pas +++ b/Game/Code/Classes/UHooks.pas @@ -6,14 +6,11 @@ unit UHooks; Saves all hookable events and their subscribers *********************} interface -uses uPluginDefs, SysUtils; -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} - {$I switches.inc} +uses uPluginDefs, SysUtils; + type //Record that saves info from Subscriber PSubscriberInfo = ^TSubscriberInfo; @@ -422,7 +419,7 @@ end; function HookTest(wParam, lParam: DWord): integer; stdcall; begin Result := 0; //Don't break the chain - Core.ShowMessage(CORE_SM_INFO, Integer(PChar(String(PChar(Ptr(lParam))) + ': ' + String(PChar(Ptr(wParam)))))); + Core.ShowMessage(CORE_SM_INFO, Integer(PChar(String(PChar(Pointer(lParam))) + ': ' + String(PChar(Pointer(wParam)))))); end; end. diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas index 6b7f3cea..36ba2180 100644 --- a/Game/Code/Classes/UIni.pas +++ b/Game/Code/Classes/UIni.pas @@ -2,9 +2,7 @@ unit UIni; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} +{$I switches.inc} uses IniFiles, ULog, SysUtils; diff --git a/Game/Code/Classes/ULCD.pas b/Game/Code/Classes/ULCD.pas index 50214ad0..13736729 100644 --- a/Game/Code/Classes/ULCD.pas +++ b/Game/Code/Classes/ULCD.pas @@ -1,6 +1,7 @@ unit ULCD; interface + {$I switches.inc} type diff --git a/Game/Code/Classes/ULanguage.pas b/Game/Code/Classes/ULanguage.pas index 679f6405..25986263 100644 --- a/Game/Code/Classes/ULanguage.pas +++ b/Game/Code/Classes/ULanguage.pas @@ -2,10 +2,8 @@ unit ULanguage; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - +{$I switches.inc} + type TLanguageEntry = record diff --git a/Game/Code/Classes/ULight.pas b/Game/Code/Classes/ULight.pas index 99edc88c..6621cf59 100644 --- a/Game/Code/Classes/ULight.pas +++ b/Game/Code/Classes/ULight.pas @@ -2,10 +2,6 @@ unit ULight; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} - {$I switches.inc} type @@ -55,7 +51,11 @@ uses begin GetLocalTime(SystemTime); with SystemTime do +{$IFDEF DARWIN} + Result := EncodeTime(Hour, Minute, Second, MilliSecond); +{$ELSE} Result := EncodeTime(wHour, wMinute, wSecond, wMilliSeconds); +{$ENDIF} end; {$ELSE} Type diff --git a/Game/Code/Classes/ULog.pas b/Game/Code/Classes/ULog.pas index 7e464b57..2ce70a11 100644 --- a/Game/Code/Classes/ULog.pas +++ b/Game/Code/Classes/ULog.pas @@ -4,10 +4,6 @@ interface {$I switches.inc} -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} - uses Classes; type @@ -191,7 +187,7 @@ begin {$DEFINE DEBUG} //How can i check if this is set in *.dpr file o0 //If Debug => Write to Console Output {$IFDEF DEBUG} - WriteLn('Error: ' + Text); + WriteLn('Error: ' + Text); {$ENDIF} end; @@ -229,7 +225,7 @@ begin //If Debug => Write to Console Output {$IFDEF DEBUG} - WriteLn(Log2 + ': ' + Log1); + WriteLn(Log2 + ': ' + Log1); {$ENDIF} end; @@ -243,7 +239,7 @@ begin //Write Error to Logfile: LogError (Text); - {$IFDEF win32} + {$IFDEF MSWINDOWS} //Show Errormessage Messagebox(0, PChar(Text), PChar(Title), MB_ICONERROR or MB_OK); {$ELSE} diff --git a/Game/Code/Classes/ULyrics.pas b/Game/Code/Classes/ULyrics.pas index e4ac2024..96b9d43b 100644 --- a/Game/Code/Classes/ULyrics.pas +++ b/Game/Code/Classes/ULyrics.pas @@ -2,10 +2,6 @@ unit ULyrics; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - {$I switches.inc} uses OpenGL12, diff --git a/Game/Code/Classes/ULyrics_bak.pas b/Game/Code/Classes/ULyrics_bak.pas index 43fa46f5..b5a9d798 100644 --- a/Game/Code/Classes/ULyrics_bak.pas +++ b/Game/Code/Classes/ULyrics_bak.pas @@ -2,10 +2,6 @@ unit ULyrics_bak; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - {$I switches.inc} uses SysUtils, diff --git a/Game/Code/Classes/UMain.pas b/Game/Code/Classes/UMain.pas index 82fb92e4..bbc64f80 100644 --- a/Game/Code/Classes/UMain.pas +++ b/Game/Code/Classes/UMain.pas @@ -2,10 +2,6 @@ unit UMain; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} - {$I switches.inc} uses @@ -119,6 +115,7 @@ var procedure InitializePaths; +Procedure Main; procedure MainLoop; procedure CheckEvents; procedure Sing(Sender: TScreenSing); @@ -133,7 +130,275 @@ function GetTimeFromBeat(Beat: integer): real; procedure ClearScores(PlayerNum: integer); implementation -uses USongs, UJoystick, math, UCommandLine; + +uses USongs, UJoystick, math, UCommandLine, ULanguage, SDL_ttf, + USkins, UCovers, UCatCovers, UDataBase, UPlaylist, UDLLManager, + UParty, UCore, UGraphicClasses, UPluginDefs; + +const + Version = 'UltraStar Deluxe V 1.10 Alpha Build'; + +{$IFDEF WIN32} +Procedure Main; +var + WndTitle: string; + hWnd: THandle; + I: Integer; +begin + WndTitle := Version; + +// InitializeSound(); +// writeln( 'DONE' ); +// exit; + + + {$IFDEF MSWINDOWS} + //------------------------------ + //Start more than One Time Prevention + //------------------------------ + hWnd:= FindWindow(nil, PChar(WndTitle)); + //Programm already started + if (hWnd <> 0) then + begin + I := Messagebox(0, PChar('Another Instance of Ultrastar is already running. Continue ?'), PChar(WndTitle), MB_ICONWARNING or MB_YESNO); + if (I = IDYes) then + begin + I := 1; + repeat + Inc(I); + hWnd := FindWindow(nil, PChar(WndTitle + ' Instance ' + InttoStr(I))); + until (hWnd = 0); + WndTitle := WndTitle + ' Instance ' + InttoStr(I); + end + else + Exit; + end; + {$ENDIF} + + //------------------------------ + //StartUp - Create Classes and Load Files + //------------------------------ + USTime := TTime.Create; + + // Commandline Parameter Parser + Params := TCMDParams.Create; + + // Log + Benchmark + Log := TLog.Create; + Log.Title := WndTitle; + Log.Enabled := Not Params.NoLog; + Log.BenchmarkStart(0); + + // Language + Log.BenchmarkStart(1); + Log.LogStatus('Initialize Paths', 'Initialization'); + InitializePaths; + Log.LogStatus('Load Language', 'Initialization'); + Language := TLanguage.Create; + //Add Const Values: + Language.AddConst('US_VERSION', Version); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Language', 1); + + // SDL + Log.BenchmarkStart(1); + Log.LogStatus('Initialize SDL', 'Initialization'); + SDL_Init(SDL_INIT_VIDEO or SDL_INIT_AUDIO); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Initializing SDL', 1); + + // SDL_ttf + Log.BenchmarkStart(1); + Log.LogStatus('Initialize SDL_ttf', 'Initialization'); + TTF_Init(); //ttf_quit(); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Initializing SDL_ttf', 1); + + // Skin + Log.BenchmarkStart(1); + Log.LogStatus('Loading Skin List', 'Initialization'); + Skin := TSkin.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Skin List', 1); + + // Sound Card List + Log.BenchmarkStart(1); + Log.LogStatus('Loading Soundcard list', 'Initialization'); + Recording := TRecord.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Soundcard list', 1); + + // Ini + Paths + Log.BenchmarkStart(1); + Log.LogStatus('Load Ini', 'Initialization'); + Ini := TIni.Create; + Ini.Load; + + //Load Languagefile + if (Params.Language <> -1) then + Language.ChangeLanguage(ILanguage[Params.Language]) + else + Language.ChangeLanguage(ILanguage[Ini.Language]); + + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Ini', 1); + + + // LCD + Log.BenchmarkStart(1); + Log.LogStatus('Load LCD', 'Initialization'); + LCD := TLCD.Create; + if Ini.LPT = 1 then begin +// LCD.HalfInterface := true; + LCD.Enable; + LCD.Clear; + LCD.WriteText(1, ' UltraStar '); + LCD.WriteText(2, ' Loading... '); + end; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading LCD', 1); + + // Light + Log.BenchmarkStart(1); + Log.LogStatus('Load Light', 'Initialization'); + Light := TLight.Create; + if Ini.LPT = 2 then begin + Light.Enable; + end; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Light', 1); + + + + // Theme + Log.BenchmarkStart(1); + Log.LogStatus('Load Themes', 'Initialization'); + Theme := TTheme.Create('Themes\' + ITheme[Ini.Theme] + '.ini', Ini.Color); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Themes', 1); + + // Covers Cache + Log.BenchmarkStart(1); + Log.LogStatus('Creating Covers Cache', 'Initialization'); + Covers := TCovers.Create; + Log.LogBenchmark('Loading Covers Cache Array', 1); + Log.BenchmarkStart(1); + + // Category Covers + Log.BenchmarkStart(1); + Log.LogStatus('Creating Category Covers Array', 'Initialization'); + CatCovers:= TCatCovers.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Category Covers Array', 1); + + // Songs + //Log.BenchmarkStart(1); + Log.LogStatus('Creating Song Array', 'Initialization'); + Songs := TSongs.Create; + Songs.LoadSongList; + Log.LogStatus('Creating 2nd Song Array', 'Initialization'); + CatSongs := TCatSongs.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Songs', 1); + + // PluginManager + Log.BenchmarkStart(1); + Log.LogStatus('PluginManager', 'Initialization'); + DLLMan := TDLLMan.Create; //Load PluginList + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading PluginManager', 1); + + // Party Mode Manager + Log.BenchmarkStart(1); + Log.LogStatus('PartySession Manager', 'Initialization'); + PartySession := TParty_Session.Create; //Load PartySession + + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading PartySession Manager', 1); + + // Sound + Log.BenchmarkStart(1); + Log.LogStatus('Initialize Sound', 'Initialization'); + InitializeSound(); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Initializing Sound', 1); + +// exit; + + // Graphics + Log.BenchmarkStart(1); + Log.LogStatus('Initialize 3D', 'Initialization'); + Initialize3D(WndTitle); + Log.BenchmarkEnd(1); + Log.LogBenchmark('Initializing 3D', 1); + + // Score Saving System + Log.BenchmarkStart(1); + Log.LogStatus('DataBase System', 'Initialization'); + DataBase := TDataBaseSystem.Create; + + if (Params.ScoreFile = '') then + DataBase.Init ('Ultrastar.db') + else + DataBase.Init (Params.ScoreFile); + + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading DataBase System', 1); + + //Playlist Manager + Log.BenchmarkStart(1); + Log.LogStatus('Playlist Manager', 'Initialization'); + PlaylistMan := TPlaylistManager.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Playlist Manager', 1); + + //GoldenStarsTwinkleMod + Log.BenchmarkStart(1); + Log.LogStatus('Effect Manager', 'Initialization'); + GoldenRec := TEffectManager.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Loading Particel System', 1); + + // Joypad + if (Ini.Joypad = 1) OR (Params.Joypad) then begin + Log.BenchmarkStart(1); + Log.LogStatus('Initialize Joystick', 'Initialization'); + Joy := TJoy.Create; + Log.BenchmarkEnd(1); + Log.LogBenchmark('Initializing Joystick', 1); + end; + + Log.BenchmarkEnd(0); + Log.LogBenchmark('Loading Time', 0); + + Log.LogError('Creating Core'); + Core := TCore.Create('Ultrastar Deluxe Beta', MakeVersion(1,1,0, chr(0))); + + Log.LogError('Running Core'); + Core.Run; + + //------------------------------ + //Start- Mainloop + //------------------------------ + //Music.SetLoop(true); + //Music.SetVolume(50); + //Music.Open(SkinPath + 'Menu Music 3.mp3'); + //Music.Play; + Log.LogStatus('Main Loop', 'Initialization'); + MainLoop; + + //------------------------------ + //Finish Application + //------------------------------ + if Ini.LPT = 1 then LCD.Clear; + if Ini.LPT = 2 then Light.TurnOff; + + Log.LogStatus('Main Loop', 'Finished'); + + Log.Free; + +end; +{$ENDIF} procedure MainLoop; var diff --git a/Game/Code/Classes/UMedia_dummy.pas b/Game/Code/Classes/UMedia_dummy.pas index bf3ad727..37e311af 100644 --- a/Game/Code/Classes/UMedia_dummy.pas +++ b/Game/Code/Classes/UMedia_dummy.pas @@ -12,10 +12,7 @@ unit UMedia_dummy; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - +{$I switches.inc} implementation diff --git a/Game/Code/Classes/UModules.pas b/Game/Code/Classes/UModules.pas index 493fc393..fe623343 100644 --- a/Game/Code/Classes/UModules.pas +++ b/Game/Code/Classes/UModules.pas @@ -1,6 +1,9 @@ unit UModules; interface + +{$I switches.inc} + {********************* UModules Unit Contains all used Modules in its uses clausel diff --git a/Game/Code/Classes/UMusic.pas b/Game/Code/Classes/UMusic.pas index f3342625..e2d2cc60 100644 --- a/Game/Code/Classes/UMusic.pas +++ b/Game/Code/Classes/UMusic.pas @@ -4,10 +4,6 @@ interface {$I switches.inc} -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} - uses Classes ; type diff --git a/Game/Code/Classes/UParty.pas b/Game/Code/Classes/UParty.pas index 9be0df3e..4f351dc5 100644 --- a/Game/Code/Classes/UParty.pas +++ b/Game/Code/Classes/UParty.pas @@ -2,10 +2,7 @@ unit UParty; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - +{$I switches.inc} uses ModiSDK; diff --git a/Game/Code/Classes/UPlaylist.pas b/Game/Code/Classes/UPlaylist.pas index 3f89ffed..b18d4833 100644 --- a/Game/Code/Classes/UPlaylist.pas +++ b/Game/Code/Classes/UPlaylist.pas @@ -2,10 +2,8 @@ unit UPlaylist; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - +{$I switches.inc} + type TPlaylistItem = record diff --git a/Game/Code/Classes/UPliki.pas b/Game/Code/Classes/UPliki.pas index f7692990..f4e8ff97 100644 --- a/Game/Code/Classes/UPliki.pas +++ b/Game/Code/Classes/UPliki.pas @@ -2,6 +2,8 @@ unit UPliki; interface +{$I switches.inc} + uses USongs, SysUtils, ULog, UMusic; procedure InitializePaths; diff --git a/Game/Code/Classes/UPluginInterface.pas b/Game/Code/Classes/UPluginInterface.pas index a9cc7e46..56293848 100644 --- a/Game/Code/Classes/UPluginInterface.pas +++ b/Game/Code/Classes/UPluginInterface.pas @@ -6,6 +6,9 @@ unit uPluginInterface; *********************} interface + +{$I switches.inc} + uses uPluginDefs; //--------------- diff --git a/Game/Code/Classes/URecord.pas b/Game/Code/Classes/URecord.pas index b553504d..8d3fa5f7 100644 --- a/Game/Code/Classes/URecord.pas +++ b/Game/Code/Classes/URecord.pas @@ -4,10 +4,6 @@ interface {$I switches.inc} -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} - uses Classes, Math, SysUtils, diff --git a/Game/Code/Classes/UServices.pas b/Game/Code/Classes/UServices.pas index 0028576b..92b61e85 100644 --- a/Game/Code/Classes/UServices.pas +++ b/Game/Code/Classes/UServices.pas @@ -1,6 +1,9 @@ unit UServices; interface + +{$I switches.inc} + uses uPluginDefs, SysUtils; {********************* TServiceManager @@ -8,12 +11,6 @@ uses uPluginDefs, SysUtils; Saves all Services and their Procs *********************} -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} - -{$I switches.inc} - type TServiceName = String[60]; PServiceInfo = ^TServiceInfo; @@ -221,7 +218,7 @@ begin //Backup CurExecuted CurExecutedBackup := Core.CurExecuted; - Service := ptr(SExists); + Service := Pointer(SExists); If (Service.isClass) then //Use Proc of Class diff --git a/Game/Code/Classes/USingNotes.pas b/Game/Code/Classes/USingNotes.pas index e2162bf1..f0754105 100644 --- a/Game/Code/Classes/USingNotes.pas +++ b/Game/Code/Classes/USingNotes.pas @@ -1,6 +1,9 @@ unit USingNotes; interface + +{$I switches.inc} + { Dummy Unit atm For further expantation Placeholder for Class that will handle the Notes Drawing} diff --git a/Game/Code/Classes/USingScores.pas b/Game/Code/Classes/USingScores.pas index 11f1f07d..d5256dc9 100644 --- a/Game/Code/Classes/USingScores.pas +++ b/Game/Code/Classes/USingScores.pas @@ -2,9 +2,7 @@ unit USingScores; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} +{$I switches.inc} uses UThemes, OpenGl12, @@ -425,7 +423,7 @@ begin // TODO : JB_Lazarus - Exception=Invalid floating point operation // AT THIS LINE ! - {$IFDEF FPC} + {$IFDEF LAZARUS} (* writeln( 'USINGSCORES-aPlayers[Cur.Player].RBTarget : ' + floattostr( aPlayers[Cur.Player].RBTarget ) ); writeln( 'USINGSCORES-(Cur.ScoreDiff - Cur.ScoreGiven) : ' + floattostr( (Cur.ScoreDiff - Cur.ScoreGiven) ) ); @@ -438,7 +436,7 @@ begin lTempA := ( aPlayers[Cur.Player].RBTarget + (Cur.ScoreDiff - Cur.ScoreGiven) ); lTempB := ( Cur.ScoreDiff * (Cur.Rating / 20 - 0.26) ); - {$IFDEF FPC} + {$IFDEF LAZARUS} (* writeln( 'USINGSCORES-lTempA : ' + floattostr( lTempA ) ); writeln( 'USINGSCORES-lTempB : ' + floattostr( lTempB ) ); diff --git a/Game/Code/Classes/USkins.pas b/Game/Code/Classes/USkins.pas index c9d7f2fd..5bab885b 100644 --- a/Game/Code/Classes/USkins.pas +++ b/Game/Code/Classes/USkins.pas @@ -1,12 +1,9 @@ unit USkins; -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - - interface +{$I switches.inc} + type TSkinTexture = record Name: string; diff --git a/Game/Code/Classes/USongs.pas b/Game/Code/Classes/USongs.pas index 5ce35201..9e0d6ca5 100644 --- a/Game/Code/Classes/USongs.pas +++ b/Game/Code/Classes/USongs.pas @@ -2,14 +2,15 @@ unit USongs; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - +{$I switches.inc} uses SysUtils, - {$ifndef win32} - oldlinux, + {$ifndef MSWINDOWS} + {$IFDEF DARWIN} + baseunix, + {$ELSE} + oldlinux, + {$ENDIF} {$endif} ULog, UTexture, @@ -115,6 +116,12 @@ uses StrUtils, UMain, UIni; +{$IFDEF DARWIN} +function AnsiContainsText(const AText, ASubText: string): Boolean; +begin + Result := AnsiPos(AnsiUppercase(ASubText), AnsiUppercase(AText)) > 0; +end; +{$ENDIF} procedure TSongs.LoadSongList; begin @@ -136,7 +143,7 @@ procedure TSongs.BrowseDir(Dir: widestring); var SLen: integer; - {$ifdef win32} + {$ifdef MSWINDOWS} SR: TSearchRecW; // for parsing Songs Directory {$else} // This should work on all posix systems. TheDir : pdir; @@ -145,7 +152,7 @@ var info : stat; {$endif} begin - {$ifdef win32} + {$ifdef MSWINDOWS} if FindFirstW(Dir + '*', faDirectory, SR) = 0 then // JB_Unicode - windows begin repeat @@ -186,8 +193,9 @@ begin until FindNextW(SR) <> 0; end; // if FindFirst FindCloseW(SR); - - {$else} + {$ENDIF} + + {$IFDEF LINUX} // Itterate the Songs Directory... ( With unicode capable functions for linux ) TheDir := opendir( Dir ); // JB_Unicode - linux if TheDir <> nil then @@ -245,6 +253,66 @@ begin Until ADirent=Nil; end; // if FindFirst + {$endif} + + {$IFDEF DARWIN} + // Itterate the Songs Directory... ( With unicode capable functions for linux ) + TheDir := FPOpenDir( Dir ); // JB_Unicode - linux + if TheDir <> nil then + begin + repeat + ADirent := FPReadDir(TheDir); + + If ADirent<>Nil then + begin + With ADirent^ do + begin + + if ( d_name[0] <> '.') then + BrowseDir( Dir + d_name + pathdelim ); + + end; + end; + Until ADirent=Nil; + end; + + + + TheDir := FPOpenDir( Dir ); // JB_Unicode - linux + if TheDir <> nil then + begin + repeat + ADirent := FPReadDir(TheDir); + + if ( ADirent <> Nil ) AND + ( pos( '.txt', ADirent^.d_name ) > -1 ) then + begin + SLen := BrowsePos; + + Song[SLen].Path := Dir; + Song[SLen].Folder := Copy(Dir, Length(SongPath)+1, 10000); + Song[SLen].Folder := Copy(Song[SLen].Folder, 1, Pos( PathDelim , Song[SLen].Folder)-1); + Song[SLen].FileName := ADirent^.d_name; + + if (AnalyseFile(Song[SLen]) = false) then + Dec(BrowsePos) + else + begin + if Song[SLen].Cover = '' then + Song[SLen].Cover := FindSongFile(Dir, '*[CO].jpg'); + end; + + //Change Length Only every 50 Entrys + Inc(BrowsePos); + + if (BrowsePos mod 50 = 0) AND (BrowsePos <> 0) then + begin + SetLength(Song, Length(Song) + 50); + end; + end; + + Until ADirent=Nil; + end; // if FindFirst {$endif} diff --git a/Game/Code/Classes/UTextClasses.pas b/Game/Code/Classes/UTextClasses.pas index 5a0655e5..a09456b8 100644 --- a/Game/Code/Classes/UTextClasses.pas +++ b/Game/Code/Classes/UTextClasses.pas @@ -1,6 +1,9 @@ unit UTextClasses; interface + +{$I switches.inc} + uses OpenGL12, SDL, UTexture, diff --git a/Game/Code/Classes/UTexture.pas b/Game/Code/Classes/UTexture.pas index 5ef29316..76d78f5b 100644 --- a/Game/Code/Classes/UTexture.pas +++ b/Game/Code/Classes/UTexture.pas @@ -19,10 +19,6 @@ interface {$I switches.inc} -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - uses OpenGL12, {$IFDEF win32} windows, @@ -131,7 +127,7 @@ implementation uses ULog, DateUtils, UCovers, - {$IFDEF FPC} + {$IFDEF LAZARUS} LResources, {$ENDIF} StrUtils, dialogs; @@ -247,7 +243,7 @@ var TexRWops: PSDL_RWops; dHandle: THandle; - {$IFDEF FPC} + {$IFDEF LAZARUS} lLazRes : TLResource; lResData : TStringStream; {$ELSE} @@ -277,7 +273,7 @@ begin Log.LogStatus( 'IS Resource, because file does not exist.('+Identifier+')', ' LoadImage' ); // load from resource stream - {$IFNDEF FPC} + {$IFDEF WIN32} dHandle := FindResource(hInstance, Identifier, 'TEX'); if dHandle=0 then begin @@ -1134,7 +1130,7 @@ begin end; end; -{$IFDEF FPC} +{$IFDEF LAZARUS} initialization {$I UltraStar.lrs} {$ENDIF} diff --git a/Game/Code/Classes/UThemes.pas b/Game/Code/Classes/UThemes.pas index 00b763f0..c27f9c9e 100644 --- a/Game/Code/Classes/UThemes.pas +++ b/Game/Code/Classes/UThemes.pas @@ -2,9 +2,7 @@ unit UThemes; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} +{$I switches.inc} uses ULog, diff --git a/Game/Code/Classes/UTime.pas b/Game/Code/Classes/UTime.pas index 87d17ee5..f714fed5 100644 --- a/Game/Code/Classes/UTime.pas +++ b/Game/Code/Classes/UTime.pas @@ -2,9 +2,7 @@ unit UTime; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} +{$I switches.inc} {$UNDEF DebugDisplay} diff --git a/Game/Code/Classes/UVideo.pas b/Game/Code/Classes/UVideo.pas index 154cd04c..c18eea6c 100644 --- a/Game/Code/Classes/UVideo.pas +++ b/Game/Code/Classes/UVideo.pas @@ -20,9 +20,7 @@ unit UVideo; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} +{$I switches.inc} (* diff --git a/Game/Code/Classes/uPluginLoader.pas b/Game/Code/Classes/uPluginLoader.pas index 442e76e0..55c89878 100644 --- a/Game/Code/Classes/uPluginLoader.pas +++ b/Game/Code/Classes/uPluginLoader.pas @@ -1,793 +1,797 @@ -unit UPluginLoader; -{********************* - UPluginLoader - Unit contains to Classes - TPluginLoader: Class Searching for and Loading the Plugins - TtehPlugins: Class that represents the Plugins in Modules chain -*********************} - -interface -uses UPluginDefs, UCoreModule; -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - -type - TPluginListItem = record - Info: TUS_PluginInfo; - State: Byte; //State of this Plugin: 0 - undefined; 1 - Loaded; 2 - Inited / Running; 4 - Unloaded; 254 - Loading aborted by Plugin; 255 - Unloaded because of Error - Path: String; //Path to this Plugin - NeedsDeInit: Boolean; //If this is Inited correctly this should be true - hLib: THandle; //Handle of Loaded Libary - Procs: record //Procs offered by Plugin. Don't call this directly use wrappers of TPluginLoader - Load: Func_Load; - Init: Func_Init; - DeInit: Proc_DeInit; - end; - end; - {********************* - TPluginLoader - Class Searches for Plugins and Manages loading and unloading - *********************} - PPluginLoader = ^TPluginLoader; - TPluginLoader = class (TCoreModule) - private - LoadingProcessFinished: Boolean; - sUnloadPlugin: THandle; - sLoadPlugin: THandle; - sGetPluginInfo: THandle; - sGetPluginState: THandle; - - Procedure FreePlugin(Index: Cardinal); - public - PluginInterface: TUS_PluginInterface; - Plugins: Array of TPluginListItem; - - //TCoreModule methods to inherit - Constructor Create; override; - Procedure Info(const pInfo: PModuleInfo); override; - Function Load: Boolean; override; - Function Init: Boolean; override; - Procedure DeInit; override; - Procedure Free; override; - - //New Methods - Procedure BrowseDir(Path: String); //Browses the Path at _Path_ for Plugins - Function PluginExists(Name: String): Integer; //If Plugin Exists: Index of Plugin, else -1 - Procedure AddPlugin(Filename: String);//Adds Plugin to the Array - - Function CallLoad(Index: Cardinal): Integer; - Function CallInit(Index: Cardinal): Integer; - Procedure CallDeInit(Index: Cardinal); - - //Services offered - Function LoadPlugin(wParam, lParam: DWord): integer; //wParam PChar(PluginName/PluginPath) | lParam (if wParam = nil) ID of the Plugin - Function UnloadPlugin(wParam, lParam: DWord): integer; //wParam PChar(PluginName/PluginPath) | lParam (if wParam = nil) ID of the Plugin - Function GetPluginInfo(wParam, lParam: DWord): integer; //If wParam = -1 then (If lParam = nil then get length of Moduleinfo Array. If lparam <> nil then write array of TUS_PluginInfo to address at lparam) Else (Get PluginInfo of Plugin with Index(wParam) to Address at lParam) - Function GetPluginState(wParam, lParam: DWord): integer; //If wParam = -1 then (If lParam = nil then get length of Moduleinfo Array. If lparam <> nil then write array of TUS_PluginInfo to address at lparam) Else (Return PluginInfo of Plugin with Index(wParam)) - - end; - - {********************* - TtehPlugins - Class Represents the Plugins in Module Chain. - It Calls the Plugins Procs and Funcs - *********************} - TtehPlugins = class (TCoreModule) - private - PluginLoader: PPluginLoader; - public - //TCoreModule methods to inherit - Constructor Create; override; - - Procedure Info(const pInfo: PModuleInfo); override; - Function Load: Boolean; override; - Function Init: Boolean; override; - Procedure DeInit; override; - end; - -const - {$IFDEF win32} - PluginFileExtension = '.dll'; - {$ELSE} - PluginFileExtension = '.so'; - {$ENDIF} - -implementation -uses UCore, UPluginInterface, -{$IFDEF win32} +unit UPluginLoader; +{********************* + UPluginLoader + Unit contains to Classes + TPluginLoader: Class Searching for and Loading the Plugins + TtehPlugins: Class that represents the Plugins in Modules chain +*********************} + +interface + +{$I switches.inc} + +uses UPluginDefs, UCoreModule; + +type + TPluginListItem = record + Info: TUS_PluginInfo; + State: Byte; //State of this Plugin: 0 - undefined; 1 - Loaded; 2 - Inited / Running; 4 - Unloaded; 254 - Loading aborted by Plugin; 255 - Unloaded because of Error + Path: String; //Path to this Plugin + NeedsDeInit: Boolean; //If this is Inited correctly this should be true + hLib: THandle; //Handle of Loaded Libary + Procs: record //Procs offered by Plugin. Don't call this directly use wrappers of TPluginLoader + Load: Func_Load; + Init: Func_Init; + DeInit: Proc_DeInit; + end; + end; + {********************* + TPluginLoader + Class Searches for Plugins and Manages loading and unloading + *********************} + PPluginLoader = ^TPluginLoader; + TPluginLoader = class (TCoreModule) + private + LoadingProcessFinished: Boolean; + sUnloadPlugin: THandle; + sLoadPlugin: THandle; + sGetPluginInfo: THandle; + sGetPluginState: THandle; + + Procedure FreePlugin(Index: Cardinal); + public + PluginInterface: TUS_PluginInterface; + Plugins: Array of TPluginListItem; + + //TCoreModule methods to inherit + Constructor Create; override; + Procedure Info(const pInfo: PModuleInfo); override; + Function Load: Boolean; override; + Function Init: Boolean; override; + Procedure DeInit; override; + Procedure Free; override; + + //New Methods + Procedure BrowseDir(Path: String); //Browses the Path at _Path_ for Plugins + Function PluginExists(Name: String): Integer; //If Plugin Exists: Index of Plugin, else -1 + Procedure AddPlugin(Filename: String);//Adds Plugin to the Array + + Function CallLoad(Index: Cardinal): Integer; + Function CallInit(Index: Cardinal): Integer; + Procedure CallDeInit(Index: Cardinal); + + //Services offered + Function LoadPlugin(wParam, lParam: DWord): integer; //wParam PChar(PluginName/PluginPath) | lParam (if wParam = nil) ID of the Plugin + Function UnloadPlugin(wParam, lParam: DWord): integer; //wParam PChar(PluginName/PluginPath) | lParam (if wParam = nil) ID of the Plugin + Function GetPluginInfo(wParam, lParam: DWord): integer; //If wParam = -1 then (If lParam = nil then get length of Moduleinfo Array. If lparam <> nil then write array of TUS_PluginInfo to address at lparam) Else (Get PluginInfo of Plugin with Index(wParam) to Address at lParam) + Function GetPluginState(wParam, lParam: DWord): integer; //If wParam = -1 then (If lParam = nil then get length of Moduleinfo Array. If lparam <> nil then write array of TUS_PluginInfo to address at lparam) Else (Return PluginInfo of Plugin with Index(wParam)) + + end; + + {********************* + TtehPlugins + Class Represents the Plugins in Module Chain. + It Calls the Plugins Procs and Funcs + *********************} + TtehPlugins = class (TCoreModule) + private + PluginLoader: PPluginLoader; + public + //TCoreModule methods to inherit + Constructor Create; override; + + Procedure Info(const pInfo: PModuleInfo); override; + Function Load: Boolean; override; + Function Init: Boolean; override; + Procedure DeInit; override; + end; + +const + {$IFDEF MSWINDOWS} + PluginFileExtension = '.dll'; + {$ENDIF} + {$IFDEF LINUX} + PluginFileExtension = '.so'; + {$ENDIF} + {$IFDEF DARWIN} + PluginFileExtension = '.dylib'; + {$ENDIF} + +implementation +uses UCore, UPluginInterface, +{$IFDEF MSWINDOWS} windows, {$ELSE} dynlibs, {$ENDIF} -UMain, SysUtils; - -{********************* - TPluginLoader - Implentation -*********************} - -//------------- -// Function that gives some Infos about the Module to the Core -//------------- -Procedure TPluginLoader.Info(const pInfo: PModuleInfo); -begin - pInfo^.Name := 'TPluginLoader'; - pInfo^.Version := MakeVersion(1,0,0,chr(0)); - pInfo^.Description := 'Searches for Plugins, loads and unloads them'; -end; - -//------------- -// Just the Constructor -//------------- -Constructor TPluginLoader.Create; -begin - //Init PluginInterface - //Using Methods from UPluginInterface - PluginInterface.CreateHookableEvent := CreateHookableEvent; - PluginInterface.DestroyHookableEvent := DestroyHookableEvent; - PluginInterface.NotivyEventHooks := NotivyEventHooks; - PluginInterface.HookEvent := HookEvent; - PluginInterface.UnHookEvent := UnHookEvent; - PluginInterface.EventExists := EventExists; - - PluginInterface.CreateService := CreateService; - PluginInterface.DestroyService := DestroyService; - PluginInterface.CallService := CallService; - PluginInterface.ServiceExists := ServiceExists; - - //UnSet Private Var - LoadingProcessFinished := False; -end; - -//------------- -//Is Called on Loading. -//In this Method only Events and Services should be created -//to offer them to other Modules or Plugins during the Init process -//If False is Returned this will cause a Forced Exit -//------------- -Function TPluginLoader.Load: Boolean; -begin - Result := True; - - Try - //Start Searching for Plugins - BrowseDir(PluginPath); - Except - Result := False; - Core.ReportError(Integer(PChar('Error Browsing and Loading.')), Integer(PChar('TPluginLoader'))); - end; -end; - -//------------- -//Is Called on Init Process -//In this Method you can Hook some Events and Create + Init -//your Classes, Variables etc. -//If False is Returned this will cause a Forced Exit -//------------- -Function TPluginLoader.Init: Boolean; -begin - //Just set Prvate Var to true. - LoadingProcessFinished := True; - Result := True; -end; - -//------------- -//Is Called if this Module has been Inited and there is a Exit. -//Deinit is in backwards Initing Order -//------------- -Procedure TPluginLoader.DeInit; -var - I: Integer; -begin - //Force DeInit - //If some Plugins aren't DeInited for some Reason o0 - For I := 0 to High(Plugins) do - begin - If (Plugins[I].State < 4) then - FreePlugin(I); - end; - - //Nothing to do here. Core will remove the Hooks -end; - -//------------- -//Is Called if this Module will be unloaded and has been created -//Should be used to Free Memory -//------------- -Procedure TPluginLoader.Free; -begin - //Just save some Memory if it wasn't done now.. - SetLength(Plugins, 0); -end; - -//-------------- -// Browses the Path at _Path_ for Plugins -//-------------- -Procedure TPluginLoader.BrowseDir(Path: String); -var - SR: TSearchRec; -begin - //Search for other Dirs to Browse - if FindFirst(Path + '*', faDirectory, SR) = 0 then begin - repeat - if (SR.Name <> '.') and (SR.Name <> '..') then - BrowseDir(Path + Sr.Name + PathDelim); - until FindNext(SR) <> 0; - end; - FindClose(SR); - - //Search for Plugins at Path - if FindFirst(Path + '*' + PluginFileExtension, 0, SR) = 0 then - begin - repeat - AddPlugin(Path + SR.Name); - until FindNext(SR) <> 0; - end; - FindClose(SR); -end; - -//-------------- -// If Plugin Exists: Index of Plugin, else -1 -//-------------- -Function TPluginLoader.PluginExists(Name: String): Integer; -var - I: Integer; -begin - Result := -1; - - If (Length(Name) <= 32 { =>Length(TUS_PluginInfo.Name)}) then - begin - For I := 0 to High(Plugins) do - if (Plugins[I].Info.Name = Name) then - begin //Found the Plugin - Result := I; - Break; - end; - end; -end; - -//-------------- -// Adds Plugin to the Array -//-------------- -Procedure TPluginLoader.AddPlugin(Filename: String); -var - hLib: THandle; - PInfo: Proc_PluginInfo; - Info: TUS_PluginInfo; - PluginID: Integer; -begin - If (FileExists(Filename)) then - begin //Load Libary - hLib := LoadLibrary(PChar(Filename)); - If (hLib <> 0) then - begin //Try to get Address of the Info Proc - PInfo := GetProcAddress (hLib, PChar('USPlugin_Info')); - If (@PInfo <> nil) then - begin - Info.cbSize := SizeOf(TUS_PluginInfo); - - Try //Call Info Proc - PInfo(@Info); - Except - Info.Name := ''; - Core.ReportError(Integer(PChar('Error getting Plugin Info: ' + Filename)), Integer(PChar('TPluginLoader'))); - end; - - //Is Name set ? - If (Trim(Info.Name) <> '') then - begin - PluginID := PluginExists(Info.Name); - - If (PluginID > 0) AND (Plugins[PluginID].State >=4) then - PluginID := -1; - - If (PluginID = -1) then - begin - //Add new item to array - PluginID := Length(Plugins); - SetLength(Plugins, PluginID + 1); - - //Fill with Info: - Plugins[PluginID].Info := Info; - Plugins[PluginID].State := 0; - Plugins[PluginID].Path := Filename; - Plugins[PluginID].NeedsDeInit := False; - Plugins[PluginID].hLib := hLib; - - //Try to get Procs - Plugins[PluginID].Procs.Load := GetProcAddress (hLib, PChar('USPlugin_Load')); - Plugins[PluginID].Procs.Init := GetProcAddress (hLib, PChar('USPlugin_Init')); - Plugins[PluginID].Procs.DeInit := GetProcAddress (hLib, PChar('USPlugin_DeInit')); - - If (@Plugins[PluginID].Procs.Load = nil) OR (@Plugins[PluginID].Procs.Init = nil) OR (@Plugins[PluginID].Procs.DeInit = nil) then - begin - Plugins[PluginID].State := 255; - FreeLibrary(hLib); - Core.ReportError(Integer(PChar('Can''t get Plugin Procs from Libary: "' + Info.Name + '" ' + Filename)), Integer(PChar('TPluginLoader'))); - end; - - //Emulate loading process if this Plugin is loaded to late - If (LoadingProcessFinished) then - begin - CallLoad(PluginID); - CallInit(PluginID); - end; - end - Else If (LoadingProcessFinished = False) then - begin - If (Plugins[PluginID].Info.Version < Info.Version) then - begin //Found newer Version of this Plugin - Core.ReportDebug(Integer(PChar('Found a newer Version of Plugin: ' + Info.Name)), Integer(PChar('TPluginLoader'))); - - //Unload Old Plugin - UnloadPlugin(Integer(nil), PluginID); - - //Fill with new Info - Plugins[PluginID].Info := Info; - Plugins[PluginID].State := 0; - Plugins[PluginID].Path := Filename; - Plugins[PluginID].NeedsDeInit := False; - Plugins[PluginID].hLib := hLib; - - //Try to get Procs - Plugins[PluginID].Procs.Load := GetProcAddress (hLib, PChar('USPlugin_Load')); - Plugins[PluginID].Procs.Init := GetProcAddress (hLib, PChar('USPlugin_Init')); - Plugins[PluginID].Procs.DeInit := GetProcAddress (hLib, PChar('USPlugin_DeInit')); - - If (@Plugins[PluginID].Procs.Load = nil) OR (@Plugins[PluginID].Procs.Init = nil) OR (@Plugins[PluginID].Procs.DeInit = nil) then - begin - FreeLibrary(hLib); - Plugins[PluginID].State := 255; - Core.ReportError(Integer(PChar('Can''t get Plugin Procs from Libary: "' + Info.Name + '" ' + Filename)), Integer(PChar('TPluginLoader'))); - end; - end - else - begin //Newer Version already loaded - FreeLibrary(hLib); - end; - end - else - begin - FreeLibrary(hLib); - Core.ReportError(Integer(PChar('Plugin with this Name already exists: ' + Info.Name)), Integer(PChar('TPluginLoader'))); - end; - end - else - begin - FreeLibrary(hLib); - Core.ReportError(Integer(PChar('No name reported: ' + Filename)), Integer(PChar('TPluginLoader'))); - end; - end - else - begin - FreeLibrary(hLib); - Core.ReportError(Integer(PChar('Can''t find Info Procedure: ' + Filename)), Integer(PChar('TPluginLoader'))); - end; - end - else - Core.ReportError(Integer(PChar('Can''t load Plugin Libary: ' + Filename)), Integer(PChar('TPluginLoader'))); - end; -end; - -//-------------- -// Calls Load Func of Plugin with the given Index -//-------------- -Function TPluginLoader.CallLoad(Index: Cardinal): Integer; -begin - Result := -2; - If(Index < Length(Plugins)) then - begin - If (@Plugins[Index].Procs.Load <> nil) AND (Plugins[Index].State = 0) then - begin - Try - Result := Plugins[Index].Procs.Load(@PluginInterface); - Except - Result := -3; - End; - - If (Result = 0) then - Plugins[Index].State := 1 - Else - begin - FreePlugin(Index); - Plugins[Index].State := 255; - Core.ReportError(Integer(PChar('Error calling Load Function from Plugin: ' + Plugins[Index].Info.Name)), Integer(PChar('TPluginLoader'))); - end; - end; - end; -end; - -//-------------- -// Calls Init Func of Plugin with the given Index -//-------------- -Function TPluginLoader.CallInit(Index: Cardinal): Integer; -begin - Result := -2; - If(Index < Length(Plugins)) then - begin - If (@Plugins[Index].Procs.Init <> nil) AND (Plugins[Index].State = 1) then - begin - Try - Result := Plugins[Index].Procs.Init(@PluginInterface); - Except - Result := -3; - End; - - If (Result = 0) then - begin - Plugins[Index].State := 2; - Plugins[Index].NeedsDeInit := True; - end - Else - begin - FreePlugin(Index); - Plugins[Index].State := 255; - Core.ReportError(Integer(PChar('Error calling Init Function from Plugin: ' + Plugins[Index].Info.Name)), Integer(PChar('TPluginLoader'))); - end; - end; - end; -end; - -//-------------- -// Calls DeInit Proc of Plugin with the given Index -//-------------- -Procedure TPluginLoader.CallDeInit(Index: Cardinal); -begin - If(Index < Length(Plugins)) then - begin - If (Plugins[Index].State < 4) then - begin - If (@Plugins[Index].Procs.DeInit <> nil) and (Plugins[Index].NeedsDeInit) then - Try - Plugins[Index].Procs.DeInit(@PluginInterface); - Except - - End; - - //Don't forget to remove Services and Subscriptions by this Plugin - Core.Hooks.DelbyOwner(-1 - Index); - - FreePlugin(Index); - end; - end; -end; - -//-------------- -// Frees all Plugin Sources (Procs and Handles) - Helper for Deiniting Functions -//-------------- -Procedure TPluginLoader.FreePlugin(Index: Cardinal); -begin - Plugins[Index].State := 4; - Plugins[Index].Procs.Load := nil; - Plugins[Index].Procs.Init := nil; - Plugins[Index].Procs.DeInit := nil; - - If (Plugins[Index].hLib <> 0) then - FreeLibrary(Plugins[Index].hLib); -end; - - - -//-------------- -// wParam PChar(PluginName/PluginPath) | lParam (if wParam = nil) ID of the Plugin -//-------------- -Function TPluginLoader.LoadPlugin(wParam, lParam: DWord): integer; -var - Index: Integer; - sFile: String; -begin - Result := -1; - sFile := ''; - //lParam is ID - If (Ptr(wParam) = nil) then - begin - Index := lParam; - end - else - begin //wParam is PChar - try - sFile := String(PChar(Ptr(wParam))); - Index := PluginExists(sFile); - If (Index < 0) And FileExists(sFile) then - begin //Is Filename - AddPlugin(sFile); - Result := Plugins[High(Plugins)].State; - end; - except - Index := -2; - end; - end; - - - If (Index >= 0) and (Index < Length(Plugins)) then - begin - AddPlugin(Plugins[Index].Path); - Result := Plugins[Index].State; - end; -end; - -//-------------- -// wParam PChar(PluginName/PluginPath) | lParam (if wParam = nil) ID of the Plugin -//-------------- -Function TPluginLoader.UnloadPlugin(wParam, lParam: DWord): integer; -var - Index: Integer; - sName: String; -begin - Result := -1; - //lParam is ID - If (Ptr(wParam) = nil) then - begin - Index := lParam; - end - else - begin //wParam is PChar - try - sName := String(PChar(Ptr(wParam))); - Index := PluginExists(sName); - except - Index := -2; - end; - end; - - - If (Index >= 0) and (Index < Length(Plugins)) then - CallDeInit(Index) -end; - -//-------------- -// If wParam = -1 then (If lParam = nil then get length of Moduleinfo Array. If lparam <> nil then write array of TUS_PluginInfo to address at lparam) Else (Get PluginInfo of Plugin with Index(wParam) to Address at lParam) -//-------------- -Function TPluginLoader.GetPluginInfo(wParam, lParam: DWord): integer; -var I: Integer; -begin - Result := 0; - If (wParam < 0) then - begin //Get Info of 1 Plugin - If (Ptr(lParam) <> nil) AND (wParam < Length(Plugins)) then - begin - Try - Result := 1; - PUS_PluginInfo(Ptr(lParam))^ := Plugins[wParam].Info; - Except - - End; - end; - end - Else If (Ptr(lParam) = nil) then - begin //Get Length of Plugin (Info) Array - Result := Length(Plugins); - end - Else //Write PluginInfo Array to Address in lParam - begin - Try - For I := 0 to high(Plugins) do - PAUS_PluginInfo(Ptr(lParam))^[I] := Plugins[I].Info; - Result := Length(Plugins); - Except - Core.ReportError(Integer(PChar('Could not write PluginInfo Array')), Integer(PChar('TPluginLoader'))); - End; - end; - -end; - -//-------------- -// If wParam = -1 then (If lParam = nil then get length of Plugin State Array. If lparam <> nil then write array of Byte to address at lparam) Else (Return State of Plugin with Index(wParam)) -//-------------- -Function TPluginLoader.GetPluginState(wParam, lParam: DWord): integer; -var I: Integer; -begin - Result := -1; - If (wParam < 0) then - begin //Get State of 1 Plugin - If (wParam < Length(Plugins)) then - begin - Result := Plugins[wParam].State; - end; - end - Else If (Ptr(lParam) = nil) then - begin //Get Length of Plugin (Info) Array - Result := Length(Plugins); - end - Else //Write PluginInfo Array to Address in lParam - begin - Try - For I := 0 to high(Plugins) do - Byte(Ptr(lParam + I)^) := Plugins[I].State; - Result := Length(Plugins); - Except - Core.ReportError(Integer(PChar('Could not write PluginState Array')), Integer(PChar('TPluginLoader'))); - End; - end; -end; - - - - - -{********************* - TtehPlugins - Implentation -*********************} - -//------------- -// Function that gives some Infos about the Module to the Core -//------------- -Procedure TtehPlugins.Info(const pInfo: PModuleInfo); -begin - pInfo^.Name := 'TtehPlugins'; - pInfo^.Version := MakeVersion(1,0,0,chr(0)); - pInfo^.Description := 'Module executing the Plugins!'; -end; - -//------------- -// Just the Constructor -//------------- -Constructor TtehPlugins.Create; -begin - PluginLoader := nil; -end; - -//------------- -//Is Called on Loading. -//In this Method only Events and Services should be created -//to offer them to other Modules or Plugins during the Init process -//If False is Returned this will cause a Forced Exit -//------------- -Function TtehPlugins.Load: Boolean; -var - I: Integer; //Counter - CurExecutedBackup: Integer; //backup of Core.CurExecuted Attribute -label Continue; -begin - //Get Pointer to PluginLoader - PluginLoader := PPluginLoader(Core.GetModulebyName('TPluginLoader')); - If (PluginLoader = nil) then - begin - Result := False; - Core.ReportError(Integer(PChar('Could not get Pointer to PluginLoader')), Integer(PChar('TtehPlugins'))); - end - else - begin - Result := True; - - //Backup CurExecuted - CurExecutedBackup := Core.CurExecuted; - - //Start Loading the Plugins - I := 0; - Continue: - Try - While (I <= High(PluginLoader.Plugins)) do - begin - Core.CurExecuted := -1 - I; - - //Unload Plugin if not correctly Executed - If (PluginLoader.CallLoad(I) <> 0) then - begin - PluginLoader.CallDeInit(I); - PluginLoader.Plugins[I].State := 254; //Plugin asks for unload - Core.ReportDebug(Integer(PChar('Plugin Selfabort during loading process: ' + PluginLoader.Plugins[I].Info.Name)), Integer(PChar('TtehPlugins'))); - end - else - Core.ReportDebug(Integer(PChar('Plugin loaded succesful: ' + PluginLoader.Plugins[I].Info.Name)), Integer(PChar('TtehPlugins'))); - - Inc(I); - end; - Except - //Plugin could not be loaded. - // => Show Error Message, then ShutDown Plugin - on E: Exception do - begin - PluginLoader.CallDeInit(I); - PluginLoader.Plugins[I].State := 255; //Plugin causes Error - Core.ReportError(Integer(PChar('Plugin causes Error during loading process: ' + PluginLoader.Plugins[I].Info.Name + ', ErrorMsg: "' + E.Message + '"')), Integer(PChar('TtehPlugins'))); - - - //don't forget to increase I - Inc(I); - end; - End; - - If (I <= High(PluginLoader.Plugins)) then - Goto Continue; - - //Reset CurExecuted - Core.CurExecuted := CurExecutedBackup; - end; -end; - -//------------- -//Is Called on Init Process -//In this Method you can Hook some Events and Create + Init -//your Classes, Variables etc. -//If False is Returned this will cause a Forced Exit -//------------- -Function TtehPlugins.Init: Boolean; -var - I: Integer; //Counter - CurExecutedBackup: Integer; //backup of Core.CurExecuted Attribute -label Continue; -begin - Result := True; - - //Backup CurExecuted - CurExecutedBackup := Core.CurExecuted; - - //Start Loading the Plugins - I := 0; - Continue: - Try - While (I <= High(PluginLoader.Plugins)) do - begin - Core.CurExecuted := -1 - I; - - //Unload Plugin if not correctly Executed - If (PluginLoader.CallInit(I) <> 0) then - begin - PluginLoader.CallDeInit(I); - PluginLoader.Plugins[I].State := 254; //Plugin asks for unload - Core.ReportDebug(Integer(PChar('Plugin Selfabort during init process: ' + PluginLoader.Plugins[I].Info.Name)), Integer(PChar('TtehPlugins'))); - end - else - Core.ReportDebug(Integer(PChar('Plugin inited succesful: ' + PluginLoader.Plugins[I].Info.Name)), Integer(PChar('TtehPlugins'))); - - //don't forget to increase I - Inc(I); - end; - Except - //Plugin could not be loaded. - // => Show Error Message, then ShutDown Plugin - PluginLoader.CallDeInit(I); - PluginLoader.Plugins[I].State := 255; //Plugin causes Error - Core.ReportError(Integer(PChar('Plugin causes Error during init process: ' + PluginLoader.Plugins[I].Info.Name)), Integer(PChar('TtehPlugins'))); - - //don't forget to increase I - Inc(I); - End; - - If (I <= High(PluginLoader.Plugins)) then - GoTo Continue; - - //Reset CurExecuted - Core.CurExecuted := CurExecutedBackup; -end; - -//------------- -//Is Called if this Module has been Inited and there is a Exit. -//Deinit is in backwards Initing Order -//------------- -Procedure TtehPlugins.DeInit; -var - I: Integer; //Counter - CurExecutedBackup: Integer; //backup of Core.CurExecuted Attribute -label Continue; -begin - //Backup CurExecuted - CurExecutedBackup := Core.CurExecuted; - - //Start Loop - I := 0; - - Continue: - Try - While (I <= High(PluginLoader.Plugins)) do - begin - //DeInit Plugin - PluginLoader.CallDeInit(I); - - Inc(I); - end; - Except - Inc(I); - End; - - If I <= High(PluginLoader.Plugins) then - Goto Continue; - - //Reset CurExecuted - Core.CurExecuted := CurExecutedBackup; -end; - -end. +UMain, SysUtils; + +{********************* + TPluginLoader + Implentation +*********************} + +//------------- +// Function that gives some Infos about the Module to the Core +//------------- +Procedure TPluginLoader.Info(const pInfo: PModuleInfo); +begin + pInfo^.Name := 'TPluginLoader'; + pInfo^.Version := MakeVersion(1,0,0,chr(0)); + pInfo^.Description := 'Searches for Plugins, loads and unloads them'; +end; + +//------------- +// Just the Constructor +//------------- +Constructor TPluginLoader.Create; +begin + //Init PluginInterface + //Using Methods from UPluginInterface + PluginInterface.CreateHookableEvent := CreateHookableEvent; + PluginInterface.DestroyHookableEvent := DestroyHookableEvent; + PluginInterface.NotivyEventHooks := NotivyEventHooks; + PluginInterface.HookEvent := HookEvent; + PluginInterface.UnHookEvent := UnHookEvent; + PluginInterface.EventExists := EventExists; + + PluginInterface.CreateService := CreateService; + PluginInterface.DestroyService := DestroyService; + PluginInterface.CallService := CallService; + PluginInterface.ServiceExists := ServiceExists; + + //UnSet Private Var + LoadingProcessFinished := False; +end; + +//------------- +//Is Called on Loading. +//In this Method only Events and Services should be created +//to offer them to other Modules or Plugins during the Init process +//If False is Returned this will cause a Forced Exit +//------------- +Function TPluginLoader.Load: Boolean; +begin + Result := True; + + Try + //Start Searching for Plugins + BrowseDir(PluginPath); + Except + Result := False; + Core.ReportError(Integer(PChar('Error Browsing and Loading.')), Integer(PChar('TPluginLoader'))); + end; +end; + +//------------- +//Is Called on Init Process +//In this Method you can Hook some Events and Create + Init +//your Classes, Variables etc. +//If False is Returned this will cause a Forced Exit +//------------- +Function TPluginLoader.Init: Boolean; +begin + //Just set Prvate Var to true. + LoadingProcessFinished := True; + Result := True; +end; + +//------------- +//Is Called if this Module has been Inited and there is a Exit. +//Deinit is in backwards Initing Order +//------------- +Procedure TPluginLoader.DeInit; +var + I: Integer; +begin + //Force DeInit + //If some Plugins aren't DeInited for some Reason o0 + For I := 0 to High(Plugins) do + begin + If (Plugins[I].State < 4) then + FreePlugin(I); + end; + + //Nothing to do here. Core will remove the Hooks +end; + +//------------- +//Is Called if this Module will be unloaded and has been created +//Should be used to Free Memory +//------------- +Procedure TPluginLoader.Free; +begin + //Just save some Memory if it wasn't done now.. + SetLength(Plugins, 0); +end; + +//-------------- +// Browses the Path at _Path_ for Plugins +//-------------- +Procedure TPluginLoader.BrowseDir(Path: String); +var + SR: TSearchRec; +begin + //Search for other Dirs to Browse + if FindFirst(Path + '*', faDirectory, SR) = 0 then begin + repeat + if (SR.Name <> '.') and (SR.Name <> '..') then + BrowseDir(Path + Sr.Name + PathDelim); + until FindNext(SR) <> 0; + end; + FindClose(SR); + + //Search for Plugins at Path + if FindFirst(Path + '*' + PluginFileExtension, 0, SR) = 0 then + begin + repeat + AddPlugin(Path + SR.Name); + until FindNext(SR) <> 0; + end; + FindClose(SR); +end; + +//-------------- +// If Plugin Exists: Index of Plugin, else -1 +//-------------- +Function TPluginLoader.PluginExists(Name: String): Integer; +var + I: Integer; +begin + Result := -1; + + If (Length(Name) <= 32 { =>Length(TUS_PluginInfo.Name)}) then + begin + For I := 0 to High(Plugins) do + if (Plugins[I].Info.Name = Name) then + begin //Found the Plugin + Result := I; + Break; + end; + end; +end; + +//-------------- +// Adds Plugin to the Array +//-------------- +Procedure TPluginLoader.AddPlugin(Filename: String); +var + hLib: THandle; + PInfo: Proc_PluginInfo; + Info: TUS_PluginInfo; + PluginID: Integer; +begin + If (FileExists(Filename)) then + begin //Load Libary + hLib := LoadLibrary(PChar(Filename)); + If (hLib <> 0) then + begin //Try to get Address of the Info Proc + PInfo := GetProcAddress (hLib, PChar('USPlugin_Info')); + If (@PInfo <> nil) then + begin + Info.cbSize := SizeOf(TUS_PluginInfo); + + Try //Call Info Proc + PInfo(@Info); + Except + Info.Name := ''; + Core.ReportError(Integer(PChar('Error getting Plugin Info: ' + Filename)), Integer(PChar('TPluginLoader'))); + end; + + //Is Name set ? + If (Trim(Info.Name) <> '') then + begin + PluginID := PluginExists(Info.Name); + + If (PluginID > 0) AND (Plugins[PluginID].State >=4) then + PluginID := -1; + + If (PluginID = -1) then + begin + //Add new item to array + PluginID := Length(Plugins); + SetLength(Plugins, PluginID + 1); + + //Fill with Info: + Plugins[PluginID].Info := Info; + Plugins[PluginID].State := 0; + Plugins[PluginID].Path := Filename; + Plugins[PluginID].NeedsDeInit := False; + Plugins[PluginID].hLib := hLib; + + //Try to get Procs + Plugins[PluginID].Procs.Load := GetProcAddress (hLib, PChar('USPlugin_Load')); + Plugins[PluginID].Procs.Init := GetProcAddress (hLib, PChar('USPlugin_Init')); + Plugins[PluginID].Procs.DeInit := GetProcAddress (hLib, PChar('USPlugin_DeInit')); + + If (@Plugins[PluginID].Procs.Load = nil) OR (@Plugins[PluginID].Procs.Init = nil) OR (@Plugins[PluginID].Procs.DeInit = nil) then + begin + Plugins[PluginID].State := 255; + FreeLibrary(hLib); + Core.ReportError(Integer(PChar('Can''t get Plugin Procs from Libary: "' + Info.Name + '" ' + Filename)), Integer(PChar('TPluginLoader'))); + end; + + //Emulate loading process if this Plugin is loaded to late + If (LoadingProcessFinished) then + begin + CallLoad(PluginID); + CallInit(PluginID); + end; + end + Else If (LoadingProcessFinished = False) then + begin + If (Plugins[PluginID].Info.Version < Info.Version) then + begin //Found newer Version of this Plugin + Core.ReportDebug(Integer(PChar('Found a newer Version of Plugin: ' + String(Info.Name))), Integer(PChar('TPluginLoader'))); + + //Unload Old Plugin + UnloadPlugin(Integer(nil), PluginID); + + //Fill with new Info + Plugins[PluginID].Info := Info; + Plugins[PluginID].State := 0; + Plugins[PluginID].Path := Filename; + Plugins[PluginID].NeedsDeInit := False; + Plugins[PluginID].hLib := hLib; + + //Try to get Procs + Plugins[PluginID].Procs.Load := GetProcAddress (hLib, PChar('USPlugin_Load')); + Plugins[PluginID].Procs.Init := GetProcAddress (hLib, PChar('USPlugin_Init')); + Plugins[PluginID].Procs.DeInit := GetProcAddress (hLib, PChar('USPlugin_DeInit')); + + If (@Plugins[PluginID].Procs.Load = nil) OR (@Plugins[PluginID].Procs.Init = nil) OR (@Plugins[PluginID].Procs.DeInit = nil) then + begin + FreeLibrary(hLib); + Plugins[PluginID].State := 255; + Core.ReportError(Integer(PChar('Can''t get Plugin Procs from Libary: "' + Info.Name + '" ' + Filename)), Integer(PChar('TPluginLoader'))); + end; + end + else + begin //Newer Version already loaded + FreeLibrary(hLib); + end; + end + else + begin + FreeLibrary(hLib); + Core.ReportError(Integer(PChar('Plugin with this Name already exists: ' + String(Info.Name))), Integer(PChar('TPluginLoader'))); + end; + end + else + begin + FreeLibrary(hLib); + Core.ReportError(Integer(PChar('No name reported: ' + Filename)), Integer(PChar('TPluginLoader'))); + end; + end + else + begin + FreeLibrary(hLib); + Core.ReportError(Integer(PChar('Can''t find Info Procedure: ' + Filename)), Integer(PChar('TPluginLoader'))); + end; + end + else + Core.ReportError(Integer(PChar('Can''t load Plugin Libary: ' + Filename)), Integer(PChar('TPluginLoader'))); + end; +end; + +//-------------- +// Calls Load Func of Plugin with the given Index +//-------------- +Function TPluginLoader.CallLoad(Index: Cardinal): Integer; +begin + Result := -2; + If(Index < Length(Plugins)) then + begin + If (@Plugins[Index].Procs.Load <> nil) AND (Plugins[Index].State = 0) then + begin + Try + Result := Plugins[Index].Procs.Load(@PluginInterface); + Except + Result := -3; + End; + + If (Result = 0) then + Plugins[Index].State := 1 + Else + begin + FreePlugin(Index); + Plugins[Index].State := 255; + Core.ReportError(Integer(PChar('Error calling Load Function from Plugin: ' + String(Plugins[Index].Info.Name))), Integer(PChar('TPluginLoader'))); + end; + end; + end; +end; + +//-------------- +// Calls Init Func of Plugin with the given Index +//-------------- +Function TPluginLoader.CallInit(Index: Cardinal): Integer; +begin + Result := -2; + If(Index < Length(Plugins)) then + begin + If (@Plugins[Index].Procs.Init <> nil) AND (Plugins[Index].State = 1) then + begin + Try + Result := Plugins[Index].Procs.Init(@PluginInterface); + Except + Result := -3; + End; + + If (Result = 0) then + begin + Plugins[Index].State := 2; + Plugins[Index].NeedsDeInit := True; + end + Else + begin + FreePlugin(Index); + Plugins[Index].State := 255; + Core.ReportError(Integer(PChar('Error calling Init Function from Plugin: ' + String(Plugins[Index].Info.Name))), Integer(PChar('TPluginLoader'))); + end; + end; + end; +end; + +//-------------- +// Calls DeInit Proc of Plugin with the given Index +//-------------- +Procedure TPluginLoader.CallDeInit(Index: Cardinal); +begin + If(Index < Length(Plugins)) then + begin + If (Plugins[Index].State < 4) then + begin + If (@Plugins[Index].Procs.DeInit <> nil) and (Plugins[Index].NeedsDeInit) then + Try + Plugins[Index].Procs.DeInit(@PluginInterface); + Except + + End; + + //Don't forget to remove Services and Subscriptions by this Plugin + Core.Hooks.DelbyOwner(-1 - Index); + + FreePlugin(Index); + end; + end; +end; + +//-------------- +// Frees all Plugin Sources (Procs and Handles) - Helper for Deiniting Functions +//-------------- +Procedure TPluginLoader.FreePlugin(Index: Cardinal); +begin + Plugins[Index].State := 4; + Plugins[Index].Procs.Load := nil; + Plugins[Index].Procs.Init := nil; + Plugins[Index].Procs.DeInit := nil; + + If (Plugins[Index].hLib <> 0) then + FreeLibrary(Plugins[Index].hLib); +end; + + + +//-------------- +// wParam PChar(PluginName/PluginPath) | lParam (if wParam = nil) ID of the Plugin +//-------------- +Function TPluginLoader.LoadPlugin(wParam, lParam: DWord): integer; +var + Index: Integer; + sFile: String; +begin + Result := -1; + sFile := ''; + //lParam is ID + If (Pointer(wParam) = nil) then + begin + Index := lParam; + end + else + begin //wParam is PChar + try + sFile := String(PChar(Pointer(wParam))); + Index := PluginExists(sFile); + If (Index < 0) And FileExists(sFile) then + begin //Is Filename + AddPlugin(sFile); + Result := Plugins[High(Plugins)].State; + end; + except + Index := -2; + end; + end; + + + If (Index >= 0) and (Index < Length(Plugins)) then + begin + AddPlugin(Plugins[Index].Path); + Result := Plugins[Index].State; + end; +end; + +//-------------- +// wParam PChar(PluginName/PluginPath) | lParam (if wParam = nil) ID of the Plugin +//-------------- +Function TPluginLoader.UnloadPlugin(wParam, lParam: DWord): integer; +var + Index: Integer; + sName: String; +begin + Result := -1; + //lParam is ID + If (Pointer(wParam) = nil) then + begin + Index := lParam; + end + else + begin //wParam is PChar + try + sName := String(PChar(Pointer(wParam))); + Index := PluginExists(sName); + except + Index := -2; + end; + end; + + + If (Index >= 0) and (Index < Length(Plugins)) then + CallDeInit(Index) +end; + +//-------------- +// If wParam = -1 then (If lParam = nil then get length of Moduleinfo Array. If lparam <> nil then write array of TUS_PluginInfo to address at lparam) Else (Get PluginInfo of Plugin with Index(wParam) to Address at lParam) +//-------------- +Function TPluginLoader.GetPluginInfo(wParam, lParam: DWord): integer; +var I: Integer; +begin + Result := 0; + If (wParam < 0) then + begin //Get Info of 1 Plugin + If (Pointer(lParam) <> nil) AND (wParam < Length(Plugins)) then + begin + Try + Result := 1; + PUS_PluginInfo(Pointer(lParam))^ := Plugins[wParam].Info; + Except + + End; + end; + end + Else If (Pointer(lParam) = nil) then + begin //Get Length of Plugin (Info) Array + Result := Length(Plugins); + end + Else //Write PluginInfo Array to Address in lParam + begin + Try + For I := 0 to high(Plugins) do + PAUS_PluginInfo(Pointer(lParam))^[I] := Plugins[I].Info; + Result := Length(Plugins); + Except + Core.ReportError(Integer(PChar('Could not write PluginInfo Array')), Integer(PChar('TPluginLoader'))); + End; + end; + +end; + +//-------------- +// If wParam = -1 then (If lParam = nil then get length of Plugin State Array. If lparam <> nil then write array of Byte to address at lparam) Else (Return State of Plugin with Index(wParam)) +//-------------- +Function TPluginLoader.GetPluginState(wParam, lParam: DWord): integer; +var I: Integer; +begin + Result := -1; + If (wParam < 0) then + begin //Get State of 1 Plugin + If (wParam < Length(Plugins)) then + begin + Result := Plugins[wParam].State; + end; + end + Else If (Pointer(lParam) = nil) then + begin //Get Length of Plugin (Info) Array + Result := Length(Plugins); + end + Else //Write PluginInfo Array to Address in lParam + begin + Try + For I := 0 to high(Plugins) do + Byte(Pointer(lParam + I)^) := Plugins[I].State; + Result := Length(Plugins); + Except + Core.ReportError(Integer(PChar('Could not write PluginState Array')), Integer(PChar('TPluginLoader'))); + End; + end; +end; + + + + + +{********************* + TtehPlugins + Implentation +*********************} + +//------------- +// Function that gives some Infos about the Module to the Core +//------------- +Procedure TtehPlugins.Info(const pInfo: PModuleInfo); +begin + pInfo^.Name := 'TtehPlugins'; + pInfo^.Version := MakeVersion(1,0,0,chr(0)); + pInfo^.Description := 'Module executing the Plugins!'; +end; + +//------------- +// Just the Constructor +//------------- +Constructor TtehPlugins.Create; +begin + PluginLoader := nil; +end; + +//------------- +//Is Called on Loading. +//In this Method only Events and Services should be created +//to offer them to other Modules or Plugins during the Init process +//If False is Returned this will cause a Forced Exit +//------------- +Function TtehPlugins.Load: Boolean; +var + I: Integer; //Counter + CurExecutedBackup: Integer; //backup of Core.CurExecuted Attribute +label Continue; +begin + //Get Pointer to PluginLoader + PluginLoader := PPluginLoader(Core.GetModulebyName('TPluginLoader')); + If (PluginLoader = nil) then + begin + Result := False; + Core.ReportError(Integer(PChar('Could not get Pointer to PluginLoader')), Integer(PChar('TtehPlugins'))); + end + else + begin + Result := True; + + //Backup CurExecuted + CurExecutedBackup := Core.CurExecuted; + + //Start Loading the Plugins + I := 0; + Continue: + Try + While (I <= High(PluginLoader.Plugins)) do + begin + Core.CurExecuted := -1 - I; + + //Unload Plugin if not correctly Executed + If (PluginLoader.CallLoad(I) <> 0) then + begin + PluginLoader.CallDeInit(I); + PluginLoader.Plugins[I].State := 254; //Plugin asks for unload + Core.ReportDebug(Integer(PChar('Plugin Selfabort during loading process: ' + String(PluginLoader.Plugins[I].Info.Name))), Integer(PChar('TtehPlugins'))); + end + else + Core.ReportDebug(Integer(PChar('Plugin loaded succesful: ' + String(PluginLoader.Plugins[I].Info.Name))), Integer(PChar('TtehPlugins'))); + + Inc(I); + end; + Except + //Plugin could not be loaded. + // => Show Error Message, then ShutDown Plugin + on E: Exception do + begin + PluginLoader.CallDeInit(I); + PluginLoader.Plugins[I].State := 255; //Plugin causes Error + Core.ReportError(Integer(PChar('Plugin causes Error during loading process: ' + PluginLoader.Plugins[I].Info.Name + ', ErrorMsg: "' + E.Message + '"')), Integer(PChar('TtehPlugins'))); + + + //don't forget to increase I + Inc(I); + end; + End; + + If (I <= High(PluginLoader.Plugins)) then + Goto Continue; + + //Reset CurExecuted + Core.CurExecuted := CurExecutedBackup; + end; +end; + +//------------- +//Is Called on Init Process +//In this Method you can Hook some Events and Create + Init +//your Classes, Variables etc. +//If False is Returned this will cause a Forced Exit +//------------- +Function TtehPlugins.Init: Boolean; +var + I: Integer; //Counter + CurExecutedBackup: Integer; //backup of Core.CurExecuted Attribute +label Continue; +begin + Result := True; + + //Backup CurExecuted + CurExecutedBackup := Core.CurExecuted; + + //Start Loading the Plugins + I := 0; + Continue: + Try + While (I <= High(PluginLoader.Plugins)) do + begin + Core.CurExecuted := -1 - I; + + //Unload Plugin if not correctly Executed + If (PluginLoader.CallInit(I) <> 0) then + begin + PluginLoader.CallDeInit(I); + PluginLoader.Plugins[I].State := 254; //Plugin asks for unload + Core.ReportDebug(Integer(PChar('Plugin Selfabort during init process: ' + String(PluginLoader.Plugins[I].Info.Name))), Integer(PChar('TtehPlugins'))); + end + else + Core.ReportDebug(Integer(PChar('Plugin inited succesful: ' + String(PluginLoader.Plugins[I].Info.Name))), Integer(PChar('TtehPlugins'))); + + //don't forget to increase I + Inc(I); + end; + Except + //Plugin could not be loaded. + // => Show Error Message, then ShutDown Plugin + PluginLoader.CallDeInit(I); + PluginLoader.Plugins[I].State := 255; //Plugin causes Error + Core.ReportError(Integer(PChar('Plugin causes Error during init process: ' + String(PluginLoader.Plugins[I].Info.Name))), Integer(PChar('TtehPlugins'))); + + //don't forget to increase I + Inc(I); + End; + + If (I <= High(PluginLoader.Plugins)) then + GoTo Continue; + + //Reset CurExecuted + Core.CurExecuted := CurExecutedBackup; +end; + +//------------- +//Is Called if this Module has been Inited and there is a Exit. +//Deinit is in backwards Initing Order +//------------- +Procedure TtehPlugins.DeInit; +var + I: Integer; //Counter + CurExecutedBackup: Integer; //backup of Core.CurExecuted Attribute +label Continue; +begin + //Backup CurExecuted + CurExecutedBackup := Core.CurExecuted; + + //Start Loop + I := 0; + + Continue: + Try + While (I <= High(PluginLoader.Plugins)) do + begin + //DeInit Plugin + PluginLoader.CallDeInit(I); + + Inc(I); + end; + Except + Inc(I); + End; + + If I <= High(PluginLoader.Plugins) then + Goto Continue; + + //Reset CurExecuted + Core.CurExecuted := CurExecutedBackup; +end; + +end. diff --git a/Game/Code/MacOSX/Platform.inc b/Game/Code/MacOSX/Platform.inc deleted file mode 100755 index 7f028a12..00000000 --- a/Game/Code/MacOSX/Platform.inc +++ /dev/null @@ -1,13 +0,0 @@ - -{$IFDEF FPC} - {$MODE DELPHI} - {$H+} - {$R-} - {$DEFINE DLL_CDECL} - {$DEFINE MACOS} - {$DEFINE WIN32} - {$DEFINE TRANSLATE} -{$ELSE} - {$DEFINE DLL_STDCALL} -{$ENDIF} - diff --git a/Game/Code/MacOSX/UltraStarDX.pas b/Game/Code/MacOSX/UltraStarDX.pas index da42fb6a..b531244f 100644 --- a/Game/Code/MacOSX/UltraStarDX.pas +++ b/Game/Code/MacOSX/UltraStarDX.pas @@ -1,8 +1,11 @@ -program UltraStar; +program UltraStarDX; -uses UMain; +uses UMain, UAudio_bass, UAudio_FFMpeg, UMedia_dummy, USingNotes, UTextClasses, UVideo; + +var i : Integer; begin + i := 0; Main; end. diff --git a/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.mode1 b/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.mode1 index c93ec352..4350b967 100644 --- a/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.mode1 +++ b/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.mode1 @@ -190,24 +190,264 @@ Content PBXProjectModuleGUID - 2C0B7D300CD683C80062A7C8 + 2CF552990CDA426600627463 PBXProjectModuleLabel - TextGL.pas + UMain.pas PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID - 2C0B7D310CD683C80062A7C8 + 2CF5529A0CDA426600627463 PBXProjectModuleLabel - TextGL.pas + UMain.pas _historyCapacity 0 bookmark - 2C0B7D320CD683C80062A7C8 + 2CF553BB0CDA5A4D00627463 history - 2C0B7D280CD6808A0062A7C8 + 2CF553B10CDA5A2F00627463 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {1052, 646}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 222 147 1052 687 0 0 1680 1028 + + + + Content + + PBXProjectModuleGUID + 2CF552960CDA426600627463 + PBXProjectModuleLabel + UAudio_FFMpeg.pas + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 2CF552970CDA426600627463 + PBXProjectModuleLabel + UAudio_FFMpeg.pas + _historyCapacity + 0 + bookmark + 2CF553BC0CDA5A4D00627463 + history + + 2CF553940CDA58E900627463 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {797, 748}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 38 213 797 789 0 0 1680 1028 + + + + Content + + PBXProjectModuleGUID + 2CF552930CDA426600627463 + PBXProjectModuleLabel + UAudio_bass.pas + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 2CF552940CDA426600627463 + PBXProjectModuleLabel + UAudio_bass.pas + _historyCapacity + 0 + bookmark + 2CF553BD0CDA5A4D00627463 + history + + 2CF553960CDA58E900627463 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {797, 748}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 15 234 797 789 0 0 1680 1028 + + + + Content + + PBXProjectModuleGUID + 2CF5536C0CDA575B00627463 + PBXProjectModuleLabel + UltraStarDX.pas + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 2CF5536D0CDA575B00627463 + PBXProjectModuleLabel + UltraStarDX.pas + _historyCapacity + 0 + bookmark + 2CF553BE0CDA5A4D00627463 + history + + 2CF553670CDA575100627463 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {987, 762}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 189 142 987 803 0 0 1680 1028 + + + + Content + + PBXProjectModuleGUID + 2CF5536F0CDA575B00627463 + PBXProjectModuleLabel + sdl_image.pas + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 2CF553700CDA575B00627463 + PBXProjectModuleLabel + sdl_image.pas + _historyCapacity + 0 + bookmark + 2CF553BF0CDA5A4D00627463 + history + + 2CF553060CDA514A00627463 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {1052, 646}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 15 336 1052 687 0 0 1680 1028 + + + + Content + + PBXProjectModuleGUID + 2CF553720CDA575B00627463 + PBXProjectModuleLabel + sdl.pas + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 2CF553730CDA575B00627463 + PBXProjectModuleLabel + sdl.pas + _historyCapacity + 0 + bookmark + 2CF553C00CDA5A4D00627463 + history + + 2CF553040CDA513000627463 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {987, 762}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 211 199 987 803 0 0 1680 1028 + + + + Content + + PBXProjectModuleGUID + 2CF553750CDA575B00627463 + PBXProjectModuleLabel + UTexture.pas + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 2CF553760CDA575B00627463 + PBXProjectModuleLabel + UTexture.pas + _historyCapacity + 0 + bookmark + 2CF553C10CDA5A4D00627463 + history + + 2CF552FF0CDA500800627463 SplitCount @@ -223,7 +463,87 @@ PBXModuleWindowStatusBarHidden2 RubberWindowFrame - 38 317 616 685 0 0 1680 1028 + 15 338 616 685 0 0 1680 1028 + + + + Content + + PBXProjectModuleGUID + 2CF5528D0CDA426600627463 + PBXProjectModuleLabel + Windows.pas + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 2CF5528E0CDA426600627463 + PBXProjectModuleLabel + Windows.pas + _historyCapacity + 0 + bookmark + 2CF553C20CDA5A4D00627463 + history + + 2CF553780CDA575B00627463 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {616, 644}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 176 191 616 685 0 0 1680 1028 + + + + Content + + PBXProjectModuleGUID + 2CF5528A0CDA426600627463 + PBXProjectModuleLabel + Messages.pas + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 2CF5528B0CDA426600627463 + PBXProjectModuleLabel + Messages.pas + _historyCapacity + 0 + bookmark + 2CF553C30CDA5A4D00627463 + history + + 2CF552760CDA419B00627463 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {1052, 646}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 102 232 1052 687 0 0 1680 1028 @@ -260,8 +580,6 @@ Layout - BecomeActive - ContentConfiguration PBXBottomSmartGroupGIDs @@ -301,15 +619,18 @@ DD7C45450A6E72DE003FA52B DDC6868A09F571C2004E4BFF 2CDD8D0B0CC5539900E4169D + DDC6888C09F57243004E4BFF + DDC688C809F574E9004E4BFF 1C37FBAC04509CD000000102 + 2CF5536A0CDA575B00627463 + 2CF5536B0CDA575B00627463 1C37FAAC04509CD000000102 - 1C37FABC05509CD000000102 PBXSmartGroupTreeModuleOutlineStateSelectionKey - 21 - 19 + 17 + 15 0 @@ -333,7 +654,7 @@ 266 RubberWindowFrame - 665 266 817 753 0 0 1680 1028 + 775 270 817 753 0 0 1680 1028 Module PBXSmartGroupTreeModule @@ -370,7 +691,7 @@ Frame {{0, 0}, {529, 0}} RubberWindowFrame - 665 266 817 753 0 0 1680 1028 + 775 270 817 753 0 0 1680 1028 Module PBXNavigatorGroup @@ -378,6 +699,8 @@ 0pt + BecomeActive + ContentConfiguration PBXProjectModuleGUID @@ -390,7 +713,7 @@ Frame {{0, 5}, {529, 707}} RubberWindowFrame - 665 266 817 753 0 0 1680 1028 + 775 270 817 753 0 0 1680 1028 Module XCDetailModule @@ -414,9 +737,9 @@ TableOfContents - 2C0B7D2E0CD683C80062A7C8 + 2CF5501B0CDA1CD700627463 1CE0B1FE06471DED0097A5F4 - 2C0B7D2F0CD683C80062A7C8 + 2CF5501C0CDA1CD700627463 1CE0B20306471E060097A5F4 1CE0B20506471E060097A5F4 @@ -550,14 +873,26 @@ 5 WindowOrderList + 2CF5537F0CDA575B00627463 + 2CF553800CDA575B00627463 + 2CDD4BFC0CB948FC00549FAC + 2CF54F210CDA14A100627463 + 2CF5528A0CDA426600627463 + 2CF5528D0CDA426600627463 + 1C530D57069F1CE1000CFCEE + 2CF553750CDA575B00627463 + 2CF553720CDA575B00627463 + 2CF5536F0CDA575B00627463 2CDD4B730CB935C700549FAC - 2C0B7D270CD680850062A7C8 - 1CD10A99069EF8BA00B06720 - 2C0B7D300CD683C80062A7C8 + 2CF5536C0CDA575B00627463 + 2CF552930CDA426600627463 + 2CF552960CDA426600627463 /Users/eddie/Projekte/UltraStarDX/trunk/Game/Code/MacOSX/UltraStarDX.xcodeproj + 2CF552990CDA426600627463 + 1CD10A99069EF8BA00B06720 WindowString - 665 266 817 753 0 0 1680 1028 + 775 270 817 753 0 0 1680 1028 WindowTools @@ -573,14 +908,12 @@ Dock - BecomeActive - ContentConfiguration PBXProjectModuleGUID 1CD0528F0623707200166675 PBXProjectModuleLabel - UCommon.pas + UAudio_FFMpeg.pas StatusBarVisibility @@ -589,7 +922,7 @@ Frame {{0, 0}, {1318, 344}} RubberWindowFrame - 347 117 1318 626 0 0 1680 1028 + 312 244 1318 626 0 0 1680 1028 Module PBXNavigatorGroup @@ -597,6 +930,8 @@ 344pt + BecomeActive + ContentConfiguration PBXProjectModuleGUID @@ -613,7 +948,7 @@ Frame {{0, 349}, {1318, 236}} RubberWindowFrame - 347 117 1318 626 0 0 1680 1028 + 312 244 1318 626 0 0 1680 1028 Module PBXBuildResultsModule @@ -636,18 +971,18 @@ TableOfContents 2CDD4B730CB935C700549FAC - 2C0B7D200CD680850062A7C8 + 2CF54F1A0CDA14A100627463 1CD0528F0623707200166675 XCMainBuildResultsModuleGUID ToolbarConfiguration xcode.toolbar.config.build WindowString - 347 117 1318 626 0 0 1680 1028 + 312 244 1318 626 0 0 1680 1028 WindowToolGUID 2CDD4B730CB935C700549FAC WindowToolIsVisible - + FirstTimeWindowDisplayed @@ -678,8 +1013,8 @@ yes sizes - {{0, 0}, {368, 414}} - {{368, 0}, {596, 414}} + {{0, 0}, {360, 414}} + {{360, 0}, {604, 414}} VerticalSplitView @@ -742,14 +1077,14 @@ TableOfContents 1CD10A99069EF8BA00B06720 - 2C0B7D210CD680850062A7C8 + 2CF54F1B0CDA14A100627463 1C162984064C10D400B95A72 - 2C0B7D220CD680850062A7C8 - 2C0B7D230CD680850062A7C8 - 2C0B7D240CD680850062A7C8 - 2C0B7D250CD680850062A7C8 - 2C0B7D260CD680850062A7C8 - 2C0B7D270CD680850062A7C8 + 2CF54F1C0CDA14A100627463 + 2CF54F1D0CDA14A100627463 + 2CF54F1E0CDA14A100627463 + 2CF54F1F0CDA14A100627463 + 2CF54F200CDA14A100627463 + 2CF54F210CDA14A100627463 ToolbarConfiguration xcode.toolbar.config.debug @@ -776,14 +1111,12 @@ Dock - BecomeActive - ContentConfiguration PBXProjectModuleGUID 1CDD528C0622207200134675 PBXProjectModuleLabel - TextGL.pas + UCommon.pas StatusBarVisibility @@ -804,6 +1137,8 @@ 502pt + BecomeActive + ContentConfiguration PBXProjectModuleGUID @@ -839,8 +1174,8 @@ TableOfContents 1C530D57069F1CE1000CFCEE - 2CE78DAF0CCBA1C0003B6817 - 2CE78DB00CCBA1C0003B6817 + 2CF54F3B0CDA1AA600627463 + 2CF54F3C0CDA1AA600627463 1CDD528C0622207200134675 1CD0528E0623707200166675 @@ -903,7 +1238,7 @@ TableOfContents 2CDD4BFC0CB948FC00549FAC - 2CDD8E5D0CC558D500E4169D + 2CF5537E0CDA575B00627463 1C78EAAC065D492600B07095 WindowString diff --git a/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.pbxuser b/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.pbxuser index e00a7dff..04871a3e 100644 --- a/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.pbxuser +++ b/Game/Code/MacOSX/UltraStarDX.xcodeproj/eddie.pbxuser @@ -1,199 +1,504 @@ // !$*UTF8*$! { - 2C0B7D280CD6808A0062A7C8 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 2C4D9C620CC9EC8C0031092D /* TextGL.pas */; + 2C4D9C620CC9EC8C0031092D /* TextGL.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 7742}}"; + sepNavSelRange = "{12201, 8}"; + sepNavVisRect = "{{0, 6061}, {758, 716}}"; + sepNavWindowFrame = "{{38, 157}, {797, 845}}"; + }; }; - 2C0B7D320CD683C80062A7C8 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 2C4D9C620CC9EC8C0031092D /* TextGL.pas */; - name = "TextGL.pas: 11"; - rLen = 0; - rLoc = 92; - rType = 0; - vrLen = 1401; - vrLoc = 0; + 2C4D9C630CC9EC8C0031092D /* UAudio_bass.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {884, 9044}}"; + sepNavSelRange = "{3202, 12}"; + sepNavVisRect = "{{0, 8328}, {758, 716}}"; + sepNavWindowFrame = "{{15, 178}, {797, 845}}"; + }; }; - 2C4D9C620CC9EC8C0031092D /* TextGL.pas */ = { + 2C4D9C640CC9EC8C0031092D /* UAudio_FFMpeg.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {680, 7770}}"; - sepNavSelRange = "{92, 0}"; - sepNavVisRect = "{{0, 0}, {577, 612}}"; - sepNavWindowFrame = "{{38, 261}, {616, 741}}"; + sepNavIntBoundsRect = "{{0, 0}, {1196, 13216}}"; + sepNavSelRange = "{22728, 0}"; + sepNavVisRect = "{{0, 12500}, {758, 716}}"; + sepNavWindowFrame = "{{38, 157}, {797, 845}}"; + }; + }; + 2C4D9C650CC9EC8C0031092D /* UCatCovers.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {764, 2128}}"; + sepNavSelRange = "{352, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{61, 136}, {797, 845}}"; + }; + }; + 2C4D9C660CC9EC8C0031092D /* UCommandLine.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 4074}}"; + sepNavSelRange = "{54, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{84, 115}, {797, 845}}"; }; }; 2C4D9C670CC9EC8C0031092D /* UCommon.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1277, 3990}}"; - sepNavSelRange = "{38, 0}"; - sepNavVisRect = "{{0, 0}, {1277, 312}}"; - sepNavWindowFrame = "{{38, 261}, {616, 741}}"; + sepNavIntBoundsRect = "{{0, 0}, {749, 4186}}"; + sepNavSelRange = "{748, 12}"; + sepNavVisRect = "{{0, 234}, {749, 470}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2C4D9C680CC9EC8C0031092D /* UCore.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1136, 6888}}"; + sepNavSelRange = "{13272, 0}"; + sepNavVisRect = "{{0, 6145}, {758, 716}}"; + sepNavWindowFrame = "{{107, 94}, {797, 845}}"; }; }; 2C4D9C690CC9EC8C0031092D /* UCoreModule.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {577, 1568}}"; - sepNavSelRange = "{278, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {577, 1708}}"; + sepNavSelRange = "{262, 0}"; sepNavVisRect = "{{0, 0}, {577, 612}}"; sepNavWindowFrame = "{{38, 261}, {616, 741}}"; }; }; + 2C4D9C6A0CC9EC8C0031092D /* UCovers.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 3668}}"; + sepNavSelRange = "{49, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{130, 73}, {797, 845}}"; + }; + }; + 2C4D9C6B0CC9EC8C0031092D /* UDataBase.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {4058, 5026}}"; + sepNavSelRange = "{60, 19}"; + sepNavVisRect = "{{0, 0}, {1277, 312}}"; + sepNavWindowFrame = "{{153, 52}, {797, 845}}"; + }; + }; + 2C4D9C6C0CC9EC8C0031092D /* UDLLManager.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1436, 3486}}"; + sepNavSelRange = "{1375, 0}"; + sepNavVisRect = "{{0, 456}, {758, 716}}"; + sepNavWindowFrame = "{{15, 178}, {797, 845}}"; + }; + }; 2C4D9C6D0CC9EC8C0031092D /* UDraw.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1046, 18578}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {577, 612}}"; + sepNavIntBoundsRect = "{{0, 0}, {1277, 18872}}"; + sepNavSelRange = "{9710, 15}"; + sepNavVisRect = "{{0, 4065}, {1277, 312}}"; sepNavWindowFrame = "{{61, 240}, {616, 741}}"; }; }; 2C4D9C6E0CC9EC8C0031092D /* UFiles.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1562, 10710}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {577, 612}}"; + sepNavIntBoundsRect = "{{0, 0}, {1562, 10766}}"; + sepNavSelRange = "{1829, 12}"; + sepNavVisRect = "{{0, 766}, {749, 470}}"; sepNavWindowFrame = "{{84, 219}, {616, 741}}"; }; }; + 2C4D9C6F0CC9EC8C0031092D /* UGraphic.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {830, 9800}}"; + sepNavSelRange = "{872, 16}"; + sepNavVisRect = "{{0, 391}, {758, 716}}"; + sepNavWindowFrame = "{{38, 157}, {797, 845}}"; + }; + }; + 2C4D9C700CC9EC8C0031092D /* UGraphicClasses.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1052, 9450}}"; + sepNavSelRange = "{5863, 11}"; + sepNavVisRect = "{{0, 2572}, {749, 470}}"; + sepNavWindowFrame = "{{61, 136}, {797, 845}}"; + }; + }; + 2C4D9C710CC9EC8C0031092D /* UHooks.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1277, 5964}}"; + sepNavSelRange = "{11810, 0}"; + sepNavVisRect = "{{0, 5652}, {1277, 312}}"; + sepNavWindowFrame = "{{84, 115}, {797, 845}}"; + }; + }; + 2C4D9C720CC9EC8C0031092D /* UIni.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {770, 11102}}"; + sepNavSelRange = "{41, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{107, 94}, {797, 845}}"; + }; + }; + 2C4D9C730CC9EC8C0031092D /* UJoystick.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {896, 3962}}"; + sepNavSelRange = "{46, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{130, 73}, {797, 845}}"; + }; + }; + 2C4D9C740CC9EC8C0031092D /* ULanguage.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 3290}}"; + sepNavSelRange = "{46, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{153, 52}, {797, 845}}"; + }; + }; 2C4D9C760CC9EC8C0031092D /* ULCD.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {577, 4256}}"; - sepNavSelRange = "{320, 0}"; - sepNavVisRect = "{{0, 3483}, {577, 612}}"; + sepNavIntBoundsRect = "{{0, 0}, {577, 4270}}"; + sepNavSelRange = "{25, 0}"; + sepNavVisRect = "{{0, 0}, {577, 612}}"; sepNavWindowFrame = "{{176, 135}, {616, 741}}"; }; }; + 2C4D9C770CC9EC8C0031092D /* ULight.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 2282}}"; + sepNavSelRange = "{1017, 0}"; + sepNavVisRect = "{{0, 425}, {758, 716}}"; + sepNavWindowFrame = "{{15, 178}, {797, 845}}"; + }; + }; + 2C4D9C780CC9EC8C0031092D /* ULog.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 3612}}"; + sepNavSelRange = "{6056, 0}"; + sepNavVisRect = "{{0, 2896}, {758, 716}}"; + sepNavWindowFrame = "{{38, 157}, {797, 845}}"; + }; + }; + 2C4D9C790CC9EC8C0031092D /* ULyrics_bak.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1070, 5950}}"; + sepNavSelRange = "{34, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{84, 115}, {797, 845}}"; + }; + }; + 2C4D9C7A0CC9EC8C0031092D /* ULyrics.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1220, 7700}}"; + sepNavSelRange = "{11162, 13}"; + sepNavVisRect = "{{0, 4395}, {758, 716}}"; + sepNavWindowFrame = "{{61, 136}, {797, 845}}"; + }; + }; 2C4D9C7B0CC9EC8C0031092D /* UMain.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1277, 11312}}"; - sepNavSelRange = "{64, 18}"; + sepNavIntBoundsRect = "{{0, 0}, {1013, 15092}}"; + sepNavSelRange = "{3295, 0}"; + sepNavVisRect = "{{0, 1684}, {1013, 614}}"; + sepNavWindowFrame = "{{222, 91}, {1052, 743}}"; + }; + }; + 2C4D9C7C0CC9EC8C0031092D /* UMedia_dummy.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 3864}}"; + sepNavSelRange = "{859, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{107, 94}, {797, 845}}"; + }; + }; + 2C4D9C7D0CC9EC8C0031092D /* UModules.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 716}}"; + sepNavSelRange = "{31, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{130, 73}, {797, 845}}"; + }; + }; + 2C4D9C7E0CC9EC8C0031092D /* UMusic.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 4438}}"; + sepNavSelRange = "{44, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{153, 52}, {797, 845}}"; + }; + }; + 2C4D9C7F0CC9EC8C0031092D /* UParty.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 5278}}"; + sepNavSelRange = "{48, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{15, 178}, {797, 845}}"; + }; + }; + 2C4D9C800CC9EC8C0031092D /* UPlaylist.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {824, 6496}}"; + sepNavSelRange = "{51, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{38, 157}, {797, 845}}"; + }; + }; + 2C4D9C820CC9EC8C0031092D /* UPluginInterface.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 2198}}"; + sepNavSelRange = "{247, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{84, 115}, {797, 845}}"; + }; + }; + 2C4D9C830CC9EC8C0031092D /* uPluginLoader.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1718, 11116}}"; + sepNavSelRange = "{317, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{107, 94}, {797, 845}}"; + }; + }; + 2C4D9C840CC9EC8C0031092D /* URecord.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1277, 4998}}"; + sepNavSelRange = "{159, 11}"; sepNavVisRect = "{{0, 0}, {1277, 312}}"; - sepNavWindowFrame = "{{222, 93}, {616, 741}}"; + sepNavWindowFrame = "{{130, 73}, {797, 845}}"; + }; + }; + 2C4D9C850CC9EC8C0031092D /* UServices.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1916, 4494}}"; + sepNavSelRange = "{9160, 4}"; + sepNavVisRect = "{{0, 4182}, {1277, 312}}"; + sepNavWindowFrame = "{{153, 52}, {797, 845}}"; + }; + }; + 2C4D9C860CC9EC8C0031092D /* USingNotes.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 716}}"; + sepNavSelRange = "{52, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{15, 178}, {797, 845}}"; + }; + }; + 2C4D9C870CC9EC8C0031092D /* USingScores.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {950, 13818}}"; + sepNavSelRange = "{15011, 16}"; + sepNavVisRect = "{{0, 5904}, {749, 470}}"; + sepNavWindowFrame = "{{38, 157}, {797, 845}}"; + }; + }; + 2C4D9C880CC9EC8C0031092D /* USkins.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 2408}}"; + sepNavSelRange = "{25, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{61, 136}, {797, 845}}"; + }; + }; + 2C4D9C890CC9EC8C0031092D /* USongs.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {950, 12544}}"; + sepNavSelRange = "{7215, 0}"; + sepNavVisRect = "{{0, 3298}, {758, 716}}"; + sepNavWindowFrame = "{{84, 115}, {797, 845}}"; + }; + }; + 2C4D9C8A0CC9EC8C0031092D /* UTextClasses.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1010, 854}}"; + sepNavSelRange = "{54, 0}"; + sepNavVisRect = "{{0, 138}, {758, 716}}"; + sepNavWindowFrame = "{{107, 94}, {797, 845}}"; }; }; 2C4D9C8B0CC9EC8C0031092D /* UTexture.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1730, 16016}}"; - sepNavSelRange = "{2035, 0}"; - sepNavVisRect = "{{0, 3332}, {577, 612}}"; + sepNavIntBoundsRect = "{{0, 0}, {1730, 15960}}"; + sepNavSelRange = "{11823, 20}"; + sepNavVisRect = "{{0, 5091}, {577, 612}}"; sepNavWindowFrame = "{{15, 282}, {616, 741}}"; }; }; + 2C4D9C8C0CC9EC8C0031092D /* UThemes.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {788, 30954}}"; + sepNavSelRange = "{44, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{130, 73}, {797, 845}}"; + }; + }; + 2C4D9C8D0CC9EC8C0031092D /* UTime.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 1400}}"; + sepNavSelRange = "{42, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{153, 52}, {797, 845}}"; + }; + }; + 2C4D9C8E0CC9EC8C0031092D /* UVideo.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {902, 9646}}"; + sepNavSelRange = "{12347, 13}"; + sepNavVisRect = "{{0, 5722}, {749, 470}}"; + sepNavWindowFrame = "{{15, 178}, {797, 845}}"; + }; + }; + 2C4D9D8D0CC9ED230031092D /* Bass.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1358, 13790}}"; + sepNavSelRange = "{51143, 0}"; + sepNavVisRect = "{{0, 10534}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; 2C4D9D900CC9ED4F0031092D /* FreeBitmap.pas */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {974, 24374}}"; - sepNavSelRange = "{1396, 0}"; + sepNavSelRange = "{1377, 0}"; sepNavVisRect = "{{0, 0}, {577, 612}}"; sepNavWindowFrame = "{{245, 72}, {616, 741}}"; }; }; 2C4D9D910CC9ED4F0031092D /* FreeImage.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1718, 10472}}"; - sepNavSelRange = "{1135, 0}"; - sepNavVisRect = "{{0, 0}, {577, 612}}"; + sepNavIntBoundsRect = "{{0, 0}, {1718, 10416}}"; + sepNavSelRange = "{1255, 0}"; + sepNavVisRect = "{{0, 373}, {577, 612}}"; sepNavWindowFrame = "{{15, 282}, {616, 741}}"; }; }; + 2C4D9DCC0CC9EE6F0031092D /* UDisplay.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1277, 6678}}"; + sepNavSelRange = "{9419, 36}"; + sepNavVisRect = "{{0, 4975}, {1277, 312}}"; + sepNavWindowFrame = "{{38, 157}, {797, 845}}"; + }; + }; + 2C4D9DCD0CC9EE6F0031092D /* UDrawTexture.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 1470}}"; + sepNavSelRange = "{54, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{61, 136}, {797, 845}}"; + }; + }; + 2C4D9DCE0CC9EE6F0031092D /* UMenu.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1502, 21658}}"; + sepNavSelRange = "{11354, 12}"; + sepNavVisRect = "{{0, 3972}, {749, 470}}"; + sepNavWindowFrame = "{{38, 157}, {797, 845}}"; + }; + }; 2C4D9DCF0CC9EE6F0031092D /* UMenuButton.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {680, 8022}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {577, 612}}"; + sepNavIntBoundsRect = "{{0, 0}, {680, 8064}}"; + sepNavSelRange = "{6107, 37}"; + sepNavVisRect = "{{0, 1104}, {577, 612}}"; sepNavWindowFrame = "{{153, 156}, {616, 741}}"; }; }; + 2C4D9DD00CC9EE6F0031092D /* UMenuButtonCollection.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 1008}}"; + sepNavSelRange = "{63, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{61, 136}, {797, 845}}"; + }; + }; + 2C4D9DD10CC9EE6F0031092D /* UMenuInteract.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 716}}"; + sepNavSelRange = "{55, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{84, 115}, {797, 845}}"; + }; + }; 2C4D9DD20CC9EE6F0031092D /* UMenuSelect.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {577, 2786}}"; - sepNavSelRange = "{0, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {577, 2828}}"; + sepNavSelRange = "{53, 0}"; sepNavVisRect = "{{0, 0}, {577, 612}}"; sepNavWindowFrame = "{{130, 177}, {616, 741}}"; }; }; - 2C4D9DD40CC9EE6F0031092D /* UMenuStatic.pas */ = { + 2C4D9DD30CC9EE6F0031092D /* UMenuSelectSlide.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {577, 1162}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {577, 612}}"; - sepNavWindowFrame = "{{107, 198}, {616, 741}}"; + sepNavIntBoundsRect = "{{0, 0}, {758, 4928}}"; + sepNavSelRange = "{58, 0}"; + sepNavVisRect = "{{0, 0}, {758, 716}}"; + sepNavWindowFrame = "{{107, 94}, {797, 845}}"; }; }; - 2C4D9DFF0CC9EF840031092D /* MacClasses.pas */ = { + 2C4D9DD40CC9EE6F0031092D /* UMenuStatic.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {578, 812}}"; - sepNavSelRange = "{8, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {577, 1204}}"; + sepNavSelRange = "{53, 0}"; sepNavVisRect = "{{0, 0}, {577, 612}}"; - sepNavWindowFrame = "{{15, 282}, {616, 741}}"; + sepNavWindowFrame = "{{107, 198}, {616, 741}}"; }; }; - 2C4D9E000CC9EF840031092D /* Graphics.pas */ = { + 2C4D9DD50CC9EE6F0031092D /* UMenuText.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {620, 2674}}"; - sepNavSelRange = "{90, 0}"; - sepNavVisRect = "{{0, 0}, {577, 612}}"; - sepNavWindowFrame = "{{38, 261}, {616, 741}}"; + sepNavIntBoundsRect = "{{0, 0}, {962, 5222}}"; + sepNavSelRange = "{2165, 0}"; + sepNavVisRect = "{{0, 707}, {758, 716}}"; + sepNavWindowFrame = "{{130, 73}, {797, 845}}"; }; }; - 2C4D9E010CC9EF840031092D /* JPEG.pas */ = { + 2C4D9DEC0CC9EF0A0031092D /* sdl_image.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {602, 612}}"; - sepNavSelRange = "{5, 0}"; - sepNavVisRect = "{{0, 0}, {577, 612}}"; - sepNavWindowFrame = "{{61, 240}, {616, 741}}"; + sepNavIntBoundsRect = "{{0, 0}, {1268, 4788}}"; + sepNavSelRange = "{8020, 0}"; + sepNavVisRect = "{{0, 1745}, {1013, 614}}"; + sepNavWindowFrame = "{{15, 280}, {1052, 743}}"; }; }; - 2C4D9E020CC9EF840031092D /* MidiFile.pas */ = { + 2C4D9DEF0CC9EF210031092D /* sdl_ttf.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {577, 1442}}"; - sepNavSelRange = "{5, 0}"; - sepNavVisRect = "{{0, 0}, {577, 612}}"; - sepNavWindowFrame = "{{84, 219}, {616, 741}}"; + sepNavIntBoundsRect = "{{0, 0}, {1268, 6552}}"; + sepNavSelRange = "{8844, 12}"; + sepNavVisRect = "{{0, 2054}, {749, 470}}"; }; }; - 2C4D9E030CC9EF840031092D /* MidiOut.pas */ = { + 2C4D9E000CC9EF840031092D /* Graphics.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {577, 882}}"; - sepNavSelRange = "{5, 0}"; - sepNavVisRect = "{{0, 0}, {577, 612}}"; - sepNavWindowFrame = "{{107, 198}, {616, 741}}"; + sepNavIntBoundsRect = "{{0, 0}, {1277, 2674}}"; + sepNavSelRange = "{58, 56}"; + sepNavVisRect = "{{0, 0}, {1277, 312}}"; + sepNavWindowFrame = "{{38, 261}, {616, 741}}"; }; }; - 2C4D9E040CC9EF840031092D /* OpenGL12.pas */ = { + 2C4D9E010CC9EF840031092D /* JPEG.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1616, 65758}}"; - sepNavSelRange = "{66, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {602, 612}}"; + sepNavSelRange = "{53, 0}"; sepNavVisRect = "{{0, 0}, {577, 612}}"; - sepNavWindowFrame = "{{130, 177}, {616, 741}}"; + sepNavWindowFrame = "{{61, 240}, {616, 741}}"; }; }; - 2C4D9E070CC9EF840031092D /* PNGImage.pas */ = { + 2C4D9E040CC9EF840031092D /* OpenGL12.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {577, 612}}"; - sepNavSelRange = "{5, 0}"; - sepNavVisRect = "{{0, 0}, {577, 612}}"; - sepNavWindowFrame = "{{153, 156}, {616, 741}}"; + sepNavIntBoundsRect = "{{0, 0}, {1616, 65828}}"; + sepNavSelRange = "{213686, 0}"; + sepNavVisRect = "{{0, 64932}, {1031, 840}}"; + sepNavWindowFrame = "{{1, 53}, {1070, 969}}"; }; }; 2C4D9E090CC9EF840031092D /* Windows.pas */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {577, 1960}}"; - sepNavSelRange = "{5, 0}"; - sepNavVisRect = "{{0, 0}, {577, 612}}"; + sepNavIntBoundsRect = "{{0, 0}, {577, 2352}}"; + sepNavSelRange = "{2832, 0}"; + sepNavVisRect = "{{0, 1249}, {577, 612}}"; sepNavWindowFrame = "{{176, 135}, {616, 741}}"; }; }; - 2C4D9E0A0CC9EF840031092D /* zlportio.pas */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {577, 612}}"; - sepNavSelRange = "{5, 0}"; - sepNavVisRect = "{{0, 0}, {577, 612}}"; - sepNavWindowFrame = "{{199, 114}, {616, 741}}"; - }; - }; 2C4D9E440CC9F0ED0031092D /* switches.inc */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {577, 612}}"; - sepNavSelRange = "{0, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {577, 616}}"; + sepNavSelRange = "{312, 0}"; sepNavVisRect = "{{0, 0}, {577, 612}}"; sepNavWindowFrame = "{{15, 282}, {616, 741}}"; }; @@ -251,6 +556,8 @@ name = "Project Breakpoints"; objects = ( 2CDEA8080CBD7D920096994C /* UMain.pas:293 */, + 2CF553830CDA578D00627463 /* UMain.pas:148 */, + 2CF553A20CDA59BB00627463 /* UltraStarDX.pas:8 */, ); }; 2CDEA8080CBD7D920096994C /* UMain.pas:293 */ = { @@ -263,14 +570,552 @@ fileReference = 2CDD439C0CBBE92D00F364DE /* UMain.pas */; hitCount = 1; lineNumber = 293; - location = UltraStar; - modificationTime = 214261345.065247; + location = UltraStarDX; + modificationTime = 215636526.320362; + state = 1; + }; + 2CF54F430CDA1B2B00627463 /* UScreenCredits.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1196, 19586}}"; + sepNavSelRange = "{50178, 0}"; + sepNavVisRect = "{{0, 1770}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F440CDA1B2B00627463 /* UScreenEdit.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 1610}}"; + sepNavSelRange = "{34, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F450CDA1B2B00627463 /* UScreenEditConvert.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1178, 8092}}"; + sepNavSelRange = "{41, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F460CDA1B2B00627463 /* UScreenEditHeader.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 5180}}"; + sepNavSelRange = "{59, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F470CDA1B2B00627463 /* UScreenEditSub.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1040, 19236}}"; + sepNavSelRange = "{37, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F480CDA1B2B00627463 /* UScreenLevel.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 1302}}"; + sepNavSelRange = "{54, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F490CDA1B2B00627463 /* UScreenLoading.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 815}}"; + sepNavSelRange = "{58, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F4A0CDA1B2B00627463 /* UScreenMain.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 3990}}"; + sepNavSelRange = "{55, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F4B0CDA1B2B00627463 /* UScreenName.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {956, 3318}}"; + sepNavSelRange = "{34, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F4C0CDA1B2B00627463 /* UScreenOpen.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 2366}}"; + sepNavSelRange = "{55, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F4D0CDA1B2B00627463 /* UScreenOptions.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 2506}}"; + sepNavSelRange = "{311, 0}"; + sepNavVisRect = "{{0, 188}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F4E0CDA1B2B00627463 /* UScreenOptionsAdvanced.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 1484}}"; + sepNavSelRange = "{45, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F4F0CDA1B2B00627463 /* UScreenOptionsGame.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 1582}}"; + sepNavSelRange = "{60, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F500CDA1B2B00627463 /* UScreenOptionsGraphics.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 1400}}"; + sepNavSelRange = "{64, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F510CDA1B2B00627463 /* UScreenOptionsLyrics.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 1330}}"; + sepNavSelRange = "{62, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F520CDA1B2B00627463 /* UScreenOptionsRecord.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {776, 1974}}"; + sepNavSelRange = "{39, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F530CDA1B2B00627463 /* UScreenOptionsSound.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 1414}}"; + sepNavSelRange = "{42, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F540CDA1B2B00627463 /* UScreenOptionsThemes.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 1680}}"; + sepNavSelRange = "{43, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F550CDA1B2B00627463 /* UScreenPartyNewRound.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {758, 5880}}"; + sepNavSelRange = "{62, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F560CDA1B2B00627463 /* UScreenPartyOptions.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 3640}}"; + sepNavSelRange = "{61, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F570CDA1B2B00627463 /* UScreenPartyPlayer.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {956, 4648}}"; + sepNavSelRange = "{62, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F580CDA1B2B00627463 /* UScreenPartyScore.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1046, 4116}}"; + sepNavSelRange = "{61, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F590CDA1B2B00627463 /* UScreenPartyWin.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {752, 3640}}"; + sepNavSelRange = "{59, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F5A0CDA1B2B00627463 /* UScreenPopup.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 3472}}"; + sepNavSelRange = "{56, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F5B0CDA1B2B00627463 /* UScreenScore.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1016, 9478}}"; + sepNavSelRange = "{49, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F5C0CDA1B2B00627463 /* UScreenSing.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1262, 18480}}"; + sepNavSelRange = "{49, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F5D0CDA1B2B00627463 /* UScreenSingModi.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1277, 9324}}"; + sepNavSelRange = "{265, 14}"; + sepNavVisRect = "{{0, 187}, {1277, 312}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F5E0CDA1B2B00627463 /* UScreenSong.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1700, 29050}}"; + sepNavSelRange = "{23456, 0}"; + sepNavVisRect = "{{0, 11219}, {1277, 312}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F5F0CDA1B2B00627463 /* UScreenSongJumpto.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1160, 2884}}"; + sepNavSelRange = "{61, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F600CDA1B2B00627463 /* UScreenSongMenu.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {968, 8834}}"; + sepNavSelRange = "{52, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F610CDA1B2B00627463 /* UScreenStatDetail.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 3514}}"; + sepNavSelRange = "{40, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F620CDA1B2B00627463 /* UScreenStatMain.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1277, 3976}}"; + sepNavSelRange = "{4341, 26}"; + sepNavVisRect = "{{0, 2749}, {1277, 312}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF54F630CDA1B2B00627463 /* UScreenTop5.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 2324}}"; + sepNavSelRange = "{48, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF54F640CDA1B2B00627463 /* UScreenWelcome.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {715, 1694}}"; + sepNavSelRange = "{58, 0}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{38, 58}, {754, 944}}"; + }; + }; + 2CF5508B0CDA22B000627463 /* ModiSDK.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {998, 2072}}"; + sepNavSelRange = "{30, 19}"; + sepNavVisRect = "{{0, 0}, {715, 815}}"; + sepNavWindowFrame = "{{15, 79}, {754, 944}}"; + }; + }; + 2CF5510E0CDA293700627463 /* SQLite3.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1364, 2800}}"; + sepNavSelRange = "{517, 0}"; + sepNavVisRect = "{{0, 0}, {1031, 840}}"; + sepNavWindowFrame = "{{15, 54}, {1070, 969}}"; + }; + }; + 2CF5510F0CDA293700627463 /* SQLiteTable3.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1031, 10766}}"; + sepNavSelRange = "{559, 0}"; + sepNavVisRect = "{{0, 0}, {1031, 840}}"; + sepNavWindowFrame = "{{15, 54}, {1070, 969}}"; + }; + }; + 2CF551A70CDA356800627463 /* UltraStar.dpr */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1031, 2338}}"; + sepNavSelRange = "{6767, 0}"; + sepNavVisRect = "{{0, 1498}, {1031, 840}}"; + sepNavWindowFrame = "{{15, 54}, {1070, 969}}"; + }; + }; + 2CF552110CDA3D1400627463 /* UPluginDefs.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1013, 2506}}"; + sepNavSelRange = "{5, 11}"; + sepNavVisRect = "{{0, 0}, {1013, 614}}"; + sepNavWindowFrame = "{{107, 196}, {1052, 743}}"; + }; + }; + 2CF552660CDA404000627463 /* Messages.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1013, 614}}"; + sepNavSelRange = "{65, 0}"; + sepNavVisRect = "{{0, 0}, {1013, 614}}"; + sepNavWindowFrame = "{{102, 176}, {1052, 743}}"; + }; + }; + 2CF552760CDA419B00627463 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 2CF552660CDA404000627463 /* Messages.pas */; + }; + 2CF5529E0CDA42C900627463 /* avcodec.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1013, 28616}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 375}, {1013, 614}}"; + sepNavWindowFrame = "{{176, 133}, {1052, 743}}"; + }; + }; + 2CF5529F0CDA42C900627463 /* avformat.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1013, 9828}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 298}, {1013, 614}}"; + sepNavWindowFrame = "{{245, 70}, {1052, 743}}"; + }; + }; + 2CF552A00CDA42C900627463 /* avio.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1013, 3598}}"; + sepNavSelRange = "{347, 0}"; + sepNavVisRect = "{{0, 190}, {1013, 614}}"; + sepNavWindowFrame = "{{199, 112}, {1052, 743}}"; + }; + }; + 2CF552A10CDA42C900627463 /* avutil.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1022, 2058}}"; + sepNavSelRange = "{674, 0}"; + sepNavVisRect = "{{0, 293}, {1013, 614}}"; + sepNavWindowFrame = "{{222, 91}, {1052, 743}}"; + }; + }; + 2CF552FF0CDA500800627463 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 2C4D9C8B0CC9EC8C0031092D /* UTexture.pas */; + }; + 2CF553040CDA513000627463 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 98B8BE5C0B1F974F00162019 /* sdl.pas */; + }; + 2CF553060CDA514A00627463 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 2C4D9DEC0CC9EF0A0031092D /* sdl_image.pas */; + }; + 2CF553070CDA51B500627463 /* sdlutils.pas */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1013, 61068}}"; + sepNavSelRange = "{8481, 20}"; + sepNavVisRect = "{{0, 1054}, {1013, 614}}"; + sepNavWindowFrame = "{{38, 259}, {1052, 743}}"; + }; + }; + 2CF553670CDA575100627463 /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = DDC6851B09F57195004E4BFF /* UltraStarDX.pas */; + }; + 2CF553780CDA575B00627463 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2C4D9E090CC9EF840031092D /* Windows.pas */; + name = "function GetTickCount : Cardinal;"; + rLen = 35; + rLoc = 2755; + rType = 0; + vrLen = 1149; + vrLoc = 1974; + }; + 2CF553830CDA578D00627463 /* UMain.pas:148 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + delayBeforeContinue = 0; + fileReference = 2C4D9C7B0CC9EC8C0031092D /* UMain.pas */; + hitCount = 1; + lineNumber = 148; + location = UltraStarDX; + modificationTime = 215636536.733827; + state = 1; + }; + 2CF553940CDA58E900627463 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2C4D9C640CC9EC8C0031092D /* UAudio_FFMpeg.pas */; + name = "{$ifdef fpc}"; + rLen = 12; + rLoc = 11808; + rType = 0; + vrLen = 1465; + vrLoc = 718; + }; + 2CF553960CDA58E900627463 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2C4D9C630CC9EC8C0031092D /* UAudio_bass.pas */; + name = AllocateHWND; + rLen = 12; + rLoc = 3202; + rType = 0; + vrLen = 1409; + vrLoc = 2690; + }; + 2CF553A20CDA59BB00627463 /* UltraStarDX.pas:8 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + delayBeforeContinue = 0; + fileReference = DDC6851B09F57195004E4BFF /* UltraStarDX.pas */; + hitCount = 1; + lineNumber = 8; + location = UltraStarDX; + modificationTime = 215636528.021684; state = 1; }; + 2CF553B10CDA5A2F00627463 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2C4D9C7B0CC9EC8C0031092D /* UMain.pas */; + name = "UMain.pas: 136"; + rLen = 0; + rLoc = 3282; + rType = 0; + vrLen = 1064; + vrLoc = 3295; + }; + 2CF553BB0CDA5A4D00627463 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2C4D9C7B0CC9EC8C0031092D /* UMain.pas */; + name = "UMain.pas: 138"; + rLen = 0; + rLoc = 3295; + rType = 0; + vrLen = 1415; + vrLoc = 2519; + }; + 2CF553BC0CDA5A4D00627463 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2C4D9C640CC9EC8C0031092D /* UAudio_FFMpeg.pas */; + name = "UAudio_FFMpeg.pas: 944"; + rLen = 0; + rLoc = 22728; + rType = 0; + vrLen = 1145; + vrLoc = 21583; + }; + 2CF553BD0CDA5A4D00627463 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2C4D9C630CC9EC8C0031092D /* UAudio_bass.pas */; + name = AllocateHWND; + rLen = 12; + rLoc = 3202; + rType = 0; + vrLen = 1157; + vrLoc = 15694; + }; + 2CF553BE0CDA5A4D00627463 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = DDC6851B09F57195004E4BFF /* UltraStarDX.pas */; + name = "UltraStarDX.pas: 7"; + rLen = 0; + rLoc = 129; + rType = 0; + vrLen = 159; + vrLoc = 0; + }; + 2CF553BF0CDA5A4D00627463 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2C4D9DEC0CC9EF0A0031092D /* sdl_image.pas */; + name = "sdl_image.pas: 130"; + rLen = 0; + rLoc = 8020; + rType = 0; + vrLen = 885; + vrLoc = 7978; + }; + 2CF553C00CDA5A4D00627463 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 98B8BE5C0B1F974F00162019 /* sdl.pas */; + name = "sdl.pas: 250"; + rLen = 0; + rLoc = 16506; + rType = 0; + vrLen = 886; + vrLoc = 16376; + }; + 2CF553C10CDA5A4D00627463 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2C4D9C8B0CC9EC8C0031092D /* UTexture.pas */; + name = SDL_ScaleSurfaceRect; + rLen = 20; + rLoc = 11823; + rType = 0; + vrLen = 1266; + vrLoc = 10980; + }; + 2CF553C20CDA5A4D00627463 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2C4D9E090CC9EF840031092D /* Windows.pas */; + name = "Windows.pas: 115"; + rLen = 0; + rLoc = 2832; + rType = 0; + vrLen = 1201; + vrLoc = 2027; + }; + 2CF553C30CDA5A4D00627463 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2CF552660CDA404000627463 /* Messages.pas */; + name = "Messages.pas: 9"; + rLen = 0; + rLoc = 65; + rType = 0; + vrLen = 428; + vrLoc = 0; + }; 9845B6590B1F9B9E0084DD62 /* SDL.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {948, 1330}}"; - sepNavSelRange = "{345, 0}"; + sepNavSelRange = "{273, 0}"; sepNavVisRect = "{{0, 0}, {948, 730}}"; sepNavWindowFrame = "{{61, 122}, {987, 859}}"; }; @@ -278,8 +1123,8 @@ 98B8BE5C0B1F974F00162019 /* sdl.pas */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1268, 58492}}"; - sepNavSelRange = "{17272, 0}"; - sepNavVisRect = "{{0, 3394}, {948, 730}}"; + sepNavSelRange = "{16506, 0}"; + sepNavVisRect = "{{0, 3444}, {948, 730}}"; sepNavWindowFrame = "{{211, 143}, {987, 859}}"; }; }; @@ -287,7 +1132,7 @@ uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {948, 5390}}"; sepNavSelRange = "{558, 0}"; - sepNavVisRect = "{{0, 0}, {948, 730}}"; + sepNavVisRect = "{{0, 21}, {948, 730}}"; sepNavWindowFrame = "{{15, 164}, {987, 859}}"; }; }; @@ -295,7 +1140,7 @@ activeExec = 0; }; DDC6850F09F5717A004E4BFF /* Project object */ = { - activeBuildConfigurationName = Release; + activeBuildConfigurationName = Debug; activeExecutable = 2CDD4B5D0CB9354800549FAC /* UltraStarDX */; activeTarget = DDC688C709F574E9004E4BFF /* UltraStarDX */; addToTargets = ( @@ -304,6 +1149,8 @@ ); breakpoints = ( 2CDEA8080CBD7D920096994C /* UMain.pas:293 */, + 2CF553830CDA578D00627463 /* UMain.pas:148 */, + 2CF553A20CDA59BB00627463 /* UltraStarDX.pas:8 */, ); breakpointsGroup = 2CDD4B7F0CB9394600549FAC /* XCBreakpointsBucket */; codeSenseManager = 2CDD4B6A0CB9357000549FAC /* Code sense */; @@ -409,12 +1256,28 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 215383733; - PBXWorkspaceStateSaveDate = 215383733; + PBXPerProjectTemplateStateSaveDate = 215618698; + PBXWorkspaceStateSaveDate = 215618698; }; perUserProjectItems = { - 2C0B7D280CD6808A0062A7C8 /* PBXBookmark */ = 2C0B7D280CD6808A0062A7C8 /* PBXBookmark */; - 2C0B7D320CD683C80062A7C8 /* PBXTextBookmark */ = 2C0B7D320CD683C80062A7C8 /* PBXTextBookmark */; + 2CF552760CDA419B00627463 /* PBXBookmark */ = 2CF552760CDA419B00627463 /* PBXBookmark */; + 2CF552FF0CDA500800627463 /* PBXBookmark */ = 2CF552FF0CDA500800627463 /* PBXBookmark */; + 2CF553040CDA513000627463 /* PBXBookmark */ = 2CF553040CDA513000627463 /* PBXBookmark */; + 2CF553060CDA514A00627463 /* PBXBookmark */ = 2CF553060CDA514A00627463 /* PBXBookmark */; + 2CF553670CDA575100627463 /* PBXBookmark */ = 2CF553670CDA575100627463 /* PBXBookmark */; + 2CF553780CDA575B00627463 /* PBXTextBookmark */ = 2CF553780CDA575B00627463 /* PBXTextBookmark */; + 2CF553940CDA58E900627463 /* PBXTextBookmark */ = 2CF553940CDA58E900627463 /* PBXTextBookmark */; + 2CF553960CDA58E900627463 /* PBXTextBookmark */ = 2CF553960CDA58E900627463 /* PBXTextBookmark */; + 2CF553B10CDA5A2F00627463 /* PBXTextBookmark */ = 2CF553B10CDA5A2F00627463 /* PBXTextBookmark */; + 2CF553BB0CDA5A4D00627463 /* PBXTextBookmark */ = 2CF553BB0CDA5A4D00627463 /* PBXTextBookmark */; + 2CF553BC0CDA5A4D00627463 /* PBXTextBookmark */ = 2CF553BC0CDA5A4D00627463 /* PBXTextBookmark */; + 2CF553BD0CDA5A4D00627463 /* PBXTextBookmark */ = 2CF553BD0CDA5A4D00627463 /* PBXTextBookmark */; + 2CF553BE0CDA5A4D00627463 /* PBXTextBookmark */ = 2CF553BE0CDA5A4D00627463 /* PBXTextBookmark */; + 2CF553BF0CDA5A4D00627463 /* PBXTextBookmark */ = 2CF553BF0CDA5A4D00627463 /* PBXTextBookmark */; + 2CF553C00CDA5A4D00627463 /* PBXTextBookmark */ = 2CF553C00CDA5A4D00627463 /* PBXTextBookmark */; + 2CF553C10CDA5A4D00627463 /* PBXTextBookmark */ = 2CF553C10CDA5A4D00627463 /* PBXTextBookmark */; + 2CF553C20CDA5A4D00627463 /* PBXTextBookmark */ = 2CF553C20CDA5A4D00627463 /* PBXTextBookmark */; + 2CF553C30CDA5A4D00627463 /* PBXTextBookmark */ = 2CF553C30CDA5A4D00627463 /* PBXTextBookmark */; }; sourceControlManager = 2CDD4B690CB9357000549FAC /* Source Control */; userBuildSettings = { @@ -423,7 +1286,7 @@ DDC6851B09F57195004E4BFF /* UltraStarDX.pas */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {948, 730}}"; - sepNavSelRange = "{17, 0}"; + sepNavSelRange = "{129, 0}"; sepNavVisRect = "{{0, 0}, {948, 730}}"; sepNavWindowFrame = "{{189, 86}, {987, 859}}"; }; diff --git a/Game/Code/MacOSX/UltraStarDX.xcodeproj/project.pbxproj b/Game/Code/MacOSX/UltraStarDX.xcodeproj/project.pbxproj index 958c7a8a..f2cf90b5 100644 --- a/Game/Code/MacOSX/UltraStarDX.xcodeproj/project.pbxproj +++ b/Game/Code/MacOSX/UltraStarDX.xcodeproj/project.pbxproj @@ -26,7 +26,6 @@ 2C4D9C9F0CC9EC8C0031092D /* UIni.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C720CC9EC8C0031092D /* UIni.pas */; }; 2C4D9CA00CC9EC8C0031092D /* UJoystick.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C730CC9EC8C0031092D /* UJoystick.pas */; }; 2C4D9CA10CC9EC8C0031092D /* ULanguage.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C740CC9EC8C0031092D /* ULanguage.pas */; }; - 2C4D9CA20CC9EC8C0031092D /* Ulazjpeg.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C750CC9EC8C0031092D /* Ulazjpeg.pas */; }; 2C4D9CA30CC9EC8C0031092D /* ULCD.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C760CC9EC8C0031092D /* ULCD.pas */; }; 2C4D9CA40CC9EC8C0031092D /* ULight.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C770CC9EC8C0031092D /* ULight.pas */; }; 2C4D9CA50CC9EC8C0031092D /* ULog.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C780CC9EC8C0031092D /* ULog.pas */; }; @@ -38,7 +37,6 @@ 2C4D9CAB0CC9EC8C0031092D /* UMusic.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C7E0CC9EC8C0031092D /* UMusic.pas */; }; 2C4D9CAC0CC9EC8C0031092D /* UParty.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C7F0CC9EC8C0031092D /* UParty.pas */; }; 2C4D9CAD0CC9EC8C0031092D /* UPlaylist.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C800CC9EC8C0031092D /* UPlaylist.pas */; }; - 2C4D9CAE0CC9EC8C0031092D /* UPliki.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C810CC9EC8C0031092D /* UPliki.pas */; }; 2C4D9CAF0CC9EC8C0031092D /* UPluginInterface.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C820CC9EC8C0031092D /* UPluginInterface.pas */; }; 2C4D9CB00CC9EC8C0031092D /* uPluginLoader.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C830CC9EC8C0031092D /* uPluginLoader.pas */; }; 2C4D9CB10CC9EC8C0031092D /* URecord.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C840CC9EC8C0031092D /* URecord.pas */; }; @@ -71,7 +69,6 @@ 2C4D9CCC0CC9EC8C0031092D /* UIni.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C720CC9EC8C0031092D /* UIni.pas */; }; 2C4D9CCD0CC9EC8C0031092D /* UJoystick.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C730CC9EC8C0031092D /* UJoystick.pas */; }; 2C4D9CCE0CC9EC8C0031092D /* ULanguage.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C740CC9EC8C0031092D /* ULanguage.pas */; }; - 2C4D9CCF0CC9EC8C0031092D /* Ulazjpeg.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C750CC9EC8C0031092D /* Ulazjpeg.pas */; }; 2C4D9CD00CC9EC8C0031092D /* ULCD.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C760CC9EC8C0031092D /* ULCD.pas */; }; 2C4D9CD10CC9EC8C0031092D /* ULight.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C770CC9EC8C0031092D /* ULight.pas */; }; 2C4D9CD20CC9EC8C0031092D /* ULog.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C780CC9EC8C0031092D /* ULog.pas */; }; @@ -83,7 +80,6 @@ 2C4D9CD80CC9EC8C0031092D /* UMusic.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C7E0CC9EC8C0031092D /* UMusic.pas */; }; 2C4D9CD90CC9EC8C0031092D /* UParty.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C7F0CC9EC8C0031092D /* UParty.pas */; }; 2C4D9CDA0CC9EC8C0031092D /* UPlaylist.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C800CC9EC8C0031092D /* UPlaylist.pas */; }; - 2C4D9CDB0CC9EC8C0031092D /* UPliki.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C810CC9EC8C0031092D /* UPliki.pas */; }; 2C4D9CDC0CC9EC8C0031092D /* UPluginInterface.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C820CC9EC8C0031092D /* UPluginInterface.pas */; }; 2C4D9CDD0CC9EC8C0031092D /* uPluginLoader.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C830CC9EC8C0031092D /* uPluginLoader.pas */; }; 2C4D9CDE0CC9EC8C0031092D /* URecord.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9C840CC9EC8C0031092D /* URecord.pas */; }; @@ -133,24 +129,14 @@ 2C4D9DF20CC9EF210031092D /* sdltruetypefont.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9DF00CC9EF210031092D /* sdltruetypefont.pas */; }; 2C4D9DF30CC9EF210031092D /* sdl_ttf.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9DEF0CC9EF210031092D /* sdl_ttf.pas */; }; 2C4D9DF40CC9EF210031092D /* sdltruetypefont.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9DF00CC9EF210031092D /* sdltruetypefont.pas */; }; - 2C4D9E0B0CC9EF840031092D /* MacClasses.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9DFF0CC9EF840031092D /* MacClasses.pas */; }; 2C4D9E0C0CC9EF840031092D /* Graphics.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E000CC9EF840031092D /* Graphics.pas */; }; 2C4D9E0D0CC9EF840031092D /* JPEG.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E010CC9EF840031092D /* JPEG.pas */; }; - 2C4D9E0E0CC9EF840031092D /* MidiFile.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E020CC9EF840031092D /* MidiFile.pas */; }; - 2C4D9E0F0CC9EF840031092D /* MidiOut.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E030CC9EF840031092D /* MidiOut.pas */; }; 2C4D9E100CC9EF840031092D /* OpenGL12.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E040CC9EF840031092D /* OpenGL12.pas */; }; - 2C4D9E130CC9EF840031092D /* PNGImage.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E070CC9EF840031092D /* PNGImage.pas */; }; 2C4D9E150CC9EF840031092D /* Windows.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E090CC9EF840031092D /* Windows.pas */; }; - 2C4D9E160CC9EF840031092D /* zlportio.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E0A0CC9EF840031092D /* zlportio.pas */; }; - 2C4D9E170CC9EF840031092D /* MacClasses.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9DFF0CC9EF840031092D /* MacClasses.pas */; }; 2C4D9E180CC9EF840031092D /* Graphics.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E000CC9EF840031092D /* Graphics.pas */; }; 2C4D9E190CC9EF840031092D /* JPEG.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E010CC9EF840031092D /* JPEG.pas */; }; - 2C4D9E1A0CC9EF840031092D /* MidiFile.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E020CC9EF840031092D /* MidiFile.pas */; }; - 2C4D9E1B0CC9EF840031092D /* MidiOut.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E030CC9EF840031092D /* MidiOut.pas */; }; 2C4D9E1C0CC9EF840031092D /* OpenGL12.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E040CC9EF840031092D /* OpenGL12.pas */; }; - 2C4D9E1F0CC9EF840031092D /* PNGImage.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E070CC9EF840031092D /* PNGImage.pas */; }; 2C4D9E210CC9EF840031092D /* Windows.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E090CC9EF840031092D /* Windows.pas */; }; - 2C4D9E220CC9EF840031092D /* zlportio.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E0A0CC9EF840031092D /* zlportio.pas */; }; 2C4D9E450CC9F0ED0031092D /* switches.inc in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E440CC9F0ED0031092D /* switches.inc */; }; 2C4D9E460CC9F0ED0031092D /* switches.inc in Sources */ = {isa = PBXBuildFile; fileRef = 2C4D9E440CC9F0ED0031092D /* switches.inc */; }; 2CDD4BDE0CB947A400549FAC /* sdl.pas in Sources */ = {isa = PBXBuildFile; fileRef = 98B8BE5C0B1F974F00162019 /* sdl.pas */; }; @@ -159,6 +145,112 @@ 2CDEA4F70CBD725B0096994C /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CDEA4F60CBD725B0096994C /* OpenGL.framework */; }; 2CDEC4960CC5264600FFA244 /* SDL.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 98B8BE570B1F972400162019 /* SDL.framework */; }; 2CDEC4CD0CC52E7F00FFA244 /* UltraStarDX.icns in Resources */ = {isa = PBXBuildFile; fileRef = 2CDEC4CC0CC52E7F00FFA244 /* UltraStarDX.icns */; }; + 2CF54F650CDA1B2B00627463 /* UScreenCredits.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F430CDA1B2B00627463 /* UScreenCredits.pas */; }; + 2CF54F660CDA1B2B00627463 /* UScreenEdit.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F440CDA1B2B00627463 /* UScreenEdit.pas */; }; + 2CF54F670CDA1B2B00627463 /* UScreenEditConvert.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F450CDA1B2B00627463 /* UScreenEditConvert.pas */; }; + 2CF54F680CDA1B2B00627463 /* UScreenEditHeader.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F460CDA1B2B00627463 /* UScreenEditHeader.pas */; }; + 2CF54F690CDA1B2B00627463 /* UScreenEditSub.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F470CDA1B2B00627463 /* UScreenEditSub.pas */; }; + 2CF54F6A0CDA1B2B00627463 /* UScreenLevel.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F480CDA1B2B00627463 /* UScreenLevel.pas */; }; + 2CF54F6B0CDA1B2B00627463 /* UScreenLoading.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F490CDA1B2B00627463 /* UScreenLoading.pas */; }; + 2CF54F6C0CDA1B2B00627463 /* UScreenMain.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F4A0CDA1B2B00627463 /* UScreenMain.pas */; }; + 2CF54F6D0CDA1B2B00627463 /* UScreenName.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F4B0CDA1B2B00627463 /* UScreenName.pas */; }; + 2CF54F6E0CDA1B2B00627463 /* UScreenOpen.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F4C0CDA1B2B00627463 /* UScreenOpen.pas */; }; + 2CF54F6F0CDA1B2B00627463 /* UScreenOptions.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F4D0CDA1B2B00627463 /* UScreenOptions.pas */; }; + 2CF54F700CDA1B2B00627463 /* UScreenOptionsAdvanced.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F4E0CDA1B2B00627463 /* UScreenOptionsAdvanced.pas */; }; + 2CF54F710CDA1B2B00627463 /* UScreenOptionsGame.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F4F0CDA1B2B00627463 /* UScreenOptionsGame.pas */; }; + 2CF54F720CDA1B2B00627463 /* UScreenOptionsGraphics.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F500CDA1B2B00627463 /* UScreenOptionsGraphics.pas */; }; + 2CF54F730CDA1B2B00627463 /* UScreenOptionsLyrics.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F510CDA1B2B00627463 /* UScreenOptionsLyrics.pas */; }; + 2CF54F740CDA1B2B00627463 /* UScreenOptionsRecord.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F520CDA1B2B00627463 /* UScreenOptionsRecord.pas */; }; + 2CF54F750CDA1B2B00627463 /* UScreenOptionsSound.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F530CDA1B2B00627463 /* UScreenOptionsSound.pas */; }; + 2CF54F760CDA1B2B00627463 /* UScreenOptionsThemes.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F540CDA1B2B00627463 /* UScreenOptionsThemes.pas */; }; + 2CF54F770CDA1B2B00627463 /* UScreenPartyNewRound.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F550CDA1B2B00627463 /* UScreenPartyNewRound.pas */; }; + 2CF54F780CDA1B2B00627463 /* UScreenPartyOptions.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F560CDA1B2B00627463 /* UScreenPartyOptions.pas */; }; + 2CF54F790CDA1B2B00627463 /* UScreenPartyPlayer.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F570CDA1B2B00627463 /* UScreenPartyPlayer.pas */; }; + 2CF54F7A0CDA1B2B00627463 /* UScreenPartyScore.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F580CDA1B2B00627463 /* UScreenPartyScore.pas */; }; + 2CF54F7B0CDA1B2B00627463 /* UScreenPartyWin.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F590CDA1B2B00627463 /* UScreenPartyWin.pas */; }; + 2CF54F7C0CDA1B2B00627463 /* UScreenPopup.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F5A0CDA1B2B00627463 /* UScreenPopup.pas */; }; + 2CF54F7D0CDA1B2B00627463 /* UScreenScore.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F5B0CDA1B2B00627463 /* UScreenScore.pas */; }; + 2CF54F7E0CDA1B2B00627463 /* UScreenSing.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F5C0CDA1B2B00627463 /* UScreenSing.pas */; }; + 2CF54F7F0CDA1B2B00627463 /* UScreenSingModi.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F5D0CDA1B2B00627463 /* UScreenSingModi.pas */; }; + 2CF54F800CDA1B2B00627463 /* UScreenSong.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F5E0CDA1B2B00627463 /* UScreenSong.pas */; }; + 2CF54F810CDA1B2B00627463 /* UScreenSongJumpto.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F5F0CDA1B2B00627463 /* UScreenSongJumpto.pas */; }; + 2CF54F820CDA1B2B00627463 /* UScreenSongMenu.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F600CDA1B2B00627463 /* UScreenSongMenu.pas */; }; + 2CF54F830CDA1B2B00627463 /* UScreenStatDetail.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F610CDA1B2B00627463 /* UScreenStatDetail.pas */; }; + 2CF54F840CDA1B2B00627463 /* UScreenStatMain.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F620CDA1B2B00627463 /* UScreenStatMain.pas */; }; + 2CF54F850CDA1B2B00627463 /* UScreenTop5.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F630CDA1B2B00627463 /* UScreenTop5.pas */; }; + 2CF54F860CDA1B2B00627463 /* UScreenWelcome.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F640CDA1B2B00627463 /* UScreenWelcome.pas */; }; + 2CF54F870CDA1B2B00627463 /* UScreenCredits.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F430CDA1B2B00627463 /* UScreenCredits.pas */; }; + 2CF54F880CDA1B2B00627463 /* UScreenEdit.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F440CDA1B2B00627463 /* UScreenEdit.pas */; }; + 2CF54F890CDA1B2B00627463 /* UScreenEditConvert.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F450CDA1B2B00627463 /* UScreenEditConvert.pas */; }; + 2CF54F8A0CDA1B2B00627463 /* UScreenEditHeader.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F460CDA1B2B00627463 /* UScreenEditHeader.pas */; }; + 2CF54F8B0CDA1B2B00627463 /* UScreenEditSub.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F470CDA1B2B00627463 /* UScreenEditSub.pas */; }; + 2CF54F8C0CDA1B2B00627463 /* UScreenLevel.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F480CDA1B2B00627463 /* UScreenLevel.pas */; }; + 2CF54F8D0CDA1B2B00627463 /* UScreenLoading.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F490CDA1B2B00627463 /* UScreenLoading.pas */; }; + 2CF54F8E0CDA1B2B00627463 /* UScreenMain.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F4A0CDA1B2B00627463 /* UScreenMain.pas */; }; + 2CF54F8F0CDA1B2B00627463 /* UScreenName.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F4B0CDA1B2B00627463 /* UScreenName.pas */; }; + 2CF54F900CDA1B2B00627463 /* UScreenOpen.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F4C0CDA1B2B00627463 /* UScreenOpen.pas */; }; + 2CF54F910CDA1B2B00627463 /* UScreenOptions.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F4D0CDA1B2B00627463 /* UScreenOptions.pas */; }; + 2CF54F920CDA1B2B00627463 /* UScreenOptionsAdvanced.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F4E0CDA1B2B00627463 /* UScreenOptionsAdvanced.pas */; }; + 2CF54F930CDA1B2B00627463 /* UScreenOptionsGame.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F4F0CDA1B2B00627463 /* UScreenOptionsGame.pas */; }; + 2CF54F940CDA1B2B00627463 /* UScreenOptionsGraphics.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F500CDA1B2B00627463 /* UScreenOptionsGraphics.pas */; }; + 2CF54F950CDA1B2B00627463 /* UScreenOptionsLyrics.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F510CDA1B2B00627463 /* UScreenOptionsLyrics.pas */; }; + 2CF54F960CDA1B2B00627463 /* UScreenOptionsRecord.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F520CDA1B2B00627463 /* UScreenOptionsRecord.pas */; }; + 2CF54F970CDA1B2B00627463 /* UScreenOptionsSound.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F530CDA1B2B00627463 /* UScreenOptionsSound.pas */; }; + 2CF54F980CDA1B2B00627463 /* UScreenOptionsThemes.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F540CDA1B2B00627463 /* UScreenOptionsThemes.pas */; }; + 2CF54F990CDA1B2B00627463 /* UScreenPartyNewRound.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F550CDA1B2B00627463 /* UScreenPartyNewRound.pas */; }; + 2CF54F9A0CDA1B2B00627463 /* UScreenPartyOptions.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F560CDA1B2B00627463 /* UScreenPartyOptions.pas */; }; + 2CF54F9B0CDA1B2B00627463 /* UScreenPartyPlayer.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F570CDA1B2B00627463 /* UScreenPartyPlayer.pas */; }; + 2CF54F9C0CDA1B2B00627463 /* UScreenPartyScore.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F580CDA1B2B00627463 /* UScreenPartyScore.pas */; }; + 2CF54F9D0CDA1B2B00627463 /* UScreenPartyWin.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F590CDA1B2B00627463 /* UScreenPartyWin.pas */; }; + 2CF54F9E0CDA1B2B00627463 /* UScreenPopup.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F5A0CDA1B2B00627463 /* UScreenPopup.pas */; }; + 2CF54F9F0CDA1B2B00627463 /* UScreenScore.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F5B0CDA1B2B00627463 /* UScreenScore.pas */; }; + 2CF54FA00CDA1B2B00627463 /* UScreenSing.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F5C0CDA1B2B00627463 /* UScreenSing.pas */; }; + 2CF54FA10CDA1B2B00627463 /* UScreenSingModi.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F5D0CDA1B2B00627463 /* UScreenSingModi.pas */; }; + 2CF54FA20CDA1B2B00627463 /* UScreenSong.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F5E0CDA1B2B00627463 /* UScreenSong.pas */; }; + 2CF54FA30CDA1B2B00627463 /* UScreenSongJumpto.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F5F0CDA1B2B00627463 /* UScreenSongJumpto.pas */; }; + 2CF54FA40CDA1B2B00627463 /* UScreenSongMenu.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F600CDA1B2B00627463 /* UScreenSongMenu.pas */; }; + 2CF54FA50CDA1B2B00627463 /* UScreenStatDetail.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F610CDA1B2B00627463 /* UScreenStatDetail.pas */; }; + 2CF54FA60CDA1B2B00627463 /* UScreenStatMain.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F620CDA1B2B00627463 /* UScreenStatMain.pas */; }; + 2CF54FA70CDA1B2B00627463 /* UScreenTop5.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F630CDA1B2B00627463 /* UScreenTop5.pas */; }; + 2CF54FA80CDA1B2B00627463 /* UScreenWelcome.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF54F640CDA1B2B00627463 /* UScreenWelcome.pas */; }; + 2CF5508C0CDA22B000627463 /* ModiSDK.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF5508B0CDA22B000627463 /* ModiSDK.pas */; }; + 2CF5508D0CDA22B000627463 /* ModiSDK.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF5508B0CDA22B000627463 /* ModiSDK.pas */; }; + 2CF551100CDA293700627463 /* SQLite3.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF5510E0CDA293700627463 /* SQLite3.pas */; }; + 2CF551110CDA293700627463 /* SQLiteTable3.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF5510F0CDA293700627463 /* SQLiteTable3.pas */; }; + 2CF551120CDA293700627463 /* SQLite3.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF5510E0CDA293700627463 /* SQLite3.pas */; }; + 2CF551130CDA293700627463 /* SQLiteTable3.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF5510F0CDA293700627463 /* SQLiteTable3.pas */; }; + 2CF5512D0CDA29C600627463 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CF5512C0CDA29C600627463 /* libsqlite3.dylib */; }; + 2CF552140CDA3D1400627463 /* UPluginDefs.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF552110CDA3D1400627463 /* UPluginDefs.pas */; }; + 2CF552170CDA3D1400627463 /* UPluginDefs.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF552110CDA3D1400627463 /* UPluginDefs.pas */; }; + 2CF552670CDA404000627463 /* Messages.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF552660CDA404000627463 /* Messages.pas */; }; + 2CF552680CDA404000627463 /* Messages.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF552660CDA404000627463 /* Messages.pas */; }; + 2CF552A70CDA42C900627463 /* avcodec.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF5529E0CDA42C900627463 /* avcodec.pas */; }; + 2CF552A80CDA42C900627463 /* avformat.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF5529F0CDA42C900627463 /* avformat.pas */; }; + 2CF552A90CDA42C900627463 /* avio.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF552A00CDA42C900627463 /* avio.pas */; }; + 2CF552AA0CDA42C900627463 /* avutil.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF552A10CDA42C900627463 /* avutil.pas */; }; + 2CF552AD0CDA42C900627463 /* opt.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF552A40CDA42C900627463 /* opt.pas */; }; + 2CF552AE0CDA42C900627463 /* rational.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF552A50CDA42C900627463 /* rational.pas */; }; + 2CF552B00CDA42C900627463 /* avcodec.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF5529E0CDA42C900627463 /* avcodec.pas */; }; + 2CF552B10CDA42C900627463 /* avformat.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF5529F0CDA42C900627463 /* avformat.pas */; }; + 2CF552B20CDA42C900627463 /* avio.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF552A00CDA42C900627463 /* avio.pas */; }; + 2CF552B30CDA42C900627463 /* avutil.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF552A10CDA42C900627463 /* avutil.pas */; }; + 2CF552B60CDA42C900627463 /* opt.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF552A40CDA42C900627463 /* opt.pas */; }; + 2CF552B70CDA42C900627463 /* rational.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF552A50CDA42C900627463 /* rational.pas */; }; + 2CF552C30CDA4B7B00627463 /* libavcodec.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CF552BF0CDA4B7B00627463 /* libavcodec.dylib */; }; + 2CF552C40CDA4B7B00627463 /* libavformat.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CF552C00CDA4B7B00627463 /* libavformat.dylib */; }; + 2CF552C50CDA4B7B00627463 /* libavutil.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CF552C10CDA4B7B00627463 /* libavutil.dylib */; }; + 2CF552C60CDA4B7B00627463 /* libmp3lame.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CF552C20CDA4B7B00627463 /* libmp3lame.dylib */; }; + 2CF553080CDA51B500627463 /* sdlutils.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF553070CDA51B500627463 /* sdlutils.pas */; }; + 2CF553090CDA51B500627463 /* sdlutils.pas in Sources */ = {isa = PBXBuildFile; fileRef = 2CF553070CDA51B500627463 /* sdlutils.pas */; }; + 2CF553100CDA52D100627463 /* SDL_image.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2C4D9D980CC9EE0B0031092D /* SDL_image.framework */; }; + 2CF5533B0CDA52E200627463 /* SDL_ttf.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2C4D9D990CC9EE0B0031092D /* SDL_ttf.framework */; }; + 2CF5533E0CDA530300627463 /* libbass.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2C4D9CE90CC9ECB50031092D /* libbass.dylib */; }; + 2CF5533F0CDA531100627463 /* libfreeimage.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2C4D9D960CC9EDEB0031092D /* libfreeimage.dylib */; }; + 2CF553400CDA531100627463 /* libsqlite3.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2CF5512C0CDA29C600627463 /* libsqlite3.dylib */; }; + 2CF553410CDA531100627463 /* libavcodec.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2CF552BF0CDA4B7B00627463 /* libavcodec.dylib */; }; + 2CF553420CDA531100627463 /* libavformat.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2CF552C00CDA4B7B00627463 /* libavformat.dylib */; }; + 2CF553430CDA531100627463 /* libavutil.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2CF552C10CDA4B7B00627463 /* libavutil.dylib */; }; + 2CF553440CDA531100627463 /* libmp3lame.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2CF552C20CDA4B7B00627463 /* libmp3lame.dylib */; }; 98B8BE340B1F947800162019 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 98B8BE330B1F947800162019 /* AppKit.framework */; }; 98B8BE390B1F949C00162019 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 98B8BE370B1F949C00162019 /* Cocoa.framework */; }; 98B8BE3A0B1F949C00162019 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 98B8BE380B1F949C00162019 /* Foundation.framework */; }; @@ -238,6 +330,13 @@ dstPath = ""; dstSubfolderSpec = 6; files = ( + 2CF5533F0CDA531100627463 /* libfreeimage.dylib in CopyFiles */, + 2CF553400CDA531100627463 /* libsqlite3.dylib in CopyFiles */, + 2CF553410CDA531100627463 /* libavcodec.dylib in CopyFiles */, + 2CF553420CDA531100627463 /* libavformat.dylib in CopyFiles */, + 2CF553430CDA531100627463 /* libavutil.dylib in CopyFiles */, + 2CF553440CDA531100627463 /* libmp3lame.dylib in CopyFiles */, + 2CF5533E0CDA530300627463 /* libbass.dylib in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -248,6 +347,8 @@ dstSubfolderSpec = 10; files = ( 2CDEC4960CC5264600FFA244 /* SDL.framework in CopyFiles */, + 2CF553100CDA52D100627463 /* SDL_image.framework in CopyFiles */, + 2CF5533B0CDA52E200627463 /* SDL_ttf.framework in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -273,7 +374,6 @@ 2C4D9C720CC9EC8C0031092D /* UIni.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UIni.pas; path = ../Classes/UIni.pas; sourceTree = SOURCE_ROOT; }; 2C4D9C730CC9EC8C0031092D /* UJoystick.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UJoystick.pas; path = ../Classes/UJoystick.pas; sourceTree = SOURCE_ROOT; }; 2C4D9C740CC9EC8C0031092D /* ULanguage.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = ULanguage.pas; path = ../Classes/ULanguage.pas; sourceTree = SOURCE_ROOT; }; - 2C4D9C750CC9EC8C0031092D /* Ulazjpeg.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = Ulazjpeg.pas; path = ../Classes/Ulazjpeg.pas; sourceTree = SOURCE_ROOT; }; 2C4D9C760CC9EC8C0031092D /* ULCD.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = ULCD.pas; path = ../Classes/ULCD.pas; sourceTree = SOURCE_ROOT; }; 2C4D9C770CC9EC8C0031092D /* ULight.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = ULight.pas; path = ../Classes/ULight.pas; sourceTree = SOURCE_ROOT; }; 2C4D9C780CC9EC8C0031092D /* ULog.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = ULog.pas; path = ../Classes/ULog.pas; sourceTree = SOURCE_ROOT; }; @@ -285,7 +385,6 @@ 2C4D9C7E0CC9EC8C0031092D /* UMusic.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UMusic.pas; path = ../Classes/UMusic.pas; sourceTree = SOURCE_ROOT; }; 2C4D9C7F0CC9EC8C0031092D /* UParty.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UParty.pas; path = ../Classes/UParty.pas; sourceTree = SOURCE_ROOT; }; 2C4D9C800CC9EC8C0031092D /* UPlaylist.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UPlaylist.pas; path = ../Classes/UPlaylist.pas; sourceTree = SOURCE_ROOT; }; - 2C4D9C810CC9EC8C0031092D /* UPliki.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UPliki.pas; path = ../Classes/UPliki.pas; sourceTree = SOURCE_ROOT; }; 2C4D9C820CC9EC8C0031092D /* UPluginInterface.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UPluginInterface.pas; path = ../Classes/UPluginInterface.pas; sourceTree = SOURCE_ROOT; }; 2C4D9C830CC9EC8C0031092D /* uPluginLoader.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = uPluginLoader.pas; path = ../Classes/uPluginLoader.pas; sourceTree = SOURCE_ROOT; }; 2C4D9C840CC9EC8C0031092D /* URecord.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = URecord.pas; path = ../Classes/URecord.pas; sourceTree = SOURCE_ROOT; }; @@ -319,18 +418,65 @@ 2C4D9DEC0CC9EF0A0031092D /* sdl_image.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = sdl_image.pas; path = "/Library/Frameworks/JEDI-SDL.framework/SDL_image/sdl_image.pas"; sourceTree = ""; }; 2C4D9DEF0CC9EF210031092D /* sdl_ttf.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = sdl_ttf.pas; path = "/Library/Frameworks/JEDI-SDL.framework/SDL_ttf/sdl_ttf.pas"; sourceTree = ""; }; 2C4D9DF00CC9EF210031092D /* sdltruetypefont.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = sdltruetypefont.pas; path = "/Library/Frameworks/JEDI-SDL.framework/SDL_ttf/sdltruetypefont.pas"; sourceTree = ""; }; - 2C4D9DFF0CC9EF840031092D /* MacClasses.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = MacClasses.pas; path = Wrapper/MacClasses.pas; sourceTree = ""; }; 2C4D9E000CC9EF840031092D /* Graphics.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = Graphics.pas; path = Wrapper/Graphics.pas; sourceTree = ""; }; 2C4D9E010CC9EF840031092D /* JPEG.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = JPEG.pas; path = Wrapper/JPEG.pas; sourceTree = ""; }; - 2C4D9E020CC9EF840031092D /* MidiFile.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = MidiFile.pas; path = Wrapper/MidiFile.pas; sourceTree = ""; }; - 2C4D9E030CC9EF840031092D /* MidiOut.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = MidiOut.pas; path = Wrapper/MidiOut.pas; sourceTree = ""; }; 2C4D9E040CC9EF840031092D /* OpenGL12.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = OpenGL12.pas; path = Wrapper/OpenGL12.pas; sourceTree = ""; }; - 2C4D9E070CC9EF840031092D /* PNGImage.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = PNGImage.pas; path = Wrapper/PNGImage.pas; sourceTree = ""; }; 2C4D9E090CC9EF840031092D /* Windows.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = Windows.pas; path = Wrapper/Windows.pas; sourceTree = ""; }; - 2C4D9E0A0CC9EF840031092D /* zlportio.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = zlportio.pas; path = Wrapper/zlportio.pas; sourceTree = ""; }; 2C4D9E440CC9F0ED0031092D /* switches.inc */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = switches.inc; path = ../switches.inc; sourceTree = SOURCE_ROOT; }; 2CDEA4F60CBD725B0096994C /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; 2CDEC4CC0CC52E7F00FFA244 /* UltraStarDX.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = UltraStarDX.icns; sourceTree = ""; }; + 2CF54F430CDA1B2B00627463 /* UScreenCredits.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenCredits.pas; path = ../Screens/UScreenCredits.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F440CDA1B2B00627463 /* UScreenEdit.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenEdit.pas; path = ../Screens/UScreenEdit.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F450CDA1B2B00627463 /* UScreenEditConvert.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenEditConvert.pas; path = ../Screens/UScreenEditConvert.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F460CDA1B2B00627463 /* UScreenEditHeader.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenEditHeader.pas; path = ../Screens/UScreenEditHeader.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F470CDA1B2B00627463 /* UScreenEditSub.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenEditSub.pas; path = ../Screens/UScreenEditSub.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F480CDA1B2B00627463 /* UScreenLevel.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenLevel.pas; path = ../Screens/UScreenLevel.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F490CDA1B2B00627463 /* UScreenLoading.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenLoading.pas; path = ../Screens/UScreenLoading.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F4A0CDA1B2B00627463 /* UScreenMain.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenMain.pas; path = ../Screens/UScreenMain.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F4B0CDA1B2B00627463 /* UScreenName.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenName.pas; path = ../Screens/UScreenName.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F4C0CDA1B2B00627463 /* UScreenOpen.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenOpen.pas; path = ../Screens/UScreenOpen.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F4D0CDA1B2B00627463 /* UScreenOptions.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenOptions.pas; path = ../Screens/UScreenOptions.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F4E0CDA1B2B00627463 /* UScreenOptionsAdvanced.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenOptionsAdvanced.pas; path = ../Screens/UScreenOptionsAdvanced.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F4F0CDA1B2B00627463 /* UScreenOptionsGame.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenOptionsGame.pas; path = ../Screens/UScreenOptionsGame.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F500CDA1B2B00627463 /* UScreenOptionsGraphics.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenOptionsGraphics.pas; path = ../Screens/UScreenOptionsGraphics.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F510CDA1B2B00627463 /* UScreenOptionsLyrics.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenOptionsLyrics.pas; path = ../Screens/UScreenOptionsLyrics.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F520CDA1B2B00627463 /* UScreenOptionsRecord.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenOptionsRecord.pas; path = ../Screens/UScreenOptionsRecord.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F530CDA1B2B00627463 /* UScreenOptionsSound.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenOptionsSound.pas; path = ../Screens/UScreenOptionsSound.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F540CDA1B2B00627463 /* UScreenOptionsThemes.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenOptionsThemes.pas; path = ../Screens/UScreenOptionsThemes.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F550CDA1B2B00627463 /* UScreenPartyNewRound.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenPartyNewRound.pas; path = ../Screens/UScreenPartyNewRound.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F560CDA1B2B00627463 /* UScreenPartyOptions.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenPartyOptions.pas; path = ../Screens/UScreenPartyOptions.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F570CDA1B2B00627463 /* UScreenPartyPlayer.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenPartyPlayer.pas; path = ../Screens/UScreenPartyPlayer.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F580CDA1B2B00627463 /* UScreenPartyScore.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenPartyScore.pas; path = ../Screens/UScreenPartyScore.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F590CDA1B2B00627463 /* UScreenPartyWin.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenPartyWin.pas; path = ../Screens/UScreenPartyWin.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F5A0CDA1B2B00627463 /* UScreenPopup.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenPopup.pas; path = ../Screens/UScreenPopup.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F5B0CDA1B2B00627463 /* UScreenScore.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenScore.pas; path = ../Screens/UScreenScore.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F5C0CDA1B2B00627463 /* UScreenSing.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenSing.pas; path = ../Screens/UScreenSing.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F5D0CDA1B2B00627463 /* UScreenSingModi.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenSingModi.pas; path = ../Screens/UScreenSingModi.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F5E0CDA1B2B00627463 /* UScreenSong.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenSong.pas; path = ../Screens/UScreenSong.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F5F0CDA1B2B00627463 /* UScreenSongJumpto.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenSongJumpto.pas; path = ../Screens/UScreenSongJumpto.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F600CDA1B2B00627463 /* UScreenSongMenu.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenSongMenu.pas; path = ../Screens/UScreenSongMenu.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F610CDA1B2B00627463 /* UScreenStatDetail.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenStatDetail.pas; path = ../Screens/UScreenStatDetail.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F620CDA1B2B00627463 /* UScreenStatMain.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenStatMain.pas; path = ../Screens/UScreenStatMain.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F630CDA1B2B00627463 /* UScreenTop5.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenTop5.pas; path = ../Screens/UScreenTop5.pas; sourceTree = SOURCE_ROOT; }; + 2CF54F640CDA1B2B00627463 /* UScreenWelcome.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UScreenWelcome.pas; path = ../Screens/UScreenWelcome.pas; sourceTree = SOURCE_ROOT; }; + 2CF5508B0CDA22B000627463 /* ModiSDK.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = ModiSDK.pas; path = ../../../Modis/SDK/ModiSDK.pas; sourceTree = SOURCE_ROOT; }; + 2CF5510E0CDA293700627463 /* SQLite3.pas */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.pascal; name = SQLite3.pas; path = ../lib/SQLite/SQLite3.pas; sourceTree = SOURCE_ROOT; }; + 2CF5510F0CDA293700627463 /* SQLiteTable3.pas */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.pascal; name = SQLiteTable3.pas; path = ../lib/SQLite/SQLiteTable3.pas; sourceTree = SOURCE_ROOT; }; + 2CF5512C0CDA29C600627463 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = ../lib/SQLite/libsqlite3.dylib; sourceTree = SOURCE_ROOT; }; + 2CF551A70CDA356800627463 /* UltraStar.dpr */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = UltraStar.dpr; path = ../UltraStar.dpr; sourceTree = SOURCE_ROOT; }; + 2CF552110CDA3D1400627463 /* UPluginDefs.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = UPluginDefs.pas; path = ../../../Modis/SDK/UPluginDefs.pas; sourceTree = SOURCE_ROOT; }; + 2CF552660CDA404000627463 /* Messages.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; path = Messages.pas; sourceTree = ""; }; + 2CF5529E0CDA42C900627463 /* avcodec.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = avcodec.pas; path = ../lib/ffmpeg/avcodec.pas; sourceTree = SOURCE_ROOT; }; + 2CF5529F0CDA42C900627463 /* avformat.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = avformat.pas; path = ../lib/ffmpeg/avformat.pas; sourceTree = SOURCE_ROOT; }; + 2CF552A00CDA42C900627463 /* avio.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = avio.pas; path = ../lib/ffmpeg/avio.pas; sourceTree = SOURCE_ROOT; }; + 2CF552A10CDA42C900627463 /* avutil.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = avutil.pas; path = ../lib/ffmpeg/avutil.pas; sourceTree = SOURCE_ROOT; }; + 2CF552A40CDA42C900627463 /* opt.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = opt.pas; path = ../lib/ffmpeg/opt.pas; sourceTree = SOURCE_ROOT; }; + 2CF552A50CDA42C900627463 /* rational.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = rational.pas; path = ../lib/ffmpeg/rational.pas; sourceTree = SOURCE_ROOT; }; + 2CF552BF0CDA4B7B00627463 /* libavcodec.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libavcodec.dylib; path = ../lib/ffmpeg/libavcodec.dylib; sourceTree = SOURCE_ROOT; }; + 2CF552C00CDA4B7B00627463 /* libavformat.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libavformat.dylib; path = ../lib/ffmpeg/libavformat.dylib; sourceTree = SOURCE_ROOT; }; + 2CF552C10CDA4B7B00627463 /* libavutil.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libavutil.dylib; path = ../lib/ffmpeg/libavutil.dylib; sourceTree = SOURCE_ROOT; }; + 2CF552C20CDA4B7B00627463 /* libmp3lame.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libmp3lame.dylib; path = ../lib/ffmpeg/libmp3lame.dylib; sourceTree = SOURCE_ROOT; }; + 2CF553070CDA51B500627463 /* sdlutils.pas */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; name = sdlutils.pas; path = "/Library/Frameworks/JEDI-SDL.framework/SDL/sdlutils.pas"; sourceTree = ""; }; 9845B6590B1F9B9E0084DD62 /* SDL.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SDL.h; path = /Library/Frameworks/SDL.framework/Versions/A/Headers/SDL.h; sourceTree = ""; }; 98B8BE330B1F947800162019 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 98B8BE370B1F949C00162019 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; @@ -341,7 +487,7 @@ DD37F2430A60255800975B2D /* libfpcrtl.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libfpcrtl.a; sourceTree = BUILT_PRODUCTS_DIR; }; DDC6851B09F57195004E4BFF /* UltraStarDX.pas */ = {isa = PBXFileReference; fileEncoding = 12; lastKnownFileType = sourcecode.pascal; path = UltraStarDX.pas; sourceTree = ""; }; DDC6868B09F571C2004E4BFF /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 12; lastKnownFileType = text.xml; path = Info.plist; sourceTree = ""; }; - DDC688C809F574E9004E4BFF /* UltraStar Deluxe.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "UltraStar Deluxe.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + DDC688C809F574E9004E4BFF /* UltraStarDX.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = UltraStarDX.app; sourceTree = BUILT_PRODUCTS_DIR; }; DDC688CA09F574E9004E4BFF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Info.plist; sourceTree = ""; }; DDC689B309F57C69004E4BFF /* InfoPlist.strings */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; DDC689B409F57C69004E4BFF /* SDLMain.nib */ = {isa = PBXFileReference; explicitFileType = wrapper.nib; name = SDLMain.nib; path = English.lproj/SDLMain.nib; sourceTree = ""; }; @@ -362,6 +508,11 @@ 2C4D9D970CC9EDEB0031092D /* libfreeimage.dylib in Frameworks */, 2C4D9D9A0CC9EE0B0031092D /* SDL_image.framework in Frameworks */, 2C4D9D9B0CC9EE0B0031092D /* SDL_ttf.framework in Frameworks */, + 2CF5512D0CDA29C600627463 /* libsqlite3.dylib in Frameworks */, + 2CF552C30CDA4B7B00627463 /* libavcodec.dylib in Frameworks */, + 2CF552C40CDA4B7B00627463 /* libavformat.dylib in Frameworks */, + 2CF552C50CDA4B7B00627463 /* libavutil.dylib in Frameworks */, + 2CF552C60CDA4B7B00627463 /* libmp3lame.dylib in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -371,6 +522,7 @@ 2C4D9DEB0CC9EECC0031092D /* SDL */ = { isa = PBXGroup; children = ( + 2CF553070CDA51B500627463 /* sdlutils.pas */, 2C4D9DEF0CC9EF210031092D /* sdl_ttf.pas */, 2C4D9DF00CC9EF210031092D /* sdltruetypefont.pas */, 2C4D9DEC0CC9EF0A0031092D /* sdl_image.pas */, @@ -384,15 +536,11 @@ 2C4D9DF50CC9EF3A0031092D /* Wrapper */ = { isa = PBXGroup; children = ( - 2C4D9DFF0CC9EF840031092D /* MacClasses.pas */, 2C4D9E000CC9EF840031092D /* Graphics.pas */, 2C4D9E010CC9EF840031092D /* JPEG.pas */, - 2C4D9E020CC9EF840031092D /* MidiFile.pas */, - 2C4D9E030CC9EF840031092D /* MidiOut.pas */, 2C4D9E040CC9EF840031092D /* OpenGL12.pas */, - 2C4D9E070CC9EF840031092D /* PNGImage.pas */, 2C4D9E090CC9EF840031092D /* Windows.pas */, - 2C4D9E0A0CC9EF840031092D /* zlportio.pas */, + 2CF552660CDA404000627463 /* Messages.pas */, ); name = Wrapper; sourceTree = ""; @@ -419,7 +567,6 @@ 2C4D9C720CC9EC8C0031092D /* UIni.pas */, 2C4D9C730CC9EC8C0031092D /* UJoystick.pas */, 2C4D9C740CC9EC8C0031092D /* ULanguage.pas */, - 2C4D9C750CC9EC8C0031092D /* Ulazjpeg.pas */, 2C4D9C760CC9EC8C0031092D /* ULCD.pas */, 2C4D9C770CC9EC8C0031092D /* ULight.pas */, 2C4D9C780CC9EC8C0031092D /* ULog.pas */, @@ -431,7 +578,6 @@ 2C4D9C7E0CC9EC8C0031092D /* UMusic.pas */, 2C4D9C7F0CC9EC8C0031092D /* UParty.pas */, 2C4D9C800CC9EC8C0031092D /* UPlaylist.pas */, - 2C4D9C810CC9EC8C0031092D /* UPliki.pas */, 2C4D9C820CC9EC8C0031092D /* UPluginInterface.pas */, 2C4D9C830CC9EC8C0031092D /* uPluginLoader.pas */, 2C4D9C840CC9EC8C0031092D /* URecord.pas */, @@ -490,16 +636,101 @@ name = BASS; sourceTree = ""; }; + 2CF54F420CDA1B0C00627463 /* Screens */ = { + isa = PBXGroup; + children = ( + 2CF54F430CDA1B2B00627463 /* UScreenCredits.pas */, + 2CF54F440CDA1B2B00627463 /* UScreenEdit.pas */, + 2CF54F450CDA1B2B00627463 /* UScreenEditConvert.pas */, + 2CF54F460CDA1B2B00627463 /* UScreenEditHeader.pas */, + 2CF54F470CDA1B2B00627463 /* UScreenEditSub.pas */, + 2CF54F480CDA1B2B00627463 /* UScreenLevel.pas */, + 2CF54F490CDA1B2B00627463 /* UScreenLoading.pas */, + 2CF54F4A0CDA1B2B00627463 /* UScreenMain.pas */, + 2CF54F4B0CDA1B2B00627463 /* UScreenName.pas */, + 2CF54F4C0CDA1B2B00627463 /* UScreenOpen.pas */, + 2CF54F4D0CDA1B2B00627463 /* UScreenOptions.pas */, + 2CF54F4E0CDA1B2B00627463 /* UScreenOptionsAdvanced.pas */, + 2CF54F4F0CDA1B2B00627463 /* UScreenOptionsGame.pas */, + 2CF54F500CDA1B2B00627463 /* UScreenOptionsGraphics.pas */, + 2CF54F510CDA1B2B00627463 /* UScreenOptionsLyrics.pas */, + 2CF54F520CDA1B2B00627463 /* UScreenOptionsRecord.pas */, + 2CF54F530CDA1B2B00627463 /* UScreenOptionsSound.pas */, + 2CF54F540CDA1B2B00627463 /* UScreenOptionsThemes.pas */, + 2CF54F550CDA1B2B00627463 /* UScreenPartyNewRound.pas */, + 2CF54F560CDA1B2B00627463 /* UScreenPartyOptions.pas */, + 2CF54F570CDA1B2B00627463 /* UScreenPartyPlayer.pas */, + 2CF54F580CDA1B2B00627463 /* UScreenPartyScore.pas */, + 2CF54F590CDA1B2B00627463 /* UScreenPartyWin.pas */, + 2CF54F5A0CDA1B2B00627463 /* UScreenPopup.pas */, + 2CF54F5B0CDA1B2B00627463 /* UScreenScore.pas */, + 2CF54F5C0CDA1B2B00627463 /* UScreenSing.pas */, + 2CF54F5D0CDA1B2B00627463 /* UScreenSingModi.pas */, + 2CF54F5E0CDA1B2B00627463 /* UScreenSong.pas */, + 2CF54F5F0CDA1B2B00627463 /* UScreenSongJumpto.pas */, + 2CF54F600CDA1B2B00627463 /* UScreenSongMenu.pas */, + 2CF54F610CDA1B2B00627463 /* UScreenStatDetail.pas */, + 2CF54F620CDA1B2B00627463 /* UScreenStatMain.pas */, + 2CF54F630CDA1B2B00627463 /* UScreenTop5.pas */, + 2CF54F640CDA1B2B00627463 /* UScreenWelcome.pas */, + ); + name = Screens; + sourceTree = ""; + }; + 2CF5508A0CDA228800627463 /* SDK */ = { + isa = PBXGroup; + children = ( + 2CF552110CDA3D1400627463 /* UPluginDefs.pas */, + 2CF5508B0CDA22B000627463 /* ModiSDK.pas */, + ); + name = SDK; + sourceTree = ""; + }; + 2CF5510C0CDA28F000627463 /* Lib */ = { + isa = PBXGroup; + children = ( + 2CE8C7CE0CBAA47D00E4D835 /* BASS */, + 2CF5529C0CDA428000627463 /* ffmpeg */, + 2CE1F4080CC3EEA400CD02E5 /* FreeImage */, + 2C4D9DEB0CC9EECC0031092D /* SDL */, + 2CF5510D0CDA291200627463 /* SQLite */, + ); + name = Lib; + sourceTree = ""; + }; + 2CF5510D0CDA291200627463 /* SQLite */ = { + isa = PBXGroup; + children = ( + 2CF5510E0CDA293700627463 /* SQLite3.pas */, + 2CF5510F0CDA293700627463 /* SQLiteTable3.pas */, + ); + name = SQLite; + sourceTree = ""; + }; + 2CF5529C0CDA428000627463 /* ffmpeg */ = { + isa = PBXGroup; + children = ( + 2CF5529E0CDA42C900627463 /* avcodec.pas */, + 2CF5529F0CDA42C900627463 /* avformat.pas */, + 2CF552A00CDA42C900627463 /* avio.pas */, + 2CF552A10CDA42C900627463 /* avutil.pas */, + 2CF552A40CDA42C900627463 /* opt.pas */, + 2CF552A50CDA42C900627463 /* rational.pas */, + ); + name = ffmpeg; + sourceTree = ""; + }; DD7C45450A6E72DE003FA52B /* Source */ = { isa = PBXGroup; children = ( + 2CF5510C0CDA28F000627463 /* Lib */, 2CDD43820CBBE8D400F364DE /* Classes */, + 2CF54F420CDA1B0C00627463 /* Screens */, 2CDD438D0CBBE8F700F364DE /* Menu */, - 2CE1F4080CC3EEA400CD02E5 /* FreeImage */, - 2CE8C7CE0CBAA47D00E4D835 /* BASS */, - 2C4D9DEB0CC9EECC0031092D /* SDL */, + 2CF5508A0CDA228800627463 /* SDK */, 2C4D9DF50CC9EF3A0031092D /* Wrapper */, DDC6851B09F57195004E4BFF /* UltraStarDX.pas */, + 2CF551A70CDA356800627463 /* UltraStar.dpr */, 2C4D9E440CC9F0ED0031092D /* switches.inc */, ); name = Source; @@ -517,6 +748,11 @@ 98B8BE330B1F947800162019 /* AppKit.framework */, 2C4D9CE90CC9ECB50031092D /* libbass.dylib */, 2C4D9D960CC9EDEB0031092D /* libfreeimage.dylib */, + 2CF5512C0CDA29C600627463 /* libsqlite3.dylib */, + 2CF552BF0CDA4B7B00627463 /* libavcodec.dylib */, + 2CF552C00CDA4B7B00627463 /* libavformat.dylib */, + 2CF552C10CDA4B7B00627463 /* libavutil.dylib */, + 2CF552C20CDA4B7B00627463 /* libmp3lame.dylib */, DD7C45450A6E72DE003FA52B /* Source */, DDC6868A09F571C2004E4BFF /* Resources */, 2CDD8D0B0CC5539900E4169D /* UltraStarDX Resources */, @@ -540,7 +776,7 @@ DDC6888C09F57243004E4BFF /* Products */ = { isa = PBXGroup; children = ( - DDC688C809F574E9004E4BFF /* UltraStar Deluxe.app */, + DDC688C809F574E9004E4BFF /* UltraStarDX.app */, DD37F2430A60255800975B2D /* libfpcrtl.a */, ); name = Products; @@ -588,7 +824,7 @@ ); name = UltraStarDX; productName = "JEDI-SDLCocoa"; - productReference = DDC688C809F574E9004E4BFF /* UltraStar Deluxe.app */; + productReference = DDC688C809F574E9004E4BFF /* UltraStarDX.app */; productType = "com.apple.product-type.application"; }; DDC688D409F57523004E4BFF /* Put all program sources also in this target */ = { @@ -662,7 +898,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\nUS_RESOURCES_SOURCE_DIR=UltraStarResources\nUS_RESOURCES_DEST_DIR=\"$CONFIGURATION_BUILD_DIR\"/\"$PRODUCT_NAME\".app/Contents\n\ncp -Rf $US_RESOURCES_SOURCE_DIR $US_RESOURCES_DEST_DIR"; + shellScript = "\nUS_RESOURCES_SOURCE_DIR=UltraStarResources\nUS_RESOURCES_DEST_DIR=\"$CONFIGURATION_BUILD_DIR\"/\"$PRODUCT_NAME\".app/Contents\n\n#cp -Rf $US_RESOURCES_SOURCE_DIR $US_RESOURCES_DEST_DIR"; }; DD37F2350A60250900975B2D /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -736,7 +972,6 @@ 2C4D9C9F0CC9EC8C0031092D /* UIni.pas in Sources */, 2C4D9CA00CC9EC8C0031092D /* UJoystick.pas in Sources */, 2C4D9CA10CC9EC8C0031092D /* ULanguage.pas in Sources */, - 2C4D9CA20CC9EC8C0031092D /* Ulazjpeg.pas in Sources */, 2C4D9CA30CC9EC8C0031092D /* ULCD.pas in Sources */, 2C4D9CA40CC9EC8C0031092D /* ULight.pas in Sources */, 2C4D9CA50CC9EC8C0031092D /* ULog.pas in Sources */, @@ -748,7 +983,6 @@ 2C4D9CAB0CC9EC8C0031092D /* UMusic.pas in Sources */, 2C4D9CAC0CC9EC8C0031092D /* UParty.pas in Sources */, 2C4D9CAD0CC9EC8C0031092D /* UPlaylist.pas in Sources */, - 2C4D9CAE0CC9EC8C0031092D /* UPliki.pas in Sources */, 2C4D9CAF0CC9EC8C0031092D /* UPluginInterface.pas in Sources */, 2C4D9CB00CC9EC8C0031092D /* uPluginLoader.pas in Sources */, 2C4D9CB10CC9EC8C0031092D /* URecord.pas in Sources */, @@ -778,16 +1012,57 @@ 2C4D9DED0CC9EF0A0031092D /* sdl_image.pas in Sources */, 2C4D9DF10CC9EF210031092D /* sdl_ttf.pas in Sources */, 2C4D9DF20CC9EF210031092D /* sdltruetypefont.pas in Sources */, - 2C4D9E0B0CC9EF840031092D /* MacClasses.pas in Sources */, 2C4D9E0C0CC9EF840031092D /* Graphics.pas in Sources */, 2C4D9E0D0CC9EF840031092D /* JPEG.pas in Sources */, - 2C4D9E0E0CC9EF840031092D /* MidiFile.pas in Sources */, - 2C4D9E0F0CC9EF840031092D /* MidiOut.pas in Sources */, 2C4D9E100CC9EF840031092D /* OpenGL12.pas in Sources */, - 2C4D9E130CC9EF840031092D /* PNGImage.pas in Sources */, 2C4D9E150CC9EF840031092D /* Windows.pas in Sources */, - 2C4D9E160CC9EF840031092D /* zlportio.pas in Sources */, 2C4D9E450CC9F0ED0031092D /* switches.inc in Sources */, + 2CF54F650CDA1B2B00627463 /* UScreenCredits.pas in Sources */, + 2CF54F660CDA1B2B00627463 /* UScreenEdit.pas in Sources */, + 2CF54F670CDA1B2B00627463 /* UScreenEditConvert.pas in Sources */, + 2CF54F680CDA1B2B00627463 /* UScreenEditHeader.pas in Sources */, + 2CF54F690CDA1B2B00627463 /* UScreenEditSub.pas in Sources */, + 2CF54F6A0CDA1B2B00627463 /* UScreenLevel.pas in Sources */, + 2CF54F6B0CDA1B2B00627463 /* UScreenLoading.pas in Sources */, + 2CF54F6C0CDA1B2B00627463 /* UScreenMain.pas in Sources */, + 2CF54F6D0CDA1B2B00627463 /* UScreenName.pas in Sources */, + 2CF54F6E0CDA1B2B00627463 /* UScreenOpen.pas in Sources */, + 2CF54F6F0CDA1B2B00627463 /* UScreenOptions.pas in Sources */, + 2CF54F700CDA1B2B00627463 /* UScreenOptionsAdvanced.pas in Sources */, + 2CF54F710CDA1B2B00627463 /* UScreenOptionsGame.pas in Sources */, + 2CF54F720CDA1B2B00627463 /* UScreenOptionsGraphics.pas in Sources */, + 2CF54F730CDA1B2B00627463 /* UScreenOptionsLyrics.pas in Sources */, + 2CF54F740CDA1B2B00627463 /* UScreenOptionsRecord.pas in Sources */, + 2CF54F750CDA1B2B00627463 /* UScreenOptionsSound.pas in Sources */, + 2CF54F760CDA1B2B00627463 /* UScreenOptionsThemes.pas in Sources */, + 2CF54F770CDA1B2B00627463 /* UScreenPartyNewRound.pas in Sources */, + 2CF54F780CDA1B2B00627463 /* UScreenPartyOptions.pas in Sources */, + 2CF54F790CDA1B2B00627463 /* UScreenPartyPlayer.pas in Sources */, + 2CF54F7A0CDA1B2B00627463 /* UScreenPartyScore.pas in Sources */, + 2CF54F7B0CDA1B2B00627463 /* UScreenPartyWin.pas in Sources */, + 2CF54F7C0CDA1B2B00627463 /* UScreenPopup.pas in Sources */, + 2CF54F7D0CDA1B2B00627463 /* UScreenScore.pas in Sources */, + 2CF54F7E0CDA1B2B00627463 /* UScreenSing.pas in Sources */, + 2CF54F7F0CDA1B2B00627463 /* UScreenSingModi.pas in Sources */, + 2CF54F800CDA1B2B00627463 /* UScreenSong.pas in Sources */, + 2CF54F810CDA1B2B00627463 /* UScreenSongJumpto.pas in Sources */, + 2CF54F820CDA1B2B00627463 /* UScreenSongMenu.pas in Sources */, + 2CF54F830CDA1B2B00627463 /* UScreenStatDetail.pas in Sources */, + 2CF54F840CDA1B2B00627463 /* UScreenStatMain.pas in Sources */, + 2CF54F850CDA1B2B00627463 /* UScreenTop5.pas in Sources */, + 2CF54F860CDA1B2B00627463 /* UScreenWelcome.pas in Sources */, + 2CF5508C0CDA22B000627463 /* ModiSDK.pas in Sources */, + 2CF551100CDA293700627463 /* SQLite3.pas in Sources */, + 2CF551110CDA293700627463 /* SQLiteTable3.pas in Sources */, + 2CF552140CDA3D1400627463 /* UPluginDefs.pas in Sources */, + 2CF552680CDA404000627463 /* Messages.pas in Sources */, + 2CF552B00CDA42C900627463 /* avcodec.pas in Sources */, + 2CF552B10CDA42C900627463 /* avformat.pas in Sources */, + 2CF552B20CDA42C900627463 /* avio.pas in Sources */, + 2CF552B30CDA42C900627463 /* avutil.pas in Sources */, + 2CF552B60CDA42C900627463 /* opt.pas in Sources */, + 2CF552B70CDA42C900627463 /* rational.pas in Sources */, + 2CF553080CDA51B500627463 /* sdlutils.pas in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -816,7 +1091,6 @@ 2C4D9CCC0CC9EC8C0031092D /* UIni.pas in Sources */, 2C4D9CCD0CC9EC8C0031092D /* UJoystick.pas in Sources */, 2C4D9CCE0CC9EC8C0031092D /* ULanguage.pas in Sources */, - 2C4D9CCF0CC9EC8C0031092D /* Ulazjpeg.pas in Sources */, 2C4D9CD00CC9EC8C0031092D /* ULCD.pas in Sources */, 2C4D9CD10CC9EC8C0031092D /* ULight.pas in Sources */, 2C4D9CD20CC9EC8C0031092D /* ULog.pas in Sources */, @@ -828,7 +1102,6 @@ 2C4D9CD80CC9EC8C0031092D /* UMusic.pas in Sources */, 2C4D9CD90CC9EC8C0031092D /* UParty.pas in Sources */, 2C4D9CDA0CC9EC8C0031092D /* UPlaylist.pas in Sources */, - 2C4D9CDB0CC9EC8C0031092D /* UPliki.pas in Sources */, 2C4D9CDC0CC9EC8C0031092D /* UPluginInterface.pas in Sources */, 2C4D9CDD0CC9EC8C0031092D /* uPluginLoader.pas in Sources */, 2C4D9CDE0CC9EC8C0031092D /* URecord.pas in Sources */, @@ -858,16 +1131,57 @@ 2C4D9DEE0CC9EF0A0031092D /* sdl_image.pas in Sources */, 2C4D9DF30CC9EF210031092D /* sdl_ttf.pas in Sources */, 2C4D9DF40CC9EF210031092D /* sdltruetypefont.pas in Sources */, - 2C4D9E170CC9EF840031092D /* MacClasses.pas in Sources */, 2C4D9E180CC9EF840031092D /* Graphics.pas in Sources */, 2C4D9E190CC9EF840031092D /* JPEG.pas in Sources */, - 2C4D9E1A0CC9EF840031092D /* MidiFile.pas in Sources */, - 2C4D9E1B0CC9EF840031092D /* MidiOut.pas in Sources */, 2C4D9E1C0CC9EF840031092D /* OpenGL12.pas in Sources */, - 2C4D9E1F0CC9EF840031092D /* PNGImage.pas in Sources */, 2C4D9E210CC9EF840031092D /* Windows.pas in Sources */, - 2C4D9E220CC9EF840031092D /* zlportio.pas in Sources */, 2C4D9E460CC9F0ED0031092D /* switches.inc in Sources */, + 2CF54F870CDA1B2B00627463 /* UScreenCredits.pas in Sources */, + 2CF54F880CDA1B2B00627463 /* UScreenEdit.pas in Sources */, + 2CF54F890CDA1B2B00627463 /* UScreenEditConvert.pas in Sources */, + 2CF54F8A0CDA1B2B00627463 /* UScreenEditHeader.pas in Sources */, + 2CF54F8B0CDA1B2B00627463 /* UScreenEditSub.pas in Sources */, + 2CF54F8C0CDA1B2B00627463 /* UScreenLevel.pas in Sources */, + 2CF54F8D0CDA1B2B00627463 /* UScreenLoading.pas in Sources */, + 2CF54F8E0CDA1B2B00627463 /* UScreenMain.pas in Sources */, + 2CF54F8F0CDA1B2B00627463 /* UScreenName.pas in Sources */, + 2CF54F900CDA1B2B00627463 /* UScreenOpen.pas in Sources */, + 2CF54F910CDA1B2B00627463 /* UScreenOptions.pas in Sources */, + 2CF54F920CDA1B2B00627463 /* UScreenOptionsAdvanced.pas in Sources */, + 2CF54F930CDA1B2B00627463 /* UScreenOptionsGame.pas in Sources */, + 2CF54F940CDA1B2B00627463 /* UScreenOptionsGraphics.pas in Sources */, + 2CF54F950CDA1B2B00627463 /* UScreenOptionsLyrics.pas in Sources */, + 2CF54F960CDA1B2B00627463 /* UScreenOptionsRecord.pas in Sources */, + 2CF54F970CDA1B2B00627463 /* UScreenOptionsSound.pas in Sources */, + 2CF54F980CDA1B2B00627463 /* UScreenOptionsThemes.pas in Sources */, + 2CF54F990CDA1B2B00627463 /* UScreenPartyNewRound.pas in Sources */, + 2CF54F9A0CDA1B2B00627463 /* UScreenPartyOptions.pas in Sources */, + 2CF54F9B0CDA1B2B00627463 /* UScreenPartyPlayer.pas in Sources */, + 2CF54F9C0CDA1B2B00627463 /* UScreenPartyScore.pas in Sources */, + 2CF54F9D0CDA1B2B00627463 /* UScreenPartyWin.pas in Sources */, + 2CF54F9E0CDA1B2B00627463 /* UScreenPopup.pas in Sources */, + 2CF54F9F0CDA1B2B00627463 /* UScreenScore.pas in Sources */, + 2CF54FA00CDA1B2B00627463 /* UScreenSing.pas in Sources */, + 2CF54FA10CDA1B2B00627463 /* UScreenSingModi.pas in Sources */, + 2CF54FA20CDA1B2B00627463 /* UScreenSong.pas in Sources */, + 2CF54FA30CDA1B2B00627463 /* UScreenSongJumpto.pas in Sources */, + 2CF54FA40CDA1B2B00627463 /* UScreenSongMenu.pas in Sources */, + 2CF54FA50CDA1B2B00627463 /* UScreenStatDetail.pas in Sources */, + 2CF54FA60CDA1B2B00627463 /* UScreenStatMain.pas in Sources */, + 2CF54FA70CDA1B2B00627463 /* UScreenTop5.pas in Sources */, + 2CF54FA80CDA1B2B00627463 /* UScreenWelcome.pas in Sources */, + 2CF5508D0CDA22B000627463 /* ModiSDK.pas in Sources */, + 2CF551120CDA293700627463 /* SQLite3.pas in Sources */, + 2CF551130CDA293700627463 /* SQLiteTable3.pas in Sources */, + 2CF552170CDA3D1400627463 /* UPluginDefs.pas in Sources */, + 2CF552670CDA404000627463 /* Messages.pas in Sources */, + 2CF552A70CDA42C900627463 /* avcodec.pas in Sources */, + 2CF552A80CDA42C900627463 /* avformat.pas in Sources */, + 2CF552A90CDA42C900627463 /* avio.pas in Sources */, + 2CF552AA0CDA42C900627463 /* avutil.pas in Sources */, + 2CF552AD0CDA42C900627463 /* opt.pas in Sources */, + 2CF552AE0CDA42C900627463 /* rational.pas in Sources */, + 2CF553090CDA51B500627463 /* sdlutils.pas in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -972,11 +1286,12 @@ "$(LIBRARY_SEARCH_PATHS_QUOTED_4)", "$(LIBRARY_SEARCH_PATHS_QUOTED_5)", "$(LIBRARY_SEARCH_PATHS_QUOTED_6)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_2)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_3)", ); LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/build/Debug\""; - LIBRARY_SEARCH_PATHS_QUOTED_2 = "\"$(SRCROOT)/Bass\""; - LIBRARY_SEARCH_PATHS_QUOTED_3 = "\"$(SRCROOT)/FreeImage\""; - LIBRARY_SEARCH_PATHS_QUOTED_4 = "\"$(SRCROOT)/FreeImage\""; + LIBRARY_SEARCH_PATHS_QUOTED_2 = "\"$(SRCROOT)/../lib/SQLite\""; + LIBRARY_SEARCH_PATHS_QUOTED_3 = "\"$(SRCROOT)/../lib/ffmpeg\""; LIBRARY_SEARCH_PATHS_QUOTED_5 = "\"$(SRCROOT)/../lib/bass\""; LIBRARY_SEARCH_PATHS_QUOTED_6 = "\"$(SRCROOT)/../lib/FreeImage\""; LINK_WITH_STANDARD_LIBRARIES = YES; @@ -985,7 +1300,7 @@ Carbon, ); PREBINDING = NO; - PRODUCT_NAME = UltraStar; + PRODUCT_NAME = UltraStarDX; WRAPPER_EXTENSION = app; ZERO_LINK = NO; }; @@ -1015,6 +1330,8 @@ "$(LIBRARY_SEARCH_PATHS_QUOTED_4)", "$(LIBRARY_SEARCH_PATHS_QUOTED_5)", "$(LIBRARY_SEARCH_PATHS_QUOTED_6)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_7)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_8)", ); LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/build/Debug\""; LIBRARY_SEARCH_PATHS_QUOTED_2 = "\"$(SRCROOT)/Bass\""; @@ -1022,6 +1339,8 @@ LIBRARY_SEARCH_PATHS_QUOTED_4 = "\"$(SRCROOT)/FreeImage\""; LIBRARY_SEARCH_PATHS_QUOTED_5 = "\"$(SRCROOT)/../lib/bass\""; LIBRARY_SEARCH_PATHS_QUOTED_6 = "\"$(SRCROOT)/../lib/FreeImage\""; + LIBRARY_SEARCH_PATHS_QUOTED_7 = "\"$(SRCROOT)/../lib/SQLite\""; + LIBRARY_SEARCH_PATHS_QUOTED_8 = "\"$(SRCROOT)/../lib/ffmpeg\""; LINK_WITH_STANDARD_LIBRARIES = YES; OTHER_LDFLAGS = ( "-framework", diff --git a/Game/Code/MacOSX/Wrapper/Graphics.pas b/Game/Code/MacOSX/Wrapper/Graphics.pas index 5982bb77..11484e21 100755 --- a/Game/Code/MacOSX/Wrapper/Graphics.pas +++ b/Game/Code/MacOSX/Wrapper/Graphics.pas @@ -1,6 +1,6 @@ unit Graphics; -{$INCLUDE ../Platform.inc} +{$I switches.inc} interface diff --git a/Game/Code/MacOSX/Wrapper/JPEG.pas b/Game/Code/MacOSX/Wrapper/JPEG.pas index b6a90f00..7419908b 100755 --- a/Game/Code/MacOSX/Wrapper/JPEG.pas +++ b/Game/Code/MacOSX/Wrapper/JPEG.pas @@ -1,10 +1,10 @@ unit JPEG; -{$INCLUDE ../Platform.inc} +{$I switches.inc} interface -uses GlueGraphics; +uses Graphics; type TJPEGImage = class(TBitmap) diff --git a/Game/Code/MacOSX/Wrapper/MacClasses.pas b/Game/Code/MacOSX/Wrapper/MacClasses.pas index c494e6df..be41ac55 100755 --- a/Game/Code/MacOSX/Wrapper/MacClasses.pas +++ b/Game/Code/MacOSX/Wrapper/MacClasses.pas @@ -1,6 +1,6 @@ unit MacClasses; -{$INCLUDE ../Platform.inc} +{$I switches.inc} interface diff --git a/Game/Code/MacOSX/Wrapper/Messages.pas b/Game/Code/MacOSX/Wrapper/Messages.pas new file mode 100644 index 00000000..e1c8e6aa --- /dev/null +++ b/Game/Code/MacOSX/Wrapper/Messages.pas @@ -0,0 +1,30 @@ +unit Messages; + +{$I switches.inc} + +interface + +uses Windows; + +type + + TMessage = packed record + Msg: Cardinal; + case Integer of + 0: ( + WParam: Longint; + LParam: Longint; + Result: Longint); + 1: ( + WParamLo: Word; + WParamHi: Word; + LParamLo: Word; + LParamHi: Word; + ResultLo: Word; + ResultHi: Word); + end; + PMessage = ^TMessage; + +implementation + +end. \ No newline at end of file diff --git a/Game/Code/MacOSX/Wrapper/MidiFile.pas b/Game/Code/MacOSX/Wrapper/MidiFile.pas index 9ae684f4..c91711cc 100755 --- a/Game/Code/MacOSX/Wrapper/MidiFile.pas +++ b/Game/Code/MacOSX/Wrapper/MidiFile.pas @@ -1,6 +1,6 @@ unit MidiFile; -{$INCLUDE ../Platform.inc} +{$I switches.inc} interface diff --git a/Game/Code/MacOSX/Wrapper/MidiOut.pas b/Game/Code/MacOSX/Wrapper/MidiOut.pas index 249cb88b..e57da9d0 100755 --- a/Game/Code/MacOSX/Wrapper/MidiOut.pas +++ b/Game/Code/MacOSX/Wrapper/MidiOut.pas @@ -1,6 +1,6 @@ unit MidiOut; -{$INCLUDE ../Platform.inc} +{$I switches.inc} interface diff --git a/Game/Code/MacOSX/Wrapper/OpenGL12.pas b/Game/Code/MacOSX/Wrapper/OpenGL12.pas index ff704b33..0efff14e 100755 --- a/Game/Code/MacOSX/Wrapper/OpenGL12.pas +++ b/Game/Code/MacOSX/Wrapper/OpenGL12.pas @@ -1,4696 +1,4701 @@ -unit OpenGL12; - -{$INCLUDE ../Platform.inc} - -interface - -uses Windows; - -const -{$IFDEF MSWINDOWS} - glu32 = 'glu32.dll'; -{$ENDIF} -{$IFDEF MACOS} - glu32 = 'OpenGL'; -{$ENDIF} - -type - - TRCOptions = set of ( - opDoubleBuffered, - opGDI, - opStereo - ); - - UINT = Cardinal; - - {$EXTERNALSYM GLenum} - GLenum = UINT; - TGLenum = UINT; - PGLenum = ^TGLenum; - - {$EXTERNALSYM GLboolean} - GLboolean = BYTEBOOL; - TGLboolean = BYTEBOOL; - PGLboolean = ^TGLboolean; - - {$EXTERNALSYM GLbitfield} - GLbitfield = UINT; - TGLbitfield = UINT; - PGLbitfield = ^TGLbitfield; - - {$EXTERNALSYM GLbyte} - GLbyte = ShortInt; - TGLbyte = ShortInt; - PGLbyte = ^TGLbyte; - - {$EXTERNALSYM GLshort} - GLshort = SmallInt; - TGLshort = SmallInt; - PGLshort = ^TGLshort; - - {$EXTERNALSYM GLint} - GLint = Integer; - TGLint = Integer; - PGLint = ^TGLint; - - {$EXTERNALSYM GLsizei} - GLsizei = Integer; - TGLsizei = Integer; - PGLsizei = ^TGLsizei; - - {$EXTERNALSYM GLubyte} - UCHAR = Byte; - GLubyte = UCHAR; - TGLubyte = UCHAR; - PGLubyte = ^TGLubyte; - - {$EXTERNALSYM GLushort} - GLushort = Word; - TGLushort = Word; - PGLushort = ^TGLushort; - - {$EXTERNALSYM GLuint} - GLuint = UINT; - TGLuint = UINT; - PGLuint = ^TGLuint; - - {$EXTERNALSYM GLfloat} - GLfloat = Single; - TGLfloat = Single; - PGLfloat = ^TGLfloat; - - {$EXTERNALSYM GLclampf} - GLclampf = Single; - TGLclampf = Single; - PGLclampf = ^TGLclampf; - - {$EXTERNALSYM GLdouble} - GLdouble = Double; - TGLdouble = Double; - PGLdouble = ^TGLdouble; - - {$EXTERNALSYM GLclampd} - GLclampd = Double; - TGLclampd = Double; - PGLclampd = ^TGLclampd; - - TVector3d = array[0..2] of GLdouble; - - TVector4i = array[0..3] of GLint; - TVector4f = array[0..3] of GLfloat; - TVector4p = array[0..3] of Pointer; - - TMatrix4f = array[0..3, 0..3] of GLfloat; - TMatrix4d = array[0..3, 0..3] of GLdouble; - - PPointer = ^Pointer; - -{$ifdef FPC} - var -{$else} - {$ifdef MULTITHREADOPENGL} - threadvar - {$else} - var - {$endif} -{$endif} - - GL_VERSION_1_0, - GL_VERSION_1_1, - GL_VERSION_1_2, - GLU_VERSION_1_1, - GLU_VERSION_1_2, - GLU_VERSION_1_3: Boolean; - - // Extensions (gl) - GL_3DFX_multisample, - GL_3DFX_tbuffer, - GL_3DFX_texture_compression_FXT1, - - GL_APPLE_specular_vector, - GL_APPLE_transform_hint, - - GL_ARB_imaging, - GL_ARB_multisample, - GL_ARB_multitexture, - GL_ARB_texture_compression, - GL_ARB_texture_cube_map, - GL_ARB_transpose_matrix, - GL_ARB_vertex_blend, - - GL_EXT_422_pixels, - GL_EXT_abgr, - GL_EXT_bgra, - GL_EXT_blend_color, - GL_EXT_blend_func_separate, - GL_EXT_blend_logic_op, - GL_EXT_blend_minmax, - GL_EXT_blend_subtract, - GL_EXT_clip_volume_hint, - GL_EXT_cmyka, - GL_EXT_color_subtable, - GL_EXT_compiled_vertex_array, - GL_EXT_convolution, - GL_EXT_coordinate_frame, - GL_EXT_copy_texture, - GL_EXT_cull_vertex, - GL_EXT_draw_range_elements, - GL_EXT_fog_coord, - GL_EXT_histogram, - GL_EXT_index_array_formats, - GL_EXT_index_func, - GL_EXT_index_material, - GL_EXT_index_texture, - GL_EXT_light_max_exponent, - GL_EXT_light_texture, - GL_EXT_misc_attribute, - GL_EXT_multi_draw_arrays, - GL_EXT_multisample, - GL_EXT_packed_pixels, - GL_EXT_paletted_texture, - GL_EXT_pixel_transform, - GL_EXT_point_parameters, - GL_EXT_polygon_offset, - GL_EXT_rescale_normal, - GL_EXT_scene_marker, - GL_EXT_secondary_color, - GL_EXT_separate_specular_color, - GL_EXT_shared_texture_palette, - GL_EXT_stencil_wrap, - GL_EXT_subtexture, - GL_EXT_texture_color_table, - GL_EXT_texture_compression_s3tc, - GL_EXT_texture_cube_map, - GL_EXT_texture_edge_clamp, - GL_EXT_texture_env_add, - GL_EXT_texture_env_combine, - GL_EXT_texture_filter_anisotropic, - GL_EXT_texture_lod_bias, - GL_EXT_texture_object, - GL_EXT_texture_perturb_normal, - GL_EXT_texture3D, - GL_EXT_vertex_array, - GL_EXT_vertex_weighting, - - GL_FfdMaskSGIX, - GL_HP_convolution_border_modes, - GL_HP_image_transform, - GL_HP_occlusion_test, - GL_HP_texture_lighting, - - GL_IBM_cull_vertex, - GL_IBM_multimode_draw_arrays, - GL_IBM_rasterpos_clip, - GL_IBM_vertex_array_lists, - - GL_INGR_color_clamp, - GL_INGR_interlace_read, - - GL_INTEL_parallel_arrays, - - GL_KTX_buffer_region, - - GL_MESA_resize_buffers, - GL_MESA_window_pos, - - GL_NV_blend_square, - GL_NV_fog_distance, - GL_NV_light_max_exponent, - GL_NV_register_combiners, - GL_NV_texgen_emboss, - GL_NV_texgen_reflection, - GL_NV_texture_env_combine4, - GL_NV_vertex_array_range, - GL_NV_vertex_program, - - GL_PGI_misc_hints, - GL_PGI_vertex_hints, - - GL_REND_screen_coordinates, - - GL_SGI_color_matrix, - GL_SGI_color_table, - GL_SGI_depth_pass_instrument, - - GL_SGIS_detail_texture, - GL_SGIS_fog_function, - GL_SGIS_generate_mipmap, - GL_SGIS_multisample, - GL_SGIS_multitexture, - GL_SGIS_pixel_texture, - GL_SGIS_point_line_texgen, - GL_SGIS_point_parameters, - GL_SGIS_sharpen_texture, - GL_SGIS_texture_border_clamp, - GL_SGIS_texture_color_mask, - GL_SGIS_texture_edge_clamp, - GL_SGIS_texture_filter4, - GL_SGIS_texture_lod, - GL_SGIS_texture_select, - GL_SGIS_texture4D, - - GL_SGIX_async, - GL_SGIX_async_histogram, - GL_SGIX_async_pixel, - GL_SGIX_blend_alpha_minmax, - GL_SGIX_calligraphic_fragment, - GL_SGIX_clipmap, - GL_SGIX_convolution_accuracy, - GL_SGIX_depth_texture, - GL_SGIX_flush_raster, - GL_SGIX_fog_offset, - GL_SGIX_fog_scale, - GL_SGIX_fragment_lighting, - GL_SGIX_framezoom, - GL_SGIX_igloo_interface, - GL_SGIX_instruments, - GL_SGIX_interlace, - GL_SGIX_ir_instrument1, - GL_SGIX_list_priority, - GL_SGIX_pixel_texture, - GL_SGIX_pixel_tiles, - GL_SGIX_polynomial_ffd, - GL_SGIX_reference_plane, - GL_SGIX_resample, - GL_SGIX_shadow, - GL_SGIX_shadow_ambient, - GL_SGIX_sprite, - GL_SGIX_subsample, - GL_SGIX_tag_sample_buffer, - GL_SGIX_texture_add_env, - GL_SGIX_texture_lod_bias, - GL_SGIX_texture_multi_buffer, - GL_SGIX_texture_scale_bias, - GL_SGIX_vertex_preclip, - GL_SGIX_ycrcb, - GL_SGIX_ycrcba, - - GL_SUN_convolution_border_modes, - GL_SUN_global_alpha, - GL_SUN_triangle_list, - GL_SUN_vertex, - - GL_SUNX_constant_data, - - GL_WIN_phong_shading, - GL_WIN_specular_fog, - GL_WIN_swap_hint, - - WGL_EXT_swap_control, - WGL_ARB_extensions_string, - WGL_ARB_pixel_format, - - // Extensions (glu) - GLU_EXT_Texture, - GLU_EXT_object_space_tess, - GLU_EXT_nurbs_tessellator: Boolean; - -const - // ********** GL generic constants ********** - - // errors - GL_NO_ERROR = 0; - {$EXTERNALSYM GL_NO_ERROR} - GL_INVALID_ENUM = $0500; - {$EXTERNALSYM GL_INVALID_ENUM} - GL_INVALID_VALUE = $0501; - {$EXTERNALSYM GL_INVALID_VALUE} - GL_INVALID_OPERATION = $0502; - {$EXTERNALSYM GL_INVALID_OPERATION} - GL_STACK_OVERFLOW = $0503; - {$EXTERNALSYM GL_STACK_OVERFLOW} - GL_STACK_UNDERFLOW = $0504; - {$EXTERNALSYM GL_STACK_UNDERFLOW} - GL_OUT_OF_MEMORY = $0505; - {$EXTERNALSYM GL_STACK_UNDERFLOW} - - // attribute bits - GL_CURRENT_BIT = $00000001; - {$EXTERNALSYM GL_CURRENT_BIT} - GL_POINT_BIT = $00000002; - {$EXTERNALSYM GL_POINT_BIT} - GL_LINE_BIT = $00000004; - {$EXTERNALSYM GL_LINE_BIT} - GL_POLYGON_BIT = $00000008; - {$EXTERNALSYM GL_POLYGON_BIT} - GL_POLYGON_STIPPLE_BIT = $00000010; - {$EXTERNALSYM GL_POLYGON_STIPPLE_BIT} - GL_PIXEL_MODE_BIT = $00000020; - {$EXTERNALSYM GL_PIXEL_MODE_BIT} - GL_LIGHTING_BIT = $00000040; - {$EXTERNALSYM GL_LIGHTING_BIT} - GL_FOG_BIT = $00000080; - {$EXTERNALSYM GL_FOG_BIT} - GL_DEPTH_BUFFER_BIT = $00000100; - {$EXTERNALSYM GL_DEPTH_BUFFER_BIT} - GL_ACCUM_BUFFER_BIT = $00000200; - {$EXTERNALSYM GL_ACCUM_BUFFER_BIT} - GL_STENCIL_BUFFER_BIT = $00000400; - {$EXTERNALSYM GL_STENCIL_BUFFER_BIT} - GL_VIEWPORT_BIT = $00000800; - {$EXTERNALSYM GL_VIEWPORT_BIT} - GL_TRANSFORM_BIT = $00001000; - {$EXTERNALSYM GL_TRANSFORM_BIT} - GL_ENABLE_BIT = $00002000; - {$EXTERNALSYM GL_ENABLE_BIT} - GL_COLOR_BUFFER_BIT = $00004000; - {$EXTERNALSYM GL_COLOR_BUFFER_BIT} - GL_HINT_BIT = $00008000; - {$EXTERNALSYM GL_HINT_BIT} - GL_EVAL_BIT = $00010000; - {$EXTERNALSYM GL_EVAL_BIT} - GL_LIST_BIT = $00020000; - {$EXTERNALSYM GL_LIST_BIT} - GL_TEXTURE_BIT = $00040000; - {$EXTERNALSYM GL_TEXTURE_BIT} - GL_SCISSOR_BIT = $00080000; - {$EXTERNALSYM GL_SCISSOR_BIT} - GL_ALL_ATTRIB_BITS = $000FFFFF; - {$EXTERNALSYM GL_ALL_ATTRIB_BITS} - - // client attribute bits - GL_CLIENT_PIXEL_STORE_BIT = $00000001; - {$EXTERNALSYM GL_CLIENT_PIXEL_STORE_BIT} - GL_CLIENT_VERTEX_ARRAY_BIT = $00000002; - {$EXTERNALSYM GL_CLIENT_VERTEX_ARRAY_BIT} - GL_CLIENT_ALL_ATTRIB_BITS = $FFFFFFFF; - {$EXTERNALSYM GL_CLIENT_ALL_ATTRIB_BITS} - - // boolean values - GL_FALSE = Boolean(0); - {$EXTERNALSYM GL_FALSE} - GL_TRUE = Boolean(1); - {$EXTERNALSYM GL_TRUE} - - // primitives - GL_POINTS = $0000; - {$EXTERNALSYM GL_POINTS} - GL_LINES = $0001; - {$EXTERNALSYM GL_LINES} - GL_LINE_LOOP = $0002; - {$EXTERNALSYM GL_LINE_LOOP} - GL_LINE_STRIP = $0003; - {$EXTERNALSYM GL_LINE_STRIP} - GL_TRIANGLES = $0004; - {$EXTERNALSYM GL_TRIANGLES} - GL_TRIANGLE_STRIP = $0005; - {$EXTERNALSYM GL_TRIANGLE_STRIP} - GL_TRIANGLE_FAN = $0006; - {$EXTERNALSYM GL_TRIANGLE_FAN} - GL_QUADS = $0007; - {$EXTERNALSYM GL_QUADS} - GL_QUAD_STRIP = $0008; - {$EXTERNALSYM GL_QUAD_STRIP} - GL_POLYGON = $0009; - {$EXTERNALSYM GL_POLYGON} - - // blending - GL_ZERO = 0; - {$EXTERNALSYM GL_ZERO} - GL_ONE = 1; - {$EXTERNALSYM GL_ONE} - GL_SRC_COLOR = $0300; - {$EXTERNALSYM GL_SRC_COLOR} - GL_ONE_MINUS_SRC_COLOR = $0301; - {$EXTERNALSYM GL_ONE_MINUS_SRC_COLOR} - GL_SRC_ALPHA = $0302; - {$EXTERNALSYM GL_SRC_ALPHA} - GL_ONE_MINUS_SRC_ALPHA = $0303; - {$EXTERNALSYM GL_ONE_MINUS_SRC_ALPHA} - GL_DST_ALPHA = $0304; - {$EXTERNALSYM GL_DST_ALPHA} - GL_ONE_MINUS_DST_ALPHA = $0305; - {$EXTERNALSYM GL_ONE_MINUS_DST_ALPHA} - GL_DST_COLOR = $0306; - {$EXTERNALSYM GL_DST_COLOR} - GL_ONE_MINUS_DST_COLOR = $0307; - {$EXTERNALSYM GL_ONE_MINUS_DST_COLOR} - GL_SRC_ALPHA_SATURATE = $0308; - {$EXTERNALSYM GL_SRC_ALPHA_SATURATE} - GL_BLEND_DST = $0BE0; - {$EXTERNALSYM GL_BLEND_DST} - GL_BLEND_SRC = $0BE1; - {$EXTERNALSYM GL_BLEND_SRC} - GL_BLEND = $0BE2; - {$EXTERNALSYM GL_BLEND} - - // blending (GL 1.2 ARB imaging) - GL_BLEND_COLOR = $8005; - {$EXTERNALSYM GL_BLEND_COLOR} - GL_CONSTANT_COLOR = $8001; - {$EXTERNALSYM GL_CONSTANT_COLOR} - GL_ONE_MINUS_CONSTANT_COLOR = $8002; - {$EXTERNALSYM GL_ONE_MINUS_CONSTANT_COLOR} - GL_CONSTANT_ALPHA = $8003; - {$EXTERNALSYM GL_CONSTANT_ALPHA} - GL_ONE_MINUS_CONSTANT_ALPHA = $8004; - {$EXTERNALSYM GL_ONE_MINUS_CONSTANT_ALPHA} - GL_FUNC_ADD = $8006; - {$EXTERNALSYM GL_FUNC_ADD} - GL_MIN = $8007; - {$EXTERNALSYM GL_MIN} - GL_MAX = $8008; - {$EXTERNALSYM GL_MAX} - GL_FUNC_SUBTRACT = $800A; - {$EXTERNALSYM GL_FUNC_SUBTRACT} - GL_FUNC_REVERSE_SUBTRACT = $800B; - {$EXTERNALSYM GL_FUNC_REVERSE_SUBTRACT} - - // color table GL 1.2 ARB imaging - GL_COLOR_TABLE = $80D0; - {$EXTERNALSYM GL_COLOR_TABLE} - GL_POST_CONVOLUTION_COLOR_TABLE = $80D1; - {$EXTERNALSYM GL_POST_CONVOLUTION_COLOR_TABLE} - GL_POST_COLOR_MATRIX_COLOR_TABLE = $80D2; - {$EXTERNALSYM GL_POST_COLOR_MATRIX_COLOR_TABLE} - GL_PROXY_COLOR_TABLE = $80D3; - {$EXTERNALSYM GL_PROXY_COLOR_TABLE} - GL_PROXY_POST_CONVOLUTION_COLOR_TABLE = $80D4; - {$EXTERNALSYM GL_PROXY_POST_CONVOLUTION_COLOR_TABLE} - GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE = $80D5; - {$EXTERNALSYM GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE} - GL_COLOR_TABLE_SCALE = $80D6; - {$EXTERNALSYM GL_COLOR_TABLE_SCALE} - GL_COLOR_TABLE_BIAS = $80D7; - {$EXTERNALSYM GL_COLOR_TABLE_BIAS} - GL_COLOR_TABLE_FORMAT = $80D8; - {$EXTERNALSYM GL_COLOR_TABLE_FORMAT} - GL_COLOR_TABLE_WIDTH = $80D9; - {$EXTERNALSYM GL_COLOR_TABLE_WIDTH} - GL_COLOR_TABLE_RED_SIZE = $80DA; - {$EXTERNALSYM GL_COLOR_TABLE_RED_SIZE} - GL_COLOR_TABLE_GREEN_SIZE = $80DB; - {$EXTERNALSYM GL_COLOR_TABLE_GREEN_SIZE} - GL_COLOR_TABLE_BLUE_SIZE = $80DC; - {$EXTERNALSYM GL_COLOR_TABLE_BLUE_SIZE} - GL_COLOR_TABLE_ALPHA_SIZE = $80DD; - {$EXTERNALSYM GL_COLOR_TABLE_ALPHA_SIZE} - GL_COLOR_TABLE_LUMINANCE_SIZE = $80DE; - {$EXTERNALSYM GL_COLOR_TABLE_LUMINANCE_SIZE} - GL_COLOR_TABLE_INTENSITY_SIZE = $80DF; - {$EXTERNALSYM GL_COLOR_TABLE_INTENSITY_SIZE} - - // convolutions GL 1.2 ARB imaging - GL_CONVOLUTION_1D = $8010; - {$EXTERNALSYM GL_CONVOLUTION_1D} - GL_CONVOLUTION_2D = $8011; - {$EXTERNALSYM GL_CONVOLUTION_2D} - GL_SEPARABLE_2D = $8012; - {$EXTERNALSYM GL_SEPARABLE_2D} - GL_CONVOLUTION_BORDER_MODE = $8013; - {$EXTERNALSYM GL_CONVOLUTION_BORDER_MODE} - GL_CONVOLUTION_FILTER_SCALE = $8014; - {$EXTERNALSYM GL_CONVOLUTION_FILTER_SCALE} - GL_CONVOLUTION_FILTER_BIAS = $8015; - {$EXTERNALSYM GL_CONVOLUTION_FILTER_BIAS} - GL_REDUCE = $8016; - {$EXTERNALSYM GL_REDUCE} - GL_CONVOLUTION_FORMAT = $8017; - {$EXTERNALSYM GL_CONVOLUTION_FORMAT} - GL_CONVOLUTION_WIDTH = $8018; - {$EXTERNALSYM GL_CONVOLUTION_WIDTH} - GL_CONVOLUTION_HEIGHT = $8019; - {$EXTERNALSYM GL_CONVOLUTION_HEIGHT} - GL_MAX_CONVOLUTION_WIDTH = $801A; - {$EXTERNALSYM GL_MAX_CONVOLUTION_WIDTH} - GL_MAX_CONVOLUTION_HEIGHT = $801B; - {$EXTERNALSYM GL_MAX_CONVOLUTION_HEIGHT} - GL_POST_CONVOLUTION_RED_SCALE = $801C; - {$EXTERNALSYM GL_POST_CONVOLUTION_RED_SCALE} - GL_POST_CONVOLUTION_GREEN_SCALE = $801D; - {$EXTERNALSYM GL_POST_CONVOLUTION_GREEN_SCALE} - GL_POST_CONVOLUTION_BLUE_SCALE = $801E; - {$EXTERNALSYM GL_POST_CONVOLUTION_BLUE_SCALE} - GL_POST_CONVOLUTION_ALPHA_SCALE = $801F; - {$EXTERNALSYM GL_POST_CONVOLUTION_ALPHA_SCALE} - GL_POST_CONVOLUTION_RED_BIAS = $8020; - {$EXTERNALSYM GL_POST_CONVOLUTION_RED_BIAS} - GL_POST_CONVOLUTION_GREEN_BIAS = $8021; - {$EXTERNALSYM GL_POST_CONVOLUTION_GREEN_BIAS} - GL_POST_CONVOLUTION_BLUE_BIAS = $8022; - {$EXTERNALSYM GL_POST_CONVOLUTION_BLUE_BIAS} - GL_POST_CONVOLUTION_ALPHA_BIAS = $8023; - {$EXTERNALSYM GL_POST_CONVOLUTION_ALPHA_BIAS} - - // histogram GL 1.2 ARB imaging - GL_HISTOGRAM = $8024; - {$EXTERNALSYM GL_HISTOGRAM} - GL_PROXY_HISTOGRAM = $8025; - {$EXTERNALSYM GL_PROXY_HISTOGRAM} - GL_HISTOGRAM_WIDTH = $8026; - {$EXTERNALSYM GL_HISTOGRAM_WIDTH} - GL_HISTOGRAM_FORMAT = $8027; - {$EXTERNALSYM GL_HISTOGRAM_FORMAT} - GL_HISTOGRAM_RED_SIZE = $8028; - {$EXTERNALSYM GL_HISTOGRAM_RED_SIZE} - GL_HISTOGRAM_GREEN_SIZE = $8029; - {$EXTERNALSYM GL_HISTOGRAM_GREEN_SIZE} - GL_HISTOGRAM_BLUE_SIZE = $802A; - {$EXTERNALSYM GL_HISTOGRAM_BLUE_SIZE} - GL_HISTOGRAM_ALPHA_SIZE = $802B; - {$EXTERNALSYM GL_HISTOGRAM_ALPHA_SIZE} - GL_HISTOGRAM_LUMINANCE_SIZE = $802C; - {$EXTERNALSYM GL_HISTOGRAM_LUMINANCE_SIZE} - GL_HISTOGRAM_SINK = $802D; - {$EXTERNALSYM GL_HISTOGRAM_SINK} - GL_MINMAX = $802E; - {$EXTERNALSYM GL_MINMAX} - GL_MINMAX_FORMAT = $802F; - {$EXTERNALSYM GL_MINMAX_FORMAT} - GL_MINMAX_SINK = $8030; - {$EXTERNALSYM GL_MINMAX_SINK} - - // buffers - GL_NONE = 0; - {$EXTERNALSYM GL_NONE} - GL_FRONT_LEFT = $0400; - {$EXTERNALSYM GL_FRONT_LEFT} - GL_FRONT_RIGHT = $0401; - {$EXTERNALSYM GL_FRONT_RIGHT} - GL_BACK_LEFT = $0402; - {$EXTERNALSYM GL_BACK_LEFT} - GL_BACK_RIGHT = $0403; - {$EXTERNALSYM GL_BACK_RIGHT} - GL_FRONT = $0404; - {$EXTERNALSYM GL_FRONT} - GL_BACK = $0405; - {$EXTERNALSYM GL_BACK} - GL_LEFT = $0406; - {$EXTERNALSYM GL_LEFT} - GL_RIGHT = $0407; - {$EXTERNALSYM GL_RIGHT} - GL_FRONT_AND_BACK = $0408; - {$EXTERNALSYM GL_FRONT_AND_BACK} - GL_AUX0 = $0409; - {$EXTERNALSYM GL_AUX0} - GL_AUX1 = $040A; - {$EXTERNALSYM GL_AUX1} - GL_AUX2 = $040B; - {$EXTERNALSYM GL_AUX2} - GL_AUX3 = $040C; - {$EXTERNALSYM GL_AUX3} - GL_AUX_BUFFERS = $0C00; - {$EXTERNALSYM GL_AUX_BUFFERS} - GL_DRAW_BUFFER = $0C01; - {$EXTERNALSYM GL_DRAW_BUFFER} - GL_READ_BUFFER = $0C02; - {$EXTERNALSYM GL_READ_BUFFER} - GL_DOUBLEBUFFER = $0C32; - {$EXTERNALSYM GL_DOUBLEBUFFER} - GL_STEREO = $0C33; - {$EXTERNALSYM GL_STEREO} - - // depth buffer - GL_DEPTH_RANGE = $0B70; - {$EXTERNALSYM GL_DEPTH_RANGE} - GL_DEPTH_TEST = $0B71; - {$EXTERNALSYM GL_DEPTH_TEST} - GL_DEPTH_WRITEMASK = $0B72; - {$EXTERNALSYM GL_DEPTH_WRITEMASK} - GL_DEPTH_CLEAR_VALUE = $0B73; - {$EXTERNALSYM GL_DEPTH_CLEAR_VALUE} - GL_DEPTH_FUNC = $0B74; - {$EXTERNALSYM GL_DEPTH_FUNC} - GL_NEVER = $0200; - {$EXTERNALSYM GL_NEVER} - GL_LESS = $0201; - {$EXTERNALSYM GL_LESS} - GL_EQUAL = $0202; - {$EXTERNALSYM GL_EQUAL} - GL_LEQUAL = $0203; - {$EXTERNALSYM GL_LEQUAL} - GL_GREATER = $0204; - {$EXTERNALSYM GL_GREATER} - GL_NOTEQUAL = $0205; - {$EXTERNALSYM GL_NOTEQUAL} - GL_GEQUAL = $0206; - {$EXTERNALSYM GL_GEQUAL} - GL_ALWAYS = $0207; - {$EXTERNALSYM GL_ALWAYS} - - // accumulation buffer - GL_ACCUM = $0100; - {$EXTERNALSYM GL_ACCUM} - GL_LOAD = $0101; - {$EXTERNALSYM GL_LOAD} - GL_RETURN = $0102; - {$EXTERNALSYM GL_RETURN} - GL_MULT = $0103; - {$EXTERNALSYM GL_MULT} - GL_ADD = $0104; - {$EXTERNALSYM GL_ADD} - GL_ACCUM_CLEAR_VALUE = $0B80; - {$EXTERNALSYM GL_ACCUM_CLEAR_VALUE} - - // feedback buffer - GL_FEEDBACK_BUFFER_POINTER = $0DF0; - {$EXTERNALSYM GL_FEEDBACK_BUFFER_POINTER} - GL_FEEDBACK_BUFFER_SIZE = $0DF1; - {$EXTERNALSYM GL_FEEDBACK_BUFFER_SIZE} - GL_FEEDBACK_BUFFER_TYPE = $0DF2; - {$EXTERNALSYM GL_FEEDBACK_BUFFER_TYPE} - - // feedback types - GL_2D = $0600; - {$EXTERNALSYM GL_2D} - GL_3D = $0601; - {$EXTERNALSYM GL_3D} - GL_3D_COLOR = $0602; - {$EXTERNALSYM GL_3D_COLOR} - GL_3D_COLOR_TEXTURE = $0603; - {$EXTERNALSYM GL_3D_COLOR_TEXTURE} - GL_4D_COLOR_TEXTURE = $0604; - {$EXTERNALSYM GL_4D_COLOR_TEXTURE} - - // feedback tokens - GL_PASS_THROUGH_TOKEN = $0700; - {$EXTERNALSYM GL_PASS_THROUGH_TOKEN} - GL_POINT_TOKEN = $0701; - {$EXTERNALSYM GL_POINT_TOKEN} - GL_LINE_TOKEN = $0702; - {$EXTERNALSYM GL_LINE_TOKEN} - GL_POLYGON_TOKEN = $0703; - {$EXTERNALSYM GL_POLYGON_TOKEN} - GL_BITMAP_TOKEN = $0704; - {$EXTERNALSYM GL_BITMAP_TOKEN} - GL_DRAW_PIXEL_TOKEN = $0705; - {$EXTERNALSYM GL_DRAW_PIXEL_TOKEN} - GL_COPY_PIXEL_TOKEN = $0706; - {$EXTERNALSYM GL_COPY_PIXEL_TOKEN} - GL_LINE_RESET_TOKEN = $0707; - {$EXTERNALSYM GL_LINE_RESET_TOKEN} - - // fog - GL_EXP = $0800; - {$EXTERNALSYM GL_EXP} - GL_EXP2 = $0801; - {$EXTERNALSYM GL_EXP2} - GL_FOG = $0B60; - {$EXTERNALSYM GL_FOG} - GL_FOG_INDEX = $0B61; - {$EXTERNALSYM GL_FOG_INDEX} - GL_FOG_DENSITY = $0B62; - {$EXTERNALSYM GL_FOG_DENSITY} - GL_FOG_START = $0B63; - {$EXTERNALSYM GL_FOG_START} - GL_FOG_END = $0B64; - {$EXTERNALSYM GL_FOG_END} - GL_FOG_MODE = $0B65; - {$EXTERNALSYM GL_FOG_MODE} - GL_FOG_COLOR = $0B66; - {$EXTERNALSYM GL_FOG_COLOR} - - // pixel mode, transfer - GL_PIXEL_MAP_I_TO_I = $0C70; - {$EXTERNALSYM GL_PIXEL_MAP_I_TO_I} - GL_PIXEL_MAP_S_TO_S = $0C71; - {$EXTERNALSYM GL_PIXEL_MAP_S_TO_S} - GL_PIXEL_MAP_I_TO_R = $0C72; - {$EXTERNALSYM GL_PIXEL_MAP_I_TO_R} - GL_PIXEL_MAP_I_TO_G = $0C73; - {$EXTERNALSYM GL_PIXEL_MAP_I_TO_G} - GL_PIXEL_MAP_I_TO_B = $0C74; - {$EXTERNALSYM GL_PIXEL_MAP_I_TO_B} - GL_PIXEL_MAP_I_TO_A = $0C75; - {$EXTERNALSYM GL_PIXEL_MAP_I_TO_A} - GL_PIXEL_MAP_R_TO_R = $0C76; - {$EXTERNALSYM GL_PIXEL_MAP_R_TO_R} - GL_PIXEL_MAP_G_TO_G = $0C77; - {$EXTERNALSYM GL_PIXEL_MAP_G_TO_G} - GL_PIXEL_MAP_B_TO_B = $0C78; - {$EXTERNALSYM GL_PIXEL_MAP_B_TO_B} - GL_PIXEL_MAP_A_TO_A = $0C79; - {$EXTERNALSYM GL_PIXEL_MAP_A_TO_A} - - // vertex arrays - GL_VERTEX_ARRAY_POINTER = $808E; - {$EXTERNALSYM GL_VERTEX_ARRAY_POINTER} - GL_NORMAL_ARRAY_POINTER = $808F; - {$EXTERNALSYM GL_NORMAL_ARRAY_POINTER} - GL_COLOR_ARRAY_POINTER = $8090; - {$EXTERNALSYM GL_COLOR_ARRAY_POINTER} - GL_INDEX_ARRAY_POINTER = $8091; - {$EXTERNALSYM GL_INDEX_ARRAY_POINTER} - GL_TEXTURE_COORD_ARRAY_POINTER = $8092; - {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_POINTER} - GL_EDGE_FLAG_ARRAY_POINTER = $8093; - {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_POINTER} - - // stenciling - GL_STENCIL_TEST = $0B90; - {$EXTERNALSYM GL_STENCIL_TEST} - GL_STENCIL_CLEAR_VALUE = $0B91; - {$EXTERNALSYM GL_STENCIL_CLEAR_VALUE} - GL_STENCIL_FUNC = $0B92; - {$EXTERNALSYM GL_STENCIL_FUNC} - GL_STENCIL_VALUE_MASK = $0B93; - {$EXTERNALSYM GL_STENCIL_VALUE_MASK} - GL_STENCIL_FAIL = $0B94; - {$EXTERNALSYM GL_STENCIL_FAIL} - GL_STENCIL_PASS_DEPTH_FAIL = $0B95; - {$EXTERNALSYM GL_STENCIL_PASS_DEPTH_FAIL} - GL_STENCIL_PASS_DEPTH_PASS = $0B96; - {$EXTERNALSYM GL_STENCIL_PASS_DEPTH_PASS} - GL_STENCIL_REF = $0B97; - {$EXTERNALSYM GL_STENCIL_REF} - GL_STENCIL_WRITEMASK = $0B98; - {$EXTERNALSYM GL_STENCIL_WRITEMASK} - GL_KEEP = $1E00; - {$EXTERNALSYM GL_KEEP} - GL_REPLACE = $1E01; - {$EXTERNALSYM GL_REPLACE} - GL_INCR = $1E02; - {$EXTERNALSYM GL_INCR} - GL_DECR = $1E03; - {$EXTERNALSYM GL_DECR} - - // color material - GL_COLOR_MATERIAL_FACE = $0B55; - {$EXTERNALSYM GL_COLOR_MATERIAL_FACE} - GL_COLOR_MATERIAL_PARAMETER = $0B56; - {$EXTERNALSYM GL_COLOR_MATERIAL_PARAMETER} - GL_COLOR_MATERIAL = $0B57; - {$EXTERNALSYM GL_COLOR_MATERIAL} - - // points - GL_POINT_SMOOTH = $0B10; - {$EXTERNALSYM GL_POINT_SMOOTH} - GL_POINT_SIZE = $0B11; - {$EXTERNALSYM GL_POINT_SIZE} - GL_POINT_SIZE_RANGE = $0B12; - {$EXTERNALSYM GL_POINT_SIZE_RANGE} - GL_POINT_SIZE_GRANULARITY = $0B13; - {$EXTERNALSYM GL_POINT_SIZE_GRANULARITY} - - // lines - GL_LINE_SMOOTH = $0B20; - {$EXTERNALSYM GL_LINE_SMOOTH} - GL_LINE_WIDTH = $0B21; - {$EXTERNALSYM GL_LINE_WIDTH} - GL_LINE_WIDTH_RANGE = $0B22; - {$EXTERNALSYM GL_LINE_WIDTH_RANGE} - GL_LINE_WIDTH_GRANULARITY = $0B23; - {$EXTERNALSYM GL_LINE_WIDTH_GRANULARITY} - GL_LINE_STIPPLE = $0B24; - {$EXTERNALSYM GL_LINE_STIPPLE} - GL_LINE_STIPPLE_PATTERN = $0B25; - {$EXTERNALSYM GL_LINE_STIPPLE_PATTERN} - GL_LINE_STIPPLE_REPEAT = $0B26; - {$EXTERNALSYM GL_LINE_STIPPLE_REPEAT} - - // polygons - GL_POLYGON_MODE = $0B40; - {$EXTERNALSYM GL_POLYGON_MODE} - GL_POLYGON_SMOOTH = $0B41; - {$EXTERNALSYM GL_POLYGON_SMOOTH} - GL_POLYGON_STIPPLE = $0B42; - {$EXTERNALSYM GL_POLYGON_STIPPLE} - GL_EDGE_FLAG = $0B43; - {$EXTERNALSYM GL_EDGE_FLAG} - GL_CULL_FACE = $0B44; - {$EXTERNALSYM GL_CULL_FACE} - GL_CULL_FACE_MODE = $0B45; - {$EXTERNALSYM GL_CULL_FACE_MODE} - GL_FRONT_FACE = $0B46; - {$EXTERNALSYM GL_FRONT_FACE} - GL_CW = $0900; - {$EXTERNALSYM GL_CW} - GL_CCW = $0901; - {$EXTERNALSYM GL_CCW} - GL_POINT = $1B00; - {$EXTERNALSYM GL_POINT} - GL_LINE = $1B01; - {$EXTERNALSYM GL_LINE} - GL_FILL = $1B02; - {$EXTERNALSYM GL_FILL} - - // display lists - GL_LIST_MODE = $0B30; - {$EXTERNALSYM GL_LIST_MODE} - GL_LIST_BASE = $0B32; - {$EXTERNALSYM GL_LIST_BASE} - GL_LIST_INDEX = $0B33; - {$EXTERNALSYM GL_LIST_INDEX} - GL_COMPILE = $1300; - {$EXTERNALSYM GL_COMPILE} - GL_COMPILE_AND_EXECUTE = $1301; - {$EXTERNALSYM GL_COMPILE_AND_EXECUTE} - - // lighting - GL_LIGHTING = $0B50; - {$EXTERNALSYM GL_LIGHTING} - GL_LIGHT_MODEL_LOCAL_VIEWER = $0B51; - {$EXTERNALSYM GL_LIGHT_MODEL_LOCAL_VIEWER} - GL_LIGHT_MODEL_TWO_SIDE = $0B52; - {$EXTERNALSYM GL_LIGHT_MODEL_TWO_SIDE} - GL_LIGHT_MODEL_AMBIENT = $0B53; - {$EXTERNALSYM GL_LIGHT_MODEL_AMBIENT} - GL_LIGHT_MODEL_COLOR_CONTROL = $81F8; // GL 1.2 - {$EXTERNALSYM GL_LIGHT_MODEL_COLOR_CONTROL} - GL_SHADE_MODEL = $0B54; - {$EXTERNALSYM GL_SHADE_MODEL} - GL_NORMALIZE = $0BA1; - {$EXTERNALSYM GL_NORMALIZE} - GL_AMBIENT = $1200; - {$EXTERNALSYM GL_AMBIENT} - GL_DIFFUSE = $1201; - {$EXTERNALSYM GL_DIFFUSE} - GL_SPECULAR = $1202; - {$EXTERNALSYM GL_SPECULAR} - GL_POSITION = $1203; - {$EXTERNALSYM GL_POSITION} - GL_SPOT_DIRECTION = $1204; - {$EXTERNALSYM GL_SPOT_DIRECTION} - GL_SPOT_EXPONENT = $1205; - {$EXTERNALSYM GL_SPOT_EXPONENT} - GL_SPOT_CUTOFF = $1206; - {$EXTERNALSYM GL_SPOT_CUTOFF} - GL_CONSTANT_ATTENUATION = $1207; - {$EXTERNALSYM GL_CONSTANT_ATTENUATION} - GL_LINEAR_ATTENUATION = $1208; - {$EXTERNALSYM GL_LINEAR_ATTENUATION} - GL_QUADRATIC_ATTENUATION = $1209; - {$EXTERNALSYM GL_QUADRATIC_ATTENUATION} - GL_EMISSION = $1600; - {$EXTERNALSYM GL_EMISSION} - GL_SHININESS = $1601; - {$EXTERNALSYM GL_SHININESS} - GL_AMBIENT_AND_DIFFUSE = $1602; - {$EXTERNALSYM GL_AMBIENT_AND_DIFFUSE} - GL_COLOR_INDEXES = $1603; - {$EXTERNALSYM GL_COLOR_INDEXES} - GL_FLAT = $1D00; - {$EXTERNALSYM GL_FLAT} - GL_SMOOTH = $1D01; - {$EXTERNALSYM GL_SMOOTH} - GL_LIGHT0 = $4000; - {$EXTERNALSYM GL_LIGHT0} - GL_LIGHT1 = $4001; - {$EXTERNALSYM GL_LIGHT1} - GL_LIGHT2 = $4002; - {$EXTERNALSYM GL_LIGHT2} - GL_LIGHT3 = $4003; - {$EXTERNALSYM GL_LIGHT3} - GL_LIGHT4 = $4004; - {$EXTERNALSYM GL_LIGHT4} - GL_LIGHT5 = $4005; - {$EXTERNALSYM GL_LIGHT5} - GL_LIGHT6 = $4006; - {$EXTERNALSYM GL_LIGHT6} - GL_LIGHT7 = $4007; - {$EXTERNALSYM GL_LIGHT7} - - // matrix modes - GL_MATRIX_MODE = $0BA0; - {$EXTERNALSYM GL_MATRIX_MODE} - GL_MODELVIEW = $1700; - {$EXTERNALSYM GL_MODELVIEW} - GL_PROJECTION = $1701; - {$EXTERNALSYM GL_PROJECTION} - GL_TEXTURE = $1702; - {$EXTERNALSYM GL_TEXTURE} - - // gets - GL_CURRENT_COLOR = $0B00; - {$EXTERNALSYM GL_CURRENT_COLOR} - GL_CURRENT_INDEX = $0B01; - {$EXTERNALSYM GL_CURRENT_INDEX} - GL_CURRENT_NORMAL = $0B02; - {$EXTERNALSYM GL_CURRENT_NORMAL} - GL_CURRENT_TEXTURE_COORDS = $0B03; - {$EXTERNALSYM GL_CURRENT_TEXTURE_COORDS} - GL_CURRENT_RASTER_COLOR = $0B04; - {$EXTERNALSYM GL_CURRENT_RASTER_COLOR} - GL_CURRENT_RASTER_INDEX = $0B05; - {$EXTERNALSYM GL_CURRENT_RASTER_INDEX} - GL_CURRENT_RASTER_TEXTURE_COORDS = $0B06; - {$EXTERNALSYM GL_CURRENT_RASTER_TEXTURE_COORDS} - GL_CURRENT_RASTER_POSITION = $0B07; - {$EXTERNALSYM GL_CURRENT_RASTER_POSITION} - GL_CURRENT_RASTER_POSITION_VALID = $0B08; - {$EXTERNALSYM GL_CURRENT_RASTER_POSITION_VALID} - GL_CURRENT_RASTER_DISTANCE = $0B09; - {$EXTERNALSYM GL_CURRENT_RASTER_DISTANCE} - GL_MAX_LIST_NESTING = $0B31; - {$EXTERNALSYM GL_MAX_LIST_NESTING} - GL_VIEWPORT = $0BA2; - {$EXTERNALSYM GL_VIEWPORT} - GL_MODELVIEW_STACK_DEPTH = $0BA3; - {$EXTERNALSYM GL_MODELVIEW_STACK_DEPTH} - GL_PROJECTION_STACK_DEPTH = $0BA4; - {$EXTERNALSYM GL_PROJECTION_STACK_DEPTH} - GL_TEXTURE_STACK_DEPTH = $0BA5; - {$EXTERNALSYM GL_TEXTURE_STACK_DEPTH} - GL_MODELVIEW_MATRIX = $0BA6; - {$EXTERNALSYM GL_MODELVIEW_MATRIX} - GL_PROJECTION_MATRIX = $0BA7; - {$EXTERNALSYM GL_PROJECTION_MATRIX} - GL_TEXTURE_MATRIX = $0BA8; - {$EXTERNALSYM GL_TEXTURE_MATRIX} - GL_ATTRIB_STACK_DEPTH = $0BB0; - {$EXTERNALSYM GL_ATTRIB_STACK_DEPTH} - GL_CLIENT_ATTRIB_STACK_DEPTH = $0BB1; - {$EXTERNALSYM GL_CLIENT_ATTRIB_STACK_DEPTH} - - GL_SINGLE_COLOR = $81F9; // GL 1.2 - {$EXTERNALSYM GL_SINGLE_COLOR} - GL_SEPARATE_SPECULAR_COLOR = $81FA; // GL 1.2 - {$EXTERNALSYM GL_SEPARATE_SPECULAR_COLOR} - - // alpha testing - GL_ALPHA_TEST = $0BC0; - {$EXTERNALSYM GL_ALPHA_TEST} - GL_ALPHA_TEST_FUNC = $0BC1; - {$EXTERNALSYM GL_ALPHA_TEST_FUNC} - GL_ALPHA_TEST_REF = $0BC2; - {$EXTERNALSYM GL_ALPHA_TEST_REF} - - GL_LOGIC_OP_MODE = $0BF0; - {$EXTERNALSYM GL_LOGIC_OP_MODE} - GL_INDEX_LOGIC_OP = $0BF1; - {$EXTERNALSYM GL_INDEX_LOGIC_OP} - GL_LOGIC_OP = $0BF1; - {$EXTERNALSYM GL_LOGIC_OP} - GL_COLOR_LOGIC_OP = $0BF2; - {$EXTERNALSYM GL_COLOR_LOGIC_OP} - GL_SCISSOR_BOX = $0C10; - {$EXTERNALSYM GL_SCISSOR_BOX} - GL_SCISSOR_TEST = $0C11; - {$EXTERNALSYM GL_SCISSOR_TEST} - GL_INDEX_CLEAR_VALUE = $0C20; - {$EXTERNALSYM GL_INDEX_CLEAR_VALUE} - GL_INDEX_WRITEMASK = $0C21; - {$EXTERNALSYM GL_INDEX_WRITEMASK} - GL_COLOR_CLEAR_VALUE = $0C22; - {$EXTERNALSYM GL_COLOR_CLEAR_VALUE} - GL_COLOR_WRITEMASK = $0C23; - {$EXTERNALSYM GL_COLOR_WRITEMASK} - GL_INDEX_MODE = $0C30; - {$EXTERNALSYM GL_INDEX_MODE} - GL_RGBA_MODE = $0C31; - {$EXTERNALSYM GL_RGBA_MODE} - GL_RENDER_MODE = $0C40; - {$EXTERNALSYM GL_RENDER_MODE} - GL_PERSPECTIVE_CORRECTION_HINT = $0C50; - {$EXTERNALSYM GL_PERSPECTIVE_CORRECTION_HINT} - GL_POINT_SMOOTH_HINT = $0C51; - {$EXTERNALSYM GL_POINT_SMOOTH_HINT} - GL_LINE_SMOOTH_HINT = $0C52; - {$EXTERNALSYM GL_LINE_SMOOTH_HINT} - GL_POLYGON_SMOOTH_HINT = $0C53; - {$EXTERNALSYM GL_POLYGON_SMOOTH_HINT} - GL_FOG_HINT = $0C54; - {$EXTERNALSYM GL_FOG_HINT} - GL_TEXTURE_GEN_S = $0C60; - {$EXTERNALSYM GL_TEXTURE_GEN_S} - GL_TEXTURE_GEN_T = $0C61; - {$EXTERNALSYM GL_TEXTURE_GEN_T} - GL_TEXTURE_GEN_R = $0C62; - {$EXTERNALSYM GL_TEXTURE_GEN_R} - GL_TEXTURE_GEN_Q = $0C63; - {$EXTERNALSYM GL_TEXTURE_GEN_Q} - GL_PIXEL_MAP_I_TO_I_SIZE = $0CB0; - {$EXTERNALSYM GL_PIXEL_MAP_I_TO_I_SIZE} - GL_PIXEL_MAP_S_TO_S_SIZE = $0CB1; - {$EXTERNALSYM GL_PIXEL_MAP_S_TO_S_SIZE} - GL_PIXEL_MAP_I_TO_R_SIZE = $0CB2; - {$EXTERNALSYM GL_PIXEL_MAP_I_TO_R_SIZE} - GL_PIXEL_MAP_I_TO_G_SIZE = $0CB3; - {$EXTERNALSYM GL_PIXEL_MAP_I_TO_G_SIZE} - GL_PIXEL_MAP_I_TO_B_SIZE = $0CB4; - {$EXTERNALSYM GL_PIXEL_MAP_I_TO_B_SIZE} - GL_PIXEL_MAP_I_TO_A_SIZE = $0CB5; - {$EXTERNALSYM GL_PIXEL_MAP_I_TO_A_SIZE} - GL_PIXEL_MAP_R_TO_R_SIZE = $0CB6; - {$EXTERNALSYM GL_PIXEL_MAP_R_TO_R_SIZE} - GL_PIXEL_MAP_G_TO_G_SIZE = $0CB7; - {$EXTERNALSYM GL_PIXEL_MAP_G_TO_G_SIZE} - GL_PIXEL_MAP_B_TO_B_SIZE = $0CB8; - {$EXTERNALSYM GL_PIXEL_MAP_B_TO_B_SIZE} - GL_PIXEL_MAP_A_TO_A_SIZE = $0CB9; - {$EXTERNALSYM GL_PIXEL_MAP_A_TO_A_SIZE} - GL_UNPACK_SWAP_BYTES = $0CF0; - {$EXTERNALSYM GL_UNPACK_SWAP_BYTES} - GL_UNPACK_LSB_FIRST = $0CF1; - {$EXTERNALSYM GL_UNPACK_LSB_FIRST} - GL_UNPACK_ROW_LENGTH = $0CF2; - {$EXTERNALSYM GL_UNPACK_ROW_LENGTH} - GL_UNPACK_SKIP_ROWS = $0CF3; - {$EXTERNALSYM GL_UNPACK_SKIP_ROWS} - GL_UNPACK_SKIP_PIXELS = $0CF4; - {$EXTERNALSYM GL_UNPACK_SKIP_PIXELS} - GL_UNPACK_ALIGNMENT = $0CF5; - {$EXTERNALSYM GL_UNPACK_ALIGNMENT} - GL_PACK_SWAP_BYTES = $0D00; - {$EXTERNALSYM GL_PACK_SWAP_BYTES} - GL_PACK_LSB_FIRST = $0D01; - {$EXTERNALSYM GL_PACK_LSB_FIRST} - GL_PACK_ROW_LENGTH = $0D02; - {$EXTERNALSYM GL_PACK_ROW_LENGTH} - GL_PACK_SKIP_ROWS = $0D03; - {$EXTERNALSYM GL_PACK_SKIP_ROWS} - GL_PACK_SKIP_PIXELS = $0D04; - {$EXTERNALSYM GL_PACK_SKIP_PIXELS} - GL_PACK_ALIGNMENT = $0D05; - {$EXTERNALSYM GL_PACK_ALIGNMENT} - GL_PACK_SKIP_IMAGES = $806B; // GL 1.2 - {$EXTERNALSYM GL_PACK_SKIP_IMAGES} - GL_PACK_IMAGE_HEIGHT = $806C; // GL 1.2 - {$EXTERNALSYM GL_PACK_IMAGE_HEIGHT} - GL_UNPACK_SKIP_IMAGES = $806D; // GL 1.2 - {$EXTERNALSYM GL_UNPACK_SKIP_IMAGES} - GL_UNPACK_IMAGE_HEIGHT = $806E; // GL 1.2 - {$EXTERNALSYM GL_UNPACK_IMAGE_HEIGHT} - GL_MAP_COLOR = $0D10; - {$EXTERNALSYM GL_MAP_COLOR} - GL_MAP_STENCIL = $0D11; - {$EXTERNALSYM GL_MAP_STENCIL} - GL_INDEX_SHIFT = $0D12; - {$EXTERNALSYM GL_INDEX_SHIFT} - GL_INDEX_OFFSET = $0D13; - {$EXTERNALSYM GL_INDEX_OFFSET} - GL_RED_SCALE = $0D14; - {$EXTERNALSYM GL_RED_SCALE} - GL_RED_BIAS = $0D15; - {$EXTERNALSYM GL_RED_BIAS} - GL_ZOOM_X = $0D16; - {$EXTERNALSYM GL_ZOOM_X} - GL_ZOOM_Y = $0D17; - {$EXTERNALSYM GL_ZOOM_Y} - GL_GREEN_SCALE = $0D18; - {$EXTERNALSYM GL_GREEN_SCALE} - GL_GREEN_BIAS = $0D19; - {$EXTERNALSYM GL_GREEN_BIAS} - GL_BLUE_SCALE = $0D1A; - {$EXTERNALSYM GL_BLUE_SCALE} - GL_BLUE_BIAS = $0D1B; - {$EXTERNALSYM GL_BLUE_BIAS} - GL_ALPHA_SCALE = $0D1C; - {$EXTERNALSYM GL_ALPHA_SCALE} - GL_ALPHA_BIAS = $0D1D; - {$EXTERNALSYM GL_ALPHA_BIAS} - GL_DEPTH_SCALE = $0D1E; - {$EXTERNALSYM GL_DEPTH_SCALE} - GL_DEPTH_BIAS = $0D1F; - {$EXTERNALSYM GL_DEPTH_BIAS} - GL_MAX_EVAL_ORDER = $0D30; - {$EXTERNALSYM GL_MAX_EVAL_ORDER} - GL_MAX_LIGHTS = $0D31; - {$EXTERNALSYM GL_MAX_LIGHTS} - GL_MAX_CLIP_PLANES = $0D32; - {$EXTERNALSYM GL_MAX_CLIP_PLANES} - GL_MAX_TEXTURE_SIZE = $0D33; - {$EXTERNALSYM GL_MAX_TEXTURE_SIZE} - GL_MAX_3D_TEXTURE_SIZE = $8073; // GL 1.2 - {$EXTERNALSYM GL_MAX_3D_TEXTURE_SIZE} - GL_MAX_PIXEL_MAP_TABLE = $0D34; - {$EXTERNALSYM GL_MAX_PIXEL_MAP_TABLE} - GL_MAX_ATTRIB_STACK_DEPTH = $0D35; - {$EXTERNALSYM GL_MAX_ATTRIB_STACK_DEPTH} - GL_MAX_MODELVIEW_STACK_DEPTH = $0D36; - {$EXTERNALSYM GL_MAX_MODELVIEW_STACK_DEPTH} - GL_MAX_NAME_STACK_DEPTH = $0D37; - {$EXTERNALSYM GL_MAX_NAME_STACK_DEPTH} - GL_MAX_PROJECTION_STACK_DEPTH = $0D38; - {$EXTERNALSYM GL_MAX_PROJECTION_STACK_DEPTH} - GL_MAX_TEXTURE_STACK_DEPTH = $0D39; - {$EXTERNALSYM GL_MAX_TEXTURE_STACK_DEPTH} - GL_MAX_VIEWPORT_DIMS = $0D3A; - {$EXTERNALSYM GL_MAX_VIEWPORT_DIMS} - GL_MAX_CLIENT_ATTRIB_STACK_DEPTH = $0D3B; - {$EXTERNALSYM GL_MAX_CLIENT_ATTRIB_STACK_DEPTH} - GL_MAX_ELEMENTS_VERTICES = $80E8; // GL 1.2 - {$EXTERNALSYM GL_MAX_ELEMENTS_VERTICES} - GL_MAX_ELEMENTS_INDICES = $80E9; // GL 1.2 - {$EXTERNALSYM GL_MAX_ELEMENTS_INDICES} - GL_RESCALE_NORMAL = $803A; // GL 1.2 - {$EXTERNALSYM GL_RESCALE_NORMAL} - GL_SUBPIXEL_BITS = $0D50; - {$EXTERNALSYM GL_SUBPIXEL_BITS} - GL_INDEX_BITS = $0D51; - {$EXTERNALSYM GL_INDEX_BITS} - GL_RED_BITS = $0D52; - {$EXTERNALSYM GL_RED_BITS} - GL_GREEN_BITS = $0D53; - {$EXTERNALSYM GL_GREEN_BITS} - GL_BLUE_BITS = $0D54; - {$EXTERNALSYM GL_BLUE_BITS} - GL_ALPHA_BITS = $0D55; - {$EXTERNALSYM GL_ALPHA_BITS} - GL_DEPTH_BITS = $0D56; - {$EXTERNALSYM GL_DEPTH_BITS} - GL_STENCIL_BITS = $0D57; - {$EXTERNALSYM GL_STENCIL_BITS} - GL_ACCUM_RED_BITS = $0D58; - {$EXTERNALSYM GL_ACCUM_RED_BITS} - GL_ACCUM_GREEN_BITS = $0D59; - {$EXTERNALSYM GL_ACCUM_GREEN_BITS} - GL_ACCUM_BLUE_BITS = $0D5A; - {$EXTERNALSYM GL_ACCUM_BLUE_BITS} - GL_ACCUM_ALPHA_BITS = $0D5B; - {$EXTERNALSYM GL_ACCUM_ALPHA_BITS} - GL_NAME_STACK_DEPTH = $0D70; - {$EXTERNALSYM GL_NAME_STACK_DEPTH} - GL_AUTO_NORMAL = $0D80; - {$EXTERNALSYM GL_AUTO_NORMAL} - GL_MAP1_COLOR_4 = $0D90; - {$EXTERNALSYM GL_MAP1_COLOR_4} - GL_MAP1_INDEX = $0D91; - {$EXTERNALSYM GL_MAP1_INDEX} - GL_MAP1_NORMAL = $0D92; - {$EXTERNALSYM GL_MAP1_NORMAL} - GL_MAP1_TEXTURE_COORD_1 = $0D93; - {$EXTERNALSYM GL_MAP1_TEXTURE_COORD_1} - GL_MAP1_TEXTURE_COORD_2 = $0D94; - {$EXTERNALSYM GL_MAP1_TEXTURE_COORD_2} - GL_MAP1_TEXTURE_COORD_3 = $0D95; - {$EXTERNALSYM GL_MAP1_TEXTURE_COORD_3} - GL_MAP1_TEXTURE_COORD_4 = $0D96; - {$EXTERNALSYM GL_MAP1_TEXTURE_COORD_4} - GL_MAP1_VERTEX_3 = $0D97; - {$EXTERNALSYM GL_MAP1_VERTEX_3} - GL_MAP1_VERTEX_4 = $0D98; - {$EXTERNALSYM GL_MAP1_VERTEX_4} - GL_MAP2_COLOR_4 = $0DB0; - {$EXTERNALSYM GL_MAP2_COLOR_4} - GL_MAP2_INDEX = $0DB1; - {$EXTERNALSYM GL_MAP2_INDEX} - GL_MAP2_NORMAL = $0DB2; - {$EXTERNALSYM GL_MAP2_NORMAL} - GL_MAP2_TEXTURE_COORD_1 = $0DB3; - {$EXTERNALSYM GL_MAP2_TEXTURE_COORD_1} - GL_MAP2_TEXTURE_COORD_2 = $0DB4; - {$EXTERNALSYM GL_MAP2_TEXTURE_COORD_2} - GL_MAP2_TEXTURE_COORD_3 = $0DB5; - {$EXTERNALSYM GL_MAP2_TEXTURE_COORD_3} - GL_MAP2_TEXTURE_COORD_4 = $0DB6; - {$EXTERNALSYM GL_MAP2_TEXTURE_COORD_4} - GL_MAP2_VERTEX_3 = $0DB7; - {$EXTERNALSYM GL_MAP2_VERTEX_3} - GL_MAP2_VERTEX_4 = $0DB8; - {$EXTERNALSYM GL_MAP2_VERTEX_4} - GL_MAP1_GRID_DOMAIN = $0DD0; - {$EXTERNALSYM GL_MAP1_GRID_DOMAIN} - GL_MAP1_GRID_SEGMENTS = $0DD1; - {$EXTERNALSYM GL_MAP1_GRID_SEGMENTS} - GL_MAP2_GRID_DOMAIN = $0DD2; - {$EXTERNALSYM GL_MAP2_GRID_DOMAIN} - GL_MAP2_GRID_SEGMENTS = $0DD3; - {$EXTERNALSYM GL_MAP2_GRID_SEGMENTS} - GL_TEXTURE_1D = $0DE0; - {$EXTERNALSYM GL_TEXTURE_1D} - GL_TEXTURE_2D = $0DE1; - {$EXTERNALSYM GL_TEXTURE_2D} - GL_TEXTURE_3D = $806F; // GL 1.2 - {$EXTERNALSYM GL_TEXTURE_3D} - GL_SELECTION_BUFFER_POINTER = $0DF3; - {$EXTERNALSYM GL_SELECTION_BUFFER_POINTER} - GL_SELECTION_BUFFER_SIZE = $0DF4; - {$EXTERNALSYM GL_SELECTION_BUFFER_SIZE} - GL_POLYGON_OFFSET_UNITS = $2A00; - {$EXTERNALSYM GL_POLYGON_OFFSET_UNITS} - GL_POLYGON_OFFSET_POINT = $2A01; - {$EXTERNALSYM GL_POLYGON_OFFSET_POINT} - GL_POLYGON_OFFSET_LINE = $2A02; - {$EXTERNALSYM GL_POLYGON_OFFSET_LINE} - GL_POLYGON_OFFSET_FILL = $8037; - {$EXTERNALSYM GL_POLYGON_OFFSET_FILL} - GL_POLYGON_OFFSET_FACTOR = $8038; - {$EXTERNALSYM GL_POLYGON_OFFSET_FACTOR} - GL_TEXTURE_BINDING_1D = $8068; - {$EXTERNALSYM GL_TEXTURE_BINDING_1D} - GL_TEXTURE_BINDING_2D = $8069; - {$EXTERNALSYM GL_TEXTURE_BINDING_2D} - GL_VERTEX_ARRAY = $8074; - {$EXTERNALSYM GL_VERTEX_ARRAY} - GL_NORMAL_ARRAY = $8075; - {$EXTERNALSYM GL_NORMAL_ARRAY} - GL_COLOR_ARRAY = $8076; - {$EXTERNALSYM GL_COLOR_ARRAY} - GL_INDEX_ARRAY = $8077; - {$EXTERNALSYM GL_INDEX_ARRAY} - GL_TEXTURE_COORD_ARRAY = $8078; - {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY} - GL_EDGE_FLAG_ARRAY = $8079; - {$EXTERNALSYM GL_EDGE_FLAG_ARRAY} - GL_VERTEX_ARRAY_SIZE = $807A; - {$EXTERNALSYM GL_VERTEX_ARRAY_SIZE} - GL_VERTEX_ARRAY_TYPE = $807B; - {$EXTERNALSYM GL_VERTEX_ARRAY_TYPE} - GL_VERTEX_ARRAY_STRIDE = $807C; - {$EXTERNALSYM GL_VERTEX_ARRAY_STRIDE} - GL_NORMAL_ARRAY_TYPE = $807E; - {$EXTERNALSYM GL_NORMAL_ARRAY_TYPE} - GL_NORMAL_ARRAY_STRIDE = $807F; - {$EXTERNALSYM GL_NORMAL_ARRAY_STRIDE} - GL_COLOR_ARRAY_SIZE = $8081; - {$EXTERNALSYM GL_COLOR_ARRAY_SIZE} - GL_COLOR_ARRAY_TYPE = $8082; - {$EXTERNALSYM GL_COLOR_ARRAY_TYPE} - GL_COLOR_ARRAY_STRIDE = $8083; - {$EXTERNALSYM GL_COLOR_ARRAY_STRIDE} - GL_INDEX_ARRAY_TYPE = $8085; - {$EXTERNALSYM GL_INDEX_ARRAY_TYPE} - GL_INDEX_ARRAY_STRIDE = $8086; - {$EXTERNALSYM GL_INDEX_ARRAY_STRIDE} - GL_TEXTURE_COORD_ARRAY_SIZE = $8088; - {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_SIZE} - GL_TEXTURE_COORD_ARRAY_TYPE = $8089; - {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_TYPE} - GL_TEXTURE_COORD_ARRAY_STRIDE = $808A; - {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_STRIDE} - GL_EDGE_FLAG_ARRAY_STRIDE = $808C; - {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_STRIDE} - GL_COLOR_MATRIX = $80B1; // GL 1.2 ARB imaging - {$EXTERNALSYM GL_COLOR_MATRIX} - GL_COLOR_MATRIX_STACK_DEPTH = $80B2; // GL 1.2 ARB imaging - {$EXTERNALSYM GL_COLOR_MATRIX_STACK_DEPTH} - GL_MAX_COLOR_MATRIX_STACK_DEPTH = $80B3; // GL 1.2 ARB imaging - {$EXTERNALSYM GL_MAX_COLOR_MATRIX_STACK_DEPTH} - GL_POST_COLOR_MATRIX_RED_SCALE = $80B4; // GL 1.2 ARB imaging - {$EXTERNALSYM GL_POST_COLOR_MATRIX_RED_SCALE} - GL_POST_COLOR_MATRIX_GREEN_SCALE = $80B5; // GL 1.2 ARB imaging - {$EXTERNALSYM GL_POST_COLOR_MATRIX_GREEN_SCALE} - GL_POST_COLOR_MATRIX_BLUE_SCALE = $80B6; // GL 1.2 ARB imaging - {$EXTERNALSYM GL_POST_COLOR_MATRIX_BLUE_SCALE} - GL_POST_COLOR_MATRIX_ALPHA_SCALE = $80B7; // GL 1.2 ARB imaging - {$EXTERNALSYM GL_POST_COLOR_MATRIX_ALPHA_SCALE} - GL_POST_COLOR_MATRIX_RED_BIAS = $80B8; // GL 1.2 ARB imaging - {$EXTERNALSYM GL_POST_COLOR_MATRIX_RED_BIAS} - GL_POST_COLOR_MATRIX_GREEN_BIAS = $80B9; // GL 1.2 ARB imaging - {$EXTERNALSYM GL_POST_COLOR_MATRIX_GREEN_BIAS} - GL_POST_COLOR_MATRIX_BLUE_BIAS = $80BA; // GL 1.2 ARB imaging - {$EXTERNALSYM GL_POST_COLOR_MATRIX_BLUE_BIAS} - GL_POST_COLOR_MATRIX_ALPHA_BIAS = $80BB; // GL 1.2 ARB imaging - {$EXTERNALSYM GL_POST_COLOR_MATRIX_ALPHA_BIAS} - - // evaluators - GL_COEFF = $0A00; - {$EXTERNALSYM GL_COEFF} - GL_ORDER = $0A01; - {$EXTERNALSYM GL_ORDER} - GL_DOMAIN = $0A02; - {$EXTERNALSYM GL_DOMAIN} - - // texture mapping - GL_TEXTURE_WIDTH = $1000; - {$EXTERNALSYM GL_TEXTURE_WIDTH} - GL_TEXTURE_HEIGHT = $1001; - {$EXTERNALSYM GL_TEXTURE_HEIGHT} - GL_TEXTURE_INTERNAL_FORMAT = $1003; - {$EXTERNALSYM GL_TEXTURE_INTERNAL_FORMAT} - GL_TEXTURE_COMPONENTS = $1003; - {$EXTERNALSYM GL_TEXTURE_COMPONENTS} - GL_TEXTURE_BORDER_COLOR = $1004; - {$EXTERNALSYM GL_TEXTURE_BORDER_COLOR} - GL_TEXTURE_BORDER = $1005; - {$EXTERNALSYM GL_TEXTURE_BORDER} - GL_TEXTURE_RED_SIZE = $805C; - {$EXTERNALSYM GL_TEXTURE_RED_SIZE} - GL_TEXTURE_GREEN_SIZE = $805D; - {$EXTERNALSYM GL_TEXTURE_GREEN_SIZE} - GL_TEXTURE_BLUE_SIZE = $805E; - {$EXTERNALSYM GL_TEXTURE_BLUE_SIZE} - GL_TEXTURE_ALPHA_SIZE = $805F; - {$EXTERNALSYM GL_TEXTURE_ALPHA_SIZE} - GL_TEXTURE_LUMINANCE_SIZE = $8060; - {$EXTERNALSYM GL_TEXTURE_LUMINANCE_SIZE} - GL_TEXTURE_INTENSITY_SIZE = $8061; - {$EXTERNALSYM GL_TEXTURE_INTENSITY_SIZE} - GL_TEXTURE_PRIORITY = $8066; - {$EXTERNALSYM GL_TEXTURE_PRIORITY} - GL_TEXTURE_RESIDENT = $8067; - {$EXTERNALSYM GL_TEXTURE_RESIDENT} - GL_BGR = $80E0; // v 1.2 - {$EXTERNALSYM GL_BGR} - GL_BGRA = $80E1; // v 1.2 - {$EXTERNALSYM GL_BGRA} - GL_S = $2000; - {$EXTERNALSYM GL_S} - GL_T = $2001; - {$EXTERNALSYM GL_T} - GL_R = $2002; - {$EXTERNALSYM GL_R} - GL_Q = $2003; - {$EXTERNALSYM GL_Q} - GL_MODULATE = $2100; - {$EXTERNALSYM GL_MODULATE} - GL_DECAL = $2101; - {$EXTERNALSYM GL_DECAL} - GL_TEXTURE_ENV_MODE = $2200; - {$EXTERNALSYM GL_TEXTURE_ENV_MODE} - GL_TEXTURE_ENV_COLOR = $2201; - {$EXTERNALSYM GL_TEXTURE_ENV_COLOR} - GL_TEXTURE_ENV = $2300; - {$EXTERNALSYM GL_TEXTURE_ENV} - GL_EYE_LINEAR = $2400; - {$EXTERNALSYM GL_EYE_LINEAR} - GL_OBJECT_LINEAR = $2401; - {$EXTERNALSYM GL_OBJECT_LINEAR} - GL_SPHERE_MAP = $2402; - {$EXTERNALSYM GL_SPHERE_MAP} - GL_TEXTURE_GEN_MODE = $2500; - {$EXTERNALSYM GL_TEXTURE_GEN_MODE} - GL_OBJECT_PLANE = $2501; - {$EXTERNALSYM GL_OBJECT_PLANE} - GL_EYE_PLANE = $2502; - {$EXTERNALSYM GL_EYE_PLANE} - GL_NEAREST = $2600; - {$EXTERNALSYM GL_NEAREST} - GL_LINEAR = $2601; - {$EXTERNALSYM GL_LINEAR} - GL_NEAREST_MIPMAP_NEAREST = $2700; - {$EXTERNALSYM GL_NEAREST_MIPMAP_NEAREST} - GL_LINEAR_MIPMAP_NEAREST = $2701; - {$EXTERNALSYM GL_LINEAR_MIPMAP_NEAREST} - GL_NEAREST_MIPMAP_LINEAR = $2702; - {$EXTERNALSYM GL_NEAREST_MIPMAP_LINEAR} - GL_LINEAR_MIPMAP_LINEAR = $2703; - {$EXTERNALSYM GL_LINEAR_MIPMAP_LINEAR} - GL_TEXTURE_MAG_FILTER = $2800; - {$EXTERNALSYM GL_TEXTURE_MAG_FILTER} - GL_TEXTURE_MIN_FILTER = $2801; - {$EXTERNALSYM GL_TEXTURE_MIN_FILTER} - GL_TEXTURE_WRAP_R = $8072; // GL 1.2 - {$EXTERNALSYM GL_TEXTURE_WRAP_R} - GL_TEXTURE_WRAP_S = $2802; - {$EXTERNALSYM GL_TEXTURE_WRAP_S} - GL_TEXTURE_WRAP_T = $2803; - {$EXTERNALSYM GL_TEXTURE_WRAP_T} - GL_CLAMP_TO_EDGE = $812F; // GL 1.2 - {$EXTERNALSYM GL_CLAMP_TO_EDGE} - GL_TEXTURE_MIN_LOD = $813A; // GL 1.2 - {$EXTERNALSYM GL_TEXTURE_MIN_LOD} - GL_TEXTURE_MAX_LOD = $813B; // GL 1.2 - {$EXTERNALSYM GL_TEXTURE_MAX_LOD} - GL_TEXTURE_BASE_LEVEL = $813C; // GL 1.2 - {$EXTERNALSYM GL_TEXTURE_BASE_LEVEL} - GL_TEXTURE_MAX_LEVEL = $813D; // GL 1.2 - {$EXTERNALSYM GL_TEXTURE_MAX_LEVEL} - GL_TEXTURE_DEPTH = $8071; // GL 1.2 - {$EXTERNALSYM GL_TEXTURE_DEPTH} - GL_PROXY_TEXTURE_1D = $8063; - {$EXTERNALSYM GL_PROXY_TEXTURE_1D} - GL_PROXY_TEXTURE_2D = $8064; - {$EXTERNALSYM GL_PROXY_TEXTURE_2D} - GL_PROXY_TEXTURE_3D = $8070; // GL 1.2 - {$EXTERNALSYM GL_PROXY_TEXTURE_3D} - GL_CLAMP = $2900; - {$EXTERNALSYM GL_CLAMP} - GL_REPEAT = $2901; - {$EXTERNALSYM GL_REPEAT} - - // hints - GL_DONT_CARE = $1100; - {$EXTERNALSYM GL_DONT_CARE} - GL_FASTEST = $1101; - {$EXTERNALSYM GL_FASTEST} - GL_NICEST = $1102; - {$EXTERNALSYM GL_NICEST} - - // data types - GL_BYTE = $1400; - {$EXTERNALSYM GL_BYTE} - GL_UNSIGNED_BYTE = $1401; - {$EXTERNALSYM GL_UNSIGNED_BYTE} - GL_SHORT = $1402; - {$EXTERNALSYM GL_SHORT} - GL_UNSIGNED_SHORT = $1403; - {$EXTERNALSYM GL_UNSIGNED_SHORT} - GL_INT = $1404; - {$EXTERNALSYM GL_INT} - GL_UNSIGNED_INT = $1405; - {$EXTERNALSYM GL_UNSIGNED_INT} - GL_FLOAT = $1406; - {$EXTERNALSYM GL_FLOAT} - GL_2_BYTES = $1407; - {$EXTERNALSYM GL_2_BYTES} - GL_3_BYTES = $1408; - {$EXTERNALSYM GL_3_BYTES} - GL_4_BYTES = $1409; - {$EXTERNALSYM GL_4_BYTES} - GL_DOUBLE = $140A; - {$EXTERNALSYM GL_DOUBLE} - GL_DOUBLE_EXT = $140A; - {$EXTERNALSYM GL_DOUBLE_EXT} - - // logic operations - GL_CLEAR = $1500; - {$EXTERNALSYM GL_CLEAR} - GL_AND = $1501; - {$EXTERNALSYM GL_AND} - GL_AND_REVERSE = $1502; - {$EXTERNALSYM GL_AND_REVERSE} - GL_COPY = $1503; - {$EXTERNALSYM GL_COPY} - GL_AND_INVERTED = $1504; - {$EXTERNALSYM GL_AND_INVERTED} - GL_NOOP = $1505; - {$EXTERNALSYM GL_NOOP} - GL_XOR = $1506; - {$EXTERNALSYM GL_XOR} - GL_OR = $1507; - {$EXTERNALSYM GL_OR} - GL_NOR = $1508; - {$EXTERNALSYM GL_NOR} - GL_EQUIV = $1509; - {$EXTERNALSYM GL_EQUIV} - GL_INVERT = $150A; - {$EXTERNALSYM GL_INVERT} - GL_OR_REVERSE = $150B; - {$EXTERNALSYM GL_OR_REVERSE} - GL_COPY_INVERTED = $150C; - {$EXTERNALSYM GL_COPY_INVERTED} - GL_OR_INVERTED = $150D; - {$EXTERNALSYM GL_OR_INVERTED} - GL_NAND = $150E; - {$EXTERNALSYM GL_NAND} - GL_SET = $150F; - {$EXTERNALSYM GL_SET} - - // PixelCopyType - GL_COLOR = $1800; - {$EXTERNALSYM GL_COLOR} - GL_DEPTH = $1801; - {$EXTERNALSYM GL_DEPTH} - GL_STENCIL = $1802; - {$EXTERNALSYM GL_STENCIL} - - // pixel formats - GL_COLOR_INDEX = $1900; - {$EXTERNALSYM GL_COLOR_INDEX} - GL_STENCIL_INDEX = $1901; - {$EXTERNALSYM GL_STENCIL_INDEX} - GL_DEPTH_COMPONENT = $1902; - {$EXTERNALSYM GL_DEPTH_COMPONENT} - GL_RED = $1903; - {$EXTERNALSYM GL_RED} - GL_GREEN = $1904; - {$EXTERNALSYM GL_GREEN} - GL_BLUE = $1905; - {$EXTERNALSYM GL_BLUE} - GL_ALPHA = $1906; - {$EXTERNALSYM GL_ALPHA} - GL_RGB = $1907; - {$EXTERNALSYM GL_RGB} - GL_RGBA = $1908; - {$EXTERNALSYM GL_RGBA} - GL_LUMINANCE = $1909; - {$EXTERNALSYM GL_LUMINANCE} - GL_LUMINANCE_ALPHA = $190A; - {$EXTERNALSYM GL_LUMINANCE_ALPHA} - - // pixel type - GL_BITMAP = $1A00; - {$EXTERNALSYM GL_BITMAP} - - // rendering modes - GL_RENDER = $1C00; - {$EXTERNALSYM GL_RENDER} - GL_FEEDBACK = $1C01; - {$EXTERNALSYM GL_FEEDBACK} - GL_SELECT = $1C02; - {$EXTERNALSYM GL_SELECT} - - // implementation strings - GL_VENDOR = $1F00; - {$EXTERNALSYM GL_VENDOR} - GL_RENDERER = $1F01; - {$EXTERNALSYM GL_RENDERER} - GL_VERSION = $1F02; - {$EXTERNALSYM GL_VERSION} - GL_EXTENSIONS = $1F03; - {$EXTERNALSYM GL_EXTENSIONS} - - // pixel formats - GL_R3_G3_B2 = $2A10; - {$EXTERNALSYM GL_R3_G3_B2} - GL_ALPHA4 = $803B; - {$EXTERNALSYM GL_ALPHA4} - GL_ALPHA8 = $803C; - {$EXTERNALSYM GL_ALPHA8} - GL_ALPHA12 = $803D; - {$EXTERNALSYM GL_ALPHA12} - GL_ALPHA16 = $803E; - {$EXTERNALSYM GL_ALPHA16} - GL_LUMINANCE4 = $803F; - {$EXTERNALSYM GL_LUMINANCE4} - GL_LUMINANCE8 = $8040; - {$EXTERNALSYM GL_LUMINANCE8} - GL_LUMINANCE12 = $8041; - {$EXTERNALSYM GL_LUMINANCE12} - GL_LUMINANCE16 = $8042; - {$EXTERNALSYM GL_LUMINANCE16} - GL_LUMINANCE4_ALPHA4 = $8043; - {$EXTERNALSYM GL_LUMINANCE4_ALPHA4} - GL_LUMINANCE6_ALPHA2 = $8044; - {$EXTERNALSYM GL_LUMINANCE6_ALPHA2} - GL_LUMINANCE8_ALPHA8 = $8045; - {$EXTERNALSYM GL_LUMINANCE8_ALPHA8} - GL_LUMINANCE12_ALPHA4 = $8046; - {$EXTERNALSYM GL_LUMINANCE12_ALPHA4} - GL_LUMINANCE12_ALPHA12 = $8047; - {$EXTERNALSYM GL_LUMINANCE12_ALPHA12} - GL_LUMINANCE16_ALPHA16 = $8048; - {$EXTERNALSYM GL_LUMINANCE16_ALPHA16} - GL_INTENSITY = $8049; - {$EXTERNALSYM GL_INTENSITY} - GL_INTENSITY4 = $804A; - {$EXTERNALSYM GL_INTENSITY4} - GL_INTENSITY8 = $804B; - {$EXTERNALSYM GL_INTENSITY8} - GL_INTENSITY12 = $804C; - {$EXTERNALSYM GL_INTENSITY12} - GL_INTENSITY16 = $804D; - {$EXTERNALSYM GL_INTENSITY16} - GL_RGB4 = $804F; - {$EXTERNALSYM GL_RGB4} - GL_RGB5 = $8050; - {$EXTERNALSYM GL_RGB5} - GL_RGB8 = $8051; - {$EXTERNALSYM GL_RGB8} - GL_RGB10 = $8052; - {$EXTERNALSYM GL_RGB10} - GL_RGB12 = $8053; - {$EXTERNALSYM GL_RGB12} - GL_RGB16 = $8054; - {$EXTERNALSYM GL_RGB16} - GL_RGBA2 = $8055; - {$EXTERNALSYM GL_RGBA2} - GL_RGBA4 = $8056; - {$EXTERNALSYM GL_RGBA4} - GL_RGB5_A1 = $8057; - {$EXTERNALSYM GL_RGB5_A1} - GL_RGBA8 = $8058; - {$EXTERNALSYM GL_RGBA8} - GL_RGB10_A2 = $8059; - {$EXTERNALSYM GL_RGB10_A2} - GL_RGBA12 = $805A; - {$EXTERNALSYM GL_RGBA12} - GL_RGBA16 = $805B; - {$EXTERNALSYM GL_RGBA16} - UNSIGNED_BYTE_3_3_2 = $8032; // GL 1.2 - {$EXTERNALSYM UNSIGNED_BYTE_3_3_2} - UNSIGNED_BYTE_2_3_3_REV = $8362; // GL 1.2 - {$EXTERNALSYM UNSIGNED_BYTE_2_3_3_REV} - UNSIGNED_SHORT_5_6_5 = $8363; // GL 1.2 - {$EXTERNALSYM UNSIGNED_SHORT_5_6_5} - UNSIGNED_SHORT_5_6_5_REV = $8364; // GL 1.2 - {$EXTERNALSYM UNSIGNED_SHORT_5_6_5_REV} - UNSIGNED_SHORT_4_4_4_4 = $8033; // GL 1.2 - {$EXTERNALSYM UNSIGNED_SHORT_4_4_4_4} - UNSIGNED_SHORT_4_4_4_4_REV = $8365; // GL 1.2 - {$EXTERNALSYM UNSIGNED_SHORT_4_4_4_4_REV} - UNSIGNED_SHORT_5_5_5_1 = $8034; // GL 1.2 - {$EXTERNALSYM UNSIGNED_SHORT_5_5_5_1} - UNSIGNED_SHORT_1_5_5_5_REV = $8366; // GL 1.2 - {$EXTERNALSYM UNSIGNED_SHORT_1_5_5_5_REV} - UNSIGNED_INT_8_8_8_8 = $8035; // GL 1.2 - {$EXTERNALSYM UNSIGNED_INT_8_8_8_8} - UNSIGNED_INT_8_8_8_8_REV = $8367; // GL 1.2 - {$EXTERNALSYM UNSIGNED_INT_8_8_8_8_REV} - UNSIGNED_INT_10_10_10_2 = $8036; // GL 1.2 - {$EXTERNALSYM UNSIGNED_INT_10_10_10_2} - UNSIGNED_INT_2_10_10_10_REV = $8368; // GL 1.2 - {$EXTERNALSYM UNSIGNED_INT_2_10_10_10_REV} - - // interleaved arrays formats - GL_V2F = $2A20; - {$EXTERNALSYM GL_V2F} - GL_V3F = $2A21; - {$EXTERNALSYM GL_V3F} - GL_C4UB_V2F = $2A22; - {$EXTERNALSYM GL_C4UB_V2F} - GL_C4UB_V3F = $2A23; - {$EXTERNALSYM GL_C4UB_V3F} - GL_C3F_V3F = $2A24; - {$EXTERNALSYM GL_C3F_V3F} - GL_N3F_V3F = $2A25; - {$EXTERNALSYM GL_N3F_V3F} - GL_C4F_N3F_V3F = $2A26; - {$EXTERNALSYM GL_C4F_N3F_V3F} - GL_T2F_V3F = $2A27; - {$EXTERNALSYM GL_T2F_V3F} - GL_T4F_V4F = $2A28; - {$EXTERNALSYM GL_T4F_V4F} - GL_T2F_C4UB_V3F = $2A29; - {$EXTERNALSYM GL_T2F_C4UB_V3F} - GL_T2F_C3F_V3F = $2A2A; - {$EXTERNALSYM GL_T2F_C3F_V3F} - GL_T2F_N3F_V3F = $2A2B; - {$EXTERNALSYM GL_T2F_N3F_V3F} - GL_T2F_C4F_N3F_V3F = $2A2C; - {$EXTERNALSYM GL_T2F_C4F_N3F_V3F} - GL_T4F_C4F_N3F_V4F = $2A2D; - {$EXTERNALSYM GL_T4F_C4F_N3F_V4F} - - // clip planes - GL_CLIP_PLANE0 = $3000; - {$EXTERNALSYM GL_CLIP_PLANE0} - GL_CLIP_PLANE1 = $3001; - {$EXTERNALSYM GL_CLIP_PLANE1} - GL_CLIP_PLANE2 = $3002; - {$EXTERNALSYM GL_CLIP_PLANE2} - GL_CLIP_PLANE3 = $3003; - {$EXTERNALSYM GL_CLIP_PLANE3} - GL_CLIP_PLANE4 = $3004; - {$EXTERNALSYM GL_CLIP_PLANE4} - GL_CLIP_PLANE5 = $3005; - {$EXTERNALSYM GL_CLIP_PLANE5} - - // miscellaneous - GL_DITHER = $0BD0; - {$EXTERNALSYM GL_DITHER} - - // ----- extensions enumerants ----- - // EXT_abgr - GL_ABGR_EXT = $8000; - {$EXTERNALSYM GL_ABGR_EXT} - - // EXT_packed_pixels - GL_UNSIGNED_BYTE_3_3_2_EXT = $8032; - {$EXTERNALSYM GL_UNSIGNED_BYTE_3_3_2_EXT} - GL_UNSIGNED_SHORT_4_4_4_4_EXT = $8033; - {$EXTERNALSYM GL_UNSIGNED_SHORT_4_4_4_4_EXT} - GL_UNSIGNED_SHORT_5_5_5_1_EXT = $8034; - {$EXTERNALSYM GL_UNSIGNED_SHORT_5_5_5_1_EXT} - GL_UNSIGNED_INT_8_8_8_8_EXT = $8035; - {$EXTERNALSYM GL_UNSIGNED_INT_8_8_8_8_EXT} - GL_UNSIGNED_INT_10_10_10_2_EXT = $8036; - {$EXTERNALSYM GL_UNSIGNED_INT_10_10_10_2_EXT} - - // EXT_vertex_array - GL_VERTEX_ARRAY_EXT = $8074; - {$EXTERNALSYM GL_VERTEX_ARRAY_EXT} - GL_NORMAL_ARRAY_EXT = $8075; - {$EXTERNALSYM GL_NORMAL_ARRAY_EXT} - GL_COLOR_ARRAY_EXT = $8076; - {$EXTERNALSYM GL_COLOR_ARRAY_EXT} - GL_INDEX_ARRAY_EXT = $8077; - {$EXTERNALSYM GL_INDEX_ARRAY_EXT} - GL_TEXTURE_COORD_ARRAY_EXT = $8078; - {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_EXT} - GL_EDGE_FLAG_ARRAY_EXT = $8079; - {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_EXT} - GL_VERTEX_ARRAY_SIZE_EXT = $807A; - {$EXTERNALSYM GL_VERTEX_ARRAY_SIZE_EXT} - GL_VERTEX_ARRAY_TYPE_EXT = $807B; - {$EXTERNALSYM GL_VERTEX_ARRAY_TYPE_EXT} - GL_VERTEX_ARRAY_STRIDE_EXT = $807C; - {$EXTERNALSYM GL_VERTEX_ARRAY_STRIDE_EXT} - GL_VERTEX_ARRAY_COUNT_EXT = $807D; - {$EXTERNALSYM GL_VERTEX_ARRAY_COUNT_EXT} - GL_NORMAL_ARRAY_TYPE_EXT = $807E; - {$EXTERNALSYM GL_NORMAL_ARRAY_TYPE_EXT} - GL_NORMAL_ARRAY_STRIDE_EXT = $807F; - {$EXTERNALSYM GL_NORMAL_ARRAY_STRIDE_EXT} - GL_NORMAL_ARRAY_COUNT_EXT = $8080; - {$EXTERNALSYM GL_NORMAL_ARRAY_COUNT_EXT} - GL_COLOR_ARRAY_SIZE_EXT = $8081; - {$EXTERNALSYM GL_COLOR_ARRAY_SIZE_EXT} - GL_COLOR_ARRAY_TYPE_EXT = $8082; - {$EXTERNALSYM GL_COLOR_ARRAY_TYPE_EXT} - GL_COLOR_ARRAY_STRIDE_EXT = $8083; - {$EXTERNALSYM GL_COLOR_ARRAY_STRIDE_EXT} - GL_COLOR_ARRAY_COUNT_EXT = $8084; - {$EXTERNALSYM GL_COLOR_ARRAY_COUNT_EXT} - GL_INDEX_ARRAY_TYPE_EXT = $8085; - {$EXTERNALSYM GL_INDEX_ARRAY_TYPE_EXT} - GL_INDEX_ARRAY_STRIDE_EXT = $8086; - {$EXTERNALSYM GL_INDEX_ARRAY_STRIDE_EXT} - GL_INDEX_ARRAY_COUNT_EXT = $8087; - {$EXTERNALSYM GL_INDEX_ARRAY_COUNT_EXT} - GL_TEXTURE_COORD_ARRAY_SIZE_EXT = $8088; - {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_SIZE_EXT} - GL_TEXTURE_COORD_ARRAY_TYPE_EXT = $8089; - {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_TYPE_EXT} - GL_TEXTURE_COORD_ARRAY_STRIDE_EXT = $808A; - {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_STRIDE_EXT} - GL_TEXTURE_COORD_ARRAY_COUNT_EXT = $808B; - {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_COUNT_EXT} - GL_EDGE_FLAG_ARRAY_STRIDE_EXT = $808C; - {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_STRIDE_EXT} - GL_EDGE_FLAG_ARRAY_COUNT_EXT = $808D; - {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_COUNT_EXT} - GL_VERTEX_ARRAY_POINTER_EXT = $808E; - {$EXTERNALSYM GL_VERTEX_ARRAY_POINTER_EXT} - GL_NORMAL_ARRAY_POINTER_EXT = $808F; - {$EXTERNALSYM GL_NORMAL_ARRAY_POINTER_EXT} - GL_COLOR_ARRAY_POINTER_EXT = $8090; - {$EXTERNALSYM GL_COLOR_ARRAY_POINTER_EXT} - GL_INDEX_ARRAY_POINTER_EXT = $8091; - {$EXTERNALSYM GL_INDEX_ARRAY_POINTER_EXT} - GL_TEXTURE_COORD_ARRAY_POINTER_EXT = $8092; - {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_POINTER_EXT} - GL_EDGE_FLAG_ARRAY_POINTER_EXT = $8093; - {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_POINTER_EXT} - - // EXT_color_table - GL_TABLE_TOO_LARGE_EXT = $8031; - {$EXTERNALSYM GL_TABLE_TOO_LARGE_EXT} - GL_COLOR_TABLE_EXT = $80D0; - {$EXTERNALSYM GL_COLOR_TABLE_EXT} - GL_POST_CONVOLUTION_COLOR_TABLE_EXT = $80D1; - {$EXTERNALSYM GL_POST_CONVOLUTION_COLOR_TABLE_EXT} - GL_POST_COLOR_MATRIX_COLOR_TABLE_EXT = $80D2; - {$EXTERNALSYM GL_POST_COLOR_MATRIX_COLOR_TABLE_EXT} - GL_PROXY_COLOR_TABLE_EXT = $80D3; - {$EXTERNALSYM GL_PROXY_COLOR_TABLE_EXT} - GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_EXT = $80D4; - {$EXTERNALSYM GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_EXT} - GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_EXT = $80D5; - {$EXTERNALSYM GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_EXT} - GL_COLOR_TABLE_SCALE_EXT = $80D6; - {$EXTERNALSYM GL_COLOR_TABLE_SCALE_EXT} - GL_COLOR_TABLE_BIAS_EXT = $80D7; - {$EXTERNALSYM GL_COLOR_TABLE_BIAS_EXT} - GL_COLOR_TABLE_FORMAT_EXT = $80D8; - {$EXTERNALSYM GL_COLOR_TABLE_FORMAT_EXT} - GL_COLOR_TABLE_WIDTH_EXT = $80D9; - {$EXTERNALSYM GL_COLOR_TABLE_WIDTH_EXT} - GL_COLOR_TABLE_RED_SIZE_EXT = $80DA; - {$EXTERNALSYM GL_COLOR_TABLE_RED_SIZE_EXT} - GL_COLOR_TABLE_GREEN_SIZE_EXT = $80DB; - {$EXTERNALSYM GL_COLOR_TABLE_GREEN_SIZE_EXT} - GL_COLOR_TABLE_BLUE_SIZE_EXT = $80DC; - {$EXTERNALSYM GL_COLOR_TABLE_BLUE_SIZE_EXT} - GL_COLOR_TABLE_ALPHA_SIZE_EXT = $80DD; - {$EXTERNALSYM GL_COLOR_TABLE_ALPHA_SIZE_EXT} - GL_COLOR_TABLE_LUMINANCE_SIZE_EXT = $80DE; - {$EXTERNALSYM GL_COLOR_TABLE_LUMINANCE_SIZE_EXT} - GL_COLOR_TABLE_INTENSITY_SIZE_EXT = $80DF; - {$EXTERNALSYM GL_COLOR_TABLE_INTENSITY_SIZE_EXT} - - // EXT_bgra - GL_BGR_EXT = $80E0; - {$EXTERNALSYM GL_BGR_EXT} - GL_BGRA_EXT = $80E1; - {$EXTERNALSYM GL_BGRA_EXT} - - // EXT_paletted_texture - GL_COLOR_INDEX1_EXT = $80E2; - {$EXTERNALSYM GL_COLOR_INDEX1_EXT} - GL_COLOR_INDEX2_EXT = $80E3; - {$EXTERNALSYM GL_COLOR_INDEX2_EXT} - GL_COLOR_INDEX4_EXT = $80E4; - {$EXTERNALSYM GL_COLOR_INDEX4_EXT} - GL_COLOR_INDEX8_EXT = $80E5; - {$EXTERNALSYM GL_COLOR_INDEX8_EXT} - GL_COLOR_INDEX12_EXT = $80E6; - {$EXTERNALSYM GL_COLOR_INDEX12_EXT} - GL_COLOR_INDEX16_EXT = $80E7; - {$EXTERNALSYM GL_COLOR_INDEX16_EXT} - - // EXT_blend_color - GL_CONSTANT_COLOR_EXT = $8001; - {$EXTERNALSYM GL_CONSTANT_COLOR_EXT} - GL_ONE_MINUS_CONSTANT_COLOR_EXT = $8002; - {$EXTERNALSYM GL_ONE_MINUS_CONSTANT_COLOR_EXT} - GL_CONSTANT_ALPHA_EXT = $8003; - {$EXTERNALSYM GL_CONSTANT_ALPHA_EXT} - GL_ONE_MINUS_CONSTANT_ALPHA_EXT = $8004; - {$EXTERNALSYM GL_ONE_MINUS_CONSTANT_ALPHA_EXT} - GL_BLEND_COLOR_EXT = $8005; - {$EXTERNALSYM GL_BLEND_COLOR_EXT} - - // EXT_blend_minmax - GL_FUNC_ADD_EXT = $8006; - {$EXTERNALSYM GL_FUNC_ADD_EXT} - GL_MIN_EXT = $8007; - {$EXTERNALSYM GL_MIN_EXT} - GL_MAX_EXT = $8008; - {$EXTERNALSYM GL_MAX_EXT} - GL_BLEND_EQUATION_EXT = $8009; - {$EXTERNALSYM GL_BLEND_EQUATION_EXT} - - // EXT_blend_subtract - GL_FUNC_SUBTRACT_EXT = $800A; - {$EXTERNALSYM GL_FUNC_SUBTRACT_EXT} - GL_FUNC_REVERSE_SUBTRACT_EXT = $800B; - {$EXTERNALSYM GL_FUNC_REVERSE_SUBTRACT_EXT} - - // EXT_convolution - GL_CONVOLUTION_1D_EXT = $8010; - {$EXTERNALSYM GL_CONVOLUTION_1D_EXT} - GL_CONVOLUTION_2D_EXT = $8011; - {$EXTERNALSYM GL_CONVOLUTION_2D_EXT} - GL_SEPARABLE_2D_EXT = $8012; - {$EXTERNALSYM GL_SEPARABLE_2D_EXT} - GL_CONVOLUTION_BORDER_MODE_EXT = $8013; - {$EXTERNALSYM GL_CONVOLUTION_BORDER_MODE_EXT} - GL_CONVOLUTION_FILTER_SCALE_EXT = $8014; - {$EXTERNALSYM GL_CONVOLUTION_FILTER_SCALE_EXT} - GL_CONVOLUTION_FILTER_BIAS_EXT = $8015; - {$EXTERNALSYM GL_CONVOLUTION_FILTER_BIAS_EXT} - GL_REDUCE_EXT = $8016; - {$EXTERNALSYM GL_REDUCE_EXT} - GL_CONVOLUTION_FORMAT_EXT = $8017; - {$EXTERNALSYM GL_CONVOLUTION_FORMAT_EXT} - GL_CONVOLUTION_WIDTH_EXT = $8018; - {$EXTERNALSYM GL_CONVOLUTION_WIDTH_EXT} - GL_CONVOLUTION_HEIGHT_EXT = $8019; - {$EXTERNALSYM GL_CONVOLUTION_HEIGHT_EXT} - GL_MAX_CONVOLUTION_WIDTH_EXT = $801A; - {$EXTERNALSYM GL_MAX_CONVOLUTION_WIDTH_EXT} - GL_MAX_CONVOLUTION_HEIGHT_EXT = $801B; - {$EXTERNALSYM GL_MAX_CONVOLUTION_HEIGHT_EXT} - GL_POST_CONVOLUTION_RED_SCALE_EXT = $801C; - {$EXTERNALSYM GL_POST_CONVOLUTION_RED_SCALE_EXT} - GL_POST_CONVOLUTION_GREEN_SCALE_EXT = $801D; - {$EXTERNALSYM GL_POST_CONVOLUTION_GREEN_SCALE_EXT} - GL_POST_CONVOLUTION_BLUE_SCALE_EXT = $801E; - {$EXTERNALSYM GL_POST_CONVOLUTION_BLUE_SCALE_EXT} - GL_POST_CONVOLUTION_ALPHA_SCALE_EXT = $801F; - {$EXTERNALSYM GL_POST_CONVOLUTION_ALPHA_SCALE_EXT} - GL_POST_CONVOLUTION_RED_BIAS_EXT = $8020; - {$EXTERNALSYM GL_POST_CONVOLUTION_RED_BIAS_EXT} - GL_POST_CONVOLUTION_GREEN_BIAS_EXT = $8021; - {$EXTERNALSYM GL_POST_CONVOLUTION_GREEN_BIAS_EXT} - GL_POST_CONVOLUTION_BLUE_BIAS_EXT = $8022; - {$EXTERNALSYM GL_POST_CONVOLUTION_BLUE_BIAS_EXT} - GL_POST_CONVOLUTION_ALPHA_BIAS_EXT = $8023; - {$EXTERNALSYM GL_POST_CONVOLUTION_ALPHA_BIAS_EXT} - - // EXT_histogram - GL_HISTOGRAM_EXT = $8024; - {$EXTERNALSYM GL_HISTOGRAM_EXT} - GL_PROXY_HISTOGRAM_EXT = $8025; - {$EXTERNALSYM GL_PROXY_HISTOGRAM_EXT} - GL_HISTOGRAM_WIDTH_EXT = $8026; - {$EXTERNALSYM GL_HISTOGRAM_WIDTH_EXT} - GL_HISTOGRAM_FORMAT_EXT = $8027; - {$EXTERNALSYM GL_HISTOGRAM_FORMAT_EXT} - GL_HISTOGRAM_RED_SIZE_EXT = $8028; - {$EXTERNALSYM GL_HISTOGRAM_RED_SIZE_EXT} - GL_HISTOGRAM_GREEN_SIZE_EXT = $8029; - {$EXTERNALSYM GL_HISTOGRAM_GREEN_SIZE_EXT} - GL_HISTOGRAM_BLUE_SIZE_EXT = $802A; - {$EXTERNALSYM GL_HISTOGRAM_BLUE_SIZE_EXT} - GL_HISTOGRAM_ALPHA_SIZE_EXT = $802B; - {$EXTERNALSYM GL_HISTOGRAM_ALPHA_SIZE_EXT} - GL_HISTOGRAM_LUMINANCE_SIZE_EXT = $802C; - {$EXTERNALSYM GL_HISTOGRAM_LUMINANCE_SIZE_EXT} - GL_HISTOGRAM_SINK_EXT = $802D; - {$EXTERNALSYM GL_HISTOGRAM_SINK_EXT} - GL_MINMAX_EXT = $802E; - {$EXTERNALSYM GL_MINMAX_EXT} - GL_MINMAX_FORMAT_EXT = $802F; - {$EXTERNALSYM GL_MINMAX_FORMAT_EXT} - GL_MINMAX_SINK_EXT = $8030; - {$EXTERNALSYM GL_MINMAX_SINK_EXT} - - // EXT_polygon_offset - GL_POLYGON_OFFSET_EXT = $8037; - {$EXTERNALSYM GL_POLYGON_OFFSET_EXT} - GL_POLYGON_OFFSET_FACTOR_EXT = $8038; - {$EXTERNALSYM GL_POLYGON_OFFSET_FACTOR_EXT} - GL_POLYGON_OFFSET_BIAS_EXT = $8039; - {$EXTERNALSYM GL_POLYGON_OFFSET_BIAS_EXT} - - // EXT_texture - GL_ALPHA4_EXT = $803B; - {$EXTERNALSYM GL_ALPHA4_EXT} - GL_ALPHA8_EXT = $803C; - {$EXTERNALSYM GL_ALPHA8_EXT} - GL_ALPHA12_EXT = $803D; - {$EXTERNALSYM GL_ALPHA12_EXT} - GL_ALPHA16_EXT = $803E; - {$EXTERNALSYM GL_ALPHA16_EXT} - GL_LUMINANCE4_EXT = $803F; - {$EXTERNALSYM GL_LUMINANCE4_EXT} - GL_LUMINANCE8_EXT = $8040; - {$EXTERNALSYM GL_LUMINANCE8_EXT} - GL_LUMINANCE12_EXT = $8041; - {$EXTERNALSYM GL_LUMINANCE12_EXT} - GL_LUMINANCE16_EXT = $8042; - {$EXTERNALSYM GL_LUMINANCE16_EXT} - GL_LUMINANCE4_ALPHA4_EXT = $8043; - {$EXTERNALSYM GL_LUMINANCE4_ALPHA4_EXT} - GL_LUMINANCE6_ALPHA2_EXT = $8044; - {$EXTERNALSYM GL_LUMINANCE6_ALPHA2_EXT} - GL_LUMINANCE8_ALPHA8_EXT = $8045; - {$EXTERNALSYM GL_LUMINANCE8_ALPHA8_EXT} - GL_LUMINANCE12_ALPHA4_EXT = $8046; - {$EXTERNALSYM GL_LUMINANCE12_ALPHA4_EXT} - GL_LUMINANCE12_ALPHA12_EXT = $8047; - {$EXTERNALSYM GL_LUMINANCE12_ALPHA12_EXT} - GL_LUMINANCE16_ALPHA16_EXT = $8048; - {$EXTERNALSYM GL_LUMINANCE16_ALPHA16_EXT} - GL_INTENSITY_EXT = $8049; - {$EXTERNALSYM GL_INTENSITY_EXT} - GL_INTENSITY4_EXT = $804A; - {$EXTERNALSYM GL_INTENSITY4_EXT} - GL_INTENSITY8_EXT = $804B; - {$EXTERNALSYM GL_INTENSITY8_EXT} - GL_INTENSITY12_EXT = $804C; - {$EXTERNALSYM GL_INTENSITY12_EXT} - GL_INTENSITY16_EXT = $804D; - {$EXTERNALSYM GL_INTENSITY16_EXT} - GL_RGB2_EXT = $804E; - {$EXTERNALSYM GL_RGB2_EXT} - GL_RGB4_EXT = $804F; - {$EXTERNALSYM GL_RGB4_EXT} - GL_RGB5_EXT = $8050; - {$EXTERNALSYM GL_RGB5_EXT} - GL_RGB8_EXT = $8051; - {$EXTERNALSYM GL_RGB8_EXT} - GL_RGB10_EXT = $8052; - {$EXTERNALSYM GL_RGB10_EXT} - GL_RGB12_EXT = $8053; - {$EXTERNALSYM GL_RGB12_EXT} - GL_RGB16_EXT = $8054; - {$EXTERNALSYM GL_RGB16_EXT} - GL_RGBA2_EXT = $8055; - {$EXTERNALSYM GL_RGBA2_EXT} - GL_RGBA4_EXT = $8056; - {$EXTERNALSYM GL_RGBA4_EXT} - GL_RGB5_A1_EXT = $8057; - {$EXTERNALSYM GL_RGB5_A1_EXT} - GL_RGBA8_EXT = $8058; - {$EXTERNALSYM GL_RGBA8_EXT} - GL_RGB10_A2_EXT = $8059; - {$EXTERNALSYM GL_RGB10_A2_EXT} - GL_RGBA12_EXT = $805A; - {$EXTERNALSYM GL_RGBA12_EXT} - GL_RGBA16_EXT = $805B; - {$EXTERNALSYM GL_RGBA16_EXT} - GL_TEXTURE_RED_SIZE_EXT = $805C; - {$EXTERNALSYM GL_TEXTURE_RED_SIZE_EXT} - GL_TEXTURE_GREEN_SIZE_EXT = $805D; - {$EXTERNALSYM GL_TEXTURE_GREEN_SIZE_EXT} - GL_TEXTURE_BLUE_SIZE_EXT = $805E; - {$EXTERNALSYM GL_TEXTURE_BLUE_SIZE_EXT} - GL_TEXTURE_ALPHA_SIZE_EXT = $805F; - {$EXTERNALSYM GL_TEXTURE_ALPHA_SIZE_EXT} - GL_TEXTURE_LUMINANCE_SIZE_EXT = $8060; - {$EXTERNALSYM GL_TEXTURE_LUMINANCE_SIZE_EXT} - GL_TEXTURE_INTENSITY_SIZE_EXT = $8061; - {$EXTERNALSYM GL_TEXTURE_INTENSITY_SIZE_EXT} - GL_REPLACE_EXT = $8062; - {$EXTERNALSYM GL_REPLACE_EXT} - GL_PROXY_TEXTURE_1D_EXT = $8063; - {$EXTERNALSYM GL_PROXY_TEXTURE_1D_EXT} - GL_PROXY_TEXTURE_2D_EXT = $8064; - {$EXTERNALSYM GL_PROXY_TEXTURE_2D_EXT} - GL_TEXTURE_TOO_LARGE_EXT = $8065; - {$EXTERNALSYM GL_TEXTURE_TOO_LARGE_EXT} - - // EXT_texture_object - GL_TEXTURE_PRIORITY_EXT = $8066; - {$EXTERNALSYM GL_TEXTURE_PRIORITY_EXT} - GL_TEXTURE_RESIDENT_EXT = $8067; - {$EXTERNALSYM GL_TEXTURE_RESIDENT_EXT} - GL_TEXTURE_1D_BINDING_EXT = $8068; - {$EXTERNALSYM GL_TEXTURE_1D_BINDING_EXT} - GL_TEXTURE_2D_BINDING_EXT = $8069; - {$EXTERNALSYM GL_TEXTURE_2D_BINDING_EXT} - GL_TEXTURE_3D_BINDING_EXT = $806A; - {$EXTERNALSYM GL_TEXTURE_3D_BINDING_EXT} - - // EXT_texture3D - GL_PACK_SKIP_IMAGES_EXT = $806B; - {$EXTERNALSYM GL_PACK_SKIP_IMAGES_EXT} - GL_PACK_IMAGE_HEIGHT_EXT = $806C; - {$EXTERNALSYM GL_PACK_IMAGE_HEIGHT_EXT} - GL_UNPACK_SKIP_IMAGES_EXT = $806D; - {$EXTERNALSYM GL_UNPACK_SKIP_IMAGES_EXT} - GL_UNPACK_IMAGE_HEIGHT_EXT = $806E; - {$EXTERNALSYM GL_UNPACK_IMAGE_HEIGHT_EXT} - GL_TEXTURE_3D_EXT = $806F; - {$EXTERNALSYM GL_TEXTURE_3D_EXT} - GL_PROXY_TEXTURE_3D_EXT = $8070; - {$EXTERNALSYM GL_PROXY_TEXTURE_3D_EXT} - GL_TEXTURE_DEPTH_EXT = $8071; - {$EXTERNALSYM GL_TEXTURE_DEPTH_EXT} - GL_TEXTURE_WRAP_R_EXT = $8072; - {$EXTERNALSYM GL_TEXTURE_WRAP_R_EXT} - GL_MAX_3D_TEXTURE_SIZE_EXT = $8073; - {$EXTERNALSYM GL_MAX_3D_TEXTURE_SIZE_EXT} - - // SGI_color_matrix - GL_COLOR_MATRIX_SGI = $80B1; - {$EXTERNALSYM GL_COLOR_MATRIX_SGI} - GL_COLOR_MATRIX_STACK_DEPTH_SGI = $80B2; - {$EXTERNALSYM GL_COLOR_MATRIX_STACK_DEPTH_SGI} - GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI = $80B3; - {$EXTERNALSYM GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI} - GL_POST_COLOR_MATRIX_RED_SCALE_SGI = $80B4; - {$EXTERNALSYM GL_POST_COLOR_MATRIX_RED_SCALE_SGI} - GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI = $80B5; - {$EXTERNALSYM GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI} - GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI = $80B6; - {$EXTERNALSYM GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI} - GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI = $80B7; - {$EXTERNALSYM GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI} - GL_POST_COLOR_MATRIX_RED_BIAS_SGI = $80B8; - {$EXTERNALSYM GL_POST_COLOR_MATRIX_RED_BIAS_SGI} - GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI = $80B9; - {$EXTERNALSYM GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI} - GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI = $80BA; - {$EXTERNALSYM GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI} - GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI = $80BB; - {$EXTERNALSYM GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI} - - // SGI_texture_color_table - GL_TEXTURE_COLOR_TABLE_SGI = $80BC; - {$EXTERNALSYM GL_TEXTURE_COLOR_TABLE_SGI} - GL_PROXY_TEXTURE_COLOR_TABLE_SGI = $80BD; - {$EXTERNALSYM GL_PROXY_TEXTURE_COLOR_TABLE_SGI} - GL_TEXTURE_COLOR_TABLE_BIAS_SGI = $80BE; - {$EXTERNALSYM GL_TEXTURE_COLOR_TABLE_BIAS_SGI} - GL_TEXTURE_COLOR_TABLE_SCALE_SGI = $80BF; - {$EXTERNALSYM GL_TEXTURE_COLOR_TABLE_SCALE_SGI} - - // SGI_color_table - GL_COLOR_TABLE_SGI = $80D0; - {$EXTERNALSYM GL_COLOR_TABLE_SGI} - GL_POST_CONVOLUTION_COLOR_TABLE_SGI = $80D1; - {$EXTERNALSYM GL_POST_CONVOLUTION_COLOR_TABLE_SGI} - GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI = $80D2; - {$EXTERNALSYM GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI} - GL_PROXY_COLOR_TABLE_SGI = $80D3; - {$EXTERNALSYM GL_PROXY_COLOR_TABLE_SGI} - GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI = $80D4; - {$EXTERNALSYM GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI} - GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI = $80D5; - {$EXTERNALSYM GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI} - GL_COLOR_TABLE_SCALE_SGI = $80D6; - {$EXTERNALSYM GL_COLOR_TABLE_SCALE_SGI} - GL_COLOR_TABLE_BIAS_SGI = $80D7; - {$EXTERNALSYM GL_COLOR_TABLE_BIAS_SGI} - GL_COLOR_TABLE_FORMAT_SGI = $80D8; - {$EXTERNALSYM GL_COLOR_TABLE_FORMAT_SGI} - GL_COLOR_TABLE_WIDTH_SGI = $80D9; - {$EXTERNALSYM GL_COLOR_TABLE_WIDTH_SGI} - GL_COLOR_TABLE_RED_SIZE_SGI = $80DA; - {$EXTERNALSYM GL_COLOR_TABLE_RED_SIZE_SGI} - GL_COLOR_TABLE_GREEN_SIZE_SGI = $80DB; - {$EXTERNALSYM GL_COLOR_TABLE_GREEN_SIZE_SGI} - GL_COLOR_TABLE_BLUE_SIZE_SGI = $80DC; - {$EXTERNALSYM GL_COLOR_TABLE_BLUE_SIZE_SGI} - GL_COLOR_TABLE_ALPHA_SIZE_SGI = $80DD; - {$EXTERNALSYM GL_COLOR_TABLE_ALPHA_SIZE_SGI} - GL_COLOR_TABLE_LUMINANCE_SIZE_SGI = $80DE; - {$EXTERNALSYM GL_COLOR_TABLE_LUMINANCE_SIZE_SGI} - GL_COLOR_TABLE_INTENSITY_SIZE_SGI = $80DF; - {$EXTERNALSYM GL_COLOR_TABLE_INTENSITY_SIZE_SGI} - - // EXT_cmyka - GL_CMYK_EXT = $800C; - {$EXTERNALSYM GL_CMYK_EXT} - GL_CMYKA_EXT = $800D; - {$EXTERNALSYM GL_CMYKA_EXT} - GL_PACK_CMYK_HINT_EXT = $800E; - {$EXTERNALSYM GL_PACK_CMYK_HINT_EXT} - GL_UNPACK_CMYK_HINT_EXT = $800F; - {$EXTERNALSYM GL_UNPACK_CMYK_HINT_EXT} - - // EXT_rescale_normal - GL_RESCALE_NORMAL_EXT = $803A; - {$EXTERNALSYM GL_RESCALE_NORMAL_EXT} - - // EXT_clip_volume_hint - GL_CLIP_VOLUME_CLIPPING_HINT_EXT = $80F0; - {$EXTERNALSYM GL_CLIP_VOLUME_CLIPPING_HINT_EXT} - - // EXT_cull_vertex - GL_CULL_VERTEX_EXT = $81AA; - {$EXTERNALSYM GL_CULL_VERTEX_EXT} - GL_CULL_VERTEX_EYE_POSITION_EXT = $81AB; - {$EXTERNALSYM GL_CULL_VERTEX_EYE_POSITION_EXT} - GL_CULL_VERTEX_OBJECT_POSITION_EXT = $81AC; - {$EXTERNALSYM GL_CULL_VERTEX_OBJECT_POSITION_EXT} - - // EXT_index_array_formats - GL_IUI_V2F_EXT = $81AD; - {$EXTERNALSYM GL_IUI_V2F_EXT} - GL_IUI_V3F_EXT = $81AE; - {$EXTERNALSYM GL_IUI_V3F_EXT} - GL_IUI_N3F_V2F_EXT = $81AF; - {$EXTERNALSYM GL_IUI_N3F_V2F_EXT} - GL_IUI_N3F_V3F_EXT = $81B0; - {$EXTERNALSYM GL_IUI_N3F_V3F_EXT} - GL_T2F_IUI_V2F_EXT = $81B1; - {$EXTERNALSYM GL_T2F_IUI_V2F_EXT} - GL_T2F_IUI_V3F_EXT = $81B2; - {$EXTERNALSYM GL_T2F_IUI_V3F_EXT} - GL_T2F_IUI_N3F_V2F_EXT = $81B3; - {$EXTERNALSYM GL_T2F_IUI_N3F_V2F_EXT} - GL_T2F_IUI_N3F_V3F_EXT = $81B4; - {$EXTERNALSYM GL_T2F_IUI_N3F_V3F_EXT} - - // EXT_index_func - GL_INDEX_TEST_EXT = $81B5; - {$EXTERNALSYM GL_INDEX_TEST_EXT} - GL_INDEX_TEST_FUNC_EXT = $81B6; - {$EXTERNALSYM GL_INDEX_TEST_FUNC_EXT} - GL_INDEX_TEST_REF_EXT = $81B7; - {$EXTERNALSYM GL_INDEX_TEST_REF_EXT} - - // EXT_index_material - GL_INDEX_MATERIAL_EXT = $81B8; - {$EXTERNALSYM GL_INDEX_MATERIAL_EXT} - GL_INDEX_MATERIAL_PARAMETER_EXT = $81B9; - {$EXTERNALSYM GL_INDEX_MATERIAL_PARAMETER_EXT} - GL_INDEX_MATERIAL_FACE_EXT = $81BA; - {$EXTERNALSYM GL_INDEX_MATERIAL_FACE_EXT} - - // EXT_misc_attribute - GL_MISC_BIT_EXT = 0; // not yet defined - {$EXTERNALSYM GL_MISC_BIT_EXT} - - // EXT_scene_marker - GL_SCENE_REQUIRED_EXT = 0; // not yet defined - {$EXTERNALSYM GL_SCENE_REQUIRED_EXT} - - // EXT_shared_texture_palette - GL_SHARED_TEXTURE_PALETTE_EXT = $81FB; - {$EXTERNALSYM GL_SHARED_TEXTURE_PALETTE_EXT} - - // EXT_nurbs_tessellator - GLU_NURBS_MODE_EXT = 100160; - {$EXTERNALSYM GLU_NURBS_MODE_EXT} - GLU_NURBS_TESSELLATOR_EXT = 100161; - {$EXTERNALSYM GLU_NURBS_TESSELLATOR_EXT} - GLU_NURBS_RENDERER_EXT = 100162; - {$EXTERNALSYM GLU_NURBS_RENDERER_EXT} - GLU_NURBS_BEGIN_EXT = 100164; - {$EXTERNALSYM GLU_NURBS_BEGIN_EXT} - GLU_NURBS_VERTEX_EXT = 100165; - {$EXTERNALSYM GLU_NURBS_VERTEX_EXT} - GLU_NURBS_NORMAL_EXT = 100166; - {$EXTERNALSYM GLU_NURBS_NORMAL_EXT} - GLU_NURBS_COLOR_EXT = 100167; - {$EXTERNALSYM GLU_NURBS_COLOR_EXT} - GLU_NURBS_TEX_COORD_EXT = 100168; - {$EXTERNALSYM GLU_NURBS_TEX_COORD_EXT} - GLU_NURBS_END_EXT = 100169; - {$EXTERNALSYM GLU_NURBS_END_EXT} - GLU_NURBS_BEGIN_DATA_EXT = 100170; - {$EXTERNALSYM GLU_NURBS_BEGIN_DATA_EXT} - GLU_NURBS_VERTEX_DATA_EXT = 100171; - {$EXTERNALSYM GLU_NURBS_VERTEX_DATA_EXT} - GLU_NURBS_NORMAL_DATA_EXT = 100172; - {$EXTERNALSYM GLU_NURBS_NORMAL_DATA_EXT} - GLU_NURBS_COLOR_DATA_EXT = 100173; - {$EXTERNALSYM GLU_NURBS_COLOR_DATA_EXT} - GLU_NURBS_TEX_COORD_DATA_EXT = 100174; - {$EXTERNALSYM GLU_NURBS_TEX_COORD_DATA_EXT} - GLU_NURBS_END_DATA_EXT = 100175; - {$EXTERNALSYM GLU_NURBS_END_DATA_EXT} - - // EXT_object_space_tess - GLU_OBJECT_PARAMETRIC_ERROR_EXT = 100208; - {$EXTERNALSYM GLU_OBJECT_PARAMETRIC_ERROR_EXT} - GLU_OBJECT_PATH_LENGTH_EXT = 100209; - {$EXTERNALSYM GLU_OBJECT_PATH_LENGTH_EXT} - - // EXT_point_parameters - GL_POINT_SIZE_MIN_EXT = $8126; - {$EXTERNALSYM GL_POINT_SIZE_MIN_EXT} - GL_POINT_SIZE_MAX_EXT = $8127; - {$EXTERNALSYM GL_POINT_SIZE_MAX_EXT} - GL_POINT_FADE_THRESHOLD_SIZE_EXT = $8128; - {$EXTERNALSYM GL_POINT_FADE_THRESHOLD_SIZE_EXT} - GL_DISTANCE_ATTENUATION_EXT = $8129; - {$EXTERNALSYM GL_DISTANCE_ATTENUATION_EXT} - - // EXT_compiled_vertex_array - GL_ARRAY_ELEMENT_LOCK_FIRST_EXT = $81A8; - {$EXTERNALSYM GL_ARRAY_ELEMENT_LOCK_FIRST_EXT} - GL_ARRAY_ELEMENT_LOCK_COUNT_EXT = $81A9; - {$EXTERNALSYM GL_ARRAY_ELEMENT_LOCK_COUNT_EXT} - - // ARB_multitexture - GL_ACTIVE_TEXTURE_ARB = $84E0; - {$EXTERNALSYM GL_ACTIVE_TEXTURE_ARB} - GL_CLIENT_ACTIVE_TEXTURE_ARB = $84E1; - {$EXTERNALSYM GL_CLIENT_ACTIVE_TEXTURE_ARB} - GL_MAX_TEXTURE_UNITS_ARB = $84E2; - {$EXTERNALSYM GL_MAX_TEXTURE_UNITS_ARB} - GL_TEXTURE0_ARB = $84C0; - {$EXTERNALSYM GL_TEXTURE0_ARB} - GL_TEXTURE1_ARB = $84C1; - {$EXTERNALSYM GL_TEXTURE1_ARB} - GL_TEXTURE2_ARB = $84C2; - {$EXTERNALSYM GL_TEXTURE2_ARB} - GL_TEXTURE3_ARB = $84C3; - {$EXTERNALSYM GL_TEXTURE3_ARB} - GL_TEXTURE4_ARB = $84C4; - {$EXTERNALSYM GL_TEXTURE4_ARB} - GL_TEXTURE5_ARB = $84C5; - {$EXTERNALSYM GL_TEXTURE5_ARB} - GL_TEXTURE6_ARB = $84C6; - {$EXTERNALSYM GL_TEXTURE6_ARB} - GL_TEXTURE7_ARB = $84C7; - {$EXTERNALSYM GL_TEXTURE7_ARB} - GL_TEXTURE8_ARB = $84C8; - {$EXTERNALSYM GL_TEXTURE8_ARB} - GL_TEXTURE9_ARB = $84C9; - {$EXTERNALSYM GL_TEXTURE9_ARB} - GL_TEXTURE10_ARB = $84CA; - {$EXTERNALSYM GL_TEXTURE10_ARB} - GL_TEXTURE11_ARB = $84CB; - {$EXTERNALSYM GL_TEXTURE11_ARB} - GL_TEXTURE12_ARB = $84CC; - {$EXTERNALSYM GL_TEXTURE12_ARB} - GL_TEXTURE13_ARB = $84CD; - {$EXTERNALSYM GL_TEXTURE13_ARB} - GL_TEXTURE14_ARB = $84CE; - {$EXTERNALSYM GL_TEXTURE14_ARB} - GL_TEXTURE15_ARB = $84CF; - {$EXTERNALSYM GL_TEXTURE15_ARB} - GL_TEXTURE16_ARB = $84D0; - {$EXTERNALSYM GL_TEXTURE16_ARB} - GL_TEXTURE17_ARB = $84D1; - {$EXTERNALSYM GL_TEXTURE17_ARB} - GL_TEXTURE18_ARB = $84D2; - {$EXTERNALSYM GL_TEXTURE18_ARB} - GL_TEXTURE19_ARB = $84D3; - {$EXTERNALSYM GL_TEXTURE19_ARB} - GL_TEXTURE20_ARB = $84D4; - {$EXTERNALSYM GL_TEXTURE20_ARB} - GL_TEXTURE21_ARB = $84D5; - {$EXTERNALSYM GL_TEXTURE21_ARB} - GL_TEXTURE22_ARB = $84D6; - {$EXTERNALSYM GL_TEXTURE22_ARB} - GL_TEXTURE23_ARB = $84D7; - {$EXTERNALSYM GL_TEXTURE23_ARB} - GL_TEXTURE24_ARB = $84D8; - {$EXTERNALSYM GL_TEXTURE24_ARB} - GL_TEXTURE25_ARB = $84D9; - {$EXTERNALSYM GL_TEXTURE25_ARB} - GL_TEXTURE26_ARB = $84DA; - {$EXTERNALSYM GL_TEXTURE26_ARB} - GL_TEXTURE27_ARB = $84DB; - {$EXTERNALSYM GL_TEXTURE27_ARB} - GL_TEXTURE28_ARB = $84DC; - {$EXTERNALSYM GL_TEXTURE28_ARB} - GL_TEXTURE29_ARB = $84DD; - {$EXTERNALSYM GL_TEXTURE29_ARB} - GL_TEXTURE30_ARB = $84DE; - {$EXTERNALSYM GL_TEXTURE30_ARB} - GL_TEXTURE31_ARB = $84DF; - {$EXTERNALSYM GL_TEXTURE31_ARB} - - // EXT_stencil_wrap - GL_INCR_WRAP_EXT = $8507; - {$EXTERNALSYM GL_INCR_WRAP_EXT} - GL_DECR_WRAP_EXT = $8508; - {$EXTERNALSYM GL_DECR_WRAP_EXT} - - // NV_texgen_reflection - GL_NORMAL_MAP_NV = $8511; - {$EXTERNALSYM GL_NORMAL_MAP_NV} - GL_REFLECTION_MAP_NV = $8512; - {$EXTERNALSYM GL_REFLECTION_MAP_NV} - - // EXT_texture_env_combine - GL_COMBINE_EXT = $8570; - {$EXTERNALSYM GL_COMBINE_EXT} - GL_COMBINE_RGB_EXT = $8571; - {$EXTERNALSYM GL_COMBINE_RGB_EXT} - GL_COMBINE_ALPHA_EXT = $8572; - {$EXTERNALSYM GL_COMBINE_ALPHA_EXT} - GL_RGB_SCALE_EXT = $8573; - {$EXTERNALSYM GL_RGB_SCALE_EXT} - GL_ADD_SIGNED_EXT = $8574; - {$EXTERNALSYM GL_ADD_SIGNED_EXT} - GL_INTERPOLATE_EXT = $8575; - {$EXTERNALSYM GL_INTERPOLATE_EXT} - GL_CONSTANT_EXT = $8576; - {$EXTERNALSYM GL_CONSTANT_EXT} - GL_PRIMARY_COLOR_EXT = $8577; - {$EXTERNALSYM GL_PRIMARY_COLOR_EXT} - GL_PREVIOUS_EXT = $8578; - {$EXTERNALSYM GL_PREVIOUS_EXT} - GL_SOURCE0_RGB_EXT = $8580; - {$EXTERNALSYM GL_SOURCE0_RGB_EXT} - GL_SOURCE1_RGB_EXT = $8581; - {$EXTERNALSYM GL_SOURCE1_RGB_EXT} - GL_SOURCE2_RGB_EXT = $8582; - {$EXTERNALSYM GL_SOURCE2_RGB_EXT} - GL_SOURCE0_ALPHA_EXT = $8588; - {$EXTERNALSYM GL_SOURCE0_ALPHA_EXT} - GL_SOURCE1_ALPHA_EXT = $8589; - {$EXTERNALSYM GL_SOURCE1_ALPHA_EXT} - GL_SOURCE2_ALPHA_EXT = $858A; - {$EXTERNALSYM GL_SOURCE2_ALPHA_EXT} - GL_OPERAND0_RGB_EXT = $8590; - {$EXTERNALSYM GL_OPERAND0_RGB_EXT} - GL_OPERAND1_RGB_EXT = $8591; - {$EXTERNALSYM GL_OPERAND1_RGB_EXT} - GL_OPERAND2_RGB_EXT = $8592; - {$EXTERNALSYM GL_OPERAND2_RGB_EXT} - GL_OPERAND0_ALPHA_EXT = $8598; - {$EXTERNALSYM GL_OPERAND0_ALPHA_EXT} - GL_OPERAND1_ALPHA_EXT = $8599; - {$EXTERNALSYM GL_OPERAND1_ALPHA_EXT} - GL_OPERAND2_ALPHA_EXT = $859A; - {$EXTERNALSYM GL_OPERAND2_ALPHA_EXT} - - // NV_texture_env_combine4 - GL_COMBINE4_NV = $8503; - {$EXTERNALSYM GL_COMBINE4_NV} - GL_SOURCE3_RGB_NV = $8583; - {$EXTERNALSYM GL_SOURCE3_RGB_NV} - GL_SOURCE3_ALPHA_NV = $858B; - {$EXTERNALSYM GL_SOURCE3_ALPHA_NV} - GL_OPERAND3_RGB_NV = $8593; - {$EXTERNALSYM GL_OPERAND3_RGB_NV} - GL_OPERAND3_ALPHA_NV = $859B; - {$EXTERNALSYM GL_OPERAND3_ALPHA_NV} - - GL_BLEND_EQUATION = $8009; - {$EXTERNALSYM GL_BLEND_EQUATION} - GL_TABLE_TOO_LARGE = $8031; - {$EXTERNALSYM GL_TABLE_TOO_LARGE} - GL_UNSIGNED_BYTE_3_3_2 = $8032; - {$EXTERNALSYM GL_UNSIGNED_BYTE_3_3_2} - GL_UNSIGNED_SHORT_4_4_4_4 = $8033; - {$EXTERNALSYM GL_UNSIGNED_SHORT_4_4_4_4} - GL_UNSIGNED_SHORT_5_5_5_1 = $8034; - {$EXTERNALSYM GL_UNSIGNED_SHORT_5_5_5_1} - GL_UNSIGNED_INT_8_8_8_8 = $8035; - {$EXTERNALSYM GL_UNSIGNED_INT_8_8_8_8} - GL_UNSIGNED_INT_10_10_10_2 = $8036; - {$EXTERNALSYM GL_UNSIGNED_INT_10_10_10_2} - GL_UNSIGNED_BYTE_2_3_3_REV = $8362; - {$EXTERNALSYM GL_UNSIGNED_BYTE_2_3_3_REV} - GL_UNSIGNED_SHORT_5_6_5 = $8363; - {$EXTERNALSYM GL_UNSIGNED_SHORT_5_6_5} - GL_UNSIGNED_SHORT_5_6_5_REV = $8364; - {$EXTERNALSYM GL_UNSIGNED_SHORT_5_6_5_REV} - GL_UNSIGNED_SHORT_4_4_4_4_REV = $8365; - {$EXTERNALSYM GL_UNSIGNED_SHORT_4_4_4_4_REV} - GL_UNSIGNED_SHORT_1_5_5_5_REV = $8366; - {$EXTERNALSYM GL_UNSIGNED_SHORT_1_5_5_5_REV} - GL_UNSIGNED_INT_8_8_8_8_REV = $8367; - {$EXTERNALSYM GL_UNSIGNED_INT_8_8_8_8_REV} - GL_UNSIGNED_INT_2_10_10_10_REV = $8368; - {$EXTERNALSYM GL_UNSIGNED_INT_2_10_10_10_REV} - - // GL_ARB_transpose_matrix - GL_TRANSPOSE_MODELVIEW_MATRIX_ARB = $84E3; - {$EXTERNALSYM GL_TRANSPOSE_MODELVIEW_MATRIX_ARB} - GL_TRANSPOSE_PROJECTION_MATRIX_ARB = $84E4; - {$EXTERNALSYM GL_TRANSPOSE_PROJECTION_MATRIX_ARB} - GL_TRANSPOSE_TEXTURE_MATRIX_ARB = $84E5; - {$EXTERNALSYM GL_TRANSPOSE_TEXTURE_MATRIX_ARB} - GL_TRANSPOSE_COLOR_MATRIX_ARB = $84E6; - {$EXTERNALSYM GL_TRANSPOSE_COLOR_MATRIX_ARB} - - // GL_ARB_multisample - GL_MULTISAMPLE_ARB = $809D; - {$EXTERNALSYM GL_MULTISAMPLE_ARB} - GL_SAMPLE_ALPHA_TO_COVERAGE_ARB = $809E; - {$EXTERNALSYM GL_SAMPLE_ALPHA_TO_COVERAGE_ARB} - GL_SAMPLE_ALPHA_TO_ONE_ARB = $809F; - {$EXTERNALSYM GL_SAMPLE_ALPHA_TO_ONE_ARB} - GL_SAMPLE_COVERAGE_ARB = $80A0; - {$EXTERNALSYM GL_SAMPLE_COVERAGE_ARB} - GL_SAMPLE_BUFFERS_ARB = $80A8; - {$EXTERNALSYM GL_SAMPLE_BUFFERS_ARB} - GL_SAMPLES_ARB = $80A9; - {$EXTERNALSYM GL_SAMPLES_ARB} - GL_SAMPLE_COVERAGE_VALUE_ARB = $80AA; - {$EXTERNALSYM GL_SAMPLE_COVERAGE_VALUE_ARB} - GL_SAMPLE_COVERAGE_INVERT_ARB = $80AB; - {$EXTERNALSYM GL_SAMPLE_COVERAGE_INVERT_ARB} - GL_MULTISAMPLE_BIT_ARB = $20000000; - {$EXTERNALSYM GL_MULTISAMPLE_BIT_ARB} - GLX_SAMPLE_BUFFERS_ARB = 100000; - {$EXTERNALSYM GLX_SAMPLE_BUFFERS_ARB} - GLX_SAMPLES_ARB = 100001; - {$EXTERNALSYM GLX_SAMPLES_ARB} - WGL_SAMPLE_BUFFERS_ARB = $2041; - {$EXTERNALSYM WGL_SAMPLE_BUFFERS_ARB} - WGL_SAMPLES_ARB = $2042; - {$EXTERNALSYM WGL_SAMPLES_ARB} - - // GL_ARB_texture_cube_map - GL_NORMAL_MAP_ARB = $8511; - {$EXTERNALSYM GL_NORMAL_MAP_ARB} - GL_REFLECTION_MAP_ARB = $8512; - {$EXTERNALSYM GL_REFLECTION_MAP_ARB} - GL_TEXTURE_CUBE_MAP_ARB = $8513; - {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_ARB} - GL_TEXTURE_BINDING_CUBE_MAP_ARB = $8514; - {$EXTERNALSYM GL_TEXTURE_BINDING_CUBE_MAP_ARB} - GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = $8515; - {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB} - GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = $8516; - {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB} - GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = $8517; - {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB} - GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = $8518; - {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB} - GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = $8519; - {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB} - GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = $851A; - {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB} - GL_PROXY_TEXTURE_CUBE_MAP_ARB = $851B; - {$EXTERNALSYM GL_PROXY_TEXTURE_CUBE_MAP_ARB} - GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB = $851C; - {$EXTERNALSYM GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB} - - // GL_ARB_texture_compression - GL_COMPRESSED_ALPHA_ARB = $84E9; - {$EXTERNALSYM GL_COMPRESSED_ALPHA_ARB} - GL_COMPRESSED_LUMINANCE_ARB = $84EA; - {$EXTERNALSYM GL_COMPRESSED_LUMINANCE_ARB} - GL_COMPRESSED_LUMINANCE_ALPHA_ARB = $84EB; - {$EXTERNALSYM GL_COMPRESSED_LUMINANCE_ALPHA_ARB} - GL_COMPRESSED_INTENSITY_ARB = $84EC; - {$EXTERNALSYM GL_COMPRESSED_INTENSITY_ARB} - GL_COMPRESSED_RGB_ARB = $84ED; - {$EXTERNALSYM GL_COMPRESSED_RGB_ARB} - GL_COMPRESSED_RGBA_ARB = $84EE; - {$EXTERNALSYM GL_COMPRESSED_RGBA_ARB} - GL_TEXTURE_COMPRESSION_HINT_ARB = $84EF; - {$EXTERNALSYM GL_TEXTURE_COMPRESSION_HINT_ARB} - GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB = $86A0; - {$EXTERNALSYM GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB} - GL_TEXTURE_COMPRESSED_ARB = $86A1; - {$EXTERNALSYM GL_TEXTURE_COMPRESSED_ARB} - GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB = $86A2; - {$EXTERNALSYM GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB} - GL_COMPRESSED_TEXTURE_FORMATS_ARB = $86A3; - {$EXTERNALSYM GL_COMPRESSED_TEXTURE_FORMATS_ARB} - - // GL_ARB_vertex_blend - GL_MAX_VERTEX_UNITS_ARB = $86A4; - {$EXTERNALSYM GL_MAX_VERTEX_UNITS_ARB} - GL_ACTIVE_VERTEX_UNITS_ARB = $86A5; - {$EXTERNALSYM GL_ACTIVE_VERTEX_UNITS_ARB} - GL_WEIGHT_SUM_UNITY_ARB = $86A6; - {$EXTERNALSYM GL_WEIGHT_SUM_UNITY_ARB} - GL_VERTEX_BLEND_ARB = $86A7; - {$EXTERNALSYM GL_VERTEX_BLEND_ARB} - GL_CURRENT_WEIGHT_ARB = $86A8; - {$EXTERNALSYM GL_CURRENT_WEIGHT_ARB} - GL_WEIGHT_ARRAY_TYPE_ARB = $86A9; - {$EXTERNALSYM GL_WEIGHT_ARRAY_TYPE_ARB} - GL_WEIGHT_ARRAY_STRIDE_ARB = $86AA; - {$EXTERNALSYM GL_WEIGHT_ARRAY_STRIDE_ARB} - GL_WEIGHT_ARRAY_SIZE_ARB = $86AB; - {$EXTERNALSYM GL_WEIGHT_ARRAY_SIZE_ARB} - GL_WEIGHT_ARRAY_POINTER_ARB = $86AC; - {$EXTERNALSYM GL_WEIGHT_ARRAY_POINTER_ARB} - GL_WEIGHT_ARRAY_ARB = $86AD; - {$EXTERNALSYM GL_WEIGHT_ARRAY_ARB} - GL_MODELVIEW0_ARB = $1700; - {$EXTERNALSYM GL_MODELVIEW0_ARB} - GL_MODELVIEW1_ARB = $850A; - {$EXTERNALSYM GL_MODELVIEW1_ARB} - GL_MODELVIEW2_ARB = $8722; - {$EXTERNALSYM GL_MODELVIEW2_ARB} - GL_MODELVIEW3_ARB = $8723; - {$EXTERNALSYM GL_MODELVIEW3_ARB} - GL_MODELVIEW4_ARB = $8724; - {$EXTERNALSYM GL_MODELVIEW4_ARB} - GL_MODELVIEW5_ARB = $8725; - {$EXTERNALSYM GL_MODELVIEW5_ARB} - GL_MODELVIEW6_ARB = $8726; - {$EXTERNALSYM GL_MODELVIEW6_ARB} - GL_MODELVIEW7_ARB = $8727; - {$EXTERNALSYM GL_MODELVIEW7_ARB} - GL_MODELVIEW8_ARB = $8728; - {$EXTERNALSYM GL_MODELVIEW8_ARB} - GL_MODELVIEW9_ARB = $8729; - {$EXTERNALSYM GL_MODELVIEW9_ARB} - GL_MODELVIEW10_ARB = $872A; - {$EXTERNALSYM GL_MODELVIEW10_ARB} - GL_MODELVIEW11_ARB = $872B; - {$EXTERNALSYM GL_MODELVIEW11_ARB} - GL_MODELVIEW12_ARB = $872C; - {$EXTERNALSYM GL_MODELVIEW12_ARB} - GL_MODELVIEW13_ARB = $872D; - {$EXTERNALSYM GL_MODELVIEW13_ARB} - GL_MODELVIEW14_ARB = $872E; - {$EXTERNALSYM GL_MODELVIEW14_ARB} - GL_MODELVIEW15_ARB = $872F; - {$EXTERNALSYM GL_MODELVIEW15_ARB} - GL_MODELVIEW16_ARB = $8730; - {$EXTERNALSYM GL_MODELVIEW16_ARB} - GL_MODELVIEW17_ARB = $8731; - {$EXTERNALSYM GL_MODELVIEW17_ARB} - GL_MODELVIEW18_ARB = $8732; - {$EXTERNALSYM GL_MODELVIEW18_ARB} - GL_MODELVIEW19_ARB = $8733; - {$EXTERNALSYM GL_MODELVIEW19_ARB} - GL_MODELVIEW20_ARB = $8734; - {$EXTERNALSYM GL_MODELVIEW20_ARB} - GL_MODELVIEW21_ARB = $8735; - {$EXTERNALSYM GL_MODELVIEW21_ARB} - GL_MODELVIEW22_ARB = $8736; - {$EXTERNALSYM GL_MODELVIEW22_ARB} - GL_MODELVIEW23_ARB = $8737; - {$EXTERNALSYM GL_MODELVIEW23_ARB} - GL_MODELVIEW24_ARB = $8738; - {$EXTERNALSYM GL_MODELVIEW24_ARB} - GL_MODELVIEW25_ARB = $8739; - {$EXTERNALSYM GL_MODELVIEW25_ARB} - GL_MODELVIEW26_ARB = $873A; - {$EXTERNALSYM GL_MODELVIEW26_ARB} - GL_MODELVIEW27_ARB = $873B; - {$EXTERNALSYM GL_MODELVIEW27_ARB} - GL_MODELVIEW28_ARB = $873C; - {$EXTERNALSYM GL_MODELVIEW28_ARB} - GL_MODELVIEW29_ARB = $873D; - {$EXTERNALSYM GL_MODELVIEW29_ARB} - GL_MODELVIEW30_ARB = $873E; - {$EXTERNALSYM GL_MODELVIEW30_ARB} - GL_MODELVIEW31_ARB = $873F; - {$EXTERNALSYM GL_MODELVIEW31_ARB} - - // GL_SGIS_texture_filter4 - GL_FILTER4_SGIS = $8146; - {$EXTERNALSYM GL_FILTER4_SGIS} - GL_TEXTURE_FILTER4_SIZE_SGIS = $8147; - {$EXTERNALSYM GL_TEXTURE_FILTER4_SIZE_SGIS} - - // GL_SGIS_pixel_texture - GL_PIXEL_TEXTURE_SGIS = $8353; - {$EXTERNALSYM GL_PIXEL_TEXTURE_SGIS} - GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS = $8354; - {$EXTERNALSYM GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS} - GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS = $8355; - {$EXTERNALSYM GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS} - GL_PIXEL_GROUP_COLOR_SGIS = $8356; - {$EXTERNALSYM GL_PIXEL_GROUP_COLOR_SGIS} - - // GL_SGIX_pixel_texture - GL_PIXEL_TEX_GEN_SGIX = $8139; - {$EXTERNALSYM GL_PIXEL_TEX_GEN_SGIX} - GL_PIXEL_TEX_GEN_MODE_SGIX = $832B; - {$EXTERNALSYM GL_PIXEL_TEX_GEN_MODE_SGIX} - - // GL_SGIS_texture4D - GL_PACK_SKIP_VOLUMES_SGIS = $8130; - {$EXTERNALSYM GL_PACK_SKIP_VOLUMES_SGIS} - GL_PACK_IMAGE_DEPTH_SGIS = $8131; - {$EXTERNALSYM GL_PACK_IMAGE_DEPTH_SGIS} - GL_UNPACK_SKIP_VOLUMES_SGIS = $8132; - {$EXTERNALSYM GL_UNPACK_SKIP_VOLUMES_SGIS} - GL_UNPACK_IMAGE_DEPTH_SGIS = $8133; - {$EXTERNALSYM GL_UNPACK_IMAGE_DEPTH_SGIS} - GL_TEXTURE_4D_SGIS = $8134; - {$EXTERNALSYM GL_TEXTURE_4D_SGIS} - GL_PROXY_TEXTURE_4D_SGIS = $8135; - {$EXTERNALSYM GL_PROXY_TEXTURE_4D_SGIS} - GL_TEXTURE_4DSIZE_SGIS = $8136; - {$EXTERNALSYM GL_TEXTURE_4DSIZE_SGIS} - GL_TEXTURE_WRAP_Q_SGIS = $8137; - {$EXTERNALSYM GL_TEXTURE_WRAP_Q_SGIS} - GL_MAX_4D_TEXTURE_SIZE_SGIS = $8138; - {$EXTERNALSYM GL_MAX_4D_TEXTURE_SIZE_SGIS} - GL_TEXTURE_4D_BINDING_SGIS = $814F; - {$EXTERNALSYM GL_TEXTURE_4D_BINDING_SGIS} - - // GL_SGIS_detail_texture - GL_DETAIL_TEXTURE_2D_SGIS = $8095; - {$EXTERNALSYM GL_DETAIL_TEXTURE_2D_SGIS} - GL_DETAIL_TEXTURE_2D_BINDING_SGIS = $8096; - {$EXTERNALSYM GL_DETAIL_TEXTURE_2D_BINDING_SGIS} - GL_LINEAR_DETAIL_SGIS = $8097; - {$EXTERNALSYM GL_LINEAR_DETAIL_SGIS} - GL_LINEAR_DETAIL_ALPHA_SGIS = $8098; - {$EXTERNALSYM GL_LINEAR_DETAIL_ALPHA_SGIS} - GL_LINEAR_DETAIL_COLOR_SGIS = $8099; - {$EXTERNALSYM GL_LINEAR_DETAIL_COLOR_SGIS} - GL_DETAIL_TEXTURE_LEVEL_SGIS = $809A; - {$EXTERNALSYM GL_DETAIL_TEXTURE_LEVEL_SGIS} - GL_DETAIL_TEXTURE_MODE_SGIS = $809B; - {$EXTERNALSYM GL_DETAIL_TEXTURE_MODE_SGIS} - GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS = $809C; - {$EXTERNALSYM GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS} - - // GL_SGIS_sharpen_texture - GL_LINEAR_SHARPEN_SGIS = $80AD; - {$EXTERNALSYM GL_LINEAR_SHARPEN_SGIS} - GL_LINEAR_SHARPEN_ALPHA_SGIS = $80AE; - {$EXTERNALSYM GL_LINEAR_SHARPEN_ALPHA_SGIS} - GL_LINEAR_SHARPEN_COLOR_SGIS = $80AF; - {$EXTERNALSYM GL_LINEAR_SHARPEN_COLOR_SGIS} - GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS = $80B0; - {$EXTERNALSYM GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS} - - // GL_SGIS_texture_lod - GL_TEXTURE_MIN_LOD_SGIS = $813A; - {$EXTERNALSYM GL_TEXTURE_MIN_LOD_SGIS} - GL_TEXTURE_MAX_LOD_SGIS = $813B; - {$EXTERNALSYM GL_TEXTURE_MAX_LOD_SGIS} - GL_TEXTURE_BASE_LEVEL_SGIS = $813C; - {$EXTERNALSYM GL_TEXTURE_BASE_LEVEL_SGIS} - GL_TEXTURE_MAX_LEVEL_SGIS = $813D; - {$EXTERNALSYM GL_TEXTURE_MAX_LEVEL_SGIS} - - // GL_SGIS_multisample - GL_MULTISAMPLE_SGIS = $809D; - {$EXTERNALSYM GL_MULTISAMPLE_SGIS} - GL_SAMPLE_ALPHA_TO_MASK_SGIS = $809E; - {$EXTERNALSYM GL_SAMPLE_ALPHA_TO_MASK_SGIS} - GL_SAMPLE_ALPHA_TO_ONE_SGIS = $809F; - {$EXTERNALSYM GL_SAMPLE_ALPHA_TO_ONE_SGIS} - GL_SAMPLE_MASK_SGIS = $80A0; - {$EXTERNALSYM GL_SAMPLE_MASK_SGIS} - GL_1PASS_SGIS = $80A1; - {$EXTERNALSYM GL_1PASS_SGIS} - GL_2PASS_0_SGIS = $80A2; - {$EXTERNALSYM GL_2PASS_0_SGIS} - GL_2PASS_1_SGIS = $80A3; - {$EXTERNALSYM GL_2PASS_1_SGIS} - GL_4PASS_0_SGIS = $80A4; - {$EXTERNALSYM GL_4PASS_0_SGIS} - GL_4PASS_1_SGIS = $80A5; - {$EXTERNALSYM GL_4PASS_1_SGIS} - GL_4PASS_2_SGIS = $80A6; - {$EXTERNALSYM GL_4PASS_2_SGIS} - GL_4PASS_3_SGIS = $80A7; - {$EXTERNALSYM GL_4PASS_3_SGIS} - GL_SAMPLE_BUFFERS_SGIS = $80A8; - {$EXTERNALSYM GL_SAMPLE_BUFFERS_SGIS} - GL_SAMPLES_SGIS = $80A9; - {$EXTERNALSYM GL_SAMPLES_SGIS} - GL_SAMPLE_MASK_VALUE_SGIS = $80AA; - {$EXTERNALSYM GL_SAMPLE_MASK_VALUE_SGIS} - GL_SAMPLE_MASK_INVERT_SGIS = $80AB; - {$EXTERNALSYM GL_SAMPLE_MASK_INVERT_SGIS} - GL_SAMPLE_PATTERN_SGIS = $80AC; - {$EXTERNALSYM GL_SAMPLE_PATTERN_SGIS} - - // GL_SGIS_generate_mipmap - GL_GENERATE_MIPMAP_SGIS = $8191; - {$EXTERNALSYM GL_GENERATE_MIPMAP_SGIS} - GL_GENERATE_MIPMAP_HINT_SGIS = $8192; - {$EXTERNALSYM GL_GENERATE_MIPMAP_HINT_SGIS} - - // GL_SGIX_clipmap - GL_LINEAR_CLIPMAP_LINEAR_SGIX = $8170; - {$EXTERNALSYM GL_LINEAR_CLIPMAP_LINEAR_SGIX} - GL_TEXTURE_CLIPMAP_CENTER_SGIX = $8171; - {$EXTERNALSYM GL_TEXTURE_CLIPMAP_CENTER_SGIX} - GL_TEXTURE_CLIPMAP_FRAME_SGIX = $8172; - {$EXTERNALSYM GL_TEXTURE_CLIPMAP_FRAME_SGIX} - GL_TEXTURE_CLIPMAP_OFFSET_SGIX = $8173; - {$EXTERNALSYM GL_TEXTURE_CLIPMAP_OFFSET_SGIX} - GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX = $8174; - {$EXTERNALSYM GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX} - GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX = $8175; - {$EXTERNALSYM GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX} - GL_TEXTURE_CLIPMAP_DEPTH_SGIX = $8176; - {$EXTERNALSYM GL_TEXTURE_CLIPMAP_DEPTH_SGIX} - GL_MAX_CLIPMAP_DEPTH_SGIX = $8177; - {$EXTERNALSYM GL_MAX_CLIPMAP_DEPTH_SGIX} - GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX = $8178; - {$EXTERNALSYM GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX} - GL_NEAREST_CLIPMAP_NEAREST_SGIX = $844D; - {$EXTERNALSYM GL_NEAREST_CLIPMAP_NEAREST_SGIX} - GL_NEAREST_CLIPMAP_LINEAR_SGIX = $844E; - {$EXTERNALSYM GL_NEAREST_CLIPMAP_LINEAR_SGIX} - GL_LINEAR_CLIPMAP_NEAREST_SGIX = $844F; - {$EXTERNALSYM GL_LINEAR_CLIPMAP_NEAREST_SGIX} - - // GL_SGIX_shadow - GL_TEXTURE_COMPARE_SGIX = $819A; - {$EXTERNALSYM GL_TEXTURE_COMPARE_SGIX} - GL_TEXTURE_COMPARE_OPERATOR_SGIX = $819B; - {$EXTERNALSYM GL_TEXTURE_COMPARE_OPERATOR_SGIX} - GL_TEXTURE_LEQUAL_R_SGIX = $819C; - {$EXTERNALSYM GL_TEXTURE_LEQUAL_R_SGIX} - GL_TEXTURE_GEQUAL_R_SGIX = $819D; - {$EXTERNALSYM GL_TEXTURE_GEQUAL_R_SGIX} - - // GL_SGIS_texture_edge_clamp - GL_CLAMP_TO_EDGE_SGIS = $812F; - {$EXTERNALSYM GL_CLAMP_TO_EDGE_SGIS} - - // GL_SGIS_texture_border_clamp - GL_CLAMP_TO_BORDER_SGIS = $812D; - {$EXTERNALSYM GL_CLAMP_TO_BORDER_SGIS} - - // GL_SGIX_interlace - GL_INTERLACE_SGIX = $8094; - {$EXTERNALSYM GL_INTERLACE_SGIX} - - // GL_SGIX_pixel_tiles - GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX = $813E; - {$EXTERNALSYM GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX} - GL_PIXEL_TILE_CACHE_INCREMENT_SGIX = $813F; - {$EXTERNALSYM GL_PIXEL_TILE_CACHE_INCREMENT_SGIX} - GL_PIXEL_TILE_WIDTH_SGIX = $8140; - {$EXTERNALSYM GL_PIXEL_TILE_WIDTH_SGIX} - GL_PIXEL_TILE_HEIGHT_SGIX = $8141; - {$EXTERNALSYM GL_PIXEL_TILE_HEIGHT_SGIX} - GL_PIXEL_TILE_GRID_WIDTH_SGIX = $8142; - {$EXTERNALSYM GL_PIXEL_TILE_GRID_WIDTH_SGIX} - GL_PIXEL_TILE_GRID_HEIGHT_SGIX = $8143; - {$EXTERNALSYM GL_PIXEL_TILE_GRID_HEIGHT_SGIX} - GL_PIXEL_TILE_GRID_DEPTH_SGIX = $8144; - {$EXTERNALSYM GL_PIXEL_TILE_GRID_DEPTH_SGIX} - GL_PIXEL_TILE_CACHE_SIZE_SGIX = $8145; - {$EXTERNALSYM GL_PIXEL_TILE_CACHE_SIZE_SGIX} - - // GL_SGIS_texture_select - GL_DUAL_ALPHA4_SGIS = $8110; - {$EXTERNALSYM GL_DUAL_ALPHA4_SGIS} - GL_DUAL_ALPHA8_SGIS = $8111; - {$EXTERNALSYM GL_DUAL_ALPHA8_SGIS} - GL_DUAL_ALPHA12_SGIS = $8112; - {$EXTERNALSYM GL_DUAL_ALPHA12_SGIS} - GL_DUAL_ALPHA16_SGIS = $8113; - {$EXTERNALSYM GL_DUAL_ALPHA16_SGIS} - GL_DUAL_LUMINANCE4_SGIS = $8114; - {$EXTERNALSYM GL_DUAL_LUMINANCE4_SGIS} - GL_DUAL_LUMINANCE8_SGIS = $8115; - {$EXTERNALSYM GL_DUAL_LUMINANCE8_SGIS} - GL_DUAL_LUMINANCE12_SGIS = $8116; - {$EXTERNALSYM GL_DUAL_LUMINANCE12_SGIS} - GL_DUAL_LUMINANCE16_SGIS = $8117; - {$EXTERNALSYM GL_DUAL_LUMINANCE16_SGIS} - GL_DUAL_INTENSITY4_SGIS = $8118; - {$EXTERNALSYM GL_DUAL_INTENSITY4_SGIS} - GL_DUAL_INTENSITY8_SGIS = $8119; - {$EXTERNALSYM GL_DUAL_INTENSITY8_SGIS} - GL_DUAL_INTENSITY12_SGIS = $811A; - {$EXTERNALSYM GL_DUAL_INTENSITY12_SGIS} - GL_DUAL_INTENSITY16_SGIS = $811B; - {$EXTERNALSYM GL_DUAL_INTENSITY16_SGIS} - GL_DUAL_LUMINANCE_ALPHA4_SGIS = $811C; - {$EXTERNALSYM GL_DUAL_LUMINANCE_ALPHA4_SGIS} - GL_DUAL_LUMINANCE_ALPHA8_SGIS = $811D; - {$EXTERNALSYM GL_DUAL_LUMINANCE_ALPHA8_SGIS} - GL_QUAD_ALPHA4_SGIS = $811E; - {$EXTERNALSYM GL_QUAD_ALPHA4_SGIS} - GL_QUAD_ALPHA8_SGIS = $811F; - {$EXTERNALSYM GL_QUAD_ALPHA8_SGIS} - GL_QUAD_LUMINANCE4_SGIS = $8120; - {$EXTERNALSYM GL_QUAD_LUMINANCE4_SGIS} - GL_QUAD_LUMINANCE8_SGIS = $8121; - {$EXTERNALSYM GL_QUAD_LUMINANCE8_SGIS} - GL_QUAD_INTENSITY4_SGIS = $8122; - {$EXTERNALSYM GL_QUAD_INTENSITY4_SGIS} - GL_QUAD_INTENSITY8_SGIS = $8123; - {$EXTERNALSYM GL_QUAD_INTENSITY8_SGIS} - GL_DUAL_TEXTURE_SELECT_SGIS = $8124; - {$EXTERNALSYM GL_DUAL_TEXTURE_SELECT_SGIS} - GL_QUAD_TEXTURE_SELECT_SGIS = $8125; - {$EXTERNALSYM GL_QUAD_TEXTURE_SELECT_SGIS} - - // GL_SGIX_sprite - GL_SPRITE_SGIX = $8148; - {$EXTERNALSYM GL_SPRITE_SGIX} - GL_SPRITE_MODE_SGIX = $8149; - {$EXTERNALSYM GL_SPRITE_MODE_SGIX} - GL_SPRITE_AXIS_SGIX = $814A; - {$EXTERNALSYM GL_SPRITE_AXIS_SGIX} - GL_SPRITE_TRANSLATION_SGIX = $814B; - {$EXTERNALSYM GL_SPRITE_TRANSLATION_SGIX} - GL_SPRITE_AXIAL_SGIX = $814C; - {$EXTERNALSYM GL_SPRITE_AXIAL_SGIX} - GL_SPRITE_OBJECT_ALIGNED_SGIX = $814D; - {$EXTERNALSYM GL_SPRITE_OBJECT_ALIGNED_SGIX} - GL_SPRITE_EYE_ALIGNED_SGIX = $814E; - {$EXTERNALSYM GL_SPRITE_EYE_ALIGNED_SGIX} - - // GL_SGIX_texture_multi_buffer - GL_TEXTURE_MULTI_BUFFER_HINT_SGIX = $812E; - {$EXTERNALSYM GL_TEXTURE_MULTI_BUFFER_HINT_SGIX} - - // GL_SGIS_point_parameters - GL_POINT_SIZE_MIN_SGIS = $8126; - {$EXTERNALSYM GL_POINT_SIZE_MIN_SGIS} - GL_POINT_SIZE_MAX_SGIS = $8127; - {$EXTERNALSYM GL_POINT_SIZE_MAX_SGIS} - GL_POINT_FADE_THRESHOLD_SIZE_SGIS = $8128; - {$EXTERNALSYM GL_POINT_FADE_THRESHOLD_SIZE_SGIS} - GL_DISTANCE_ATTENUATION_SGIS = $8129; - {$EXTERNALSYM GL_DISTANCE_ATTENUATION_SGIS} - - // GL_SGIX_instruments - GL_INSTRUMENT_BUFFER_POINTER_SGIX = $8180; - {$EXTERNALSYM GL_INSTRUMENT_BUFFER_POINTER_SGIX} - GL_INSTRUMENT_MEASUREMENTS_SGIX = $8181; - {$EXTERNALSYM GL_INSTRUMENT_MEASUREMENTS_SGIX} - - // GL_SGIX_texture_scale_bias - GL_POST_TEXTURE_FILTER_BIAS_SGIX = $8179; - {$EXTERNALSYM GL_POST_TEXTURE_FILTER_BIAS_SGIX} - GL_POST_TEXTURE_FILTER_SCALE_SGIX = $817A; - {$EXTERNALSYM GL_POST_TEXTURE_FILTER_SCALE_SGIX} - GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX = $817B; - {$EXTERNALSYM GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX} - GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX = $817C; - {$EXTERNALSYM GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX} - - // GL_SGIX_framezoom - GL_FRAMEZOOM_SGIX = $818B; - {$EXTERNALSYM GL_FRAMEZOOM_SGIX} - GL_FRAMEZOOM_FACTOR_SGIX = $818C; - {$EXTERNALSYM GL_FRAMEZOOM_FACTOR_SGIX} - GL_MAX_FRAMEZOOM_FACTOR_SGIX = $818D; - {$EXTERNALSYM GL_MAX_FRAMEZOOM_FACTOR_SGIX} - - // GL_FfdMaskSGIX - GL_TEXTURE_DEFORMATION_BIT_SGIX = $00000001; - {$EXTERNALSYM GL_TEXTURE_DEFORMATION_BIT_SGIX} - GL_GEOMETRY_DEFORMATION_BIT_SGIX = $00000002; - {$EXTERNALSYM GL_GEOMETRY_DEFORMATION_BIT_SGIX} - - // GL_SGIX_polynomial_ffd - GL_GEOMETRY_DEFORMATION_SGIX = $8194; - {$EXTERNALSYM GL_GEOMETRY_DEFORMATION_SGIX} - GL_TEXTURE_DEFORMATION_SGIX = $8195; - {$EXTERNALSYM GL_TEXTURE_DEFORMATION_SGIX} - GL_DEFORMATIONS_MASK_SGIX = $8196; - {$EXTERNALSYM GL_DEFORMATIONS_MASK_SGIX} - GL_MAX_DEFORMATION_ORDER_SGIX = $8197; - {$EXTERNALSYM GL_MAX_DEFORMATION_ORDER_SGIX} - - // GL_SGIX_reference_plane - GL_REFERENCE_PLANE_SGIX = $817D; - {$EXTERNALSYM GL_REFERENCE_PLANE_SGIX} - GL_REFERENCE_PLANE_EQUATION_SGIX = $817E; - {$EXTERNALSYM GL_REFERENCE_PLANE_EQUATION_SGIX} - - // GL_SGIX_depth_texture - GL_DEPTH_COMPONENT16_SGIX = $81A5; - {$EXTERNALSYM GL_DEPTH_COMPONENT16_SGIX} - GL_DEPTH_COMPONENT24_SGIX = $81A6; - {$EXTERNALSYM GL_DEPTH_COMPONENT24_SGIX} - GL_DEPTH_COMPONENT32_SGIX = $81A7; - {$EXTERNALSYM GL_DEPTH_COMPONENT32_SGIX} - - // GL_SGIS_fog_function - GL_FOG_FUNC_SGIS = $812A; - {$EXTERNALSYM GL_FOG_FUNC_SGIS} - GL_FOG_FUNC_POINTS_SGIS = $812B; - {$EXTERNALSYM GL_FOG_FUNC_POINTS_SGIS} - GL_MAX_FOG_FUNC_POINTS_SGIS = $812C; - {$EXTERNALSYM GL_MAX_FOG_FUNC_POINTS_SGIS} - - // GL_SGIX_fog_offset - GL_FOG_OFFSET_SGIX = $8198; - {$EXTERNALSYM GL_FOG_OFFSET_SGIX} - GL_FOG_OFFSET_VALUE_SGIX = $8199; - {$EXTERNALSYM GL_FOG_OFFSET_VALUE_SGIX} - - // GL_HP_image_transform - GL_IMAGE_SCALE_X_HP = $8155; - {$EXTERNALSYM GL_IMAGE_SCALE_X_HP} - GL_IMAGE_SCALE_Y_HP = $8156; - {$EXTERNALSYM GL_IMAGE_SCALE_Y_HP} - GL_IMAGE_TRANSLATE_X_HP = $8157; - {$EXTERNALSYM GL_IMAGE_TRANSLATE_X_HP} - GL_IMAGE_TRANSLATE_Y_HP = $8158; - {$EXTERNALSYM GL_IMAGE_TRANSLATE_Y_HP} - GL_IMAGE_ROTATE_ANGLE_HP = $8159; - {$EXTERNALSYM GL_IMAGE_ROTATE_ANGLE_HP} - GL_IMAGE_ROTATE_ORIGIN_X_HP = $815A; - {$EXTERNALSYM GL_IMAGE_ROTATE_ORIGIN_X_HP} - GL_IMAGE_ROTATE_ORIGIN_Y_HP = $815B; - {$EXTERNALSYM GL_IMAGE_ROTATE_ORIGIN_Y_HP} - GL_IMAGE_MAG_FILTER_HP = $815C; - {$EXTERNALSYM GL_IMAGE_MAG_FILTER_HP} - GL_IMAGE_MIN_FILTER_HP = $815D; - {$EXTERNALSYM GL_IMAGE_MIN_FILTER_HP} - GL_IMAGE_CUBIC_WEIGHT_HP = $815E; - {$EXTERNALSYM GL_IMAGE_CUBIC_WEIGHT_HP} - GL_CUBIC_HP = $815F; - {$EXTERNALSYM GL_CUBIC_HP} - GL_AVERAGE_HP = $8160; - {$EXTERNALSYM GL_AVERAGE_HP} - GL_IMAGE_TRANSFORM_2D_HP = $8161; - {$EXTERNALSYM GL_IMAGE_TRANSFORM_2D_HP} - GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = $8162; - {$EXTERNALSYM GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP} - GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = $8163; - {$EXTERNALSYM GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP} - - // GL_HP_convolution_border_modes - GL_IGNORE_BORDER_HP = $8150; - {$EXTERNALSYM GL_IGNORE_BORDER_HP} - GL_CONSTANT_BORDER_HP = $8151; - {$EXTERNALSYM GL_CONSTANT_BORDER_HP} - GL_REPLICATE_BORDER_HP = $8153; - {$EXTERNALSYM GL_REPLICATE_BORDER_HP} - GL_CONVOLUTION_BORDER_COLOR_HP = $8154; - {$EXTERNALSYM GL_CONVOLUTION_BORDER_COLOR_HP} - - // GL_SGIX_texture_add_env - GL_TEXTURE_ENV_BIAS_SGIX = $80BE; - {$EXTERNALSYM GL_TEXTURE_ENV_BIAS_SGIX} - - // GL_PGI_vertex_hints - GL_VERTEX_DATA_HINT_PGI = $1A22A; - {$EXTERNALSYM GL_VERTEX_DATA_HINT_PGI} - GL_VERTEX_CONSISTENT_HINT_PGI = $1A22B; - {$EXTERNALSYM GL_VERTEX_CONSISTENT_HINT_PGI} - GL_MATERIAL_SIDE_HINT_PGI = $1A22C; - {$EXTERNALSYM GL_MATERIAL_SIDE_HINT_PGI} - GL_MAX_VERTEX_HINT_PGI = $1A22D; - {$EXTERNALSYM GL_MAX_VERTEX_HINT_PGI} - GL_COLOR3_BIT_PGI = $00010000; - {$EXTERNALSYM GL_COLOR3_BIT_PGI} - GL_COLOR4_BIT_PGI = $00020000; - {$EXTERNALSYM GL_COLOR4_BIT_PGI} - GL_EDGEFLAG_BIT_PGI = $00040000; - {$EXTERNALSYM GL_EDGEFLAG_BIT_PGI} - GL_INDEX_BIT_PGI = $00080000; - {$EXTERNALSYM GL_INDEX_BIT_PGI} - GL_MAT_AMBIENT_BIT_PGI = $00100000; - {$EXTERNALSYM GL_MAT_AMBIENT_BIT_PGI} - GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI = $00200000; - {$EXTERNALSYM GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI} - GL_MAT_DIFFUSE_BIT_PGI = $00400000; - {$EXTERNALSYM GL_MAT_DIFFUSE_BIT_PGI} - GL_MAT_EMISSION_BIT_PGI = $00800000; - {$EXTERNALSYM GL_MAT_EMISSION_BIT_PGI} - GL_MAT_COLOR_INDEXES_BIT_PGI = $01000000; - {$EXTERNALSYM GL_MAT_COLOR_INDEXES_BIT_PGI} - GL_MAT_SHININESS_BIT_PGI = $02000000; - {$EXTERNALSYM GL_MAT_SHININESS_BIT_PGI} - GL_MAT_SPECULAR_BIT_PGI = $04000000; - {$EXTERNALSYM GL_MAT_SPECULAR_BIT_PGI} - GL_NORMAL_BIT_PGI = $08000000; - {$EXTERNALSYM GL_NORMAL_BIT_PGI} - GL_TEXCOORD1_BIT_PGI = $10000000; - {$EXTERNALSYM GL_TEXCOORD1_BIT_PGI} - GL_TEXCOORD2_BIT_PGI = $20000000; - {$EXTERNALSYM GL_TEXCOORD2_BIT_PGI} - GL_TEXCOORD3_BIT_PGI = $40000000; - {$EXTERNALSYM GL_TEXCOORD3_BIT_PGI} - GL_TEXCOORD4_BIT_PGI = $80000000; - {$EXTERNALSYM GL_TEXCOORD4_BIT_PGI} - GL_VERTEX23_BIT_PGI = $00000004; - {$EXTERNALSYM GL_VERTEX23_BIT_PGI} - GL_VERTEX4_BIT_PGI = $00000008; - {$EXTERNALSYM GL_VERTEX4_BIT_PGI} - - // GL_PGI_misc_hints - GL_PREFER_DOUBLEBUFFER_HINT_PGI = $1A1F8; - {$EXTERNALSYM GL_PREFER_DOUBLEBUFFER_HINT_PGI} - GL_CONSERVE_MEMORY_HINT_PGI = $1A1FD; - {$EXTERNALSYM GL_CONSERVE_MEMORY_HINT_PGI} - GL_RECLAIM_MEMORY_HINT_PGI = $1A1FE; - {$EXTERNALSYM GL_RECLAIM_MEMORY_HINT_PGI} - GL_NATIVE_GRAPHICS_HANDLE_PGI = $1A202; - {$EXTERNALSYM GL_NATIVE_GRAPHICS_HANDLE_PGI} - GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI = $1A203; - {$EXTERNALSYM GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI} - GL_NATIVE_GRAPHICS_END_HINT_PGI = $1A204; - {$EXTERNALSYM GL_NATIVE_GRAPHICS_END_HINT_PGI} - GL_ALWAYS_FAST_HINT_PGI = $1A20C; - {$EXTERNALSYM GL_ALWAYS_FAST_HINT_PGI} - GL_ALWAYS_SOFT_HINT_PGI = $1A20D; - {$EXTERNALSYM GL_ALWAYS_SOFT_HINT_PGI} - GL_ALLOW_DRAW_OBJ_HINT_PGI = $1A20E; - {$EXTERNALSYM GL_ALLOW_DRAW_OBJ_HINT_PGI} - GL_ALLOW_DRAW_WIN_HINT_PGI = $1A20F; - {$EXTERNALSYM GL_ALLOW_DRAW_WIN_HINT_PGI} - GL_ALLOW_DRAW_FRG_HINT_PGI = $1A210; - {$EXTERNALSYM GL_ALLOW_DRAW_FRG_HINT_PGI} - GL_ALLOW_DRAW_MEM_HINT_PGI = $1A211; - {$EXTERNALSYM GL_ALLOW_DRAW_MEM_HINT_PGI} - GL_STRICT_DEPTHFUNC_HINT_PGI = $1A216; - {$EXTERNALSYM GL_STRICT_DEPTHFUNC_HINT_PGI} - GL_STRICT_LIGHTING_HINT_PGI = $1A217; - {$EXTERNALSYM GL_STRICT_LIGHTING_HINT_PGI} - GL_STRICT_SCISSOR_HINT_PGI = $1A218; - {$EXTERNALSYM GL_STRICT_SCISSOR_HINT_PGI} - GL_FULL_STIPPLE_HINT_PGI = $1A219; - {$EXTERNALSYM GL_FULL_STIPPLE_HINT_PGI} - GL_CLIP_NEAR_HINT_PGI = $1A220; - {$EXTERNALSYM GL_CLIP_NEAR_HINT_PGI} - GL_CLIP_FAR_HINT_PGI = $1A221; - {$EXTERNALSYM GL_CLIP_FAR_HINT_PGI} - GL_WIDE_LINE_HINT_PGI = $1A222; - {$EXTERNALSYM GL_WIDE_LINE_HINT_PGI} - GL_BACK_NORMALS_HINT_PGI = $1A223; - {$EXTERNALSYM GL_BACK_NORMALS_HINT_PGI} - - // GL_EXT_paletted_texture - GL_TEXTURE_INDEX_SIZE_EXT = $80ED; - {$EXTERNALSYM GL_TEXTURE_INDEX_SIZE_EXT} - - // GL_SGIX_list_priority - GL_LIST_PRIORITY_SGIX = $8182; - {$EXTERNALSYM GL_LIST_PRIORITY_SGIX} - - // GL_SGIX_ir_instrument1 - GL_IR_INSTRUMENT1_SGIX = $817F; - {$EXTERNALSYM GL_IR_INSTRUMENT1_SGIX} - - // GL_SGIX_calligraphic_fragment - GL_CALLIGRAPHIC_FRAGMENT_SGIX = $8183; - {$EXTERNALSYM GL_CALLIGRAPHIC_FRAGMENT_SGIX} - - // GL_SGIX_texture_lod_bias - GL_TEXTURE_LOD_BIAS_S_SGIX = $818E; - {$EXTERNALSYM GL_TEXTURE_LOD_BIAS_S_SGIX} - GL_TEXTURE_LOD_BIAS_T_SGIX = $818F; - {$EXTERNALSYM GL_TEXTURE_LOD_BIAS_T_SGIX} - GL_TEXTURE_LOD_BIAS_R_SGIX = $8190; - {$EXTERNALSYM GL_TEXTURE_LOD_BIAS_R_SGIX} - - // GL_SGIX_shadow_ambient - GL_SHADOW_AMBIENT_SGIX = $80BF; - {$EXTERNALSYM GL_SHADOW_AMBIENT_SGIX} - - // GL_SGIX_ycrcb - GL_YCRCB_422_SGIX = $81BB; - {$EXTERNALSYM GL_YCRCB_422_SGIX} - GL_YCRCB_444_SGIX = $81BC; - {$EXTERNALSYM GL_YCRCB_444_SGIX} - - // GL_SGIX_fragment_lighting - GL_FRAGMENT_LIGHTING_SGIX = $8400; - {$EXTERNALSYM GL_FRAGMENT_LIGHTING_SGIX} - GL_FRAGMENT_COLOR_MATERIAL_SGIX = $8401; - {$EXTERNALSYM GL_FRAGMENT_COLOR_MATERIAL_SGIX} - GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX = $8402; - {$EXTERNALSYM GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX} - GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX = $8403; - {$EXTERNALSYM GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX} - GL_MAX_FRAGMENT_LIGHTS_SGIX = $8404; - {$EXTERNALSYM GL_MAX_FRAGMENT_LIGHTS_SGIX} - GL_MAX_ACTIVE_LIGHTS_SGIX = $8405; - {$EXTERNALSYM GL_MAX_ACTIVE_LIGHTS_SGIX} - GL_CURRENT_RASTER_NORMAL_SGIX = $8406; - {$EXTERNALSYM GL_CURRENT_RASTER_NORMAL_SGIX} - GL_LIGHT_ENV_MODE_SGIX = $8407; - {$EXTERNALSYM GL_LIGHT_ENV_MODE_SGIX} - GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX = $8408; - {$EXTERNALSYM GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX} - GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX = $8409; - {$EXTERNALSYM GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX} - GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX = $840A; - {$EXTERNALSYM GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX} - GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX = $840B; - {$EXTERNALSYM GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX} - GL_FRAGMENT_LIGHT0_SGIX = $840C; - {$EXTERNALSYM GL_FRAGMENT_LIGHT0_SGIX} - GL_FRAGMENT_LIGHT1_SGIX = $840D; - {$EXTERNALSYM GL_FRAGMENT_LIGHT1_SGIX} - GL_FRAGMENT_LIGHT2_SGIX = $840E; - {$EXTERNALSYM GL_FRAGMENT_LIGHT2_SGIX} - GL_FRAGMENT_LIGHT3_SGIX = $840F; - {$EXTERNALSYM GL_FRAGMENT_LIGHT3_SGIX} - GL_FRAGMENT_LIGHT4_SGIX = $8410; - {$EXTERNALSYM GL_FRAGMENT_LIGHT4_SGIX} - GL_FRAGMENT_LIGHT5_SGIX = $8411; - {$EXTERNALSYM GL_FRAGMENT_LIGHT5_SGIX} - GL_FRAGMENT_LIGHT6_SGIX = $8412; - {$EXTERNALSYM GL_FRAGMENT_LIGHT6_SGIX} - GL_FRAGMENT_LIGHT7_SGIX = $8413; - {$EXTERNALSYM GL_FRAGMENT_LIGHT7_SGIX} - - // GL_IBM_rasterpos_clip - GL_RASTER_POSITION_UNCLIPPED_IBM = $19262; - {$EXTERNALSYM GL_RASTER_POSITION_UNCLIPPED_IBM} - - // GL_HP_texture_lighting - GL_TEXTURE_LIGHTING_MODE_HP = $8167; - {$EXTERNALSYM GL_TEXTURE_LIGHTING_MODE_HP} - GL_TEXTURE_POST_SPECULAR_HP = $8168; - {$EXTERNALSYM GL_TEXTURE_POST_SPECULAR_HP} - GL_TEXTURE_PRE_SPECULAR_HP = $8169; - {$EXTERNALSYM GL_TEXTURE_PRE_SPECULAR_HP} - - // GL_EXT_draw_range_elements - GL_MAX_ELEMENTS_VERTICES_EXT = $80E8; - {$EXTERNALSYM GL_MAX_ELEMENTS_VERTICES_EXT} - GL_MAX_ELEMENTS_INDICES_EXT = $80E9; - {$EXTERNALSYM GL_MAX_ELEMENTS_INDICES_EXT} - - // GL_WIN_phong_shading - GL_PHONG_WIN = $80EA; - {$EXTERNALSYM GL_PHONG_WIN} - GL_PHONG_HINT_WIN = $80EB; - {$EXTERNALSYM GL_PHONG_HINT_WIN} - - // GL_WIN_specular_fog - GL_FOG_SPECULAR_TEXTURE_WIN = $80EC; - {$EXTERNALSYM GL_FOG_SPECULAR_TEXTURE_WIN} - - // GL_EXT_light_texture - GL_FRAGMENT_MATERIAL_EXT = $8349; - {$EXTERNALSYM GL_FRAGMENT_MATERIAL_EXT} - GL_FRAGMENT_NORMAL_EXT = $834A; - {$EXTERNALSYM GL_FRAGMENT_NORMAL_EXT} - GL_FRAGMENT_COLOR_EXT = $834C; - {$EXTERNALSYM GL_FRAGMENT_COLOR_EXT} - GL_ATTENUATION_EXT = $834D; - {$EXTERNALSYM GL_ATTENUATION_EXT} - GL_SHADOW_ATTENUATION_EXT = $834E; - {$EXTERNALSYM GL_SHADOW_ATTENUATION_EXT} - GL_TEXTURE_APPLICATION_MODE_EXT = $834F; - {$EXTERNALSYM GL_TEXTURE_APPLICATION_MODE_EXT} - GL_TEXTURE_LIGHT_EXT = $8350; - {$EXTERNALSYM GL_TEXTURE_LIGHT_EXT} - GL_TEXTURE_MATERIAL_FACE_EXT = $8351; - {$EXTERNALSYM GL_TEXTURE_MATERIAL_FACE_EXT} - GL_TEXTURE_MATERIAL_PARAMETER_EXT = $8352; - {$EXTERNALSYM GL_TEXTURE_MATERIAL_PARAMETER_EXT} - - // GL_SGIX_blend_alpha_minmax - GL_ALPHA_MIN_SGIX = $8320; - {$EXTERNALSYM GL_ALPHA_MIN_SGIX} - GL_ALPHA_MAX_SGIX = $8321; - {$EXTERNALSYM GL_ALPHA_MAX_SGIX} - - // GL_SGIX_async - GL_ASYNC_MARKER_SGIX = $8329; - {$EXTERNALSYM GL_ASYNC_MARKER_SGIX} - - // GL_SGIX_async_pixel - GL_ASYNC_TEX_IMAGE_SGIX = $835C; - {$EXTERNALSYM GL_ASYNC_TEX_IMAGE_SGIX} - GL_ASYNC_DRAW_PIXELS_SGIX = $835D; - {$EXTERNALSYM GL_ASYNC_DRAW_PIXELS_SGIX} - GL_ASYNC_READ_PIXELS_SGIX = $835E; - {$EXTERNALSYM GL_ASYNC_READ_PIXELS_SGIX} - GL_MAX_ASYNC_TEX_IMAGE_SGIX = $835F; - {$EXTERNALSYM GL_MAX_ASYNC_TEX_IMAGE_SGIX} - GL_MAX_ASYNC_DRAW_PIXELS_SGIX = $8360; - {$EXTERNALSYM GL_MAX_ASYNC_DRAW_PIXELS_SGIX} - GL_MAX_ASYNC_READ_PIXELS_SGIX = $8361; - {$EXTERNALSYM GL_MAX_ASYNC_READ_PIXELS_SGIX} - - // GL_SGIX_async_histogram - GL_ASYNC_HISTOGRAM_SGIX = $832C; - {$EXTERNALSYM GL_ASYNC_HISTOGRAM_SGIX} - GL_MAX_ASYNC_HISTOGRAM_SGIX = $832D; - {$EXTERNALSYM GL_MAX_ASYNC_HISTOGRAM_SGIX} - - // GL_INTEL_parallel_arrays - GL_PARALLEL_ARRAYS_INTEL = $83F4; - {$EXTERNALSYM GL_PARALLEL_ARRAYS_INTEL} - GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL = $83F5; - {$EXTERNALSYM GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL} - GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL = $83F6; - {$EXTERNALSYM GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL} - GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL = $83F7; - {$EXTERNALSYM GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL} - GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL = $83F8; - {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL} - - // GL_HP_occlusion_test - GL_OCCLUSION_TEST_HP = $8165; - {$EXTERNALSYM GL_OCCLUSION_TEST_HP} - GL_OCCLUSION_TEST_RESULT_HP = $8166; - {$EXTERNALSYM GL_OCCLUSION_TEST_RESULT_HP} - - // GL_EXT_pixel_transform - GL_PIXEL_TRANSFORM_2D_EXT = $8330; - {$EXTERNALSYM GL_PIXEL_TRANSFORM_2D_EXT} - GL_PIXEL_MAG_FILTER_EXT = $8331; - {$EXTERNALSYM GL_PIXEL_MAG_FILTER_EXT} - GL_PIXEL_MIN_FILTER_EXT = $8332; - {$EXTERNALSYM GL_PIXEL_MIN_FILTER_EXT} - GL_PIXEL_CUBIC_WEIGHT_EXT = $8333; - {$EXTERNALSYM GL_PIXEL_CUBIC_WEIGHT_EXT} - GL_CUBIC_EXT = $8334; - {$EXTERNALSYM GL_CUBIC_EXT} - GL_AVERAGE_EXT = $8335; - {$EXTERNALSYM GL_AVERAGE_EXT} - GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = $8336; - {$EXTERNALSYM GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT} - GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = $8337; - {$EXTERNALSYM GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT} - GL_PIXEL_TRANSFORM_2D_MATRIX_EXT = $8338; - {$EXTERNALSYM GL_PIXEL_TRANSFORM_2D_MATRIX_EXT} - - // GL_EXT_separate_specular_color - GL_LIGHT_MODEL_COLOR_CONTROL_EXT = $81F8; - {$EXTERNALSYM GL_LIGHT_MODEL_COLOR_CONTROL_EXT} - GL_SINGLE_COLOR_EXT = $81F9; - {$EXTERNALSYM GL_SINGLE_COLOR_EXT} - GL_SEPARATE_SPECULAR_COLOR_EXT = $81FA; - {$EXTERNALSYM GL_SEPARATE_SPECULAR_COLOR_EXT} - - // GL_EXT_secondary_color - GL_COLOR_SUM_EXT = $8458; - {$EXTERNALSYM GL_COLOR_SUM_EXT} - GL_CURRENT_SECONDARY_COLOR_EXT = $8459; - {$EXTERNALSYM GL_CURRENT_SECONDARY_COLOR_EXT} - GL_SECONDARY_COLOR_ARRAY_SIZE_EXT = $845A; - {$EXTERNALSYM GL_SECONDARY_COLOR_ARRAY_SIZE_EXT} - GL_SECONDARY_COLOR_ARRAY_TYPE_EXT = $845B; - {$EXTERNALSYM GL_SECONDARY_COLOR_ARRAY_TYPE_EXT} - GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT = $845C; - {$EXTERNALSYM GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT} - GL_SECONDARY_COLOR_ARRAY_POINTER_EXT = $845D; - {$EXTERNALSYM GL_SECONDARY_COLOR_ARRAY_POINTER_EXT} - GL_SECONDARY_COLOR_ARRAY_EXT = $845E; - {$EXTERNALSYM GL_SECONDARY_COLOR_ARRAY_EXT} - - // GL_EXT_texture_perturb_normal - GL_PERTURB_EXT = $85AE; - {$EXTERNALSYM GL_PERTURB_EXT} - GL_TEXTURE_NORMAL_EXT = $85AF; - {$EXTERNALSYM GL_TEXTURE_NORMAL_EXT} - - // GL_EXT_fog_coord - GL_FOG_COORDINATE_SOURCE_EXT = $8450; - {$EXTERNALSYM GL_FOG_COORDINATE_SOURCE_EXT} - GL_FOG_COORDINATE_EXT = $8451; - {$EXTERNALSYM GL_FOG_COORDINATE_EXT} - GL_FRAGMENT_DEPTH_EXT = $8452; - {$EXTERNALSYM GL_FRAGMENT_DEPTH_EXT} - GL_CURRENT_FOG_COORDINATE_EXT = $8453; - {$EXTERNALSYM GL_CURRENT_FOG_COORDINATE_EXT} - GL_FOG_COORDINATE_ARRAY_TYPE_EXT = $8454; - {$EXTERNALSYM GL_FOG_COORDINATE_ARRAY_TYPE_EXT} - GL_FOG_COORDINATE_ARRAY_STRIDE_EXT = $8455; - {$EXTERNALSYM GL_FOG_COORDINATE_ARRAY_STRIDE_EXT} - GL_FOG_COORDINATE_ARRAY_POINTER_EXT = $8456; - {$EXTERNALSYM GL_FOG_COORDINATE_ARRAY_POINTER_EXT} - GL_FOG_COORDINATE_ARRAY_EXT = $8457; - {$EXTERNALSYM GL_FOG_COORDINATE_ARRAY_EXT} - - // GL_REND_screen_coordinates - GL_SCREEN_COORDINATES_REND = $8490; - {$EXTERNALSYM GL_SCREEN_COORDINATES_REND} - GL_INVERTED_SCREEN_W_REND = $8491; - {$EXTERNALSYM GL_INVERTED_SCREEN_W_REND} - - // GL_EXT_coordinate_frame - GL_TANGENT_ARRAY_EXT = $8439; - {$EXTERNALSYM GL_TANGENT_ARRAY_EXT} - GL_BINORMAL_ARRAY_EXT = $843A; - {$EXTERNALSYM GL_BINORMAL_ARRAY_EXT} - GL_CURRENT_TANGENT_EXT = $843B; - {$EXTERNALSYM GL_CURRENT_TANGENT_EXT} - GL_CURRENT_BINORMAL_EXT = $843C; - {$EXTERNALSYM GL_CURRENT_BINORMAL_EXT} - GL_TANGENT_ARRAY_TYPE_EXT = $843E; - {$EXTERNALSYM GL_TANGENT_ARRAY_TYPE_EXT} - GL_TANGENT_ARRAY_STRIDE_EXT = $843F; - {$EXTERNALSYM GL_TANGENT_ARRAY_STRIDE_EXT} - GL_BINORMAL_ARRAY_TYPE_EXT = $8440; - {$EXTERNALSYM GL_BINORMAL_ARRAY_TYPE_EXT} - GL_BINORMAL_ARRAY_STRIDE_EXT = $8441; - {$EXTERNALSYM GL_BINORMAL_ARRAY_STRIDE_EXT} - GL_TANGENT_ARRAY_POINTER_EXT = $8442; - {$EXTERNALSYM GL_TANGENT_ARRAY_POINTER_EXT} - GL_BINORMAL_ARRAY_POINTER_EXT = $8443; - {$EXTERNALSYM GL_BINORMAL_ARRAY_POINTER_EXT} - GL_MAP1_TANGENT_EXT = $8444; - {$EXTERNALSYM GL_MAP1_TANGENT_EXT} - GL_MAP2_TANGENT_EXT = $8445; - {$EXTERNALSYM GL_MAP2_TANGENT_EXT} - GL_MAP1_BINORMAL_EXT = $8446; - {$EXTERNALSYM GL_MAP1_BINORMAL_EXT} - GL_MAP2_BINORMAL_EXT = $8447; - {$EXTERNALSYM GL_MAP2_BINORMAL_EXT} - - // GL_EXT_texture_env_combine - GL_SOURCE3_RGB_EXT = $8583; - {$EXTERNALSYM GL_SOURCE3_RGB_EXT} - GL_SOURCE4_RGB_EXT = $8584; - {$EXTERNALSYM GL_SOURCE4_RGB_EXT} - GL_SOURCE5_RGB_EXT = $8585; - {$EXTERNALSYM GL_SOURCE5_RGB_EXT} - GL_SOURCE6_RGB_EXT = $8586; - {$EXTERNALSYM GL_SOURCE6_RGB_EXT} - GL_SOURCE7_RGB_EXT = $8587; - {$EXTERNALSYM GL_SOURCE7_RGB_EXT} - GL_SOURCE3_ALPHA_EXT = $858B; - {$EXTERNALSYM GL_SOURCE3_ALPHA_EXT} - GL_SOURCE4_ALPHA_EXT = $858C; - {$EXTERNALSYM GL_SOURCE4_ALPHA_EXT} - GL_SOURCE5_ALPHA_EXT = $858D; - {$EXTERNALSYM GL_SOURCE5_ALPHA_EXT} - GL_SOURCE6_ALPHA_EXT = $858E; - {$EXTERNALSYM GL_SOURCE6_ALPHA_EXT} - GL_SOURCE7_ALPHA_EXT = $858F; - {$EXTERNALSYM GL_SOURCE7_ALPHA_EXT} - GL_OPERAND3_RGB_EXT = $8593; - {$EXTERNALSYM GL_OPERAND3_RGB_EXT} - GL_OPERAND4_RGB_EXT = $8594; - {$EXTERNALSYM GL_OPERAND4_RGB_EXT} - GL_OPERAND5_RGB_EXT = $8595; - {$EXTERNALSYM GL_OPERAND5_RGB_EXT} - GL_OPERAND6_RGB_EXT = $8596; - {$EXTERNALSYM GL_OPERAND6_RGB_EXT} - GL_OPERAND7_RGB_EXT = $8597; - {$EXTERNALSYM GL_OPERAND7_RGB_EXT} - GL_OPERAND3_ALPHA_EXT = $859B; - {$EXTERNALSYM GL_OPERAND3_ALPHA_EXT} - GL_OPERAND4_ALPHA_EXT = $859C; - {$EXTERNALSYM GL_OPERAND4_ALPHA_EXT} - GL_OPERAND5_ALPHA_EXT = $859D; - {$EXTERNALSYM GL_OPERAND5_ALPHA_EXT} - GL_OPERAND6_ALPHA_EXT = $859E; - {$EXTERNALSYM GL_OPERAND6_ALPHA_EXT} - GL_OPERAND7_ALPHA_EXT = $859F; - {$EXTERNALSYM GL_OPERAND7_ALPHA_EXT} - - // GL_APPLE_specular_vector - GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE = $85B0; - {$EXTERNALSYM GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE} - - // GL_APPLE_transform_hint - GL_TRANSFORM_HINT_APPLE = $85B1; - {$EXTERNALSYM GL_TRANSFORM_HINT_APPLE} - - // GL_SGIX_fog_scale - GL_FOG_SCALE_SGIX = $81FC; - {$EXTERNALSYM GL_FOG_SCALE_SGIX} - GL_FOG_SCALE_VALUE_SGIX = $81FD; - {$EXTERNALSYM GL_FOG_SCALE_VALUE_SGIX} - - // GL_SUNX_constant_data - GL_UNPACK_CONSTANT_DATA_SUNX = $81D5; - {$EXTERNALSYM GL_UNPACK_CONSTANT_DATA_SUNX} - GL_TEXTURE_CONSTANT_DATA_SUNX = $81D6; - {$EXTERNALSYM GL_TEXTURE_CONSTANT_DATA_SUNX} - - // GL_SUN_global_alpha - GL_GLOBAL_ALPHA_SUN = $81D9; - {$EXTERNALSYM GL_GLOBAL_ALPHA_SUN} - GL_GLOBAL_ALPHA_FACTOR_SUN = $81DA; - {$EXTERNALSYM GL_GLOBAL_ALPHA_FACTOR_SUN} - - // GL_SUN_triangle_list - GL_RESTART_SUN = $01; - {$EXTERNALSYM GL_RESTART_SUN} - GL_REPLACE_MIDDLE_SUN = $02; - {$EXTERNALSYM GL_REPLACE_MIDDLE_SUN} - GL_REPLACE_OLDEST_SUN = $03; - {$EXTERNALSYM GL_REPLACE_OLDEST_SUN} - GL_TRIANGLE_LIST_SUN = $81D7; - {$EXTERNALSYM GL_TRIANGLE_LIST_SUN} - GL_REPLACEMENT_CODE_SUN = $81D8; - {$EXTERNALSYM GL_REPLACEMENT_CODE_SUN} - GL_REPLACEMENT_CODE_ARRAY_SUN = $85C0; - {$EXTERNALSYM GL_REPLACEMENT_CODE_ARRAY_SUN} - GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN = $85C1; - {$EXTERNALSYM GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN} - GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN = $85C2; - {$EXTERNALSYM GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN} - GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN = $85C3; - {$EXTERNALSYM GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN} - GL_R1UI_V3F_SUN = $85C4; - {$EXTERNALSYM GL_R1UI_V3F_SUN} - GL_R1UI_C4UB_V3F_SUN = $85C5; - {$EXTERNALSYM GL_R1UI_C4UB_V3F_SUN} - GL_R1UI_C3F_V3F_SUN = $85C6; - {$EXTERNALSYM GL_R1UI_C3F_V3F_SUN} - GL_R1UI_N3F_V3F_SUN = $85C7; - {$EXTERNALSYM GL_R1UI_N3F_V3F_SUN} - GL_R1UI_C4F_N3F_V3F_SUN = $85C8; - {$EXTERNALSYM GL_R1UI_C4F_N3F_V3F_SUN} - GL_R1UI_T2F_V3F_SUN = $85C9; - {$EXTERNALSYM GL_R1UI_T2F_V3F_SUN} - GL_R1UI_T2F_N3F_V3F_SUN = $85CA; - {$EXTERNALSYM GL_R1UI_T2F_N3F_V3F_SUN} - GL_R1UI_T2F_C4F_N3F_V3F_SUN = $85CB; - {$EXTERNALSYM GL_R1UI_T2F_C4F_N3F_V3F_SUN} - - // GL_EXT_blend_func_separate - GL_BLEND_DST_RGB_EXT = $80C8; - {$EXTERNALSYM GL_BLEND_DST_RGB_EXT} - GL_BLEND_SRC_RGB_EXT = $80C9; - {$EXTERNALSYM GL_BLEND_SRC_RGB_EXT} - GL_BLEND_DST_ALPHA_EXT = $80CA; - {$EXTERNALSYM GL_BLEND_DST_ALPHA_EXT} - GL_BLEND_SRC_ALPHA_EXT = $80CB; - {$EXTERNALSYM GL_BLEND_SRC_ALPHA_EXT} - - // GL_INGR_color_clamp - GL_RED_MIN_CLAMP_INGR = $8560; - {$EXTERNALSYM GL_RED_MIN_CLAMP_INGR} - GL_GREEN_MIN_CLAMP_INGR = $8561; - {$EXTERNALSYM GL_GREEN_MIN_CLAMP_INGR} - GL_BLUE_MIN_CLAMP_INGR = $8562; - {$EXTERNALSYM GL_BLUE_MIN_CLAMP_INGR} - GL_ALPHA_MIN_CLAMP_INGR = $8563; - {$EXTERNALSYM GL_ALPHA_MIN_CLAMP_INGR} - GL_RED_MAX_CLAMP_INGR = $8564; - {$EXTERNALSYM GL_RED_MAX_CLAMP_INGR} - GL_GREEN_MAX_CLAMP_INGR = $8565; - {$EXTERNALSYM GL_GREEN_MAX_CLAMP_INGR} - GL_BLUE_MAX_CLAMP_INGR = $8566; - {$EXTERNALSYM GL_BLUE_MAX_CLAMP_INGR} - GL_ALPHA_MAX_CLAMP_INGR = $8567; - {$EXTERNALSYM GL_ALPHA_MAX_CLAMP_INGR} - - // GL_INGR_interlace_read - GL_INTERLACE_READ_INGR = $8568; - {$EXTERNALSYM GL_INTERLACE_READ_INGR} - - // GL_EXT_422_pixels - GL_422_EXT = $80CC; - {$EXTERNALSYM GL_422_EXT} - GL_422_REV_EXT = $80CD; - {$EXTERNALSYM GL_422_REV_EXT} - GL_422_AVERAGE_EXT = $80CE; - {$EXTERNALSYM GL_422_AVERAGE_EXT} - GL_422_REV_AVERAGE_EXT = $80CF; - {$EXTERNALSYM GL_422_REV_AVERAGE_EXT} - - // GL_EXT_texture_cube_map - GL_NORMAL_MAP_EXT = $8511; - {$EXTERNALSYM GL_NORMAL_MAP_EXT} - GL_REFLECTION_MAP_EXT = $8512; - {$EXTERNALSYM GL_REFLECTION_MAP_EXT} - GL_TEXTURE_CUBE_MAP_EXT = $8513; - {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_EXT} - GL_TEXTURE_BINDING_CUBE_MAP_EXT = $8514; - {$EXTERNALSYM GL_TEXTURE_BINDING_CUBE_MAP_EXT} - GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT = $8515; - {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT} - GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT = $8516; - {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT} - GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT = $8517; - {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT} - GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT = $8518; - {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT} - GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT = $8519; - {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT} - GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT = $851A; - {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT} - GL_PROXY_TEXTURE_CUBE_MAP_EXT = $851B; - {$EXTERNALSYM GL_PROXY_TEXTURE_CUBE_MAP_EXT} - GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT = $851C; - {$EXTERNALSYM GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT} - - // GL_SUN_convolution_border_modes - GL_WRAP_BORDER_SUN = $81D4; - {$EXTERNALSYM GL_WRAP_BORDER_SUN} - - // GL_EXT_texture_lod_bias - GL_MAX_TEXTURE_LOD_BIAS_EXT = $84FD; - {$EXTERNALSYM GL_MAX_TEXTURE_LOD_BIAS_EXT} - GL_TEXTURE_FILTER_CONTROL_EXT = $8500; - {$EXTERNALSYM GL_TEXTURE_FILTER_CONTROL_EXT} - GL_TEXTURE_LOD_BIAS_EXT = $8501; - {$EXTERNALSYM GL_TEXTURE_LOD_BIAS_EXT} - - // GL_EXT_texture_filter_anisotropic - GL_TEXTURE_MAX_ANISOTROPY_EXT = $84FE; - {$EXTERNALSYM GL_TEXTURE_MAX_ANISOTROPY_EXT} - GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = $84FF; - {$EXTERNALSYM GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT} - - // GL_EXT_vertex_weighting - GL_MODELVIEW0_STACK_DEPTH_EXT = GL_MODELVIEW_STACK_DEPTH; - {$EXTERNALSYM GL_MODELVIEW0_STACK_DEPTH_EXT} - GL_MODELVIEW1_STACK_DEPTH_EXT = $8502; - {$EXTERNALSYM GL_MODELVIEW1_STACK_DEPTH_EXT} - GL_MODELVIEW0_MATRIX_EXT = GL_MODELVIEW_MATRIX; - {$EXTERNALSYM GL_MODELVIEW0_MATRIX_EXT} - GL_MODELVIEW_MATRIX1_EXT = $8506; - {$EXTERNALSYM GL_MODELVIEW_MATRIX1_EXT} - GL_VERTEX_WEIGHTING_EXT = $8509; - {$EXTERNALSYM GL_VERTEX_WEIGHTING_EXT} - GL_MODELVIEW0_EXT = GL_MODELVIEW; - {$EXTERNALSYM GL_MODELVIEW0_EXT} - GL_MODELVIEW1_EXT = $850A; - {$EXTERNALSYM GL_MODELVIEW1_EXT} - GL_CURRENT_VERTEX_WEIGHT_EXT = $850B; - {$EXTERNALSYM GL_CURRENT_VERTEX_WEIGHT_EXT} - GL_VERTEX_WEIGHT_ARRAY_EXT = $850C; - {$EXTERNALSYM GL_VERTEX_WEIGHT_ARRAY_EXT} - GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT = $850D; - {$EXTERNALSYM GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT} - GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT = $850E; - {$EXTERNALSYM GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT} - GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT = $850F; - {$EXTERNALSYM GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT} - GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT = $8510; - {$EXTERNALSYM GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT} - - // GL_NV_light_max_exponent - GL_MAX_SHININESS_NV = $8504; - {$EXTERNALSYM GL_MAX_SHININESS_NV} - GL_MAX_SPOT_EXPONENT_NV = $8505; - {$EXTERNALSYM GL_MAX_SPOT_EXPONENT_NV} - - // GL_NV_vertex_array_range - GL_VERTEX_ARRAY_RANGE_NV = $851D; - {$EXTERNALSYM GL_VERTEX_ARRAY_RANGE_NV} - GL_VERTEX_ARRAY_RANGE_LENGTH_NV = $851E; - {$EXTERNALSYM GL_VERTEX_ARRAY_RANGE_LENGTH_NV} - GL_VERTEX_ARRAY_RANGE_VALID_NV = $851F; - {$EXTERNALSYM GL_VERTEX_ARRAY_RANGE_VALID_NV} - GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV = $8520; - {$EXTERNALSYM GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV} - GL_VERTEX_ARRAY_RANGE_POINTER_NV = $8521; - {$EXTERNALSYM GL_VERTEX_ARRAY_RANGE_POINTER_NV} - - // GL_NV_register_combiners - GL_REGISTER_COMBINERS_NV = $8522; - {$EXTERNALSYM GL_REGISTER_COMBINERS_NV} - GL_VARIABLE_A_NV = $8523; - {$EXTERNALSYM GL_VARIABLE_A_NV} - GL_VARIABLE_B_NV = $8524; - {$EXTERNALSYM GL_VARIABLE_B_NV} - GL_VARIABLE_C_NV = $8525; - {$EXTERNALSYM GL_VARIABLE_C_NV} - GL_VARIABLE_D_NV = $8526; - {$EXTERNALSYM GL_VARIABLE_D_NV} - GL_VARIABLE_E_NV = $8527; - {$EXTERNALSYM GL_VARIABLE_E_NV} - GL_VARIABLE_F_NV = $8528; - {$EXTERNALSYM GL_VARIABLE_F_NV} - GL_VARIABLE_G_NV = $8529; - {$EXTERNALSYM GL_VARIABLE_G_NV} - GL_CONSTANT_COLOR0_NV = $852A; - {$EXTERNALSYM GL_CONSTANT_COLOR0_NV} - GL_CONSTANT_COLOR1_NV = $852B; - {$EXTERNALSYM GL_CONSTANT_COLOR1_NV} - GL_PRIMARY_COLOR_NV = $852C; - {$EXTERNALSYM GL_PRIMARY_COLOR_NV} - GL_SECONDARY_COLOR_NV = $852D; - {$EXTERNALSYM GL_SECONDARY_COLOR_NV} - GL_SPARE0_NV = $852E; - {$EXTERNALSYM GL_SPARE0_NV} - GL_SPARE1_NV = $852F; - {$EXTERNALSYM GL_SPARE1_NV} - GL_DISCARD_NV = $8530; - {$EXTERNALSYM GL_DISCARD_NV} - GL_E_TIMES_F_NV = $8531; - {$EXTERNALSYM GL_E_TIMES_F_NV} - GL_SPARE0_PLUS_SECONDARY_COLOR_NV = $8532; - {$EXTERNALSYM GL_SPARE0_PLUS_SECONDARY_COLOR_NV} - GL_UNSIGNED_IDENTITY_NV = $8536; - {$EXTERNALSYM GL_UNSIGNED_IDENTITY_NV} - GL_UNSIGNED_INVERT_NV = $8537; - {$EXTERNALSYM GL_UNSIGNED_INVERT_NV} - GL_EXPAND_NORMAL_NV = $8538; - {$EXTERNALSYM GL_EXPAND_NORMAL_NV} - GL_EXPAND_NEGATE_NV = $8539; - {$EXTERNALSYM GL_EXPAND_NEGATE_NV} - GL_HALF_BIAS_NORMAL_NV = $853A; - {$EXTERNALSYM GL_HALF_BIAS_NORMAL_NV} - GL_HALF_BIAS_NEGATE_NV = $853B; - {$EXTERNALSYM GL_HALF_BIAS_NEGATE_NV} - GL_SIGNED_IDENTITY_NV = $853C; - {$EXTERNALSYM GL_SIGNED_IDENTITY_NV} - GL_SIGNED_NEGATE_NV = $853D; - {$EXTERNALSYM GL_SIGNED_NEGATE_NV} - GL_SCALE_BY_TWO_NV = $853E; - {$EXTERNALSYM GL_SCALE_BY_TWO_NV} - GL_SCALE_BY_FOUR_NV = $853F; - {$EXTERNALSYM GL_SCALE_BY_FOUR_NV} - GL_SCALE_BY_ONE_HALF_NV = $8540; - {$EXTERNALSYM GL_SCALE_BY_ONE_HALF_NV} - GL_BIAS_BY_NEGATIVE_ONE_HALF_NV = $8541; - {$EXTERNALSYM GL_BIAS_BY_NEGATIVE_ONE_HALF_NV} - GL_COMBINER_INPUT_NV = $8542; - {$EXTERNALSYM GL_COMBINER_INPUT_NV} - GL_COMBINER_MAPPING_NV = $8543; - {$EXTERNALSYM GL_COMBINER_MAPPING_NV} - GL_COMBINER_COMPONENT_USAGE_NV = $8544; - {$EXTERNALSYM GL_COMBINER_COMPONENT_USAGE_NV} - GL_COMBINER_AB_DOT_PRODUCT_NV = $8545; - {$EXTERNALSYM GL_COMBINER_AB_DOT_PRODUCT_NV} - GL_COMBINER_CD_DOT_PRODUCT_NV = $8546; - {$EXTERNALSYM GL_COMBINER_CD_DOT_PRODUCT_NV} - GL_COMBINER_MUX_SUM_NV = $8547; - {$EXTERNALSYM GL_COMBINER_MUX_SUM_NV} - GL_COMBINER_SCALE_NV = $8548; - {$EXTERNALSYM GL_COMBINER_SCALE_NV} - GL_COMBINER_BIAS_NV = $8549; - {$EXTERNALSYM GL_COMBINER_BIAS_NV} - GL_COMBINER_AB_OUTPUT_NV = $854A; - {$EXTERNALSYM GL_COMBINER_AB_OUTPUT_NV} - GL_COMBINER_CD_OUTPUT_NV = $854B; - {$EXTERNALSYM GL_COMBINER_CD_OUTPUT_NV} - GL_COMBINER_SUM_OUTPUT_NV = $854C; - {$EXTERNALSYM GL_COMBINER_SUM_OUTPUT_NV} - GL_MAX_GENERAL_COMBINERS_NV = $854D; - {$EXTERNALSYM GL_MAX_GENERAL_COMBINERS_NV} - GL_NUM_GENERAL_COMBINERS_NV = $854E; - {$EXTERNALSYM GL_NUM_GENERAL_COMBINERS_NV} - GL_COLOR_SUM_CLAMP_NV = $854F; - {$EXTERNALSYM GL_COLOR_SUM_CLAMP_NV} - GL_COMBINER0_NV = $8550; - {$EXTERNALSYM GL_COMBINER0_NV} - GL_COMBINER1_NV = $8551; - {$EXTERNALSYM GL_COMBINER1_NV} - GL_COMBINER2_NV = $8552; - {$EXTERNALSYM GL_COMBINER2_NV} - GL_COMBINER3_NV = $8553; - {$EXTERNALSYM GL_COMBINER3_NV} - GL_COMBINER4_NV = $8554; - {$EXTERNALSYM GL_COMBINER4_NV} - GL_COMBINER5_NV = $8555; - {$EXTERNALSYM GL_COMBINER5_NV} - GL_COMBINER6_NV = $8556; - {$EXTERNALSYM GL_COMBINER6_NV} - GL_COMBINER7_NV = $8557; - {$EXTERNALSYM GL_COMBINER7_NV} - - // GL_NV_fog_distance - GL_FOG_DISTANCE_MODE_NV = $855A; - {$EXTERNALSYM GL_FOG_DISTANCE_MODE_NV} - GL_EYE_RADIAL_NV = $855B; - {$EXTERNALSYM GL_EYE_RADIAL_NV} - GL_EYE_PLANE_ABSOLUTE_NV = $855C; - {$EXTERNALSYM GL_EYE_PLANE_ABSOLUTE_NV} - - // GL_NV_texgen_emboss - GL_EMBOSS_LIGHT_NV = $855D; - {$EXTERNALSYM GL_EMBOSS_LIGHT_NV} - GL_EMBOSS_CONSTANT_NV = $855E; - {$EXTERNALSYM GL_EMBOSS_CONSTANT_NV} - GL_EMBOSS_MAP_NV = $855F; - {$EXTERNALSYM GL_EMBOSS_MAP_NV} - - // GL_EXT_texture_compression_s3tc - GL_COMPRESSED_RGB_S3TC_DXT1_EXT = $83F0; - {$EXTERNALSYM GL_COMPRESSED_RGB_S3TC_DXT1_EXT} - GL_COMPRESSED_RGBA_S3TC_DXT1_EXT = $83F1; - {$EXTERNALSYM GL_COMPRESSED_RGBA_S3TC_DXT1_EXT} - GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = $83F2; - {$EXTERNALSYM GL_COMPRESSED_RGBA_S3TC_DXT3_EXT} - GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = $83F3; - {$EXTERNALSYM GL_COMPRESSED_RGBA_S3TC_DXT5_EXT} - - // GL_IBM_cull_vertex - GL_CULL_VERTEX_IBM = 103050; - {$EXTERNALSYM GL_CULL_VERTEX_IBM} - - // GL_IBM_vertex_array_lists - GL_VERTEX_ARRAY_LIST_IBM = 103070; - {$EXTERNALSYM GL_VERTEX_ARRAY_LIST_IBM} - GL_NORMAL_ARRAY_LIST_IBM = 103071; - {$EXTERNALSYM GL_NORMAL_ARRAY_LIST_IBM} - GL_COLOR_ARRAY_LIST_IBM = 103072; - {$EXTERNALSYM GL_COLOR_ARRAY_LIST_IBM} - GL_INDEX_ARRAY_LIST_IBM = 103073; - {$EXTERNALSYM GL_INDEX_ARRAY_LIST_IBM} - GL_TEXTURE_COORD_ARRAY_LIST_IBM = 103074; - {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_LIST_IBM} - GL_EDGE_FLAG_ARRAY_LIST_IBM = 103075; - {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_LIST_IBM} - GL_FOG_COORDINATE_ARRAY_LIST_IBM = 103076; - {$EXTERNALSYM GL_FOG_COORDINATE_ARRAY_LIST_IBM} - GL_SECONDARY_COLOR_ARRAY_LIST_IBM = 103077; - {$EXTERNALSYM GL_SECONDARY_COLOR_ARRAY_LIST_IBM} - GL_VERTEX_ARRAY_LIST_STRIDE_IBM = 103080; - {$EXTERNALSYM GL_VERTEX_ARRAY_LIST_STRIDE_IBM} - GL_NORMAL_ARRAY_LIST_STRIDE_IBM = 103081; - {$EXTERNALSYM GL_NORMAL_ARRAY_LIST_STRIDE_IBM} - GL_COLOR_ARRAY_LIST_STRIDE_IBM = 103082; - {$EXTERNALSYM GL_COLOR_ARRAY_LIST_STRIDE_IBM} - GL_INDEX_ARRAY_LIST_STRIDE_IBM = 103083; - {$EXTERNALSYM GL_INDEX_ARRAY_LIST_STRIDE_IBM} - GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM = 103084; - {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM} - GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM = 103085; - {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM} - GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM = 103086; - {$EXTERNALSYM GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM} - GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM = 103087; - {$EXTERNALSYM GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM} - - // GL_SGIX_subsample - GL_PACK_SUBSAMPLE_RATE_SGIX = $85A0; - {$EXTERNALSYM GL_PACK_SUBSAMPLE_RATE_SGIX} - GL_UNPACK_SUBSAMPLE_RATE_SGIX = $85A1; - {$EXTERNALSYM GL_UNPACK_SUBSAMPLE_RATE_SGIX} - GL_PIXEL_SUBSAMPLE_4444_SGIX = $85A2; - {$EXTERNALSYM GL_PIXEL_SUBSAMPLE_4444_SGIX} - GL_PIXEL_SUBSAMPLE_2424_SGIX = $85A3; - {$EXTERNALSYM GL_PIXEL_SUBSAMPLE_2424_SGIX} - GL_PIXEL_SUBSAMPLE_4242_SGIX = $85A4; - {$EXTERNALSYM GL_PIXEL_SUBSAMPLE_4242_SGIX} - - // GL_SGIX_ycrcba - GL_YCRCB_SGIX = $8318; - {$EXTERNALSYM GL_YCRCB_SGIX} - GL_YCRCBA_SGIX = $8319; - {$EXTERNALSYM GL_YCRCBA_SGIX} - - // GL_SGI_depth_pass_instrument - GL_DEPTH_PASS_INSTRUMENT_SGIX = $8310; - {$EXTERNALSYM GL_DEPTH_PASS_INSTRUMENT_SGIX} - GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX = $8311; - {$EXTERNALSYM GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX} - GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX = $8312; - {$EXTERNALSYM GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX} - - // GL_3DFX_texture_compression_FXT1 - GL_COMPRESSED_RGB_FXT1_3DFX = $86B0; - {$EXTERNALSYM GL_COMPRESSED_RGB_FXT1_3DFX} - GL_COMPRESSED_RGBA_FXT1_3DFX = $86B1; - {$EXTERNALSYM GL_COMPRESSED_RGBA_FXT1_3DFX} - - // GL_3DFX_multisample - GL_MULTISAMPLE_3DFX = $86B2; - {$EXTERNALSYM GL_MULTISAMPLE_3DFX} - GL_SAMPLE_BUFFERS_3DFX = $86B3; - {$EXTERNALSYM GL_SAMPLE_BUFFERS_3DFX} - GL_SAMPLES_3DFX = $86B4; - {$EXTERNALSYM GL_SAMPLES_3DFX} - GL_MULTISAMPLE_BIT_3DFX = $20000000; - {$EXTERNALSYM GL_MULTISAMPLE_BIT_3DFX} - - // GL_EXT_multisample - GL_MULTISAMPLE_EXT = $809D; - {$EXTERNALSYM GL_MULTISAMPLE_EXT} - GL_SAMPLE_ALPHA_TO_MASK_EXT = $809E; - {$EXTERNALSYM GL_SAMPLE_ALPHA_TO_MASK_EXT} - GL_SAMPLE_ALPHA_TO_ONE_EXT = $809F; - {$EXTERNALSYM GL_SAMPLE_ALPHA_TO_ONE_EXT} - GL_SAMPLE_MASK_EXT = $80A0; - {$EXTERNALSYM GL_SAMPLE_MASK_EXT} - GL_1PASS_EXT = $80A1; - {$EXTERNALSYM GL_1PASS_EXT} - GL_2PASS_0_EXT = $80A2; - {$EXTERNALSYM GL_2PASS_0_EXT} - GL_2PASS_1_EXT = $80A3; - {$EXTERNALSYM GL_2PASS_1_EXT} - GL_4PASS_0_EXT = $80A4; - {$EXTERNALSYM GL_4PASS_0_EXT} - GL_4PASS_1_EXT = $80A5; - {$EXTERNALSYM GL_4PASS_1_EXT} - GL_4PASS_2_EXT = $80A6; - {$EXTERNALSYM GL_4PASS_2_EXT} - GL_4PASS_3_EXT = $80A7; - {$EXTERNALSYM GL_4PASS_3_EXT} - GL_SAMPLE_BUFFERS_EXT = $80A8; - {$EXTERNALSYM GL_SAMPLE_BUFFERS_EXT} - GL_SAMPLES_EXT = $80A9; - {$EXTERNALSYM GL_SAMPLES_EXT} - GL_SAMPLE_MASK_VALUE_EXT = $80AA; - {$EXTERNALSYM GL_SAMPLE_MASK_VALUE_EXT} - GL_SAMPLE_MASK_INVERT_EXT = $80AB; - {$EXTERNALSYM GL_SAMPLE_MASK_INVERT_EXT} - GL_SAMPLE_PATTERN_EXT = $80AC; - {$EXTERNALSYM GL_SAMPLE_PATTERN_EXT} - - // GL_SGIX_vertex_preclip - GL_VERTEX_PRECLIP_SGIX = $83EE; - {$EXTERNALSYM GL_VERTEX_PRECLIP_SGIX} - GL_VERTEX_PRECLIP_HINT_SGIX = $83EF; - {$EXTERNALSYM GL_VERTEX_PRECLIP_HINT_SGIX} - - // GL_SGIX_convolution_accuracy - GL_CONVOLUTION_HINT_SGIX = $8316; - {$EXTERNALSYM GL_CONVOLUTION_HINT_SGIX} - - // GL_SGIX_resample - GL_PACK_RESAMPLE_SGIX = $842C; - {$EXTERNALSYM GL_PACK_RESAMPLE_SGIX} - GL_UNPACK_RESAMPLE_SGIX = $842D; - {$EXTERNALSYM GL_UNPACK_RESAMPLE_SGIX} - GL_RESAMPLE_REPLICATE_SGIX = $842E; - {$EXTERNALSYM GL_RESAMPLE_REPLICATE_SGIX} - GL_RESAMPLE_ZERO_FILL_SGIX = $842F; - {$EXTERNALSYM GL_RESAMPLE_ZERO_FILL_SGIX} - GL_RESAMPLE_DECIMATE_SGIX = $8430; - {$EXTERNALSYM GL_RESAMPLE_DECIMATE_SGIX} - - // GL_SGIS_point_line_texgen - GL_EYE_DISTANCE_TO_POINT_SGIS = $81F0; - {$EXTERNALSYM GL_EYE_DISTANCE_TO_POINT_SGIS} - GL_OBJECT_DISTANCE_TO_POINT_SGIS = $81F1; - {$EXTERNALSYM GL_OBJECT_DISTANCE_TO_POINT_SGIS} - GL_EYE_DISTANCE_TO_LINE_SGIS = $81F2; - {$EXTERNALSYM GL_EYE_DISTANCE_TO_LINE_SGIS} - GL_OBJECT_DISTANCE_TO_LINE_SGIS = $81F3; - {$EXTERNALSYM GL_OBJECT_DISTANCE_TO_LINE_SGIS} - GL_EYE_POINT_SGIS = $81F4; - {$EXTERNALSYM GL_EYE_POINT_SGIS} - GL_OBJECT_POINT_SGIS = $81F5; - {$EXTERNALSYM GL_OBJECT_POINT_SGIS} - GL_EYE_LINE_SGIS = $81F6; - {$EXTERNALSYM GL_EYE_LINE_SGIS} - GL_OBJECT_LINE_SGIS = $81F7; - {$EXTERNALSYM GL_OBJECT_LINE_SGIS} - - // GL_SGIS_texture_color_mask - GL_TEXTURE_COLOR_WRITEMASK_SGIS = $81EF; - {$EXTERNALSYM GL_TEXTURE_COLOR_WRITEMASK_SGIS} - - // GL_NV_vertex_program - GL_VERTEX_PROGRAM_NV = $8620; - {$EXTERNALSYM GL_VERTEX_PROGRAM_NV} - GL_VERTEX_STATE_PROGRAM_NV = $8621; - {$EXTERNALSYM GL_VERTEX_STATE_PROGRAM_NV} - GL_ATTRIB_ARRAY_SIZE_NV = $8623; - {$EXTERNALSYM GL_ATTRIB_ARRAY_SIZE_NV} - GL_ATTRIB_ARRAY_STRIDE_NV = $8624; - {$EXTERNALSYM GL_ATTRIB_ARRAY_STRIDE_NV} - GL_ATTRIB_ARRAY_TYPE_NV = $8625; - {$EXTERNALSYM GL_ATTRIB_ARRAY_TYPE_NV} - GL_CURRENT_ATTRIB_NV = $8626; - {$EXTERNALSYM GL_CURRENT_ATTRIB_NV} - GL_PROGRAM_LENGTH_NV = $8627; - {$EXTERNALSYM GL_PROGRAM_LENGTH_NV} - GL_PROGRAM_STRING_NV = $8628; - {$EXTERNALSYM GL_PROGRAM_STRING_NV} - GL_MODELVIEW_PROJECTION_NV = $8629; - {$EXTERNALSYM GL_MODELVIEW_PROJECTION_NV} - GL_IDENTITY_NV = $862A; - {$EXTERNALSYM GL_IDENTITY_NV} - GL_INVERSE_NV = $862B; - {$EXTERNALSYM GL_INVERSE_NV} - GL_TRANSPOSE_NV = $862C; - {$EXTERNALSYM GL_TRANSPOSE_NV} - GL_INVERSE_TRANSPOSE_NV = $862D; - {$EXTERNALSYM GL_INVERSE_TRANSPOSE_NV} - GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV = $862E; - {$EXTERNALSYM GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV} - GL_MAX_TRACK_MATRICES_NV = $862F; - {$EXTERNALSYM GL_MAX_TRACK_MATRICES_NV} - GL_MATRIX0_NV = $8630; - {$EXTERNALSYM GL_MATRIX0_NV} - GL_MATRIX1_NV = $8631; - {$EXTERNALSYM GL_MATRIX1_NV} - GL_MATRIX2_NV = $8632; - {$EXTERNALSYM GL_MATRIX2_NV} - GL_MATRIX3_NV = $8633; - {$EXTERNALSYM GL_MATRIX3_NV} - GL_MATRIX4_NV = $8634; - {$EXTERNALSYM GL_MATRIX4_NV} - GL_MATRIX5_NV = $8635; - {$EXTERNALSYM GL_MATRIX5_NV} - GL_MATRIX6_NV = $8636; - {$EXTERNALSYM GL_MATRIX6_NV} - GL_MATRIX7_NV = $8637; - {$EXTERNALSYM GL_MATRIX7_NV} - GL_CURRENT_MATRIX_STACK_DEPTH_NV = $8640; - {$EXTERNALSYM GL_CURRENT_MATRIX_STACK_DEPTH_NV} - GL_CURRENT_MATRIX_NV = $8641; - {$EXTERNALSYM GL_CURRENT_MATRIX_NV} - GL_VERTEX_PROGRAM_POINT_SIZE_NV = $8642; - {$EXTERNALSYM GL_VERTEX_PROGRAM_POINT_SIZE_NV} - GL_VERTEX_PROGRAM_TWO_SIDE_NV = $8643; - {$EXTERNALSYM GL_VERTEX_PROGRAM_TWO_SIDE_NV} - GL_PROGRAM_PARAMETER_NV = $8644; - {$EXTERNALSYM GL_PROGRAM_PARAMETER_NV} - GL_ATTRIB_ARRAY_POINTER_NV = $8645; - {$EXTERNALSYM GL_ATTRIB_ARRAY_POINTER_NV} - GL_PROGRAM_TARGET_NV = $8646; - {$EXTERNALSYM GL_PROGRAM_TARGET_NV} - GL_PROGRAM_RESIDENT_NV = $8647; - {$EXTERNALSYM GL_PROGRAM_RESIDENT_NV} - GL_TRACK_MATRIX_NV = $8648; - {$EXTERNALSYM GL_TRACK_MATRIX_NV} - GL_TRACK_MATRIX_TRANSFORM_NV = $8649; - {$EXTERNALSYM GL_TRACK_MATRIX_TRANSFORM_NV} - GL_VERTEX_PROGRAM_BINDING_NV = $864A; - {$EXTERNALSYM GL_VERTEX_PROGRAM_BINDING_NV} - GL_PROGRAM_ERROR_POSITION_NV = $864B; - {$EXTERNALSYM GL_PROGRAM_ERROR_POSITION_NV} - GL_VERTEX_ATTRIB_ARRAY0_NV = $8650; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY0_NV} - GL_VERTEX_ATTRIB_ARRAY1_NV = $8651; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY1_NV} - GL_VERTEX_ATTRIB_ARRAY2_NV = $8652; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY2_NV} - GL_VERTEX_ATTRIB_ARRAY3_NV = $8653; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY3_NV} - GL_VERTEX_ATTRIB_ARRAY4_NV = $8654; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY4_NV} - GL_VERTEX_ATTRIB_ARRAY5_NV = $8655; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY5_NV} - GL_VERTEX_ATTRIB_ARRAY6_NV = $8656; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY6_NV} - GL_VERTEX_ATTRIB_ARRAY7_NV = $8657; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY7_NV} - GL_VERTEX_ATTRIB_ARRAY8_NV = $8658; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY8_NV} - GL_VERTEX_ATTRIB_ARRAY9_NV = $8659; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY9_NV} - GL_VERTEX_ATTRIB_ARRAY10_NV = $865A; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY10_NV} - GL_VERTEX_ATTRIB_ARRAY11_NV = $865B; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY11_NV} - GL_VERTEX_ATTRIB_ARRAY12_NV = $865C; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY12_NV} - GL_VERTEX_ATTRIB_ARRAY13_NV = $865D; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY13_NV} - GL_VERTEX_ATTRIB_ARRAY14_NV = $865E; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY14_NV} - GL_VERTEX_ATTRIB_ARRAY15_NV = $865F; - {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY15_NV} - GL_MAP1_VERTEX_ATTRIB0_4_NV = $8660; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB0_4_NV} - GL_MAP1_VERTEX_ATTRIB1_4_NV = $8661; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB1_4_NV} - GL_MAP1_VERTEX_ATTRIB2_4_NV = $8662; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB2_4_NV} - GL_MAP1_VERTEX_ATTRIB3_4_NV = $8663; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB3_4_NV} - GL_MAP1_VERTEX_ATTRIB4_4_NV = $8664; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB4_4_NV} - GL_MAP1_VERTEX_ATTRIB5_4_NV = $8665; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB5_4_NV} - GL_MAP1_VERTEX_ATTRIB6_4_NV = $8666; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB6_4_NV} - GL_MAP1_VERTEX_ATTRIB7_4_NV = $8667; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB7_4_NV} - GL_MAP1_VERTEX_ATTRIB8_4_NV = $8668; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB8_4_NV} - GL_MAP1_VERTEX_ATTRIB9_4_NV = $8669; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB9_4_NV} - GL_MAP1_VERTEX_ATTRIB10_4_NV = $866A; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB10_4_NV} - GL_MAP1_VERTEX_ATTRIB11_4_NV = $866B; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB11_4_NV} - GL_MAP1_VERTEX_ATTRIB12_4_NV = $866C; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB12_4_NV} - GL_MAP1_VERTEX_ATTRIB13_4_NV = $866D; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB13_4_NV} - GL_MAP1_VERTEX_ATTRIB14_4_NV = $866E; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB14_4_NV} - GL_MAP1_VERTEX_ATTRIB15_4_NV = $866F; - {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB15_4_NV} - GL_MAP2_VERTEX_ATTRIB0_4_NV = $8670; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB0_4_NV} - GL_MAP2_VERTEX_ATTRIB1_4_NV = $8671; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB1_4_NV} - GL_MAP2_VERTEX_ATTRIB2_4_NV = $8672; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB2_4_NV} - GL_MAP2_VERTEX_ATTRIB3_4_NV = $8673; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB3_4_NV} - GL_MAP2_VERTEX_ATTRIB4_4_NV = $8674; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB4_4_NV} - GL_MAP2_VERTEX_ATTRIB5_4_NV = $8675; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB5_4_NV} - GL_MAP2_VERTEX_ATTRIB6_4_NV = $8676; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB6_4_NV} - GL_MAP2_VERTEX_ATTRIB7_4_NV = $8677; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB7_4_NV} - GL_MAP2_VERTEX_ATTRIB8_4_NV = $8678; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB8_4_NV} - GL_MAP2_VERTEX_ATTRIB9_4_NV = $8679; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB9_4_NV} - GL_MAP2_VERTEX_ATTRIB10_4_NV = $867A; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB10_4_NV} - GL_MAP2_VERTEX_ATTRIB11_4_NV = $867B; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB11_4_NV} - GL_MAP2_VERTEX_ATTRIB12_4_NV = $867C; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB12_4_NV} - GL_MAP2_VERTEX_ATTRIB13_4_NV = $867D; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB13_4_NV} - GL_MAP2_VERTEX_ATTRIB14_4_NV = $867E; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB14_4_NV} - GL_MAP2_VERTEX_ATTRIB15_4_NV = $867F; - {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB15_4_NV} - - // WGL_ARB_pixel_format - WGL_NUMBER_PIXEL_FORMATS_ARB = $2000; - {$EXTERNALSYM WGL_NUMBER_PIXEL_FORMATS_ARB} - WGL_DRAW_TO_WINDOW_ARB = $2001; - {$EXTERNALSYM WGL_DRAW_TO_WINDOW_ARB} - WGL_DRAW_TO_BITMAP_ARB = $2002; - {$EXTERNALSYM WGL_DRAW_TO_BITMAP_ARB} - WGL_ACCELERATION_ARB = $2003; - {$EXTERNALSYM WGL_ACCELERATION_ARB} - WGL_NEED_PALETTE_ARB = $2004; - {$EXTERNALSYM WGL_NEED_PALETTE_ARB} - WGL_NEED_SYSTEM_PALETTE_ARB = $2005; - {$EXTERNALSYM WGL_NEED_SYSTEM_PALETTE_ARB} - WGL_SWAP_LAYER_BUFFERS_ARB = $2006; - {$EXTERNALSYM WGL_SWAP_LAYER_BUFFERS_ARB} - WGL_SWAP_METHOD_ARB = $2007; - {$EXTERNALSYM WGL_SWAP_METHOD_ARB} - WGL_NUMBER_OVERLAYS_ARB = $2008; - {$EXTERNALSYM WGL_NUMBER_OVERLAYS_ARB} - WGL_NUMBER_UNDERLAYS_ARB = $2009; - {$EXTERNALSYM WGL_NUMBER_UNDERLAYS_ARB} - WGL_TRANSPARENT_ARB = $200A; - {$EXTERNALSYM WGL_TRANSPARENT_ARB} - WGL_TRANSPARENT_RED_VALUE_ARB = $2037; - {$EXTERNALSYM WGL_TRANSPARENT_RED_VALUE_ARB} - WGL_TRANSPARENT_GREEN_VALUE_ARB = $2038; - {$EXTERNALSYM WGL_TRANSPARENT_GREEN_VALUE_ARB} - WGL_TRANSPARENT_BLUE_VALUE_ARB = $2039; - {$EXTERNALSYM WGL_TRANSPARENT_BLUE_VALUE_ARB} - WGL_TRANSPARENT_ALPHA_VALUE_ARB = $203A; - {$EXTERNALSYM WGL_TRANSPARENT_ALPHA_VALUE_ARB} - WGL_TRANSPARENT_INDEX_VALUE_ARB = $203B; - {$EXTERNALSYM WGL_TRANSPARENT_INDEX_VALUE_ARB} - WGL_SHARE_DEPTH_ARB = $200C; - {$EXTERNALSYM WGL_SHARE_DEPTH_ARB} - WGL_SHARE_STENCIL_ARB = $200D; - {$EXTERNALSYM WGL_SHARE_STENCIL_ARB} - WGL_SHARE_ACCUM_ARB = $200E; - {$EXTERNALSYM WGL_SHARE_ACCUM_ARB} - WGL_SUPPORT_GDI_ARB = $200F; - {$EXTERNALSYM WGL_SUPPORT_GDI_ARB} - WGL_SUPPORT_OPENGL_ARB = $2010; - {$EXTERNALSYM WGL_SUPPORT_OPENGL_ARB} - WGL_DOUBLE_BUFFER_ARB = $2011; - {$EXTERNALSYM WGL_DOUBLE_BUFFER_ARB} - WGL_STEREO_ARB = $2012; - {$EXTERNALSYM WGL_STEREO_ARB} - WGL_PIXEL_TYPE_ARB = $2013; - {$EXTERNALSYM WGL_PIXEL_TYPE_ARB} - WGL_COLOR_BITS_ARB = $2014; - {$EXTERNALSYM WGL_COLOR_BITS_ARB} - WGL_RED_BITS_ARB = $2015; - {$EXTERNALSYM WGL_RED_BITS_ARB} - WGL_RED_SHIFT_ARB = $2016; - {$EXTERNALSYM WGL_RED_SHIFT_ARB} - WGL_GREEN_BITS_ARB = $2017; - {$EXTERNALSYM WGL_GREEN_BITS_ARB} - WGL_GREEN_SHIFT_ARB = $2018; - {$EXTERNALSYM WGL_GREEN_SHIFT_ARB} - WGL_BLUE_BITS_ARB = $2019; - {$EXTERNALSYM WGL_BLUE_BITS_ARB} - WGL_BLUE_SHIFT_ARB = $201A; - {$EXTERNALSYM WGL_BLUE_SHIFT_ARB} - WGL_ALPHA_BITS_ARB = $201B; - {$EXTERNALSYM WGL_ALPHA_BITS_ARB} - WGL_ALPHA_SHIFT_ARB = $201C; - {$EXTERNALSYM WGL_ALPHA_SHIFT_ARB} - WGL_ACCUM_BITS_ARB = $201D; - {$EXTERNALSYM WGL_ACCUM_BITS_ARB} - WGL_ACCUM_RED_BITS_ARB = $201E; - {$EXTERNALSYM WGL_ACCUM_RED_BITS_ARB} - WGL_ACCUM_GREEN_BITS_ARB = $201F; - {$EXTERNALSYM WGL_ACCUM_GREEN_BITS_ARB} - WGL_ACCUM_BLUE_BITS_ARB = $2020; - {$EXTERNALSYM WGL_ACCUM_BLUE_BITS_ARB} - WGL_ACCUM_ALPHA_BITS_ARB = $2021; - {$EXTERNALSYM WGL_ACCUM_ALPHA_BITS_ARB} - WGL_DEPTH_BITS_ARB = $2022; - {$EXTERNALSYM WGL_DEPTH_BITS_ARB} - WGL_STENCIL_BITS_ARB = $2023; - {$EXTERNALSYM WGL_STENCIL_BITS_ARB} - WGL_AUX_BUFFERS_ARB = $2024; - {$EXTERNALSYM WGL_AUX_BUFFERS_ARB} - WGL_NO_ACCELERATION_ARB = $2025; - {$EXTERNALSYM WGL_NO_ACCELERATION_ARB} - WGL_GENERIC_ACCELERATION_ARB = $2026; - {$EXTERNALSYM WGL_GENERIC_ACCELERATION_ARB} - WGL_FULL_ACCELERATION_ARB = $2027; - {$EXTERNALSYM WGL_FULL_ACCELERATION_ARB} - WGL_SWAP_EXCHANGE_ARB = $2028; - {$EXTERNALSYM WGL_SWAP_EXCHANGE_ARB} - WGL_SWAP_COPY_ARB = $2029; - {$EXTERNALSYM WGL_SWAP_COPY_ARB} - WGL_SWAP_UNDEFINED_ARB = $202A; - {$EXTERNALSYM WGL_SWAP_UNDEFINED_ARB} - WGL_TYPE_RGBA_ARB = $202B; - {$EXTERNALSYM WGL_TYPE_RGBA_ARB} - WGL_TYPE_COLORINDEX_ARB = $202C; - {$EXTERNALSYM WGL_TYPE_COLORINDEX_ARB} - - - // ********** GLU generic constants ********** - - // Errors: (return value 0 = no error) - GLU_INVALID_ENUM = 100900; - {$EXTERNALSYM GLU_INVALID_ENUM} - GLU_INVALID_VALUE = 100901; - {$EXTERNALSYM GLU_INVALID_VALUE} - GLU_OUT_OF_MEMORY = 100902; - {$EXTERNALSYM GLU_OUT_OF_MEMORY} - GLU_INCOMPATIBLE_GL_VERSION = 100903; - {$EXTERNALSYM GLU_INCOMPATIBLE_GL_VERSION} - - // StringName - GLU_VERSION = 100800; - {$EXTERNALSYM GLU_VERSION} - GLU_EXTENSIONS = 100801; - {$EXTERNALSYM GLU_EXTENSIONS} - - // Boolean - GLU_TRUE = GL_TRUE; - {$EXTERNALSYM GLU_TRUE} - GLU_FALSE = GL_FALSE; - {$EXTERNALSYM GLU_FALSE} - - // Quadric constants - // QuadricNormal - GLU_SMOOTH = 100000; - {$EXTERNALSYM GLU_SMOOTH} - GLU_FLAT = 100001; - {$EXTERNALSYM GLU_FLAT} - GLU_NONE = 100002; - {$EXTERNALSYM GLU_NONE} - - // QuadricDrawStyle - GLU_POINT = 100010; - {$EXTERNALSYM GLU_POINT} - GLU_LINE = 100011; - {$EXTERNALSYM GLU_LINE} - GLU_FILL = 100012; - {$EXTERNALSYM GLU_FILL} - GLU_SILHOUETTE = 100013; - {$EXTERNALSYM GLU_SILHOUETTE} - - // QuadricOrientation - GLU_OUTSIDE = 100020; - {$EXTERNALSYM GLU_OUTSIDE} - GLU_INSIDE = 100021; - {$EXTERNALSYM GLU_INSIDE} - - // Tesselation constants - GLU_TESS_MAX_COORD = 1.0e150; - {$EXTERNALSYM GLU_TESS_MAX_COORD} - - // TessProperty - GLU_TESS_WINDING_RULE = 100140; - {$EXTERNALSYM GLU_TESS_WINDING_RULE} - GLU_TESS_BOUNDARY_ONLY = 100141; - {$EXTERNALSYM GLU_TESS_BOUNDARY_ONLY} - GLU_TESS_TOLERANCE = 100142; - {$EXTERNALSYM GLU_TESS_TOLERANCE} - - // TessWinding - GLU_TESS_WINDING_ODD = 100130; - {$EXTERNALSYM GLU_TESS_WINDING_ODD} - GLU_TESS_WINDING_NONZERO = 100131; - {$EXTERNALSYM GLU_TESS_WINDING_NONZERO} - GLU_TESS_WINDING_POSITIVE = 100132; - {$EXTERNALSYM GLU_TESS_WINDING_POSITIVE} - GLU_TESS_WINDING_NEGATIVE = 100133; - {$EXTERNALSYM GLU_TESS_WINDING_NEGATIVE} - GLU_TESS_WINDING_ABS_GEQ_TWO = 100134; - {$EXTERNALSYM GLU_TESS_WINDING_ABS_GEQ_TWO} - - // TessCallback - GLU_TESS_BEGIN = 100100; // TGLUTessBeginProc - {$EXTERNALSYM GLU_TESS_BEGIN} - GLU_TESS_VERTEX = 100101; // TGLUTessVertexProc - {$EXTERNALSYM GLU_TESS_VERTEX} - GLU_TESS_END = 100102; // TGLUTessEndProc - {$EXTERNALSYM GLU_TESS_END} - GLU_TESS_ERROR = 100103; // TGLUTessErrorProc - {$EXTERNALSYM GLU_TESS_ERROR} - GLU_TESS_EDGE_FLAG = 100104; // TGLUTessEdgeFlagProc - {$EXTERNALSYM GLU_TESS_EDGE_FLAG} - GLU_TESS_COMBINE = 100105; // TGLUTessCombineProc - {$EXTERNALSYM GLU_TESS_COMBINE} - GLU_TESS_BEGIN_DATA = 100106; // TGLUTessBeginDataProc - {$EXTERNALSYM GLU_TESS_BEGIN_DATA} - GLU_TESS_VERTEX_DATA = 100107; // TGLUTessVertexDataProc - {$EXTERNALSYM GLU_TESS_VERTEX_DATA} - GLU_TESS_END_DATA = 100108; // TGLUTessEndDataProc - {$EXTERNALSYM GLU_TESS_END_DATA} - GLU_TESS_ERROR_DATA = 100109; // TGLUTessErrorDataProc - {$EXTERNALSYM GLU_TESS_ERROR_DATA} - GLU_TESS_EDGE_FLAG_DATA = 100110; // TGLUTessEdgeFlagDataProc - {$EXTERNALSYM GLU_TESS_EDGE_FLAG_DATA} - GLU_TESS_COMBINE_DATA = 100111; // TGLUTessCombineDataProc - {$EXTERNALSYM GLU_TESS_COMBINE_DATA} - - // TessError - GLU_TESS_ERROR1 = 100151; - {$EXTERNALSYM GLU_TESS_ERROR1} - GLU_TESS_ERROR2 = 100152; - {$EXTERNALSYM GLU_TESS_ERROR2} - GLU_TESS_ERROR3 = 100153; - {$EXTERNALSYM GLU_TESS_ERROR3} - GLU_TESS_ERROR4 = 100154; - {$EXTERNALSYM GLU_TESS_ERROR4} - GLU_TESS_ERROR5 = 100155; - {$EXTERNALSYM GLU_TESS_ERROR5} - GLU_TESS_ERROR6 = 100156; - {$EXTERNALSYM GLU_TESS_ERROR6} - GLU_TESS_ERROR7 = 100157; - {$EXTERNALSYM GLU_TESS_ERROR7} - GLU_TESS_ERROR8 = 100158; - {$EXTERNALSYM GLU_TESS_ERROR8} - - GLU_TESS_MISSING_BEGIN_POLYGON = GLU_TESS_ERROR1; - {$EXTERNALSYM GLU_TESS_MISSING_BEGIN_POLYGON} - GLU_TESS_MISSING_BEGIN_CONTOUR = GLU_TESS_ERROR2; - {$EXTERNALSYM GLU_TESS_MISSING_BEGIN_CONTOUR} - GLU_TESS_MISSING_END_POLYGON = GLU_TESS_ERROR3; - {$EXTERNALSYM GLU_TESS_MISSING_END_POLYGON} - GLU_TESS_MISSING_END_CONTOUR = GLU_TESS_ERROR4; - {$EXTERNALSYM GLU_TESS_MISSING_END_CONTOUR} - GLU_TESS_COORD_TOO_LARGE = GLU_TESS_ERROR5; - {$EXTERNALSYM GLU_TESS_COORD_TOO_LARGE} - GLU_TESS_NEED_COMBINE_CALLBACK = GLU_TESS_ERROR6; - {$EXTERNALSYM GLU_TESS_NEED_COMBINE_CALLBACK} - - // NURBS constants - - // NurbsProperty - GLU_AUTO_LOAD_MATRIX = 100200; - {$EXTERNALSYM GLU_AUTO_LOAD_MATRIX} - GLU_CULLING = 100201; - {$EXTERNALSYM GLU_CULLING} - GLU_SAMPLING_TOLERANCE = 100203; - {$EXTERNALSYM GLU_SAMPLING_TOLERANCE} - GLU_DISPLAY_MODE = 100204; - {$EXTERNALSYM GLU_DISPLAY_MODE} - GLU_PARAMETRIC_TOLERANCE = 100202; - {$EXTERNALSYM GLU_PARAMETRIC_TOLERANCE} - GLU_SAMPLING_METHOD = 100205; - {$EXTERNALSYM GLU_SAMPLING_METHOD} - GLU_U_STEP = 100206; - {$EXTERNALSYM GLU_U_STEP} - GLU_V_STEP = 100207; - {$EXTERNALSYM GLU_V_STEP} - - // NurbsSampling - GLU_PATH_LENGTH = 100215; - {$EXTERNALSYM GLU_PATH_LENGTH} - GLU_PARAMETRIC_ERROR = 100216; - {$EXTERNALSYM GLU_PARAMETRIC_ERROR} - GLU_DOMAIN_DISTANCE = 100217; - {$EXTERNALSYM GLU_DOMAIN_DISTANCE} - - // NurbsTrim - GLU_MAP1_TRIM_2 = 100210; - {$EXTERNALSYM GLU_MAP1_TRIM_2} - GLU_MAP1_TRIM_3 = 100211; - {$EXTERNALSYM GLU_MAP1_TRIM_3} - - // NurbsDisplay - GLU_OUTLINE_POLYGON = 100240; - {$EXTERNALSYM GLU_OUTLINE_POLYGON} - GLU_OUTLINE_PATCH = 100241; - {$EXTERNALSYM GLU_OUTLINE_PATCH} - - // NurbsErrors - GLU_NURBS_ERROR1 = 100251; - {$EXTERNALSYM GLU_NURBS_ERROR1} - GLU_NURBS_ERROR2 = 100252; - {$EXTERNALSYM GLU_NURBS_ERROR2} - GLU_NURBS_ERROR3 = 100253; - {$EXTERNALSYM GLU_NURBS_ERROR3} - GLU_NURBS_ERROR4 = 100254; - {$EXTERNALSYM GLU_NURBS_ERROR4} - GLU_NURBS_ERROR5 = 100255; - {$EXTERNALSYM GLU_NURBS_ERROR5} - GLU_NURBS_ERROR6 = 100256; - {$EXTERNALSYM GLU_NURBS_ERROR6} - GLU_NURBS_ERROR7 = 100257; - {$EXTERNALSYM GLU_NURBS_ERROR7} - GLU_NURBS_ERROR8 = 100258; - {$EXTERNALSYM GLU_NURBS_ERROR8} - GLU_NURBS_ERROR9 = 100259; - {$EXTERNALSYM GLU_NURBS_ERROR9} - GLU_NURBS_ERROR10 = 100260; - {$EXTERNALSYM GLU_NURBS_ERROR10} - GLU_NURBS_ERROR11 = 100261; - {$EXTERNALSYM GLU_NURBS_ERROR11} - GLU_NURBS_ERROR12 = 100262; - {$EXTERNALSYM GLU_NURBS_ERROR12} - GLU_NURBS_ERROR13 = 100263; - {$EXTERNALSYM GLU_NURBS_ERROR13} - GLU_NURBS_ERROR14 = 100264; - {$EXTERNALSYM GLU_NURBS_ERROR14} - GLU_NURBS_ERROR15 = 100265; - {$EXTERNALSYM GLU_NURBS_ERROR15} - GLU_NURBS_ERROR16 = 100266; - {$EXTERNALSYM GLU_NURBS_ERROR16} - GLU_NURBS_ERROR17 = 100267; - {$EXTERNALSYM GLU_NURBS_ERROR17} - GLU_NURBS_ERROR18 = 100268; - {$EXTERNALSYM GLU_NURBS_ERROR18} - GLU_NURBS_ERROR19 = 100269; - {$EXTERNALSYM GLU_NURBS_ERROR19} - GLU_NURBS_ERROR20 = 100270; - {$EXTERNALSYM GLU_NURBS_ERROR20} - GLU_NURBS_ERROR21 = 100271; - {$EXTERNALSYM GLU_NURBS_ERROR21} - GLU_NURBS_ERROR22 = 100272; - {$EXTERNALSYM GLU_NURBS_ERROR22} - GLU_NURBS_ERROR23 = 100273; - {$EXTERNALSYM GLU_NURBS_ERROR23} - GLU_NURBS_ERROR24 = 100274; - {$EXTERNALSYM GLU_NURBS_ERROR24} - GLU_NURBS_ERROR25 = 100275; - {$EXTERNALSYM GLU_NURBS_ERROR25} - GLU_NURBS_ERROR26 = 100276; - {$EXTERNALSYM GLU_NURBS_ERROR26} - GLU_NURBS_ERROR27 = 100277; - {$EXTERNALSYM GLU_NURBS_ERROR27} - GLU_NURBS_ERROR28 = 100278; - {$EXTERNALSYM GLU_NURBS_ERROR28} - GLU_NURBS_ERROR29 = 100279; - {$EXTERNALSYM GLU_NURBS_ERROR29} - GLU_NURBS_ERROR30 = 100280; - {$EXTERNALSYM GLU_NURBS_ERROR30} - GLU_NURBS_ERROR31 = 100281; - {$EXTERNALSYM GLU_NURBS_ERROR31} - GLU_NURBS_ERROR32 = 100282; - {$EXTERNALSYM GLU_NURBS_ERROR32} - GLU_NURBS_ERROR33 = 100283; - {$EXTERNALSYM GLU_NURBS_ERROR33} - GLU_NURBS_ERROR34 = 100284; - {$EXTERNALSYM GLU_NURBS_ERROR34} - GLU_NURBS_ERROR35 = 100285; - {$EXTERNALSYM GLU_NURBS_ERROR35} - GLU_NURBS_ERROR36 = 100286; - {$EXTERNALSYM GLU_NURBS_ERROR36} - GLU_NURBS_ERROR37 = 100287; - {$EXTERNALSYM GLU_NURBS_ERROR37} - - // Contours types -- obsolete! - GLU_CW = 100120; - {$EXTERNALSYM GLU_CW} - GLU_CCW = 100121; - {$EXTERNALSYM GLU_CCW} - GLU_INTERIOR = 100122; - {$EXTERNALSYM GLU_INTERIOR} - GLU_EXTERIOR = 100123; - {$EXTERNALSYM GLU_EXTERIOR} - GLU_UNKNOWN = 100124; - {$EXTERNALSYM GLU_UNKNOWN} - - // Names without "TESS_" prefix - GLU_BEGIN = GLU_TESS_BEGIN; - {$EXTERNALSYM GLU_BEGIN} - GLU_VERTEX = GLU_TESS_VERTEX; - {$EXTERNALSYM GLU_VERTEX} - GLU_END = GLU_TESS_END; - {$EXTERNALSYM GLU_END} - GLU_ERROR = GLU_TESS_ERROR; - {$EXTERNALSYM GLU_ERROR} - GLU_EDGE_FLAG = GLU_TESS_EDGE_FLAG; - {$EXTERNALSYM GLU_EDGE_FLAG} - - GLX_VERSION_1_1 = 1; - GLX_VERSION_1_2 = 1; - GLX_VERSION_1_3 = 1; - GLX_EXTENSION_NAME = 'GLX'; - {$EXTERNALSYM GLX_EXTENSION_NAME} - GLX_USE_GL = 1; - {$EXTERNALSYM GLX_USE_GL} - GLX_BUFFER_SIZE = 2; - {$EXTERNALSYM GLX_BUFFER_SIZE} - GLX_LEVEL = 3; - {$EXTERNALSYM GLX_LEVEL} - GLX_RGBA = 4; - {$EXTERNALSYM GLX_RGBA} - GLX_DOUBLEBUFFER = 5; - {$EXTERNALSYM GLX_DOUBLEBUFFER} - GLX_STEREO = 6; - {$EXTERNALSYM GLX_STEREO} - GLX_AUX_BUFFERS = 7; - {$EXTERNALSYM GLX_AUX_BUFFERS} - GLX_RED_SIZE = 8; - {$EXTERNALSYM GLX_RED_SIZE} - GLX_GREEN_SIZE = 9; - {$EXTERNALSYM GLX_GREEN_SIZE} - GLX_BLUE_SIZE = 10; - {$EXTERNALSYM GLX_BLUE_SIZE} - GLX_ALPHA_SIZE = 11; - {$EXTERNALSYM GLX_ALPHA_SIZE} - GLX_DEPTH_SIZE = 12; - {$EXTERNALSYM GLX_DEPTH_SIZE} - GLX_STENCIL_SIZE = 13; - {$EXTERNALSYM GLX_STENCIL_SIZE} - GLX_ACCUM_RED_SIZE = 14; - {$EXTERNALSYM GLX_ACCUM_RED_SIZE} - GLX_ACCUM_GREEN_SIZE = 15; - {$EXTERNALSYM GLX_ACCUM_GREEN_SIZE} - GLX_ACCUM_BLUE_SIZE = 16; - {$EXTERNALSYM GLX_ACCUM_BLUE_SIZE} - GLX_ACCUM_ALPHA_SIZE = 17; - {$EXTERNALSYM GLX_ACCUM_ALPHA_SIZE} - - // Error codes returned by glXGetConfig: - GLX_BAD_SCREEN = 1; - {$EXTERNALSYM GLX_BAD_SCREEN} - GLX_BAD_ATTRIBUTE = 2; - {$EXTERNALSYM GLX_BAD_ATTRIBUTE} - GLX_NO_EXTENSION = 3; - {$EXTERNALSYM GLX_NO_EXTENSION} - GLX_BAD_VISUAL = 4; - {$EXTERNALSYM GLX_BAD_VISUAL} - GLX_BAD_CONTEXT = 5; - {$EXTERNALSYM GLX_BAD_CONTEXT} - GLX_BAD_VALUE = 6; - {$EXTERNALSYM GLX_BAD_VALUE} - GLX_BAD_ENUM = 7; - {$EXTERNALSYM GLX_BAD_ENUM} - - // GLX 1.1 and later: - GLX_VENDOR = 1; - {$EXTERNALSYM GLX_VENDOR} - GLX_VERSION = 2; - {$EXTERNALSYM GLX_VERSION} - GLX_EXTENSIONS = 3; - {$EXTERNALSYM GLX_EXTENSIONS} - - // GLX 1.3 and later: - GLX_CONFIG_CAVEAT = $20; - {$EXTERNALSYM GLX_CONFIG_CAVEAT} - GLX_DONT_CARE = $FFFFFFFF; - {$EXTERNALSYM GLX_DONT_CARE} - GLX_SLOW_CONFIG = $8001; - {$EXTERNALSYM GLX_SLOW_CONFIG} - GLX_NON_CONFORMANT_CONFIG = $800D; - {$EXTERNALSYM GLX_NON_CONFORMANT_CONFIG} - GLX_X_VISUAL_TYPE = $22; - {$EXTERNALSYM GLX_X_VISUAL_TYPE} - GLX_TRANSPARENT_TYPE = $23; - {$EXTERNALSYM GLX_TRANSPARENT_TYPE} - GLX_TRANSPARENT_INDEX_VALUE = $24; - {$EXTERNALSYM GLX_TRANSPARENT_INDEX_VALUE} - GLX_TRANSPARENT_RED_VALUE = $25; - {$EXTERNALSYM GLX_TRANSPARENT_RED_VALUE} - GLX_TRANSPARENT_GREEN_VALUE = $26; - {$EXTERNALSYM GLX_TRANSPARENT_GREEN_VALUE} - GLX_TRANSPARENT_BLUE_VALUE = $27; - {$EXTERNALSYM GLX_TRANSPARENT_BLUE_VALUE} - GLX_TRANSPARENT_ALPHA_VALUE = $28; - {$EXTERNALSYM GLX_TRANSPARENT_ALPHA_VALUE} - GLX_MAX_PBUFFER_WIDTH = $8016; - {$EXTERNALSYM GLX_MAX_PBUFFER_WIDTH} - GLX_MAX_PBUFFER_HEIGHT = $8017; - {$EXTERNALSYM GLX_MAX_PBUFFER_HEIGHT} - GLX_MAX_PBUFFER_PIXELS = $8018; - {$EXTERNALSYM GLX_MAX_PBUFFER_PIXELS} - GLX_PRESERVED_CONTENTS = $801B; - {$EXTERNALSYM GLX_PRESERVED_CONTENTS} - GLX_LARGEST_BUFFER = $801C; - {$EXTERNALSYM GLX_LARGEST_BUFFER} - GLX_DRAWABLE_TYPE = $8010; - {$EXTERNALSYM GLX_DRAWABLE_TYPE} - GLX_FBCONFIG_ID = $8013; - {$EXTERNALSYM GLX_FBCONFIG_ID} - GLX_VISUAL_ID = $800B; - {$EXTERNALSYM GLX_VISUAL_ID} - GLX_WINDOW_BIT = $00000001; - {$EXTERNALSYM GLX_WINDOW_BIT} - GLX_PIXMAP_BIT = $00000002; - {$EXTERNALSYM GLX_PIXMAP_BIT} - GLX_PBUFFER_BIT = $00000004; - {$EXTERNALSYM GLX_PBUFFER_BIT} - GLX_AUX_BUFFERS_BIT = $00000010; - {$EXTERNALSYM GLX_AUX_BUFFERS_BIT} - GLX_FRONT_LEFT_BUFFER_BIT = $00000001; - {$EXTERNALSYM GLX_FRONT_LEFT_BUFFER_BIT} - GLX_FRONT_RIGHT_BUFFER_BIT = $00000002; - {$EXTERNALSYM GLX_FRONT_RIGHT_BUFFER_BIT} - GLX_BACK_LEFT_BUFFER_BIT = $00000004; - {$EXTERNALSYM GLX_BACK_LEFT_BUFFER_BIT} - GLX_BACK_RIGHT_BUFFER_BIT = $00000008; - {$EXTERNALSYM GLX_BACK_RIGHT_BUFFER_BIT} - GLX_DEPTH_BUFFER_BIT = $00000020; - {$EXTERNALSYM GLX_DEPTH_BUFFER_BIT} - GLX_STENCIL_BUFFER_BIT = $00000040; - {$EXTERNALSYM GLX_STENCIL_BUFFER_BIT} - GLX_ACCUM_BUFFER_BIT = $00000080; - {$EXTERNALSYM GLX_ACCUM_BUFFER_BIT} - GLX_RENDER_TYPE = $8011; - {$EXTERNALSYM GLX_RENDER_TYPE} - GLX_X_RENDERABLE = $8012; - {$EXTERNALSYM GLX_X_RENDERABLE} - GLX_NONE = $8000; - {$EXTERNALSYM GLX_NONE} - GLX_TRUE_COLOR = $8002; - {$EXTERNALSYM GLX_TRUE_COLOR} - GLX_DIRECT_COLOR = $8003; - {$EXTERNALSYM GLX_DIRECT_COLOR} - GLX_PSEUDO_COLOR = $8004; - {$EXTERNALSYM GLX_PSEUDO_COLOR} - GLX_STATIC_COLOR = $8005; - {$EXTERNALSYM GLX_STATIC_COLOR} - GLX_GRAY_SCALE = $8006; - {$EXTERNALSYM GLX_GRAY_SCALE} - GLX_STATIC_GRAY = $8007; - {$EXTERNALSYM GLX_STATIC_GRAY} - GLX_TRANSPARENT_INDEX = $8009; - {$EXTERNALSYM GLX_TRANSPARENT_INDEX} - GLX_COLOR_INDEX_TYPE = $8015; - {$EXTERNALSYM GLX_COLOR_INDEX_TYPE} - GLX_COLOR_INDEX_BIT = $00000002; - {$EXTERNALSYM GLX_COLOR_INDEX_BIT} - GLX_SCREEN = $800C; - {$EXTERNALSYM GLX_SCREEN} - GLX_PBUFFER_CLOBBER_MASK = $08000000; - {$EXTERNALSYM GLX_PBUFFER_CLOBBER_MASK} - GLX_DAMAGED = $8020; - {$EXTERNALSYM GLX_DAMAGED} - GLX_SAVED = $8021; - {$EXTERNALSYM GLX_SAVED} - GLX_WINDOW = $8022; - {$EXTERNALSYM GLX_WINDOW} - GLX_PBUFFER = $8023; - {$EXTERNALSYM GLX_PBUFFER} - GLX_EXT_visual_info = 1; - {$EXTERNALSYM GLX_EXT_visual_info} - GLX_X_VISUAL_TYPE_EXT = $22; - {$EXTERNALSYM GLX_X_VISUAL_TYPE_EXT} - GLX_TRANSPARENT_TYPE_EXT = $23; - {$EXTERNALSYM GLX_TRANSPARENT_TYPE_EXT} - GLX_TRANSPARENT_INDEX_VALUE_EXT = $24; - {$EXTERNALSYM GLX_TRANSPARENT_INDEX_VALUE_EXT} - GLX_TRANSPARENT_RED_VALUE_EXT = $25; - {$EXTERNALSYM GLX_TRANSPARENT_RED_VALUE_EXT} - GLX_TRANSPARENT_GREEN_VALUE_EXT = $26; - {$EXTERNALSYM GLX_TRANSPARENT_GREEN_VALUE_EXT} - GLX_TRANSPARENT_BLUE_VALUE_EXT = $27; - {$EXTERNALSYM GLX_TRANSPARENT_BLUE_VALUE_EXT} - GLX_TRANSPARENT_ALPHA_VALUE_EXT = $28; - {$EXTERNALSYM GLX_TRANSPARENT_ALPHA_VALUE_EXT} - GLX_TRUE_COLOR_EXT = $8002; - {$EXTERNALSYM GLX_TRUE_COLOR_EXT} - GLX_DIRECT_COLOR_EXT = $8003; - {$EXTERNALSYM GLX_DIRECT_COLOR_EXT} - GLX_PSEUDO_COLOR_EXT = $8004; - {$EXTERNALSYM GLX_PSEUDO_COLOR_EXT} - GLX_STATIC_COLOR_EXT = $8005; - {$EXTERNALSYM GLX_STATIC_COLOR_EXT} - GLX_GRAY_SCALE_EXT = $8006; - {$EXTERNALSYM GLX_GRAY_SCALE_EXT} - GLX_STATIC_GRAY_EXT = $8007; - {$EXTERNALSYM GLX_STATIC_GRAY_EXT} - GLX_NONE_EXT = $8000; - {$EXTERNALSYM GLX_NONE_EXT} - GLX_TRANSPARENT_RGB_EXT = $8008; - {$EXTERNALSYM GLX_TRANSPARENT_RGB_EXT} - GLX_TRANSPARENT_INDEX_EXT = $8009; - {$EXTERNALSYM GLX_TRANSPARENT_INDEX_EXT} - GLX_VISUAL_CAVEAT_EXT = $20; - {$EXTERNALSYM GLX_VISUAL_CAVEAT_EXT} - GLX_SLOW_VISUAL_EXT = $8001; - {$EXTERNALSYM GLX_SLOW_VISUAL_EXT} - GLX_NON_CONFORMANT_VISUAL_EXT = $800D; - {$EXTERNALSYM GLX_NON_CONFORMANT_VISUAL_EXT} - GLX_SHARE_CONTEXT_EXT = $800A; - {$EXTERNALSYM GLX_SHARE_CONTEXT_EXT} - GLX_VISUAL_ID_EXT = $800B; - {$EXTERNALSYM GLX_VISUAL_ID_EXT} - GLX_SCREEN_EXT = $800C; - {$EXTERNALSYM GLX_SCREEN_EXT} - GLX_3DFX_WINDOW_MODE_MESA = $1; - {$EXTERNALSYM GLX_3DFX_WINDOW_MODE_MESA} - GLX_3DFX_FULLSCREEN_MODE_MESA = $2; - {$EXTERNALSYM GLX_3DFX_FULLSCREEN_MODE_MESA} - - -type - // GLU types - TGLUNurbs = record end; - TGLUQuadric = record end; - TGLUTesselator = record end; - - PGLUNurbs = ^TGLUNurbs; - PGLUQuadric = ^TGLUQuadric; - PGLUTesselator = ^TGLUTesselator; - - // backwards compatibility - TGLUNurbsObj = TGLUNurbs; - TGLUQuadricObj = TGLUQuadric; - TGLUTesselatorObj = TGLUTesselator; - TGLUTriangulatorObj = TGLUTesselator; - - PGLUNurbsObj = PGLUNurbs; - PGLUQuadricObj = PGLUQuadric; - PGLUTesselatorObj = PGLUTesselator; - PGLUTriangulatorObj = PGLUTesselator; - - {$ifdef FPC} - PMaxLogPalette = ^TMaxLogPalette; - TMaxLogPalette = packed record - palversion : word; - palnumentries : word; - palpalentry : array[byte] of TPaletteEntry; - end; - {$endif} - - {$ifdef VER100, Delphi 3 compatibility} - PWGLSwap = ^TWGLSwap; - {$EXTERNALSYM _WGLSWAP} - _WGLSWAP = packed record - hdc: HDC; - uiFlags: UINT; - end; - TWGLSwap = _WGLSWAP; - {$EXTERNALSYM WGLSWAP} - WGLSWAP = _WGLSWAP; - {$endif VER100} - - // Callback function prototypes - // GLUQuadricCallback - TGLUQuadricErrorProc = procedure(errorCode: TGLEnum); {$ifdef MSWINDOWS} stdcall; {$endif} {$ifdef LINUX} cdecl; {$endif} - - // GLUTessCallback - TGLUTessBeginProc = procedure(AType: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} - TGLUTessEdgeFlagProc = procedure(Flag: TGLboolean); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} - TGLUTessVertexProc = procedure(VertexData: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} - TGLUTessEndProc = procedure; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} - TGLUTessErrorProc = procedure(ErrNo: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} - TGLUTessCombineProc = procedure(Coords: TVector3d; VertexData: TVector4p; Weight: TVector4f; OutData: PPointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} - TGLUTessBeginDataProc = procedure(AType: TGLEnum; UserData: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} - TGLUTessEdgeFlagDataProc = procedure(Flag: TGLboolean; UserData: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} - TGLUTessVertexDataProc = procedure(VertexData: Pointer; UserData: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} - TGLUTessEndDataProc = procedure(UserData: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} - TGLUTessErrorDataProc = procedure(ErrNo: TGLEnum; UserData: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} - TGLUTessCombineDataProc = procedure(Coords: TVector3d; VertexData: TVector4p; Weight: TVector4f; OutData: PPointer; UserData: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} - - // GLUNurbsCallback - TGLUNurbsErrorProc = procedure(ErrorCode: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} - - // GL functions - procedure glBindTexture(target: TGLEnum; texture: TGLuint); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glTexParameteri(target, pname: TGLEnum; param: TGLint); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glTexImage2D(target: TGLEnum; level, internalformat: TGLint; width, height: TGLsizei; border: TGLint; format, atype: TGLEnum; Pixels:Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glDeleteTextures(n: TGLsizei; textures: PGLuint); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glGenTextures(n: GLsizei; var textures: GLuint); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glColor3f(red, green, blue: TGLfloat); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glBegin(mode: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glEnd; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glVertex2f(x, y: TGLfloat); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glColor4f(red, green, blue, alpha: TGLfloat); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glEnable(cap: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glDisable(cap: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glDepthRange(zNear, zFar: TGLclampd); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glDepthFunc(func: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glBlendFunc(sfactor: TGLEnum; dfactor: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glTexCoord2f(s, t: TGLfloat); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glVertex3f(x, y, z: TGLfloat); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glClearColor(red, green, blue, alpha: TGLclampf); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glClear(mask: TGLbitfield); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glMatrixMode(mode: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glLoadIdentity; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glOrtho(left, right, bottom, top, zNear, zFar: TGLdouble); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glViewport(x, y: TGLint; width, height: TGLsizei); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glReadPixels(x, y: TGLint; width, height: TGLsizei; format, atype: TGLEnum; pixels: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glPixelStorei(pname: TGLEnum; param: TGLint); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - function glGetError:TGLuint; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure glTexSubImage2D(target: TGLEnum; level, xoffset, yoffset: TGLint; width, height: TGLsizei; format, atype: TGLEnum; pixels: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - procedure gluOrtho2D(left, right, bottom, top: TGLdouble); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; - - // GLU functions - function gluBuild2DMipmaps(target: TGLEnum; components, width, height: TGLint; format, atype: TGLEnum; Data: Pointer): TGLint; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external glu32; - function gluScaleImage(format: TGLEnum; widthin, heightin: TGLint; typein: TGLEnum; datain: Pointer; widthout, heightout: TGLint; typeout: TGLEnum; dataout: Pointer): TGLint; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external glu32; - - Procedure LoadOpenGL; - Procedure UnloadOpenGL; - -implementation - -Procedure LoadOpenGL; -begin -end; - -Procedure UnloadOpenGL; -begin -end; - -end. +unit OpenGL12; + +{$I switches.inc} + +interface + +uses Windows; + +const + glu32 = 'OpenGL'; + +type + + TRCOptions = set of ( + opDoubleBuffered, + opGDI, + opStereo + ); + + UINT = Cardinal; + + {$EXTERNALSYM GLenum} + GLenum = UINT; + TGLenum = UINT; + PGLenum = ^TGLenum; + + {$EXTERNALSYM GLboolean} + GLboolean = BYTEBOOL; + TGLboolean = BYTEBOOL; + PGLboolean = ^TGLboolean; + + {$EXTERNALSYM GLbitfield} + GLbitfield = UINT; + TGLbitfield = UINT; + PGLbitfield = ^TGLbitfield; + + {$EXTERNALSYM GLbyte} + GLbyte = ShortInt; + TGLbyte = ShortInt; + PGLbyte = ^TGLbyte; + + {$EXTERNALSYM GLshort} + GLshort = SmallInt; + TGLshort = SmallInt; + PGLshort = ^TGLshort; + + {$EXTERNALSYM GLint} + GLint = Integer; + TGLint = Integer; + PGLint = ^TGLint; + + {$EXTERNALSYM GLsizei} + GLsizei = Integer; + TGLsizei = Integer; + PGLsizei = ^TGLsizei; + + {$EXTERNALSYM GLubyte} + UCHAR = Byte; + GLubyte = UCHAR; + TGLubyte = UCHAR; + PGLubyte = ^TGLubyte; + + {$EXTERNALSYM GLushort} + GLushort = Word; + TGLushort = Word; + PGLushort = ^TGLushort; + + {$EXTERNALSYM GLuint} + GLuint = UINT; + TGLuint = UINT; + PGLuint = ^TGLuint; + + {$EXTERNALSYM GLfloat} + GLfloat = Single; + TGLfloat = Single; + PGLfloat = ^TGLfloat; + + {$EXTERNALSYM GLclampf} + GLclampf = Single; + TGLclampf = Single; + PGLclampf = ^TGLclampf; + + {$EXTERNALSYM GLdouble} + GLdouble = Double; + TGLdouble = Double; + PGLdouble = ^TGLdouble; + + {$EXTERNALSYM GLclampd} + GLclampd = Double; + TGLclampd = Double; + PGLclampd = ^TGLclampd; + + TVector3d = array[0..2] of GLdouble; + + TVector4i = array[0..3] of GLint; + TVector4f = array[0..3] of GLfloat; + TVector4p = array[0..3] of Pointer; + + TMatrix4f = array[0..3, 0..3] of GLfloat; + TMatrix4d = array[0..3, 0..3] of GLdouble; + + PPointer = ^Pointer; + +{$ifdef FPC} + var +{$else} + {$ifdef MULTITHREADOPENGL} + threadvar + {$else} + var + {$endif} +{$endif} + + GL_VERSION_1_0, + GL_VERSION_1_1, + GL_VERSION_1_2, + GLU_VERSION_1_1, + GLU_VERSION_1_2, + GLU_VERSION_1_3: Boolean; + + // Extensions (gl) + GL_3DFX_multisample, + GL_3DFX_tbuffer, + GL_3DFX_texture_compression_FXT1, + + GL_APPLE_specular_vector, + GL_APPLE_transform_hint, + + GL_ARB_imaging, + GL_ARB_multisample, + GL_ARB_multitexture, + GL_ARB_texture_compression, + GL_ARB_texture_cube_map, + GL_ARB_transpose_matrix, + GL_ARB_vertex_blend, + + GL_EXT_422_pixels, + GL_EXT_abgr, + GL_EXT_bgra, + GL_EXT_blend_color, + GL_EXT_blend_func_separate, + GL_EXT_blend_logic_op, + GL_EXT_blend_minmax, + GL_EXT_blend_subtract, + GL_EXT_clip_volume_hint, + GL_EXT_cmyka, + GL_EXT_color_subtable, + GL_EXT_compiled_vertex_array, + GL_EXT_convolution, + GL_EXT_coordinate_frame, + GL_EXT_copy_texture, + GL_EXT_cull_vertex, + GL_EXT_draw_range_elements, + GL_EXT_fog_coord, + GL_EXT_histogram, + GL_EXT_index_array_formats, + GL_EXT_index_func, + GL_EXT_index_material, + GL_EXT_index_texture, + GL_EXT_light_max_exponent, + GL_EXT_light_texture, + GL_EXT_misc_attribute, + GL_EXT_multi_draw_arrays, + GL_EXT_multisample, + GL_EXT_packed_pixels, + GL_EXT_paletted_texture, + GL_EXT_pixel_transform, + GL_EXT_point_parameters, + GL_EXT_polygon_offset, + GL_EXT_rescale_normal, + GL_EXT_scene_marker, + GL_EXT_secondary_color, + GL_EXT_separate_specular_color, + GL_EXT_shared_texture_palette, + GL_EXT_stencil_wrap, + GL_EXT_subtexture, + GL_EXT_texture_color_table, + GL_EXT_texture_compression_s3tc, + GL_EXT_texture_cube_map, + GL_EXT_texture_edge_clamp, + GL_EXT_texture_env_add, + GL_EXT_texture_env_combine, + GL_EXT_texture_filter_anisotropic, + GL_EXT_texture_lod_bias, + GL_EXT_texture_object, + GL_EXT_texture_perturb_normal, + GL_EXT_texture3D, + GL_EXT_vertex_array, + GL_EXT_vertex_weighting, + + GL_FfdMaskSGIX, + GL_HP_convolution_border_modes, + GL_HP_image_transform, + GL_HP_occlusion_test, + GL_HP_texture_lighting, + + GL_IBM_cull_vertex, + GL_IBM_multimode_draw_arrays, + GL_IBM_rasterpos_clip, + GL_IBM_vertex_array_lists, + + GL_INGR_color_clamp, + GL_INGR_interlace_read, + + GL_INTEL_parallel_arrays, + + GL_KTX_buffer_region, + + GL_MESA_resize_buffers, + GL_MESA_window_pos, + + GL_NV_blend_square, + GL_NV_fog_distance, + GL_NV_light_max_exponent, + GL_NV_register_combiners, + GL_NV_texgen_emboss, + GL_NV_texgen_reflection, + GL_NV_texture_env_combine4, + GL_NV_vertex_array_range, + GL_NV_vertex_program, + + GL_PGI_misc_hints, + GL_PGI_vertex_hints, + + GL_REND_screen_coordinates, + + GL_SGI_color_matrix, + GL_SGI_color_table, + GL_SGI_depth_pass_instrument, + + GL_SGIS_detail_texture, + GL_SGIS_fog_function, + GL_SGIS_generate_mipmap, + GL_SGIS_multisample, + GL_SGIS_multitexture, + GL_SGIS_pixel_texture, + GL_SGIS_point_line_texgen, + GL_SGIS_point_parameters, + GL_SGIS_sharpen_texture, + GL_SGIS_texture_border_clamp, + GL_SGIS_texture_color_mask, + GL_SGIS_texture_edge_clamp, + GL_SGIS_texture_filter4, + GL_SGIS_texture_lod, + GL_SGIS_texture_select, + GL_SGIS_texture4D, + + GL_SGIX_async, + GL_SGIX_async_histogram, + GL_SGIX_async_pixel, + GL_SGIX_blend_alpha_minmax, + GL_SGIX_calligraphic_fragment, + GL_SGIX_clipmap, + GL_SGIX_convolution_accuracy, + GL_SGIX_depth_texture, + GL_SGIX_flush_raster, + GL_SGIX_fog_offset, + GL_SGIX_fog_scale, + GL_SGIX_fragment_lighting, + GL_SGIX_framezoom, + GL_SGIX_igloo_interface, + GL_SGIX_instruments, + GL_SGIX_interlace, + GL_SGIX_ir_instrument1, + GL_SGIX_list_priority, + GL_SGIX_pixel_texture, + GL_SGIX_pixel_tiles, + GL_SGIX_polynomial_ffd, + GL_SGIX_reference_plane, + GL_SGIX_resample, + GL_SGIX_shadow, + GL_SGIX_shadow_ambient, + GL_SGIX_sprite, + GL_SGIX_subsample, + GL_SGIX_tag_sample_buffer, + GL_SGIX_texture_add_env, + GL_SGIX_texture_lod_bias, + GL_SGIX_texture_multi_buffer, + GL_SGIX_texture_scale_bias, + GL_SGIX_vertex_preclip, + GL_SGIX_ycrcb, + GL_SGIX_ycrcba, + + GL_SUN_convolution_border_modes, + GL_SUN_global_alpha, + GL_SUN_triangle_list, + GL_SUN_vertex, + + GL_SUNX_constant_data, + + GL_WIN_phong_shading, + GL_WIN_specular_fog, + GL_WIN_swap_hint, + + WGL_EXT_swap_control, + WGL_ARB_extensions_string, + WGL_ARB_pixel_format, + + // Extensions (glu) + GLU_EXT_Texture, + GLU_EXT_object_space_tess, + GLU_EXT_nurbs_tessellator: Boolean; + +const + // ********** GL generic constants ********** + + // errors + GL_NO_ERROR = 0; + {$EXTERNALSYM GL_NO_ERROR} + GL_INVALID_ENUM = $0500; + {$EXTERNALSYM GL_INVALID_ENUM} + GL_INVALID_VALUE = $0501; + {$EXTERNALSYM GL_INVALID_VALUE} + GL_INVALID_OPERATION = $0502; + {$EXTERNALSYM GL_INVALID_OPERATION} + GL_STACK_OVERFLOW = $0503; + {$EXTERNALSYM GL_STACK_OVERFLOW} + GL_STACK_UNDERFLOW = $0504; + {$EXTERNALSYM GL_STACK_UNDERFLOW} + GL_OUT_OF_MEMORY = $0505; + {$EXTERNALSYM GL_STACK_UNDERFLOW} + + // attribute bits + GL_CURRENT_BIT = $00000001; + {$EXTERNALSYM GL_CURRENT_BIT} + GL_POINT_BIT = $00000002; + {$EXTERNALSYM GL_POINT_BIT} + GL_LINE_BIT = $00000004; + {$EXTERNALSYM GL_LINE_BIT} + GL_POLYGON_BIT = $00000008; + {$EXTERNALSYM GL_POLYGON_BIT} + GL_POLYGON_STIPPLE_BIT = $00000010; + {$EXTERNALSYM GL_POLYGON_STIPPLE_BIT} + GL_PIXEL_MODE_BIT = $00000020; + {$EXTERNALSYM GL_PIXEL_MODE_BIT} + GL_LIGHTING_BIT = $00000040; + {$EXTERNALSYM GL_LIGHTING_BIT} + GL_FOG_BIT = $00000080; + {$EXTERNALSYM GL_FOG_BIT} + GL_DEPTH_BUFFER_BIT = $00000100; + {$EXTERNALSYM GL_DEPTH_BUFFER_BIT} + GL_ACCUM_BUFFER_BIT = $00000200; + {$EXTERNALSYM GL_ACCUM_BUFFER_BIT} + GL_STENCIL_BUFFER_BIT = $00000400; + {$EXTERNALSYM GL_STENCIL_BUFFER_BIT} + GL_VIEWPORT_BIT = $00000800; + {$EXTERNALSYM GL_VIEWPORT_BIT} + GL_TRANSFORM_BIT = $00001000; + {$EXTERNALSYM GL_TRANSFORM_BIT} + GL_ENABLE_BIT = $00002000; + {$EXTERNALSYM GL_ENABLE_BIT} + GL_COLOR_BUFFER_BIT = $00004000; + {$EXTERNALSYM GL_COLOR_BUFFER_BIT} + GL_HINT_BIT = $00008000; + {$EXTERNALSYM GL_HINT_BIT} + GL_EVAL_BIT = $00010000; + {$EXTERNALSYM GL_EVAL_BIT} + GL_LIST_BIT = $00020000; + {$EXTERNALSYM GL_LIST_BIT} + GL_TEXTURE_BIT = $00040000; + {$EXTERNALSYM GL_TEXTURE_BIT} + GL_SCISSOR_BIT = $00080000; + {$EXTERNALSYM GL_SCISSOR_BIT} + GL_ALL_ATTRIB_BITS = $000FFFFF; + {$EXTERNALSYM GL_ALL_ATTRIB_BITS} + + // client attribute bits + GL_CLIENT_PIXEL_STORE_BIT = $00000001; + {$EXTERNALSYM GL_CLIENT_PIXEL_STORE_BIT} + GL_CLIENT_VERTEX_ARRAY_BIT = $00000002; + {$EXTERNALSYM GL_CLIENT_VERTEX_ARRAY_BIT} + GL_CLIENT_ALL_ATTRIB_BITS = $FFFFFFFF; + {$EXTERNALSYM GL_CLIENT_ALL_ATTRIB_BITS} + + // boolean values + GL_FALSE = Boolean(0); + {$EXTERNALSYM GL_FALSE} + GL_TRUE = Boolean(1); + {$EXTERNALSYM GL_TRUE} + + // primitives + GL_POINTS = $0000; + {$EXTERNALSYM GL_POINTS} + GL_LINES = $0001; + {$EXTERNALSYM GL_LINES} + GL_LINE_LOOP = $0002; + {$EXTERNALSYM GL_LINE_LOOP} + GL_LINE_STRIP = $0003; + {$EXTERNALSYM GL_LINE_STRIP} + GL_TRIANGLES = $0004; + {$EXTERNALSYM GL_TRIANGLES} + GL_TRIANGLE_STRIP = $0005; + {$EXTERNALSYM GL_TRIANGLE_STRIP} + GL_TRIANGLE_FAN = $0006; + {$EXTERNALSYM GL_TRIANGLE_FAN} + GL_QUADS = $0007; + {$EXTERNALSYM GL_QUADS} + GL_QUAD_STRIP = $0008; + {$EXTERNALSYM GL_QUAD_STRIP} + GL_POLYGON = $0009; + {$EXTERNALSYM GL_POLYGON} + + // blending + GL_ZERO = 0; + {$EXTERNALSYM GL_ZERO} + GL_ONE = 1; + {$EXTERNALSYM GL_ONE} + GL_SRC_COLOR = $0300; + {$EXTERNALSYM GL_SRC_COLOR} + GL_ONE_MINUS_SRC_COLOR = $0301; + {$EXTERNALSYM GL_ONE_MINUS_SRC_COLOR} + GL_SRC_ALPHA = $0302; + {$EXTERNALSYM GL_SRC_ALPHA} + GL_ONE_MINUS_SRC_ALPHA = $0303; + {$EXTERNALSYM GL_ONE_MINUS_SRC_ALPHA} + GL_DST_ALPHA = $0304; + {$EXTERNALSYM GL_DST_ALPHA} + GL_ONE_MINUS_DST_ALPHA = $0305; + {$EXTERNALSYM GL_ONE_MINUS_DST_ALPHA} + GL_DST_COLOR = $0306; + {$EXTERNALSYM GL_DST_COLOR} + GL_ONE_MINUS_DST_COLOR = $0307; + {$EXTERNALSYM GL_ONE_MINUS_DST_COLOR} + GL_SRC_ALPHA_SATURATE = $0308; + {$EXTERNALSYM GL_SRC_ALPHA_SATURATE} + GL_BLEND_DST = $0BE0; + {$EXTERNALSYM GL_BLEND_DST} + GL_BLEND_SRC = $0BE1; + {$EXTERNALSYM GL_BLEND_SRC} + GL_BLEND = $0BE2; + {$EXTERNALSYM GL_BLEND} + + // blending (GL 1.2 ARB imaging) + GL_BLEND_COLOR = $8005; + {$EXTERNALSYM GL_BLEND_COLOR} + GL_CONSTANT_COLOR = $8001; + {$EXTERNALSYM GL_CONSTANT_COLOR} + GL_ONE_MINUS_CONSTANT_COLOR = $8002; + {$EXTERNALSYM GL_ONE_MINUS_CONSTANT_COLOR} + GL_CONSTANT_ALPHA = $8003; + {$EXTERNALSYM GL_CONSTANT_ALPHA} + GL_ONE_MINUS_CONSTANT_ALPHA = $8004; + {$EXTERNALSYM GL_ONE_MINUS_CONSTANT_ALPHA} + GL_FUNC_ADD = $8006; + {$EXTERNALSYM GL_FUNC_ADD} + GL_MIN = $8007; + {$EXTERNALSYM GL_MIN} + GL_MAX = $8008; + {$EXTERNALSYM GL_MAX} + GL_FUNC_SUBTRACT = $800A; + {$EXTERNALSYM GL_FUNC_SUBTRACT} + GL_FUNC_REVERSE_SUBTRACT = $800B; + {$EXTERNALSYM GL_FUNC_REVERSE_SUBTRACT} + + // color table GL 1.2 ARB imaging + GL_COLOR_TABLE = $80D0; + {$EXTERNALSYM GL_COLOR_TABLE} + GL_POST_CONVOLUTION_COLOR_TABLE = $80D1; + {$EXTERNALSYM GL_POST_CONVOLUTION_COLOR_TABLE} + GL_POST_COLOR_MATRIX_COLOR_TABLE = $80D2; + {$EXTERNALSYM GL_POST_COLOR_MATRIX_COLOR_TABLE} + GL_PROXY_COLOR_TABLE = $80D3; + {$EXTERNALSYM GL_PROXY_COLOR_TABLE} + GL_PROXY_POST_CONVOLUTION_COLOR_TABLE = $80D4; + {$EXTERNALSYM GL_PROXY_POST_CONVOLUTION_COLOR_TABLE} + GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE = $80D5; + {$EXTERNALSYM GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE} + GL_COLOR_TABLE_SCALE = $80D6; + {$EXTERNALSYM GL_COLOR_TABLE_SCALE} + GL_COLOR_TABLE_BIAS = $80D7; + {$EXTERNALSYM GL_COLOR_TABLE_BIAS} + GL_COLOR_TABLE_FORMAT = $80D8; + {$EXTERNALSYM GL_COLOR_TABLE_FORMAT} + GL_COLOR_TABLE_WIDTH = $80D9; + {$EXTERNALSYM GL_COLOR_TABLE_WIDTH} + GL_COLOR_TABLE_RED_SIZE = $80DA; + {$EXTERNALSYM GL_COLOR_TABLE_RED_SIZE} + GL_COLOR_TABLE_GREEN_SIZE = $80DB; + {$EXTERNALSYM GL_COLOR_TABLE_GREEN_SIZE} + GL_COLOR_TABLE_BLUE_SIZE = $80DC; + {$EXTERNALSYM GL_COLOR_TABLE_BLUE_SIZE} + GL_COLOR_TABLE_ALPHA_SIZE = $80DD; + {$EXTERNALSYM GL_COLOR_TABLE_ALPHA_SIZE} + GL_COLOR_TABLE_LUMINANCE_SIZE = $80DE; + {$EXTERNALSYM GL_COLOR_TABLE_LUMINANCE_SIZE} + GL_COLOR_TABLE_INTENSITY_SIZE = $80DF; + {$EXTERNALSYM GL_COLOR_TABLE_INTENSITY_SIZE} + + // convolutions GL 1.2 ARB imaging + GL_CONVOLUTION_1D = $8010; + {$EXTERNALSYM GL_CONVOLUTION_1D} + GL_CONVOLUTION_2D = $8011; + {$EXTERNALSYM GL_CONVOLUTION_2D} + GL_SEPARABLE_2D = $8012; + {$EXTERNALSYM GL_SEPARABLE_2D} + GL_CONVOLUTION_BORDER_MODE = $8013; + {$EXTERNALSYM GL_CONVOLUTION_BORDER_MODE} + GL_CONVOLUTION_FILTER_SCALE = $8014; + {$EXTERNALSYM GL_CONVOLUTION_FILTER_SCALE} + GL_CONVOLUTION_FILTER_BIAS = $8015; + {$EXTERNALSYM GL_CONVOLUTION_FILTER_BIAS} + GL_REDUCE = $8016; + {$EXTERNALSYM GL_REDUCE} + GL_CONVOLUTION_FORMAT = $8017; + {$EXTERNALSYM GL_CONVOLUTION_FORMAT} + GL_CONVOLUTION_WIDTH = $8018; + {$EXTERNALSYM GL_CONVOLUTION_WIDTH} + GL_CONVOLUTION_HEIGHT = $8019; + {$EXTERNALSYM GL_CONVOLUTION_HEIGHT} + GL_MAX_CONVOLUTION_WIDTH = $801A; + {$EXTERNALSYM GL_MAX_CONVOLUTION_WIDTH} + GL_MAX_CONVOLUTION_HEIGHT = $801B; + {$EXTERNALSYM GL_MAX_CONVOLUTION_HEIGHT} + GL_POST_CONVOLUTION_RED_SCALE = $801C; + {$EXTERNALSYM GL_POST_CONVOLUTION_RED_SCALE} + GL_POST_CONVOLUTION_GREEN_SCALE = $801D; + {$EXTERNALSYM GL_POST_CONVOLUTION_GREEN_SCALE} + GL_POST_CONVOLUTION_BLUE_SCALE = $801E; + {$EXTERNALSYM GL_POST_CONVOLUTION_BLUE_SCALE} + GL_POST_CONVOLUTION_ALPHA_SCALE = $801F; + {$EXTERNALSYM GL_POST_CONVOLUTION_ALPHA_SCALE} + GL_POST_CONVOLUTION_RED_BIAS = $8020; + {$EXTERNALSYM GL_POST_CONVOLUTION_RED_BIAS} + GL_POST_CONVOLUTION_GREEN_BIAS = $8021; + {$EXTERNALSYM GL_POST_CONVOLUTION_GREEN_BIAS} + GL_POST_CONVOLUTION_BLUE_BIAS = $8022; + {$EXTERNALSYM GL_POST_CONVOLUTION_BLUE_BIAS} + GL_POST_CONVOLUTION_ALPHA_BIAS = $8023; + {$EXTERNALSYM GL_POST_CONVOLUTION_ALPHA_BIAS} + + // histogram GL 1.2 ARB imaging + GL_HISTOGRAM = $8024; + {$EXTERNALSYM GL_HISTOGRAM} + GL_PROXY_HISTOGRAM = $8025; + {$EXTERNALSYM GL_PROXY_HISTOGRAM} + GL_HISTOGRAM_WIDTH = $8026; + {$EXTERNALSYM GL_HISTOGRAM_WIDTH} + GL_HISTOGRAM_FORMAT = $8027; + {$EXTERNALSYM GL_HISTOGRAM_FORMAT} + GL_HISTOGRAM_RED_SIZE = $8028; + {$EXTERNALSYM GL_HISTOGRAM_RED_SIZE} + GL_HISTOGRAM_GREEN_SIZE = $8029; + {$EXTERNALSYM GL_HISTOGRAM_GREEN_SIZE} + GL_HISTOGRAM_BLUE_SIZE = $802A; + {$EXTERNALSYM GL_HISTOGRAM_BLUE_SIZE} + GL_HISTOGRAM_ALPHA_SIZE = $802B; + {$EXTERNALSYM GL_HISTOGRAM_ALPHA_SIZE} + GL_HISTOGRAM_LUMINANCE_SIZE = $802C; + {$EXTERNALSYM GL_HISTOGRAM_LUMINANCE_SIZE} + GL_HISTOGRAM_SINK = $802D; + {$EXTERNALSYM GL_HISTOGRAM_SINK} + GL_MINMAX = $802E; + {$EXTERNALSYM GL_MINMAX} + GL_MINMAX_FORMAT = $802F; + {$EXTERNALSYM GL_MINMAX_FORMAT} + GL_MINMAX_SINK = $8030; + {$EXTERNALSYM GL_MINMAX_SINK} + + // buffers + GL_NONE = 0; + {$EXTERNALSYM GL_NONE} + GL_FRONT_LEFT = $0400; + {$EXTERNALSYM GL_FRONT_LEFT} + GL_FRONT_RIGHT = $0401; + {$EXTERNALSYM GL_FRONT_RIGHT} + GL_BACK_LEFT = $0402; + {$EXTERNALSYM GL_BACK_LEFT} + GL_BACK_RIGHT = $0403; + {$EXTERNALSYM GL_BACK_RIGHT} + GL_FRONT = $0404; + {$EXTERNALSYM GL_FRONT} + GL_BACK = $0405; + {$EXTERNALSYM GL_BACK} + GL_LEFT = $0406; + {$EXTERNALSYM GL_LEFT} + GL_RIGHT = $0407; + {$EXTERNALSYM GL_RIGHT} + GL_FRONT_AND_BACK = $0408; + {$EXTERNALSYM GL_FRONT_AND_BACK} + GL_AUX0 = $0409; + {$EXTERNALSYM GL_AUX0} + GL_AUX1 = $040A; + {$EXTERNALSYM GL_AUX1} + GL_AUX2 = $040B; + {$EXTERNALSYM GL_AUX2} + GL_AUX3 = $040C; + {$EXTERNALSYM GL_AUX3} + GL_AUX_BUFFERS = $0C00; + {$EXTERNALSYM GL_AUX_BUFFERS} + GL_DRAW_BUFFER = $0C01; + {$EXTERNALSYM GL_DRAW_BUFFER} + GL_READ_BUFFER = $0C02; + {$EXTERNALSYM GL_READ_BUFFER} + GL_DOUBLEBUFFER = $0C32; + {$EXTERNALSYM GL_DOUBLEBUFFER} + GL_STEREO = $0C33; + {$EXTERNALSYM GL_STEREO} + + // depth buffer + GL_DEPTH_RANGE = $0B70; + {$EXTERNALSYM GL_DEPTH_RANGE} + GL_DEPTH_TEST = $0B71; + {$EXTERNALSYM GL_DEPTH_TEST} + GL_DEPTH_WRITEMASK = $0B72; + {$EXTERNALSYM GL_DEPTH_WRITEMASK} + GL_DEPTH_CLEAR_VALUE = $0B73; + {$EXTERNALSYM GL_DEPTH_CLEAR_VALUE} + GL_DEPTH_FUNC = $0B74; + {$EXTERNALSYM GL_DEPTH_FUNC} + GL_NEVER = $0200; + {$EXTERNALSYM GL_NEVER} + GL_LESS = $0201; + {$EXTERNALSYM GL_LESS} + GL_EQUAL = $0202; + {$EXTERNALSYM GL_EQUAL} + GL_LEQUAL = $0203; + {$EXTERNALSYM GL_LEQUAL} + GL_GREATER = $0204; + {$EXTERNALSYM GL_GREATER} + GL_NOTEQUAL = $0205; + {$EXTERNALSYM GL_NOTEQUAL} + GL_GEQUAL = $0206; + {$EXTERNALSYM GL_GEQUAL} + GL_ALWAYS = $0207; + {$EXTERNALSYM GL_ALWAYS} + + // accumulation buffer + GL_ACCUM = $0100; + {$EXTERNALSYM GL_ACCUM} + GL_LOAD = $0101; + {$EXTERNALSYM GL_LOAD} + GL_RETURN = $0102; + {$EXTERNALSYM GL_RETURN} + GL_MULT = $0103; + {$EXTERNALSYM GL_MULT} + GL_ADD = $0104; + {$EXTERNALSYM GL_ADD} + GL_ACCUM_CLEAR_VALUE = $0B80; + {$EXTERNALSYM GL_ACCUM_CLEAR_VALUE} + + // feedback buffer + GL_FEEDBACK_BUFFER_POINTER = $0DF0; + {$EXTERNALSYM GL_FEEDBACK_BUFFER_POINTER} + GL_FEEDBACK_BUFFER_SIZE = $0DF1; + {$EXTERNALSYM GL_FEEDBACK_BUFFER_SIZE} + GL_FEEDBACK_BUFFER_TYPE = $0DF2; + {$EXTERNALSYM GL_FEEDBACK_BUFFER_TYPE} + + // feedback types + GL_2D = $0600; + {$EXTERNALSYM GL_2D} + GL_3D = $0601; + {$EXTERNALSYM GL_3D} + GL_3D_COLOR = $0602; + {$EXTERNALSYM GL_3D_COLOR} + GL_3D_COLOR_TEXTURE = $0603; + {$EXTERNALSYM GL_3D_COLOR_TEXTURE} + GL_4D_COLOR_TEXTURE = $0604; + {$EXTERNALSYM GL_4D_COLOR_TEXTURE} + + // feedback tokens + GL_PASS_THROUGH_TOKEN = $0700; + {$EXTERNALSYM GL_PASS_THROUGH_TOKEN} + GL_POINT_TOKEN = $0701; + {$EXTERNALSYM GL_POINT_TOKEN} + GL_LINE_TOKEN = $0702; + {$EXTERNALSYM GL_LINE_TOKEN} + GL_POLYGON_TOKEN = $0703; + {$EXTERNALSYM GL_POLYGON_TOKEN} + GL_BITMAP_TOKEN = $0704; + {$EXTERNALSYM GL_BITMAP_TOKEN} + GL_DRAW_PIXEL_TOKEN = $0705; + {$EXTERNALSYM GL_DRAW_PIXEL_TOKEN} + GL_COPY_PIXEL_TOKEN = $0706; + {$EXTERNALSYM GL_COPY_PIXEL_TOKEN} + GL_LINE_RESET_TOKEN = $0707; + {$EXTERNALSYM GL_LINE_RESET_TOKEN} + + // fog + GL_EXP = $0800; + {$EXTERNALSYM GL_EXP} + GL_EXP2 = $0801; + {$EXTERNALSYM GL_EXP2} + GL_FOG = $0B60; + {$EXTERNALSYM GL_FOG} + GL_FOG_INDEX = $0B61; + {$EXTERNALSYM GL_FOG_INDEX} + GL_FOG_DENSITY = $0B62; + {$EXTERNALSYM GL_FOG_DENSITY} + GL_FOG_START = $0B63; + {$EXTERNALSYM GL_FOG_START} + GL_FOG_END = $0B64; + {$EXTERNALSYM GL_FOG_END} + GL_FOG_MODE = $0B65; + {$EXTERNALSYM GL_FOG_MODE} + GL_FOG_COLOR = $0B66; + {$EXTERNALSYM GL_FOG_COLOR} + + // pixel mode, transfer + GL_PIXEL_MAP_I_TO_I = $0C70; + {$EXTERNALSYM GL_PIXEL_MAP_I_TO_I} + GL_PIXEL_MAP_S_TO_S = $0C71; + {$EXTERNALSYM GL_PIXEL_MAP_S_TO_S} + GL_PIXEL_MAP_I_TO_R = $0C72; + {$EXTERNALSYM GL_PIXEL_MAP_I_TO_R} + GL_PIXEL_MAP_I_TO_G = $0C73; + {$EXTERNALSYM GL_PIXEL_MAP_I_TO_G} + GL_PIXEL_MAP_I_TO_B = $0C74; + {$EXTERNALSYM GL_PIXEL_MAP_I_TO_B} + GL_PIXEL_MAP_I_TO_A = $0C75; + {$EXTERNALSYM GL_PIXEL_MAP_I_TO_A} + GL_PIXEL_MAP_R_TO_R = $0C76; + {$EXTERNALSYM GL_PIXEL_MAP_R_TO_R} + GL_PIXEL_MAP_G_TO_G = $0C77; + {$EXTERNALSYM GL_PIXEL_MAP_G_TO_G} + GL_PIXEL_MAP_B_TO_B = $0C78; + {$EXTERNALSYM GL_PIXEL_MAP_B_TO_B} + GL_PIXEL_MAP_A_TO_A = $0C79; + {$EXTERNALSYM GL_PIXEL_MAP_A_TO_A} + + // vertex arrays + GL_VERTEX_ARRAY_POINTER = $808E; + {$EXTERNALSYM GL_VERTEX_ARRAY_POINTER} + GL_NORMAL_ARRAY_POINTER = $808F; + {$EXTERNALSYM GL_NORMAL_ARRAY_POINTER} + GL_COLOR_ARRAY_POINTER = $8090; + {$EXTERNALSYM GL_COLOR_ARRAY_POINTER} + GL_INDEX_ARRAY_POINTER = $8091; + {$EXTERNALSYM GL_INDEX_ARRAY_POINTER} + GL_TEXTURE_COORD_ARRAY_POINTER = $8092; + {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_POINTER} + GL_EDGE_FLAG_ARRAY_POINTER = $8093; + {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_POINTER} + + // stenciling + GL_STENCIL_TEST = $0B90; + {$EXTERNALSYM GL_STENCIL_TEST} + GL_STENCIL_CLEAR_VALUE = $0B91; + {$EXTERNALSYM GL_STENCIL_CLEAR_VALUE} + GL_STENCIL_FUNC = $0B92; + {$EXTERNALSYM GL_STENCIL_FUNC} + GL_STENCIL_VALUE_MASK = $0B93; + {$EXTERNALSYM GL_STENCIL_VALUE_MASK} + GL_STENCIL_FAIL = $0B94; + {$EXTERNALSYM GL_STENCIL_FAIL} + GL_STENCIL_PASS_DEPTH_FAIL = $0B95; + {$EXTERNALSYM GL_STENCIL_PASS_DEPTH_FAIL} + GL_STENCIL_PASS_DEPTH_PASS = $0B96; + {$EXTERNALSYM GL_STENCIL_PASS_DEPTH_PASS} + GL_STENCIL_REF = $0B97; + {$EXTERNALSYM GL_STENCIL_REF} + GL_STENCIL_WRITEMASK = $0B98; + {$EXTERNALSYM GL_STENCIL_WRITEMASK} + GL_KEEP = $1E00; + {$EXTERNALSYM GL_KEEP} + GL_REPLACE = $1E01; + {$EXTERNALSYM GL_REPLACE} + GL_INCR = $1E02; + {$EXTERNALSYM GL_INCR} + GL_DECR = $1E03; + {$EXTERNALSYM GL_DECR} + + // color material + GL_COLOR_MATERIAL_FACE = $0B55; + {$EXTERNALSYM GL_COLOR_MATERIAL_FACE} + GL_COLOR_MATERIAL_PARAMETER = $0B56; + {$EXTERNALSYM GL_COLOR_MATERIAL_PARAMETER} + GL_COLOR_MATERIAL = $0B57; + {$EXTERNALSYM GL_COLOR_MATERIAL} + + // points + GL_POINT_SMOOTH = $0B10; + {$EXTERNALSYM GL_POINT_SMOOTH} + GL_POINT_SIZE = $0B11; + {$EXTERNALSYM GL_POINT_SIZE} + GL_POINT_SIZE_RANGE = $0B12; + {$EXTERNALSYM GL_POINT_SIZE_RANGE} + GL_POINT_SIZE_GRANULARITY = $0B13; + {$EXTERNALSYM GL_POINT_SIZE_GRANULARITY} + + // lines + GL_LINE_SMOOTH = $0B20; + {$EXTERNALSYM GL_LINE_SMOOTH} + GL_LINE_WIDTH = $0B21; + {$EXTERNALSYM GL_LINE_WIDTH} + GL_LINE_WIDTH_RANGE = $0B22; + {$EXTERNALSYM GL_LINE_WIDTH_RANGE} + GL_LINE_WIDTH_GRANULARITY = $0B23; + {$EXTERNALSYM GL_LINE_WIDTH_GRANULARITY} + GL_LINE_STIPPLE = $0B24; + {$EXTERNALSYM GL_LINE_STIPPLE} + GL_LINE_STIPPLE_PATTERN = $0B25; + {$EXTERNALSYM GL_LINE_STIPPLE_PATTERN} + GL_LINE_STIPPLE_REPEAT = $0B26; + {$EXTERNALSYM GL_LINE_STIPPLE_REPEAT} + + // polygons + GL_POLYGON_MODE = $0B40; + {$EXTERNALSYM GL_POLYGON_MODE} + GL_POLYGON_SMOOTH = $0B41; + {$EXTERNALSYM GL_POLYGON_SMOOTH} + GL_POLYGON_STIPPLE = $0B42; + {$EXTERNALSYM GL_POLYGON_STIPPLE} + GL_EDGE_FLAG = $0B43; + {$EXTERNALSYM GL_EDGE_FLAG} + GL_CULL_FACE = $0B44; + {$EXTERNALSYM GL_CULL_FACE} + GL_CULL_FACE_MODE = $0B45; + {$EXTERNALSYM GL_CULL_FACE_MODE} + GL_FRONT_FACE = $0B46; + {$EXTERNALSYM GL_FRONT_FACE} + GL_CW = $0900; + {$EXTERNALSYM GL_CW} + GL_CCW = $0901; + {$EXTERNALSYM GL_CCW} + GL_POINT = $1B00; + {$EXTERNALSYM GL_POINT} + GL_LINE = $1B01; + {$EXTERNALSYM GL_LINE} + GL_FILL = $1B02; + {$EXTERNALSYM GL_FILL} + + // display lists + GL_LIST_MODE = $0B30; + {$EXTERNALSYM GL_LIST_MODE} + GL_LIST_BASE = $0B32; + {$EXTERNALSYM GL_LIST_BASE} + GL_LIST_INDEX = $0B33; + {$EXTERNALSYM GL_LIST_INDEX} + GL_COMPILE = $1300; + {$EXTERNALSYM GL_COMPILE} + GL_COMPILE_AND_EXECUTE = $1301; + {$EXTERNALSYM GL_COMPILE_AND_EXECUTE} + + // lighting + GL_LIGHTING = $0B50; + {$EXTERNALSYM GL_LIGHTING} + GL_LIGHT_MODEL_LOCAL_VIEWER = $0B51; + {$EXTERNALSYM GL_LIGHT_MODEL_LOCAL_VIEWER} + GL_LIGHT_MODEL_TWO_SIDE = $0B52; + {$EXTERNALSYM GL_LIGHT_MODEL_TWO_SIDE} + GL_LIGHT_MODEL_AMBIENT = $0B53; + {$EXTERNALSYM GL_LIGHT_MODEL_AMBIENT} + GL_LIGHT_MODEL_COLOR_CONTROL = $81F8; // GL 1.2 + {$EXTERNALSYM GL_LIGHT_MODEL_COLOR_CONTROL} + GL_SHADE_MODEL = $0B54; + {$EXTERNALSYM GL_SHADE_MODEL} + GL_NORMALIZE = $0BA1; + {$EXTERNALSYM GL_NORMALIZE} + GL_AMBIENT = $1200; + {$EXTERNALSYM GL_AMBIENT} + GL_DIFFUSE = $1201; + {$EXTERNALSYM GL_DIFFUSE} + GL_SPECULAR = $1202; + {$EXTERNALSYM GL_SPECULAR} + GL_POSITION = $1203; + {$EXTERNALSYM GL_POSITION} + GL_SPOT_DIRECTION = $1204; + {$EXTERNALSYM GL_SPOT_DIRECTION} + GL_SPOT_EXPONENT = $1205; + {$EXTERNALSYM GL_SPOT_EXPONENT} + GL_SPOT_CUTOFF = $1206; + {$EXTERNALSYM GL_SPOT_CUTOFF} + GL_CONSTANT_ATTENUATION = $1207; + {$EXTERNALSYM GL_CONSTANT_ATTENUATION} + GL_LINEAR_ATTENUATION = $1208; + {$EXTERNALSYM GL_LINEAR_ATTENUATION} + GL_QUADRATIC_ATTENUATION = $1209; + {$EXTERNALSYM GL_QUADRATIC_ATTENUATION} + GL_EMISSION = $1600; + {$EXTERNALSYM GL_EMISSION} + GL_SHININESS = $1601; + {$EXTERNALSYM GL_SHININESS} + GL_AMBIENT_AND_DIFFUSE = $1602; + {$EXTERNALSYM GL_AMBIENT_AND_DIFFUSE} + GL_COLOR_INDEXES = $1603; + {$EXTERNALSYM GL_COLOR_INDEXES} + GL_FLAT = $1D00; + {$EXTERNALSYM GL_FLAT} + GL_SMOOTH = $1D01; + {$EXTERNALSYM GL_SMOOTH} + GL_LIGHT0 = $4000; + {$EXTERNALSYM GL_LIGHT0} + GL_LIGHT1 = $4001; + {$EXTERNALSYM GL_LIGHT1} + GL_LIGHT2 = $4002; + {$EXTERNALSYM GL_LIGHT2} + GL_LIGHT3 = $4003; + {$EXTERNALSYM GL_LIGHT3} + GL_LIGHT4 = $4004; + {$EXTERNALSYM GL_LIGHT4} + GL_LIGHT5 = $4005; + {$EXTERNALSYM GL_LIGHT5} + GL_LIGHT6 = $4006; + {$EXTERNALSYM GL_LIGHT6} + GL_LIGHT7 = $4007; + {$EXTERNALSYM GL_LIGHT7} + + // matrix modes + GL_MATRIX_MODE = $0BA0; + {$EXTERNALSYM GL_MATRIX_MODE} + GL_MODELVIEW = $1700; + {$EXTERNALSYM GL_MODELVIEW} + GL_PROJECTION = $1701; + {$EXTERNALSYM GL_PROJECTION} + GL_TEXTURE = $1702; + {$EXTERNALSYM GL_TEXTURE} + + // gets + GL_CURRENT_COLOR = $0B00; + {$EXTERNALSYM GL_CURRENT_COLOR} + GL_CURRENT_INDEX = $0B01; + {$EXTERNALSYM GL_CURRENT_INDEX} + GL_CURRENT_NORMAL = $0B02; + {$EXTERNALSYM GL_CURRENT_NORMAL} + GL_CURRENT_TEXTURE_COORDS = $0B03; + {$EXTERNALSYM GL_CURRENT_TEXTURE_COORDS} + GL_CURRENT_RASTER_COLOR = $0B04; + {$EXTERNALSYM GL_CURRENT_RASTER_COLOR} + GL_CURRENT_RASTER_INDEX = $0B05; + {$EXTERNALSYM GL_CURRENT_RASTER_INDEX} + GL_CURRENT_RASTER_TEXTURE_COORDS = $0B06; + {$EXTERNALSYM GL_CURRENT_RASTER_TEXTURE_COORDS} + GL_CURRENT_RASTER_POSITION = $0B07; + {$EXTERNALSYM GL_CURRENT_RASTER_POSITION} + GL_CURRENT_RASTER_POSITION_VALID = $0B08; + {$EXTERNALSYM GL_CURRENT_RASTER_POSITION_VALID} + GL_CURRENT_RASTER_DISTANCE = $0B09; + {$EXTERNALSYM GL_CURRENT_RASTER_DISTANCE} + GL_MAX_LIST_NESTING = $0B31; + {$EXTERNALSYM GL_MAX_LIST_NESTING} + GL_VIEWPORT = $0BA2; + {$EXTERNALSYM GL_VIEWPORT} + GL_MODELVIEW_STACK_DEPTH = $0BA3; + {$EXTERNALSYM GL_MODELVIEW_STACK_DEPTH} + GL_PROJECTION_STACK_DEPTH = $0BA4; + {$EXTERNALSYM GL_PROJECTION_STACK_DEPTH} + GL_TEXTURE_STACK_DEPTH = $0BA5; + {$EXTERNALSYM GL_TEXTURE_STACK_DEPTH} + GL_MODELVIEW_MATRIX = $0BA6; + {$EXTERNALSYM GL_MODELVIEW_MATRIX} + GL_PROJECTION_MATRIX = $0BA7; + {$EXTERNALSYM GL_PROJECTION_MATRIX} + GL_TEXTURE_MATRIX = $0BA8; + {$EXTERNALSYM GL_TEXTURE_MATRIX} + GL_ATTRIB_STACK_DEPTH = $0BB0; + {$EXTERNALSYM GL_ATTRIB_STACK_DEPTH} + GL_CLIENT_ATTRIB_STACK_DEPTH = $0BB1; + {$EXTERNALSYM GL_CLIENT_ATTRIB_STACK_DEPTH} + + GL_SINGLE_COLOR = $81F9; // GL 1.2 + {$EXTERNALSYM GL_SINGLE_COLOR} + GL_SEPARATE_SPECULAR_COLOR = $81FA; // GL 1.2 + {$EXTERNALSYM GL_SEPARATE_SPECULAR_COLOR} + + // alpha testing + GL_ALPHA_TEST = $0BC0; + {$EXTERNALSYM GL_ALPHA_TEST} + GL_ALPHA_TEST_FUNC = $0BC1; + {$EXTERNALSYM GL_ALPHA_TEST_FUNC} + GL_ALPHA_TEST_REF = $0BC2; + {$EXTERNALSYM GL_ALPHA_TEST_REF} + + GL_LOGIC_OP_MODE = $0BF0; + {$EXTERNALSYM GL_LOGIC_OP_MODE} + GL_INDEX_LOGIC_OP = $0BF1; + {$EXTERNALSYM GL_INDEX_LOGIC_OP} + GL_LOGIC_OP = $0BF1; + {$EXTERNALSYM GL_LOGIC_OP} + GL_COLOR_LOGIC_OP = $0BF2; + {$EXTERNALSYM GL_COLOR_LOGIC_OP} + GL_SCISSOR_BOX = $0C10; + {$EXTERNALSYM GL_SCISSOR_BOX} + GL_SCISSOR_TEST = $0C11; + {$EXTERNALSYM GL_SCISSOR_TEST} + GL_INDEX_CLEAR_VALUE = $0C20; + {$EXTERNALSYM GL_INDEX_CLEAR_VALUE} + GL_INDEX_WRITEMASK = $0C21; + {$EXTERNALSYM GL_INDEX_WRITEMASK} + GL_COLOR_CLEAR_VALUE = $0C22; + {$EXTERNALSYM GL_COLOR_CLEAR_VALUE} + GL_COLOR_WRITEMASK = $0C23; + {$EXTERNALSYM GL_COLOR_WRITEMASK} + GL_INDEX_MODE = $0C30; + {$EXTERNALSYM GL_INDEX_MODE} + GL_RGBA_MODE = $0C31; + {$EXTERNALSYM GL_RGBA_MODE} + GL_RENDER_MODE = $0C40; + {$EXTERNALSYM GL_RENDER_MODE} + GL_PERSPECTIVE_CORRECTION_HINT = $0C50; + {$EXTERNALSYM GL_PERSPECTIVE_CORRECTION_HINT} + GL_POINT_SMOOTH_HINT = $0C51; + {$EXTERNALSYM GL_POINT_SMOOTH_HINT} + GL_LINE_SMOOTH_HINT = $0C52; + {$EXTERNALSYM GL_LINE_SMOOTH_HINT} + GL_POLYGON_SMOOTH_HINT = $0C53; + {$EXTERNALSYM GL_POLYGON_SMOOTH_HINT} + GL_FOG_HINT = $0C54; + {$EXTERNALSYM GL_FOG_HINT} + GL_TEXTURE_GEN_S = $0C60; + {$EXTERNALSYM GL_TEXTURE_GEN_S} + GL_TEXTURE_GEN_T = $0C61; + {$EXTERNALSYM GL_TEXTURE_GEN_T} + GL_TEXTURE_GEN_R = $0C62; + {$EXTERNALSYM GL_TEXTURE_GEN_R} + GL_TEXTURE_GEN_Q = $0C63; + {$EXTERNALSYM GL_TEXTURE_GEN_Q} + GL_PIXEL_MAP_I_TO_I_SIZE = $0CB0; + {$EXTERNALSYM GL_PIXEL_MAP_I_TO_I_SIZE} + GL_PIXEL_MAP_S_TO_S_SIZE = $0CB1; + {$EXTERNALSYM GL_PIXEL_MAP_S_TO_S_SIZE} + GL_PIXEL_MAP_I_TO_R_SIZE = $0CB2; + {$EXTERNALSYM GL_PIXEL_MAP_I_TO_R_SIZE} + GL_PIXEL_MAP_I_TO_G_SIZE = $0CB3; + {$EXTERNALSYM GL_PIXEL_MAP_I_TO_G_SIZE} + GL_PIXEL_MAP_I_TO_B_SIZE = $0CB4; + {$EXTERNALSYM GL_PIXEL_MAP_I_TO_B_SIZE} + GL_PIXEL_MAP_I_TO_A_SIZE = $0CB5; + {$EXTERNALSYM GL_PIXEL_MAP_I_TO_A_SIZE} + GL_PIXEL_MAP_R_TO_R_SIZE = $0CB6; + {$EXTERNALSYM GL_PIXEL_MAP_R_TO_R_SIZE} + GL_PIXEL_MAP_G_TO_G_SIZE = $0CB7; + {$EXTERNALSYM GL_PIXEL_MAP_G_TO_G_SIZE} + GL_PIXEL_MAP_B_TO_B_SIZE = $0CB8; + {$EXTERNALSYM GL_PIXEL_MAP_B_TO_B_SIZE} + GL_PIXEL_MAP_A_TO_A_SIZE = $0CB9; + {$EXTERNALSYM GL_PIXEL_MAP_A_TO_A_SIZE} + GL_UNPACK_SWAP_BYTES = $0CF0; + {$EXTERNALSYM GL_UNPACK_SWAP_BYTES} + GL_UNPACK_LSB_FIRST = $0CF1; + {$EXTERNALSYM GL_UNPACK_LSB_FIRST} + GL_UNPACK_ROW_LENGTH = $0CF2; + {$EXTERNALSYM GL_UNPACK_ROW_LENGTH} + GL_UNPACK_SKIP_ROWS = $0CF3; + {$EXTERNALSYM GL_UNPACK_SKIP_ROWS} + GL_UNPACK_SKIP_PIXELS = $0CF4; + {$EXTERNALSYM GL_UNPACK_SKIP_PIXELS} + GL_UNPACK_ALIGNMENT = $0CF5; + {$EXTERNALSYM GL_UNPACK_ALIGNMENT} + GL_PACK_SWAP_BYTES = $0D00; + {$EXTERNALSYM GL_PACK_SWAP_BYTES} + GL_PACK_LSB_FIRST = $0D01; + {$EXTERNALSYM GL_PACK_LSB_FIRST} + GL_PACK_ROW_LENGTH = $0D02; + {$EXTERNALSYM GL_PACK_ROW_LENGTH} + GL_PACK_SKIP_ROWS = $0D03; + {$EXTERNALSYM GL_PACK_SKIP_ROWS} + GL_PACK_SKIP_PIXELS = $0D04; + {$EXTERNALSYM GL_PACK_SKIP_PIXELS} + GL_PACK_ALIGNMENT = $0D05; + {$EXTERNALSYM GL_PACK_ALIGNMENT} + GL_PACK_SKIP_IMAGES = $806B; // GL 1.2 + {$EXTERNALSYM GL_PACK_SKIP_IMAGES} + GL_PACK_IMAGE_HEIGHT = $806C; // GL 1.2 + {$EXTERNALSYM GL_PACK_IMAGE_HEIGHT} + GL_UNPACK_SKIP_IMAGES = $806D; // GL 1.2 + {$EXTERNALSYM GL_UNPACK_SKIP_IMAGES} + GL_UNPACK_IMAGE_HEIGHT = $806E; // GL 1.2 + {$EXTERNALSYM GL_UNPACK_IMAGE_HEIGHT} + GL_MAP_COLOR = $0D10; + {$EXTERNALSYM GL_MAP_COLOR} + GL_MAP_STENCIL = $0D11; + {$EXTERNALSYM GL_MAP_STENCIL} + GL_INDEX_SHIFT = $0D12; + {$EXTERNALSYM GL_INDEX_SHIFT} + GL_INDEX_OFFSET = $0D13; + {$EXTERNALSYM GL_INDEX_OFFSET} + GL_RED_SCALE = $0D14; + {$EXTERNALSYM GL_RED_SCALE} + GL_RED_BIAS = $0D15; + {$EXTERNALSYM GL_RED_BIAS} + GL_ZOOM_X = $0D16; + {$EXTERNALSYM GL_ZOOM_X} + GL_ZOOM_Y = $0D17; + {$EXTERNALSYM GL_ZOOM_Y} + GL_GREEN_SCALE = $0D18; + {$EXTERNALSYM GL_GREEN_SCALE} + GL_GREEN_BIAS = $0D19; + {$EXTERNALSYM GL_GREEN_BIAS} + GL_BLUE_SCALE = $0D1A; + {$EXTERNALSYM GL_BLUE_SCALE} + GL_BLUE_BIAS = $0D1B; + {$EXTERNALSYM GL_BLUE_BIAS} + GL_ALPHA_SCALE = $0D1C; + {$EXTERNALSYM GL_ALPHA_SCALE} + GL_ALPHA_BIAS = $0D1D; + {$EXTERNALSYM GL_ALPHA_BIAS} + GL_DEPTH_SCALE = $0D1E; + {$EXTERNALSYM GL_DEPTH_SCALE} + GL_DEPTH_BIAS = $0D1F; + {$EXTERNALSYM GL_DEPTH_BIAS} + GL_MAX_EVAL_ORDER = $0D30; + {$EXTERNALSYM GL_MAX_EVAL_ORDER} + GL_MAX_LIGHTS = $0D31; + {$EXTERNALSYM GL_MAX_LIGHTS} + GL_MAX_CLIP_PLANES = $0D32; + {$EXTERNALSYM GL_MAX_CLIP_PLANES} + GL_MAX_TEXTURE_SIZE = $0D33; + {$EXTERNALSYM GL_MAX_TEXTURE_SIZE} + GL_MAX_3D_TEXTURE_SIZE = $8073; // GL 1.2 + {$EXTERNALSYM GL_MAX_3D_TEXTURE_SIZE} + GL_MAX_PIXEL_MAP_TABLE = $0D34; + {$EXTERNALSYM GL_MAX_PIXEL_MAP_TABLE} + GL_MAX_ATTRIB_STACK_DEPTH = $0D35; + {$EXTERNALSYM GL_MAX_ATTRIB_STACK_DEPTH} + GL_MAX_MODELVIEW_STACK_DEPTH = $0D36; + {$EXTERNALSYM GL_MAX_MODELVIEW_STACK_DEPTH} + GL_MAX_NAME_STACK_DEPTH = $0D37; + {$EXTERNALSYM GL_MAX_NAME_STACK_DEPTH} + GL_MAX_PROJECTION_STACK_DEPTH = $0D38; + {$EXTERNALSYM GL_MAX_PROJECTION_STACK_DEPTH} + GL_MAX_TEXTURE_STACK_DEPTH = $0D39; + {$EXTERNALSYM GL_MAX_TEXTURE_STACK_DEPTH} + GL_MAX_VIEWPORT_DIMS = $0D3A; + {$EXTERNALSYM GL_MAX_VIEWPORT_DIMS} + GL_MAX_CLIENT_ATTRIB_STACK_DEPTH = $0D3B; + {$EXTERNALSYM GL_MAX_CLIENT_ATTRIB_STACK_DEPTH} + GL_MAX_ELEMENTS_VERTICES = $80E8; // GL 1.2 + {$EXTERNALSYM GL_MAX_ELEMENTS_VERTICES} + GL_MAX_ELEMENTS_INDICES = $80E9; // GL 1.2 + {$EXTERNALSYM GL_MAX_ELEMENTS_INDICES} + GL_RESCALE_NORMAL = $803A; // GL 1.2 + {$EXTERNALSYM GL_RESCALE_NORMAL} + GL_SUBPIXEL_BITS = $0D50; + {$EXTERNALSYM GL_SUBPIXEL_BITS} + GL_INDEX_BITS = $0D51; + {$EXTERNALSYM GL_INDEX_BITS} + GL_RED_BITS = $0D52; + {$EXTERNALSYM GL_RED_BITS} + GL_GREEN_BITS = $0D53; + {$EXTERNALSYM GL_GREEN_BITS} + GL_BLUE_BITS = $0D54; + {$EXTERNALSYM GL_BLUE_BITS} + GL_ALPHA_BITS = $0D55; + {$EXTERNALSYM GL_ALPHA_BITS} + GL_DEPTH_BITS = $0D56; + {$EXTERNALSYM GL_DEPTH_BITS} + GL_STENCIL_BITS = $0D57; + {$EXTERNALSYM GL_STENCIL_BITS} + GL_ACCUM_RED_BITS = $0D58; + {$EXTERNALSYM GL_ACCUM_RED_BITS} + GL_ACCUM_GREEN_BITS = $0D59; + {$EXTERNALSYM GL_ACCUM_GREEN_BITS} + GL_ACCUM_BLUE_BITS = $0D5A; + {$EXTERNALSYM GL_ACCUM_BLUE_BITS} + GL_ACCUM_ALPHA_BITS = $0D5B; + {$EXTERNALSYM GL_ACCUM_ALPHA_BITS} + GL_NAME_STACK_DEPTH = $0D70; + {$EXTERNALSYM GL_NAME_STACK_DEPTH} + GL_AUTO_NORMAL = $0D80; + {$EXTERNALSYM GL_AUTO_NORMAL} + GL_MAP1_COLOR_4 = $0D90; + {$EXTERNALSYM GL_MAP1_COLOR_4} + GL_MAP1_INDEX = $0D91; + {$EXTERNALSYM GL_MAP1_INDEX} + GL_MAP1_NORMAL = $0D92; + {$EXTERNALSYM GL_MAP1_NORMAL} + GL_MAP1_TEXTURE_COORD_1 = $0D93; + {$EXTERNALSYM GL_MAP1_TEXTURE_COORD_1} + GL_MAP1_TEXTURE_COORD_2 = $0D94; + {$EXTERNALSYM GL_MAP1_TEXTURE_COORD_2} + GL_MAP1_TEXTURE_COORD_3 = $0D95; + {$EXTERNALSYM GL_MAP1_TEXTURE_COORD_3} + GL_MAP1_TEXTURE_COORD_4 = $0D96; + {$EXTERNALSYM GL_MAP1_TEXTURE_COORD_4} + GL_MAP1_VERTEX_3 = $0D97; + {$EXTERNALSYM GL_MAP1_VERTEX_3} + GL_MAP1_VERTEX_4 = $0D98; + {$EXTERNALSYM GL_MAP1_VERTEX_4} + GL_MAP2_COLOR_4 = $0DB0; + {$EXTERNALSYM GL_MAP2_COLOR_4} + GL_MAP2_INDEX = $0DB1; + {$EXTERNALSYM GL_MAP2_INDEX} + GL_MAP2_NORMAL = $0DB2; + {$EXTERNALSYM GL_MAP2_NORMAL} + GL_MAP2_TEXTURE_COORD_1 = $0DB3; + {$EXTERNALSYM GL_MAP2_TEXTURE_COORD_1} + GL_MAP2_TEXTURE_COORD_2 = $0DB4; + {$EXTERNALSYM GL_MAP2_TEXTURE_COORD_2} + GL_MAP2_TEXTURE_COORD_3 = $0DB5; + {$EXTERNALSYM GL_MAP2_TEXTURE_COORD_3} + GL_MAP2_TEXTURE_COORD_4 = $0DB6; + {$EXTERNALSYM GL_MAP2_TEXTURE_COORD_4} + GL_MAP2_VERTEX_3 = $0DB7; + {$EXTERNALSYM GL_MAP2_VERTEX_3} + GL_MAP2_VERTEX_4 = $0DB8; + {$EXTERNALSYM GL_MAP2_VERTEX_4} + GL_MAP1_GRID_DOMAIN = $0DD0; + {$EXTERNALSYM GL_MAP1_GRID_DOMAIN} + GL_MAP1_GRID_SEGMENTS = $0DD1; + {$EXTERNALSYM GL_MAP1_GRID_SEGMENTS} + GL_MAP2_GRID_DOMAIN = $0DD2; + {$EXTERNALSYM GL_MAP2_GRID_DOMAIN} + GL_MAP2_GRID_SEGMENTS = $0DD3; + {$EXTERNALSYM GL_MAP2_GRID_SEGMENTS} + GL_TEXTURE_1D = $0DE0; + {$EXTERNALSYM GL_TEXTURE_1D} + GL_TEXTURE_2D = $0DE1; + {$EXTERNALSYM GL_TEXTURE_2D} + GL_TEXTURE_3D = $806F; // GL 1.2 + {$EXTERNALSYM GL_TEXTURE_3D} + GL_SELECTION_BUFFER_POINTER = $0DF3; + {$EXTERNALSYM GL_SELECTION_BUFFER_POINTER} + GL_SELECTION_BUFFER_SIZE = $0DF4; + {$EXTERNALSYM GL_SELECTION_BUFFER_SIZE} + GL_POLYGON_OFFSET_UNITS = $2A00; + {$EXTERNALSYM GL_POLYGON_OFFSET_UNITS} + GL_POLYGON_OFFSET_POINT = $2A01; + {$EXTERNALSYM GL_POLYGON_OFFSET_POINT} + GL_POLYGON_OFFSET_LINE = $2A02; + {$EXTERNALSYM GL_POLYGON_OFFSET_LINE} + GL_POLYGON_OFFSET_FILL = $8037; + {$EXTERNALSYM GL_POLYGON_OFFSET_FILL} + GL_POLYGON_OFFSET_FACTOR = $8038; + {$EXTERNALSYM GL_POLYGON_OFFSET_FACTOR} + GL_TEXTURE_BINDING_1D = $8068; + {$EXTERNALSYM GL_TEXTURE_BINDING_1D} + GL_TEXTURE_BINDING_2D = $8069; + {$EXTERNALSYM GL_TEXTURE_BINDING_2D} + GL_VERTEX_ARRAY = $8074; + {$EXTERNALSYM GL_VERTEX_ARRAY} + GL_NORMAL_ARRAY = $8075; + {$EXTERNALSYM GL_NORMAL_ARRAY} + GL_COLOR_ARRAY = $8076; + {$EXTERNALSYM GL_COLOR_ARRAY} + GL_INDEX_ARRAY = $8077; + {$EXTERNALSYM GL_INDEX_ARRAY} + GL_TEXTURE_COORD_ARRAY = $8078; + {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY} + GL_EDGE_FLAG_ARRAY = $8079; + {$EXTERNALSYM GL_EDGE_FLAG_ARRAY} + GL_VERTEX_ARRAY_SIZE = $807A; + {$EXTERNALSYM GL_VERTEX_ARRAY_SIZE} + GL_VERTEX_ARRAY_TYPE = $807B; + {$EXTERNALSYM GL_VERTEX_ARRAY_TYPE} + GL_VERTEX_ARRAY_STRIDE = $807C; + {$EXTERNALSYM GL_VERTEX_ARRAY_STRIDE} + GL_NORMAL_ARRAY_TYPE = $807E; + {$EXTERNALSYM GL_NORMAL_ARRAY_TYPE} + GL_NORMAL_ARRAY_STRIDE = $807F; + {$EXTERNALSYM GL_NORMAL_ARRAY_STRIDE} + GL_COLOR_ARRAY_SIZE = $8081; + {$EXTERNALSYM GL_COLOR_ARRAY_SIZE} + GL_COLOR_ARRAY_TYPE = $8082; + {$EXTERNALSYM GL_COLOR_ARRAY_TYPE} + GL_COLOR_ARRAY_STRIDE = $8083; + {$EXTERNALSYM GL_COLOR_ARRAY_STRIDE} + GL_INDEX_ARRAY_TYPE = $8085; + {$EXTERNALSYM GL_INDEX_ARRAY_TYPE} + GL_INDEX_ARRAY_STRIDE = $8086; + {$EXTERNALSYM GL_INDEX_ARRAY_STRIDE} + GL_TEXTURE_COORD_ARRAY_SIZE = $8088; + {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_SIZE} + GL_TEXTURE_COORD_ARRAY_TYPE = $8089; + {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_TYPE} + GL_TEXTURE_COORD_ARRAY_STRIDE = $808A; + {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_STRIDE} + GL_EDGE_FLAG_ARRAY_STRIDE = $808C; + {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_STRIDE} + GL_COLOR_MATRIX = $80B1; // GL 1.2 ARB imaging + {$EXTERNALSYM GL_COLOR_MATRIX} + GL_COLOR_MATRIX_STACK_DEPTH = $80B2; // GL 1.2 ARB imaging + {$EXTERNALSYM GL_COLOR_MATRIX_STACK_DEPTH} + GL_MAX_COLOR_MATRIX_STACK_DEPTH = $80B3; // GL 1.2 ARB imaging + {$EXTERNALSYM GL_MAX_COLOR_MATRIX_STACK_DEPTH} + GL_POST_COLOR_MATRIX_RED_SCALE = $80B4; // GL 1.2 ARB imaging + {$EXTERNALSYM GL_POST_COLOR_MATRIX_RED_SCALE} + GL_POST_COLOR_MATRIX_GREEN_SCALE = $80B5; // GL 1.2 ARB imaging + {$EXTERNALSYM GL_POST_COLOR_MATRIX_GREEN_SCALE} + GL_POST_COLOR_MATRIX_BLUE_SCALE = $80B6; // GL 1.2 ARB imaging + {$EXTERNALSYM GL_POST_COLOR_MATRIX_BLUE_SCALE} + GL_POST_COLOR_MATRIX_ALPHA_SCALE = $80B7; // GL 1.2 ARB imaging + {$EXTERNALSYM GL_POST_COLOR_MATRIX_ALPHA_SCALE} + GL_POST_COLOR_MATRIX_RED_BIAS = $80B8; // GL 1.2 ARB imaging + {$EXTERNALSYM GL_POST_COLOR_MATRIX_RED_BIAS} + GL_POST_COLOR_MATRIX_GREEN_BIAS = $80B9; // GL 1.2 ARB imaging + {$EXTERNALSYM GL_POST_COLOR_MATRIX_GREEN_BIAS} + GL_POST_COLOR_MATRIX_BLUE_BIAS = $80BA; // GL 1.2 ARB imaging + {$EXTERNALSYM GL_POST_COLOR_MATRIX_BLUE_BIAS} + GL_POST_COLOR_MATRIX_ALPHA_BIAS = $80BB; // GL 1.2 ARB imaging + {$EXTERNALSYM GL_POST_COLOR_MATRIX_ALPHA_BIAS} + + // evaluators + GL_COEFF = $0A00; + {$EXTERNALSYM GL_COEFF} + GL_ORDER = $0A01; + {$EXTERNALSYM GL_ORDER} + GL_DOMAIN = $0A02; + {$EXTERNALSYM GL_DOMAIN} + + // texture mapping + GL_TEXTURE_WIDTH = $1000; + {$EXTERNALSYM GL_TEXTURE_WIDTH} + GL_TEXTURE_HEIGHT = $1001; + {$EXTERNALSYM GL_TEXTURE_HEIGHT} + GL_TEXTURE_INTERNAL_FORMAT = $1003; + {$EXTERNALSYM GL_TEXTURE_INTERNAL_FORMAT} + GL_TEXTURE_COMPONENTS = $1003; + {$EXTERNALSYM GL_TEXTURE_COMPONENTS} + GL_TEXTURE_BORDER_COLOR = $1004; + {$EXTERNALSYM GL_TEXTURE_BORDER_COLOR} + GL_TEXTURE_BORDER = $1005; + {$EXTERNALSYM GL_TEXTURE_BORDER} + GL_TEXTURE_RED_SIZE = $805C; + {$EXTERNALSYM GL_TEXTURE_RED_SIZE} + GL_TEXTURE_GREEN_SIZE = $805D; + {$EXTERNALSYM GL_TEXTURE_GREEN_SIZE} + GL_TEXTURE_BLUE_SIZE = $805E; + {$EXTERNALSYM GL_TEXTURE_BLUE_SIZE} + GL_TEXTURE_ALPHA_SIZE = $805F; + {$EXTERNALSYM GL_TEXTURE_ALPHA_SIZE} + GL_TEXTURE_LUMINANCE_SIZE = $8060; + {$EXTERNALSYM GL_TEXTURE_LUMINANCE_SIZE} + GL_TEXTURE_INTENSITY_SIZE = $8061; + {$EXTERNALSYM GL_TEXTURE_INTENSITY_SIZE} + GL_TEXTURE_PRIORITY = $8066; + {$EXTERNALSYM GL_TEXTURE_PRIORITY} + GL_TEXTURE_RESIDENT = $8067; + {$EXTERNALSYM GL_TEXTURE_RESIDENT} + GL_BGR = $80E0; // v 1.2 + {$EXTERNALSYM GL_BGR} + GL_BGRA = $80E1; // v 1.2 + {$EXTERNALSYM GL_BGRA} + GL_S = $2000; + {$EXTERNALSYM GL_S} + GL_T = $2001; + {$EXTERNALSYM GL_T} + GL_R = $2002; + {$EXTERNALSYM GL_R} + GL_Q = $2003; + {$EXTERNALSYM GL_Q} + GL_MODULATE = $2100; + {$EXTERNALSYM GL_MODULATE} + GL_DECAL = $2101; + {$EXTERNALSYM GL_DECAL} + GL_TEXTURE_ENV_MODE = $2200; + {$EXTERNALSYM GL_TEXTURE_ENV_MODE} + GL_TEXTURE_ENV_COLOR = $2201; + {$EXTERNALSYM GL_TEXTURE_ENV_COLOR} + GL_TEXTURE_ENV = $2300; + {$EXTERNALSYM GL_TEXTURE_ENV} + GL_EYE_LINEAR = $2400; + {$EXTERNALSYM GL_EYE_LINEAR} + GL_OBJECT_LINEAR = $2401; + {$EXTERNALSYM GL_OBJECT_LINEAR} + GL_SPHERE_MAP = $2402; + {$EXTERNALSYM GL_SPHERE_MAP} + GL_TEXTURE_GEN_MODE = $2500; + {$EXTERNALSYM GL_TEXTURE_GEN_MODE} + GL_OBJECT_PLANE = $2501; + {$EXTERNALSYM GL_OBJECT_PLANE} + GL_EYE_PLANE = $2502; + {$EXTERNALSYM GL_EYE_PLANE} + GL_NEAREST = $2600; + {$EXTERNALSYM GL_NEAREST} + GL_LINEAR = $2601; + {$EXTERNALSYM GL_LINEAR} + GL_NEAREST_MIPMAP_NEAREST = $2700; + {$EXTERNALSYM GL_NEAREST_MIPMAP_NEAREST} + GL_LINEAR_MIPMAP_NEAREST = $2701; + {$EXTERNALSYM GL_LINEAR_MIPMAP_NEAREST} + GL_NEAREST_MIPMAP_LINEAR = $2702; + {$EXTERNALSYM GL_NEAREST_MIPMAP_LINEAR} + GL_LINEAR_MIPMAP_LINEAR = $2703; + {$EXTERNALSYM GL_LINEAR_MIPMAP_LINEAR} + GL_TEXTURE_MAG_FILTER = $2800; + {$EXTERNALSYM GL_TEXTURE_MAG_FILTER} + GL_TEXTURE_MIN_FILTER = $2801; + {$EXTERNALSYM GL_TEXTURE_MIN_FILTER} + GL_TEXTURE_WRAP_R = $8072; // GL 1.2 + {$EXTERNALSYM GL_TEXTURE_WRAP_R} + GL_TEXTURE_WRAP_S = $2802; + {$EXTERNALSYM GL_TEXTURE_WRAP_S} + GL_TEXTURE_WRAP_T = $2803; + {$EXTERNALSYM GL_TEXTURE_WRAP_T} + GL_CLAMP_TO_EDGE = $812F; // GL 1.2 + {$EXTERNALSYM GL_CLAMP_TO_EDGE} + GL_TEXTURE_MIN_LOD = $813A; // GL 1.2 + {$EXTERNALSYM GL_TEXTURE_MIN_LOD} + GL_TEXTURE_MAX_LOD = $813B; // GL 1.2 + {$EXTERNALSYM GL_TEXTURE_MAX_LOD} + GL_TEXTURE_BASE_LEVEL = $813C; // GL 1.2 + {$EXTERNALSYM GL_TEXTURE_BASE_LEVEL} + GL_TEXTURE_MAX_LEVEL = $813D; // GL 1.2 + {$EXTERNALSYM GL_TEXTURE_MAX_LEVEL} + GL_TEXTURE_DEPTH = $8071; // GL 1.2 + {$EXTERNALSYM GL_TEXTURE_DEPTH} + GL_PROXY_TEXTURE_1D = $8063; + {$EXTERNALSYM GL_PROXY_TEXTURE_1D} + GL_PROXY_TEXTURE_2D = $8064; + {$EXTERNALSYM GL_PROXY_TEXTURE_2D} + GL_PROXY_TEXTURE_3D = $8070; // GL 1.2 + {$EXTERNALSYM GL_PROXY_TEXTURE_3D} + GL_CLAMP = $2900; + {$EXTERNALSYM GL_CLAMP} + GL_REPEAT = $2901; + {$EXTERNALSYM GL_REPEAT} + + // hints + GL_DONT_CARE = $1100; + {$EXTERNALSYM GL_DONT_CARE} + GL_FASTEST = $1101; + {$EXTERNALSYM GL_FASTEST} + GL_NICEST = $1102; + {$EXTERNALSYM GL_NICEST} + + // data types + GL_BYTE = $1400; + {$EXTERNALSYM GL_BYTE} + GL_UNSIGNED_BYTE = $1401; + {$EXTERNALSYM GL_UNSIGNED_BYTE} + GL_SHORT = $1402; + {$EXTERNALSYM GL_SHORT} + GL_UNSIGNED_SHORT = $1403; + {$EXTERNALSYM GL_UNSIGNED_SHORT} + GL_INT = $1404; + {$EXTERNALSYM GL_INT} + GL_UNSIGNED_INT = $1405; + {$EXTERNALSYM GL_UNSIGNED_INT} + GL_FLOAT = $1406; + {$EXTERNALSYM GL_FLOAT} + GL_2_BYTES = $1407; + {$EXTERNALSYM GL_2_BYTES} + GL_3_BYTES = $1408; + {$EXTERNALSYM GL_3_BYTES} + GL_4_BYTES = $1409; + {$EXTERNALSYM GL_4_BYTES} + GL_DOUBLE = $140A; + {$EXTERNALSYM GL_DOUBLE} + GL_DOUBLE_EXT = $140A; + {$EXTERNALSYM GL_DOUBLE_EXT} + + // logic operations + GL_CLEAR = $1500; + {$EXTERNALSYM GL_CLEAR} + GL_AND = $1501; + {$EXTERNALSYM GL_AND} + GL_AND_REVERSE = $1502; + {$EXTERNALSYM GL_AND_REVERSE} + GL_COPY = $1503; + {$EXTERNALSYM GL_COPY} + GL_AND_INVERTED = $1504; + {$EXTERNALSYM GL_AND_INVERTED} + GL_NOOP = $1505; + {$EXTERNALSYM GL_NOOP} + GL_XOR = $1506; + {$EXTERNALSYM GL_XOR} + GL_OR = $1507; + {$EXTERNALSYM GL_OR} + GL_NOR = $1508; + {$EXTERNALSYM GL_NOR} + GL_EQUIV = $1509; + {$EXTERNALSYM GL_EQUIV} + GL_INVERT = $150A; + {$EXTERNALSYM GL_INVERT} + GL_OR_REVERSE = $150B; + {$EXTERNALSYM GL_OR_REVERSE} + GL_COPY_INVERTED = $150C; + {$EXTERNALSYM GL_COPY_INVERTED} + GL_OR_INVERTED = $150D; + {$EXTERNALSYM GL_OR_INVERTED} + GL_NAND = $150E; + {$EXTERNALSYM GL_NAND} + GL_SET = $150F; + {$EXTERNALSYM GL_SET} + + // PixelCopyType + GL_COLOR = $1800; + {$EXTERNALSYM GL_COLOR} + GL_DEPTH = $1801; + {$EXTERNALSYM GL_DEPTH} + GL_STENCIL = $1802; + {$EXTERNALSYM GL_STENCIL} + + // pixel formats + GL_COLOR_INDEX = $1900; + {$EXTERNALSYM GL_COLOR_INDEX} + GL_STENCIL_INDEX = $1901; + {$EXTERNALSYM GL_STENCIL_INDEX} + GL_DEPTH_COMPONENT = $1902; + {$EXTERNALSYM GL_DEPTH_COMPONENT} + GL_RED = $1903; + {$EXTERNALSYM GL_RED} + GL_GREEN = $1904; + {$EXTERNALSYM GL_GREEN} + GL_BLUE = $1905; + {$EXTERNALSYM GL_BLUE} + GL_ALPHA = $1906; + {$EXTERNALSYM GL_ALPHA} + GL_RGB = $1907; + {$EXTERNALSYM GL_RGB} + GL_RGBA = $1908; + {$EXTERNALSYM GL_RGBA} + GL_LUMINANCE = $1909; + {$EXTERNALSYM GL_LUMINANCE} + GL_LUMINANCE_ALPHA = $190A; + {$EXTERNALSYM GL_LUMINANCE_ALPHA} + + // pixel type + GL_BITMAP = $1A00; + {$EXTERNALSYM GL_BITMAP} + + // rendering modes + GL_RENDER = $1C00; + {$EXTERNALSYM GL_RENDER} + GL_FEEDBACK = $1C01; + {$EXTERNALSYM GL_FEEDBACK} + GL_SELECT = $1C02; + {$EXTERNALSYM GL_SELECT} + + // implementation strings + GL_VENDOR = $1F00; + {$EXTERNALSYM GL_VENDOR} + GL_RENDERER = $1F01; + {$EXTERNALSYM GL_RENDERER} + GL_VERSION = $1F02; + {$EXTERNALSYM GL_VERSION} + GL_EXTENSIONS = $1F03; + {$EXTERNALSYM GL_EXTENSIONS} + + // pixel formats + GL_R3_G3_B2 = $2A10; + {$EXTERNALSYM GL_R3_G3_B2} + GL_ALPHA4 = $803B; + {$EXTERNALSYM GL_ALPHA4} + GL_ALPHA8 = $803C; + {$EXTERNALSYM GL_ALPHA8} + GL_ALPHA12 = $803D; + {$EXTERNALSYM GL_ALPHA12} + GL_ALPHA16 = $803E; + {$EXTERNALSYM GL_ALPHA16} + GL_LUMINANCE4 = $803F; + {$EXTERNALSYM GL_LUMINANCE4} + GL_LUMINANCE8 = $8040; + {$EXTERNALSYM GL_LUMINANCE8} + GL_LUMINANCE12 = $8041; + {$EXTERNALSYM GL_LUMINANCE12} + GL_LUMINANCE16 = $8042; + {$EXTERNALSYM GL_LUMINANCE16} + GL_LUMINANCE4_ALPHA4 = $8043; + {$EXTERNALSYM GL_LUMINANCE4_ALPHA4} + GL_LUMINANCE6_ALPHA2 = $8044; + {$EXTERNALSYM GL_LUMINANCE6_ALPHA2} + GL_LUMINANCE8_ALPHA8 = $8045; + {$EXTERNALSYM GL_LUMINANCE8_ALPHA8} + GL_LUMINANCE12_ALPHA4 = $8046; + {$EXTERNALSYM GL_LUMINANCE12_ALPHA4} + GL_LUMINANCE12_ALPHA12 = $8047; + {$EXTERNALSYM GL_LUMINANCE12_ALPHA12} + GL_LUMINANCE16_ALPHA16 = $8048; + {$EXTERNALSYM GL_LUMINANCE16_ALPHA16} + GL_INTENSITY = $8049; + {$EXTERNALSYM GL_INTENSITY} + GL_INTENSITY4 = $804A; + {$EXTERNALSYM GL_INTENSITY4} + GL_INTENSITY8 = $804B; + {$EXTERNALSYM GL_INTENSITY8} + GL_INTENSITY12 = $804C; + {$EXTERNALSYM GL_INTENSITY12} + GL_INTENSITY16 = $804D; + {$EXTERNALSYM GL_INTENSITY16} + GL_RGB4 = $804F; + {$EXTERNALSYM GL_RGB4} + GL_RGB5 = $8050; + {$EXTERNALSYM GL_RGB5} + GL_RGB8 = $8051; + {$EXTERNALSYM GL_RGB8} + GL_RGB10 = $8052; + {$EXTERNALSYM GL_RGB10} + GL_RGB12 = $8053; + {$EXTERNALSYM GL_RGB12} + GL_RGB16 = $8054; + {$EXTERNALSYM GL_RGB16} + GL_RGBA2 = $8055; + {$EXTERNALSYM GL_RGBA2} + GL_RGBA4 = $8056; + {$EXTERNALSYM GL_RGBA4} + GL_RGB5_A1 = $8057; + {$EXTERNALSYM GL_RGB5_A1} + GL_RGBA8 = $8058; + {$EXTERNALSYM GL_RGBA8} + GL_RGB10_A2 = $8059; + {$EXTERNALSYM GL_RGB10_A2} + GL_RGBA12 = $805A; + {$EXTERNALSYM GL_RGBA12} + GL_RGBA16 = $805B; + {$EXTERNALSYM GL_RGBA16} + UNSIGNED_BYTE_3_3_2 = $8032; // GL 1.2 + {$EXTERNALSYM UNSIGNED_BYTE_3_3_2} + UNSIGNED_BYTE_2_3_3_REV = $8362; // GL 1.2 + {$EXTERNALSYM UNSIGNED_BYTE_2_3_3_REV} + UNSIGNED_SHORT_5_6_5 = $8363; // GL 1.2 + {$EXTERNALSYM UNSIGNED_SHORT_5_6_5} + UNSIGNED_SHORT_5_6_5_REV = $8364; // GL 1.2 + {$EXTERNALSYM UNSIGNED_SHORT_5_6_5_REV} + UNSIGNED_SHORT_4_4_4_4 = $8033; // GL 1.2 + {$EXTERNALSYM UNSIGNED_SHORT_4_4_4_4} + UNSIGNED_SHORT_4_4_4_4_REV = $8365; // GL 1.2 + {$EXTERNALSYM UNSIGNED_SHORT_4_4_4_4_REV} + UNSIGNED_SHORT_5_5_5_1 = $8034; // GL 1.2 + {$EXTERNALSYM UNSIGNED_SHORT_5_5_5_1} + UNSIGNED_SHORT_1_5_5_5_REV = $8366; // GL 1.2 + {$EXTERNALSYM UNSIGNED_SHORT_1_5_5_5_REV} + UNSIGNED_INT_8_8_8_8 = $8035; // GL 1.2 + {$EXTERNALSYM UNSIGNED_INT_8_8_8_8} + UNSIGNED_INT_8_8_8_8_REV = $8367; // GL 1.2 + {$EXTERNALSYM UNSIGNED_INT_8_8_8_8_REV} + UNSIGNED_INT_10_10_10_2 = $8036; // GL 1.2 + {$EXTERNALSYM UNSIGNED_INT_10_10_10_2} + UNSIGNED_INT_2_10_10_10_REV = $8368; // GL 1.2 + {$EXTERNALSYM UNSIGNED_INT_2_10_10_10_REV} + + // interleaved arrays formats + GL_V2F = $2A20; + {$EXTERNALSYM GL_V2F} + GL_V3F = $2A21; + {$EXTERNALSYM GL_V3F} + GL_C4UB_V2F = $2A22; + {$EXTERNALSYM GL_C4UB_V2F} + GL_C4UB_V3F = $2A23; + {$EXTERNALSYM GL_C4UB_V3F} + GL_C3F_V3F = $2A24; + {$EXTERNALSYM GL_C3F_V3F} + GL_N3F_V3F = $2A25; + {$EXTERNALSYM GL_N3F_V3F} + GL_C4F_N3F_V3F = $2A26; + {$EXTERNALSYM GL_C4F_N3F_V3F} + GL_T2F_V3F = $2A27; + {$EXTERNALSYM GL_T2F_V3F} + GL_T4F_V4F = $2A28; + {$EXTERNALSYM GL_T4F_V4F} + GL_T2F_C4UB_V3F = $2A29; + {$EXTERNALSYM GL_T2F_C4UB_V3F} + GL_T2F_C3F_V3F = $2A2A; + {$EXTERNALSYM GL_T2F_C3F_V3F} + GL_T2F_N3F_V3F = $2A2B; + {$EXTERNALSYM GL_T2F_N3F_V3F} + GL_T2F_C4F_N3F_V3F = $2A2C; + {$EXTERNALSYM GL_T2F_C4F_N3F_V3F} + GL_T4F_C4F_N3F_V4F = $2A2D; + {$EXTERNALSYM GL_T4F_C4F_N3F_V4F} + + // clip planes + GL_CLIP_PLANE0 = $3000; + {$EXTERNALSYM GL_CLIP_PLANE0} + GL_CLIP_PLANE1 = $3001; + {$EXTERNALSYM GL_CLIP_PLANE1} + GL_CLIP_PLANE2 = $3002; + {$EXTERNALSYM GL_CLIP_PLANE2} + GL_CLIP_PLANE3 = $3003; + {$EXTERNALSYM GL_CLIP_PLANE3} + GL_CLIP_PLANE4 = $3004; + {$EXTERNALSYM GL_CLIP_PLANE4} + GL_CLIP_PLANE5 = $3005; + {$EXTERNALSYM GL_CLIP_PLANE5} + + // miscellaneous + GL_DITHER = $0BD0; + {$EXTERNALSYM GL_DITHER} + + // ----- extensions enumerants ----- + // EXT_abgr + GL_ABGR_EXT = $8000; + {$EXTERNALSYM GL_ABGR_EXT} + + // EXT_packed_pixels + GL_UNSIGNED_BYTE_3_3_2_EXT = $8032; + {$EXTERNALSYM GL_UNSIGNED_BYTE_3_3_2_EXT} + GL_UNSIGNED_SHORT_4_4_4_4_EXT = $8033; + {$EXTERNALSYM GL_UNSIGNED_SHORT_4_4_4_4_EXT} + GL_UNSIGNED_SHORT_5_5_5_1_EXT = $8034; + {$EXTERNALSYM GL_UNSIGNED_SHORT_5_5_5_1_EXT} + GL_UNSIGNED_INT_8_8_8_8_EXT = $8035; + {$EXTERNALSYM GL_UNSIGNED_INT_8_8_8_8_EXT} + GL_UNSIGNED_INT_10_10_10_2_EXT = $8036; + {$EXTERNALSYM GL_UNSIGNED_INT_10_10_10_2_EXT} + + // EXT_vertex_array + GL_VERTEX_ARRAY_EXT = $8074; + {$EXTERNALSYM GL_VERTEX_ARRAY_EXT} + GL_NORMAL_ARRAY_EXT = $8075; + {$EXTERNALSYM GL_NORMAL_ARRAY_EXT} + GL_COLOR_ARRAY_EXT = $8076; + {$EXTERNALSYM GL_COLOR_ARRAY_EXT} + GL_INDEX_ARRAY_EXT = $8077; + {$EXTERNALSYM GL_INDEX_ARRAY_EXT} + GL_TEXTURE_COORD_ARRAY_EXT = $8078; + {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_EXT} + GL_EDGE_FLAG_ARRAY_EXT = $8079; + {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_EXT} + GL_VERTEX_ARRAY_SIZE_EXT = $807A; + {$EXTERNALSYM GL_VERTEX_ARRAY_SIZE_EXT} + GL_VERTEX_ARRAY_TYPE_EXT = $807B; + {$EXTERNALSYM GL_VERTEX_ARRAY_TYPE_EXT} + GL_VERTEX_ARRAY_STRIDE_EXT = $807C; + {$EXTERNALSYM GL_VERTEX_ARRAY_STRIDE_EXT} + GL_VERTEX_ARRAY_COUNT_EXT = $807D; + {$EXTERNALSYM GL_VERTEX_ARRAY_COUNT_EXT} + GL_NORMAL_ARRAY_TYPE_EXT = $807E; + {$EXTERNALSYM GL_NORMAL_ARRAY_TYPE_EXT} + GL_NORMAL_ARRAY_STRIDE_EXT = $807F; + {$EXTERNALSYM GL_NORMAL_ARRAY_STRIDE_EXT} + GL_NORMAL_ARRAY_COUNT_EXT = $8080; + {$EXTERNALSYM GL_NORMAL_ARRAY_COUNT_EXT} + GL_COLOR_ARRAY_SIZE_EXT = $8081; + {$EXTERNALSYM GL_COLOR_ARRAY_SIZE_EXT} + GL_COLOR_ARRAY_TYPE_EXT = $8082; + {$EXTERNALSYM GL_COLOR_ARRAY_TYPE_EXT} + GL_COLOR_ARRAY_STRIDE_EXT = $8083; + {$EXTERNALSYM GL_COLOR_ARRAY_STRIDE_EXT} + GL_COLOR_ARRAY_COUNT_EXT = $8084; + {$EXTERNALSYM GL_COLOR_ARRAY_COUNT_EXT} + GL_INDEX_ARRAY_TYPE_EXT = $8085; + {$EXTERNALSYM GL_INDEX_ARRAY_TYPE_EXT} + GL_INDEX_ARRAY_STRIDE_EXT = $8086; + {$EXTERNALSYM GL_INDEX_ARRAY_STRIDE_EXT} + GL_INDEX_ARRAY_COUNT_EXT = $8087; + {$EXTERNALSYM GL_INDEX_ARRAY_COUNT_EXT} + GL_TEXTURE_COORD_ARRAY_SIZE_EXT = $8088; + {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_SIZE_EXT} + GL_TEXTURE_COORD_ARRAY_TYPE_EXT = $8089; + {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_TYPE_EXT} + GL_TEXTURE_COORD_ARRAY_STRIDE_EXT = $808A; + {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_STRIDE_EXT} + GL_TEXTURE_COORD_ARRAY_COUNT_EXT = $808B; + {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_COUNT_EXT} + GL_EDGE_FLAG_ARRAY_STRIDE_EXT = $808C; + {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_STRIDE_EXT} + GL_EDGE_FLAG_ARRAY_COUNT_EXT = $808D; + {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_COUNT_EXT} + GL_VERTEX_ARRAY_POINTER_EXT = $808E; + {$EXTERNALSYM GL_VERTEX_ARRAY_POINTER_EXT} + GL_NORMAL_ARRAY_POINTER_EXT = $808F; + {$EXTERNALSYM GL_NORMAL_ARRAY_POINTER_EXT} + GL_COLOR_ARRAY_POINTER_EXT = $8090; + {$EXTERNALSYM GL_COLOR_ARRAY_POINTER_EXT} + GL_INDEX_ARRAY_POINTER_EXT = $8091; + {$EXTERNALSYM GL_INDEX_ARRAY_POINTER_EXT} + GL_TEXTURE_COORD_ARRAY_POINTER_EXT = $8092; + {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_POINTER_EXT} + GL_EDGE_FLAG_ARRAY_POINTER_EXT = $8093; + {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_POINTER_EXT} + + // EXT_color_table + GL_TABLE_TOO_LARGE_EXT = $8031; + {$EXTERNALSYM GL_TABLE_TOO_LARGE_EXT} + GL_COLOR_TABLE_EXT = $80D0; + {$EXTERNALSYM GL_COLOR_TABLE_EXT} + GL_POST_CONVOLUTION_COLOR_TABLE_EXT = $80D1; + {$EXTERNALSYM GL_POST_CONVOLUTION_COLOR_TABLE_EXT} + GL_POST_COLOR_MATRIX_COLOR_TABLE_EXT = $80D2; + {$EXTERNALSYM GL_POST_COLOR_MATRIX_COLOR_TABLE_EXT} + GL_PROXY_COLOR_TABLE_EXT = $80D3; + {$EXTERNALSYM GL_PROXY_COLOR_TABLE_EXT} + GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_EXT = $80D4; + {$EXTERNALSYM GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_EXT} + GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_EXT = $80D5; + {$EXTERNALSYM GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_EXT} + GL_COLOR_TABLE_SCALE_EXT = $80D6; + {$EXTERNALSYM GL_COLOR_TABLE_SCALE_EXT} + GL_COLOR_TABLE_BIAS_EXT = $80D7; + {$EXTERNALSYM GL_COLOR_TABLE_BIAS_EXT} + GL_COLOR_TABLE_FORMAT_EXT = $80D8; + {$EXTERNALSYM GL_COLOR_TABLE_FORMAT_EXT} + GL_COLOR_TABLE_WIDTH_EXT = $80D9; + {$EXTERNALSYM GL_COLOR_TABLE_WIDTH_EXT} + GL_COLOR_TABLE_RED_SIZE_EXT = $80DA; + {$EXTERNALSYM GL_COLOR_TABLE_RED_SIZE_EXT} + GL_COLOR_TABLE_GREEN_SIZE_EXT = $80DB; + {$EXTERNALSYM GL_COLOR_TABLE_GREEN_SIZE_EXT} + GL_COLOR_TABLE_BLUE_SIZE_EXT = $80DC; + {$EXTERNALSYM GL_COLOR_TABLE_BLUE_SIZE_EXT} + GL_COLOR_TABLE_ALPHA_SIZE_EXT = $80DD; + {$EXTERNALSYM GL_COLOR_TABLE_ALPHA_SIZE_EXT} + GL_COLOR_TABLE_LUMINANCE_SIZE_EXT = $80DE; + {$EXTERNALSYM GL_COLOR_TABLE_LUMINANCE_SIZE_EXT} + GL_COLOR_TABLE_INTENSITY_SIZE_EXT = $80DF; + {$EXTERNALSYM GL_COLOR_TABLE_INTENSITY_SIZE_EXT} + + // EXT_bgra + GL_BGR_EXT = $80E0; + {$EXTERNALSYM GL_BGR_EXT} + GL_BGRA_EXT = $80E1; + {$EXTERNALSYM GL_BGRA_EXT} + + // EXT_paletted_texture + GL_COLOR_INDEX1_EXT = $80E2; + {$EXTERNALSYM GL_COLOR_INDEX1_EXT} + GL_COLOR_INDEX2_EXT = $80E3; + {$EXTERNALSYM GL_COLOR_INDEX2_EXT} + GL_COLOR_INDEX4_EXT = $80E4; + {$EXTERNALSYM GL_COLOR_INDEX4_EXT} + GL_COLOR_INDEX8_EXT = $80E5; + {$EXTERNALSYM GL_COLOR_INDEX8_EXT} + GL_COLOR_INDEX12_EXT = $80E6; + {$EXTERNALSYM GL_COLOR_INDEX12_EXT} + GL_COLOR_INDEX16_EXT = $80E7; + {$EXTERNALSYM GL_COLOR_INDEX16_EXT} + + // EXT_blend_color + GL_CONSTANT_COLOR_EXT = $8001; + {$EXTERNALSYM GL_CONSTANT_COLOR_EXT} + GL_ONE_MINUS_CONSTANT_COLOR_EXT = $8002; + {$EXTERNALSYM GL_ONE_MINUS_CONSTANT_COLOR_EXT} + GL_CONSTANT_ALPHA_EXT = $8003; + {$EXTERNALSYM GL_CONSTANT_ALPHA_EXT} + GL_ONE_MINUS_CONSTANT_ALPHA_EXT = $8004; + {$EXTERNALSYM GL_ONE_MINUS_CONSTANT_ALPHA_EXT} + GL_BLEND_COLOR_EXT = $8005; + {$EXTERNALSYM GL_BLEND_COLOR_EXT} + + // EXT_blend_minmax + GL_FUNC_ADD_EXT = $8006; + {$EXTERNALSYM GL_FUNC_ADD_EXT} + GL_MIN_EXT = $8007; + {$EXTERNALSYM GL_MIN_EXT} + GL_MAX_EXT = $8008; + {$EXTERNALSYM GL_MAX_EXT} + GL_BLEND_EQUATION_EXT = $8009; + {$EXTERNALSYM GL_BLEND_EQUATION_EXT} + + // EXT_blend_subtract + GL_FUNC_SUBTRACT_EXT = $800A; + {$EXTERNALSYM GL_FUNC_SUBTRACT_EXT} + GL_FUNC_REVERSE_SUBTRACT_EXT = $800B; + {$EXTERNALSYM GL_FUNC_REVERSE_SUBTRACT_EXT} + + // EXT_convolution + GL_CONVOLUTION_1D_EXT = $8010; + {$EXTERNALSYM GL_CONVOLUTION_1D_EXT} + GL_CONVOLUTION_2D_EXT = $8011; + {$EXTERNALSYM GL_CONVOLUTION_2D_EXT} + GL_SEPARABLE_2D_EXT = $8012; + {$EXTERNALSYM GL_SEPARABLE_2D_EXT} + GL_CONVOLUTION_BORDER_MODE_EXT = $8013; + {$EXTERNALSYM GL_CONVOLUTION_BORDER_MODE_EXT} + GL_CONVOLUTION_FILTER_SCALE_EXT = $8014; + {$EXTERNALSYM GL_CONVOLUTION_FILTER_SCALE_EXT} + GL_CONVOLUTION_FILTER_BIAS_EXT = $8015; + {$EXTERNALSYM GL_CONVOLUTION_FILTER_BIAS_EXT} + GL_REDUCE_EXT = $8016; + {$EXTERNALSYM GL_REDUCE_EXT} + GL_CONVOLUTION_FORMAT_EXT = $8017; + {$EXTERNALSYM GL_CONVOLUTION_FORMAT_EXT} + GL_CONVOLUTION_WIDTH_EXT = $8018; + {$EXTERNALSYM GL_CONVOLUTION_WIDTH_EXT} + GL_CONVOLUTION_HEIGHT_EXT = $8019; + {$EXTERNALSYM GL_CONVOLUTION_HEIGHT_EXT} + GL_MAX_CONVOLUTION_WIDTH_EXT = $801A; + {$EXTERNALSYM GL_MAX_CONVOLUTION_WIDTH_EXT} + GL_MAX_CONVOLUTION_HEIGHT_EXT = $801B; + {$EXTERNALSYM GL_MAX_CONVOLUTION_HEIGHT_EXT} + GL_POST_CONVOLUTION_RED_SCALE_EXT = $801C; + {$EXTERNALSYM GL_POST_CONVOLUTION_RED_SCALE_EXT} + GL_POST_CONVOLUTION_GREEN_SCALE_EXT = $801D; + {$EXTERNALSYM GL_POST_CONVOLUTION_GREEN_SCALE_EXT} + GL_POST_CONVOLUTION_BLUE_SCALE_EXT = $801E; + {$EXTERNALSYM GL_POST_CONVOLUTION_BLUE_SCALE_EXT} + GL_POST_CONVOLUTION_ALPHA_SCALE_EXT = $801F; + {$EXTERNALSYM GL_POST_CONVOLUTION_ALPHA_SCALE_EXT} + GL_POST_CONVOLUTION_RED_BIAS_EXT = $8020; + {$EXTERNALSYM GL_POST_CONVOLUTION_RED_BIAS_EXT} + GL_POST_CONVOLUTION_GREEN_BIAS_EXT = $8021; + {$EXTERNALSYM GL_POST_CONVOLUTION_GREEN_BIAS_EXT} + GL_POST_CONVOLUTION_BLUE_BIAS_EXT = $8022; + {$EXTERNALSYM GL_POST_CONVOLUTION_BLUE_BIAS_EXT} + GL_POST_CONVOLUTION_ALPHA_BIAS_EXT = $8023; + {$EXTERNALSYM GL_POST_CONVOLUTION_ALPHA_BIAS_EXT} + + // EXT_histogram + GL_HISTOGRAM_EXT = $8024; + {$EXTERNALSYM GL_HISTOGRAM_EXT} + GL_PROXY_HISTOGRAM_EXT = $8025; + {$EXTERNALSYM GL_PROXY_HISTOGRAM_EXT} + GL_HISTOGRAM_WIDTH_EXT = $8026; + {$EXTERNALSYM GL_HISTOGRAM_WIDTH_EXT} + GL_HISTOGRAM_FORMAT_EXT = $8027; + {$EXTERNALSYM GL_HISTOGRAM_FORMAT_EXT} + GL_HISTOGRAM_RED_SIZE_EXT = $8028; + {$EXTERNALSYM GL_HISTOGRAM_RED_SIZE_EXT} + GL_HISTOGRAM_GREEN_SIZE_EXT = $8029; + {$EXTERNALSYM GL_HISTOGRAM_GREEN_SIZE_EXT} + GL_HISTOGRAM_BLUE_SIZE_EXT = $802A; + {$EXTERNALSYM GL_HISTOGRAM_BLUE_SIZE_EXT} + GL_HISTOGRAM_ALPHA_SIZE_EXT = $802B; + {$EXTERNALSYM GL_HISTOGRAM_ALPHA_SIZE_EXT} + GL_HISTOGRAM_LUMINANCE_SIZE_EXT = $802C; + {$EXTERNALSYM GL_HISTOGRAM_LUMINANCE_SIZE_EXT} + GL_HISTOGRAM_SINK_EXT = $802D; + {$EXTERNALSYM GL_HISTOGRAM_SINK_EXT} + GL_MINMAX_EXT = $802E; + {$EXTERNALSYM GL_MINMAX_EXT} + GL_MINMAX_FORMAT_EXT = $802F; + {$EXTERNALSYM GL_MINMAX_FORMAT_EXT} + GL_MINMAX_SINK_EXT = $8030; + {$EXTERNALSYM GL_MINMAX_SINK_EXT} + + // EXT_polygon_offset + GL_POLYGON_OFFSET_EXT = $8037; + {$EXTERNALSYM GL_POLYGON_OFFSET_EXT} + GL_POLYGON_OFFSET_FACTOR_EXT = $8038; + {$EXTERNALSYM GL_POLYGON_OFFSET_FACTOR_EXT} + GL_POLYGON_OFFSET_BIAS_EXT = $8039; + {$EXTERNALSYM GL_POLYGON_OFFSET_BIAS_EXT} + + // EXT_texture + GL_ALPHA4_EXT = $803B; + {$EXTERNALSYM GL_ALPHA4_EXT} + GL_ALPHA8_EXT = $803C; + {$EXTERNALSYM GL_ALPHA8_EXT} + GL_ALPHA12_EXT = $803D; + {$EXTERNALSYM GL_ALPHA12_EXT} + GL_ALPHA16_EXT = $803E; + {$EXTERNALSYM GL_ALPHA16_EXT} + GL_LUMINANCE4_EXT = $803F; + {$EXTERNALSYM GL_LUMINANCE4_EXT} + GL_LUMINANCE8_EXT = $8040; + {$EXTERNALSYM GL_LUMINANCE8_EXT} + GL_LUMINANCE12_EXT = $8041; + {$EXTERNALSYM GL_LUMINANCE12_EXT} + GL_LUMINANCE16_EXT = $8042; + {$EXTERNALSYM GL_LUMINANCE16_EXT} + GL_LUMINANCE4_ALPHA4_EXT = $8043; + {$EXTERNALSYM GL_LUMINANCE4_ALPHA4_EXT} + GL_LUMINANCE6_ALPHA2_EXT = $8044; + {$EXTERNALSYM GL_LUMINANCE6_ALPHA2_EXT} + GL_LUMINANCE8_ALPHA8_EXT = $8045; + {$EXTERNALSYM GL_LUMINANCE8_ALPHA8_EXT} + GL_LUMINANCE12_ALPHA4_EXT = $8046; + {$EXTERNALSYM GL_LUMINANCE12_ALPHA4_EXT} + GL_LUMINANCE12_ALPHA12_EXT = $8047; + {$EXTERNALSYM GL_LUMINANCE12_ALPHA12_EXT} + GL_LUMINANCE16_ALPHA16_EXT = $8048; + {$EXTERNALSYM GL_LUMINANCE16_ALPHA16_EXT} + GL_INTENSITY_EXT = $8049; + {$EXTERNALSYM GL_INTENSITY_EXT} + GL_INTENSITY4_EXT = $804A; + {$EXTERNALSYM GL_INTENSITY4_EXT} + GL_INTENSITY8_EXT = $804B; + {$EXTERNALSYM GL_INTENSITY8_EXT} + GL_INTENSITY12_EXT = $804C; + {$EXTERNALSYM GL_INTENSITY12_EXT} + GL_INTENSITY16_EXT = $804D; + {$EXTERNALSYM GL_INTENSITY16_EXT} + GL_RGB2_EXT = $804E; + {$EXTERNALSYM GL_RGB2_EXT} + GL_RGB4_EXT = $804F; + {$EXTERNALSYM GL_RGB4_EXT} + GL_RGB5_EXT = $8050; + {$EXTERNALSYM GL_RGB5_EXT} + GL_RGB8_EXT = $8051; + {$EXTERNALSYM GL_RGB8_EXT} + GL_RGB10_EXT = $8052; + {$EXTERNALSYM GL_RGB10_EXT} + GL_RGB12_EXT = $8053; + {$EXTERNALSYM GL_RGB12_EXT} + GL_RGB16_EXT = $8054; + {$EXTERNALSYM GL_RGB16_EXT} + GL_RGBA2_EXT = $8055; + {$EXTERNALSYM GL_RGBA2_EXT} + GL_RGBA4_EXT = $8056; + {$EXTERNALSYM GL_RGBA4_EXT} + GL_RGB5_A1_EXT = $8057; + {$EXTERNALSYM GL_RGB5_A1_EXT} + GL_RGBA8_EXT = $8058; + {$EXTERNALSYM GL_RGBA8_EXT} + GL_RGB10_A2_EXT = $8059; + {$EXTERNALSYM GL_RGB10_A2_EXT} + GL_RGBA12_EXT = $805A; + {$EXTERNALSYM GL_RGBA12_EXT} + GL_RGBA16_EXT = $805B; + {$EXTERNALSYM GL_RGBA16_EXT} + GL_TEXTURE_RED_SIZE_EXT = $805C; + {$EXTERNALSYM GL_TEXTURE_RED_SIZE_EXT} + GL_TEXTURE_GREEN_SIZE_EXT = $805D; + {$EXTERNALSYM GL_TEXTURE_GREEN_SIZE_EXT} + GL_TEXTURE_BLUE_SIZE_EXT = $805E; + {$EXTERNALSYM GL_TEXTURE_BLUE_SIZE_EXT} + GL_TEXTURE_ALPHA_SIZE_EXT = $805F; + {$EXTERNALSYM GL_TEXTURE_ALPHA_SIZE_EXT} + GL_TEXTURE_LUMINANCE_SIZE_EXT = $8060; + {$EXTERNALSYM GL_TEXTURE_LUMINANCE_SIZE_EXT} + GL_TEXTURE_INTENSITY_SIZE_EXT = $8061; + {$EXTERNALSYM GL_TEXTURE_INTENSITY_SIZE_EXT} + GL_REPLACE_EXT = $8062; + {$EXTERNALSYM GL_REPLACE_EXT} + GL_PROXY_TEXTURE_1D_EXT = $8063; + {$EXTERNALSYM GL_PROXY_TEXTURE_1D_EXT} + GL_PROXY_TEXTURE_2D_EXT = $8064; + {$EXTERNALSYM GL_PROXY_TEXTURE_2D_EXT} + GL_TEXTURE_TOO_LARGE_EXT = $8065; + {$EXTERNALSYM GL_TEXTURE_TOO_LARGE_EXT} + + // EXT_texture_object + GL_TEXTURE_PRIORITY_EXT = $8066; + {$EXTERNALSYM GL_TEXTURE_PRIORITY_EXT} + GL_TEXTURE_RESIDENT_EXT = $8067; + {$EXTERNALSYM GL_TEXTURE_RESIDENT_EXT} + GL_TEXTURE_1D_BINDING_EXT = $8068; + {$EXTERNALSYM GL_TEXTURE_1D_BINDING_EXT} + GL_TEXTURE_2D_BINDING_EXT = $8069; + {$EXTERNALSYM GL_TEXTURE_2D_BINDING_EXT} + GL_TEXTURE_3D_BINDING_EXT = $806A; + {$EXTERNALSYM GL_TEXTURE_3D_BINDING_EXT} + + // EXT_texture3D + GL_PACK_SKIP_IMAGES_EXT = $806B; + {$EXTERNALSYM GL_PACK_SKIP_IMAGES_EXT} + GL_PACK_IMAGE_HEIGHT_EXT = $806C; + {$EXTERNALSYM GL_PACK_IMAGE_HEIGHT_EXT} + GL_UNPACK_SKIP_IMAGES_EXT = $806D; + {$EXTERNALSYM GL_UNPACK_SKIP_IMAGES_EXT} + GL_UNPACK_IMAGE_HEIGHT_EXT = $806E; + {$EXTERNALSYM GL_UNPACK_IMAGE_HEIGHT_EXT} + GL_TEXTURE_3D_EXT = $806F; + {$EXTERNALSYM GL_TEXTURE_3D_EXT} + GL_PROXY_TEXTURE_3D_EXT = $8070; + {$EXTERNALSYM GL_PROXY_TEXTURE_3D_EXT} + GL_TEXTURE_DEPTH_EXT = $8071; + {$EXTERNALSYM GL_TEXTURE_DEPTH_EXT} + GL_TEXTURE_WRAP_R_EXT = $8072; + {$EXTERNALSYM GL_TEXTURE_WRAP_R_EXT} + GL_MAX_3D_TEXTURE_SIZE_EXT = $8073; + {$EXTERNALSYM GL_MAX_3D_TEXTURE_SIZE_EXT} + + // SGI_color_matrix + GL_COLOR_MATRIX_SGI = $80B1; + {$EXTERNALSYM GL_COLOR_MATRIX_SGI} + GL_COLOR_MATRIX_STACK_DEPTH_SGI = $80B2; + {$EXTERNALSYM GL_COLOR_MATRIX_STACK_DEPTH_SGI} + GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI = $80B3; + {$EXTERNALSYM GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI} + GL_POST_COLOR_MATRIX_RED_SCALE_SGI = $80B4; + {$EXTERNALSYM GL_POST_COLOR_MATRIX_RED_SCALE_SGI} + GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI = $80B5; + {$EXTERNALSYM GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI} + GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI = $80B6; + {$EXTERNALSYM GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI} + GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI = $80B7; + {$EXTERNALSYM GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI} + GL_POST_COLOR_MATRIX_RED_BIAS_SGI = $80B8; + {$EXTERNALSYM GL_POST_COLOR_MATRIX_RED_BIAS_SGI} + GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI = $80B9; + {$EXTERNALSYM GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI} + GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI = $80BA; + {$EXTERNALSYM GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI} + GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI = $80BB; + {$EXTERNALSYM GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI} + + // SGI_texture_color_table + GL_TEXTURE_COLOR_TABLE_SGI = $80BC; + {$EXTERNALSYM GL_TEXTURE_COLOR_TABLE_SGI} + GL_PROXY_TEXTURE_COLOR_TABLE_SGI = $80BD; + {$EXTERNALSYM GL_PROXY_TEXTURE_COLOR_TABLE_SGI} + GL_TEXTURE_COLOR_TABLE_BIAS_SGI = $80BE; + {$EXTERNALSYM GL_TEXTURE_COLOR_TABLE_BIAS_SGI} + GL_TEXTURE_COLOR_TABLE_SCALE_SGI = $80BF; + {$EXTERNALSYM GL_TEXTURE_COLOR_TABLE_SCALE_SGI} + + // SGI_color_table + GL_COLOR_TABLE_SGI = $80D0; + {$EXTERNALSYM GL_COLOR_TABLE_SGI} + GL_POST_CONVOLUTION_COLOR_TABLE_SGI = $80D1; + {$EXTERNALSYM GL_POST_CONVOLUTION_COLOR_TABLE_SGI} + GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI = $80D2; + {$EXTERNALSYM GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI} + GL_PROXY_COLOR_TABLE_SGI = $80D3; + {$EXTERNALSYM GL_PROXY_COLOR_TABLE_SGI} + GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI = $80D4; + {$EXTERNALSYM GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI} + GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI = $80D5; + {$EXTERNALSYM GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI} + GL_COLOR_TABLE_SCALE_SGI = $80D6; + {$EXTERNALSYM GL_COLOR_TABLE_SCALE_SGI} + GL_COLOR_TABLE_BIAS_SGI = $80D7; + {$EXTERNALSYM GL_COLOR_TABLE_BIAS_SGI} + GL_COLOR_TABLE_FORMAT_SGI = $80D8; + {$EXTERNALSYM GL_COLOR_TABLE_FORMAT_SGI} + GL_COLOR_TABLE_WIDTH_SGI = $80D9; + {$EXTERNALSYM GL_COLOR_TABLE_WIDTH_SGI} + GL_COLOR_TABLE_RED_SIZE_SGI = $80DA; + {$EXTERNALSYM GL_COLOR_TABLE_RED_SIZE_SGI} + GL_COLOR_TABLE_GREEN_SIZE_SGI = $80DB; + {$EXTERNALSYM GL_COLOR_TABLE_GREEN_SIZE_SGI} + GL_COLOR_TABLE_BLUE_SIZE_SGI = $80DC; + {$EXTERNALSYM GL_COLOR_TABLE_BLUE_SIZE_SGI} + GL_COLOR_TABLE_ALPHA_SIZE_SGI = $80DD; + {$EXTERNALSYM GL_COLOR_TABLE_ALPHA_SIZE_SGI} + GL_COLOR_TABLE_LUMINANCE_SIZE_SGI = $80DE; + {$EXTERNALSYM GL_COLOR_TABLE_LUMINANCE_SIZE_SGI} + GL_COLOR_TABLE_INTENSITY_SIZE_SGI = $80DF; + {$EXTERNALSYM GL_COLOR_TABLE_INTENSITY_SIZE_SGI} + + // EXT_cmyka + GL_CMYK_EXT = $800C; + {$EXTERNALSYM GL_CMYK_EXT} + GL_CMYKA_EXT = $800D; + {$EXTERNALSYM GL_CMYKA_EXT} + GL_PACK_CMYK_HINT_EXT = $800E; + {$EXTERNALSYM GL_PACK_CMYK_HINT_EXT} + GL_UNPACK_CMYK_HINT_EXT = $800F; + {$EXTERNALSYM GL_UNPACK_CMYK_HINT_EXT} + + // EXT_rescale_normal + GL_RESCALE_NORMAL_EXT = $803A; + {$EXTERNALSYM GL_RESCALE_NORMAL_EXT} + + // EXT_clip_volume_hint + GL_CLIP_VOLUME_CLIPPING_HINT_EXT = $80F0; + {$EXTERNALSYM GL_CLIP_VOLUME_CLIPPING_HINT_EXT} + + // EXT_cull_vertex + GL_CULL_VERTEX_EXT = $81AA; + {$EXTERNALSYM GL_CULL_VERTEX_EXT} + GL_CULL_VERTEX_EYE_POSITION_EXT = $81AB; + {$EXTERNALSYM GL_CULL_VERTEX_EYE_POSITION_EXT} + GL_CULL_VERTEX_OBJECT_POSITION_EXT = $81AC; + {$EXTERNALSYM GL_CULL_VERTEX_OBJECT_POSITION_EXT} + + // EXT_index_array_formats + GL_IUI_V2F_EXT = $81AD; + {$EXTERNALSYM GL_IUI_V2F_EXT} + GL_IUI_V3F_EXT = $81AE; + {$EXTERNALSYM GL_IUI_V3F_EXT} + GL_IUI_N3F_V2F_EXT = $81AF; + {$EXTERNALSYM GL_IUI_N3F_V2F_EXT} + GL_IUI_N3F_V3F_EXT = $81B0; + {$EXTERNALSYM GL_IUI_N3F_V3F_EXT} + GL_T2F_IUI_V2F_EXT = $81B1; + {$EXTERNALSYM GL_T2F_IUI_V2F_EXT} + GL_T2F_IUI_V3F_EXT = $81B2; + {$EXTERNALSYM GL_T2F_IUI_V3F_EXT} + GL_T2F_IUI_N3F_V2F_EXT = $81B3; + {$EXTERNALSYM GL_T2F_IUI_N3F_V2F_EXT} + GL_T2F_IUI_N3F_V3F_EXT = $81B4; + {$EXTERNALSYM GL_T2F_IUI_N3F_V3F_EXT} + + // EXT_index_func + GL_INDEX_TEST_EXT = $81B5; + {$EXTERNALSYM GL_INDEX_TEST_EXT} + GL_INDEX_TEST_FUNC_EXT = $81B6; + {$EXTERNALSYM GL_INDEX_TEST_FUNC_EXT} + GL_INDEX_TEST_REF_EXT = $81B7; + {$EXTERNALSYM GL_INDEX_TEST_REF_EXT} + + // EXT_index_material + GL_INDEX_MATERIAL_EXT = $81B8; + {$EXTERNALSYM GL_INDEX_MATERIAL_EXT} + GL_INDEX_MATERIAL_PARAMETER_EXT = $81B9; + {$EXTERNALSYM GL_INDEX_MATERIAL_PARAMETER_EXT} + GL_INDEX_MATERIAL_FACE_EXT = $81BA; + {$EXTERNALSYM GL_INDEX_MATERIAL_FACE_EXT} + + // EXT_misc_attribute + GL_MISC_BIT_EXT = 0; // not yet defined + {$EXTERNALSYM GL_MISC_BIT_EXT} + + // EXT_scene_marker + GL_SCENE_REQUIRED_EXT = 0; // not yet defined + {$EXTERNALSYM GL_SCENE_REQUIRED_EXT} + + // EXT_shared_texture_palette + GL_SHARED_TEXTURE_PALETTE_EXT = $81FB; + {$EXTERNALSYM GL_SHARED_TEXTURE_PALETTE_EXT} + + // EXT_nurbs_tessellator + GLU_NURBS_MODE_EXT = 100160; + {$EXTERNALSYM GLU_NURBS_MODE_EXT} + GLU_NURBS_TESSELLATOR_EXT = 100161; + {$EXTERNALSYM GLU_NURBS_TESSELLATOR_EXT} + GLU_NURBS_RENDERER_EXT = 100162; + {$EXTERNALSYM GLU_NURBS_RENDERER_EXT} + GLU_NURBS_BEGIN_EXT = 100164; + {$EXTERNALSYM GLU_NURBS_BEGIN_EXT} + GLU_NURBS_VERTEX_EXT = 100165; + {$EXTERNALSYM GLU_NURBS_VERTEX_EXT} + GLU_NURBS_NORMAL_EXT = 100166; + {$EXTERNALSYM GLU_NURBS_NORMAL_EXT} + GLU_NURBS_COLOR_EXT = 100167; + {$EXTERNALSYM GLU_NURBS_COLOR_EXT} + GLU_NURBS_TEX_COORD_EXT = 100168; + {$EXTERNALSYM GLU_NURBS_TEX_COORD_EXT} + GLU_NURBS_END_EXT = 100169; + {$EXTERNALSYM GLU_NURBS_END_EXT} + GLU_NURBS_BEGIN_DATA_EXT = 100170; + {$EXTERNALSYM GLU_NURBS_BEGIN_DATA_EXT} + GLU_NURBS_VERTEX_DATA_EXT = 100171; + {$EXTERNALSYM GLU_NURBS_VERTEX_DATA_EXT} + GLU_NURBS_NORMAL_DATA_EXT = 100172; + {$EXTERNALSYM GLU_NURBS_NORMAL_DATA_EXT} + GLU_NURBS_COLOR_DATA_EXT = 100173; + {$EXTERNALSYM GLU_NURBS_COLOR_DATA_EXT} + GLU_NURBS_TEX_COORD_DATA_EXT = 100174; + {$EXTERNALSYM GLU_NURBS_TEX_COORD_DATA_EXT} + GLU_NURBS_END_DATA_EXT = 100175; + {$EXTERNALSYM GLU_NURBS_END_DATA_EXT} + + // EXT_object_space_tess + GLU_OBJECT_PARAMETRIC_ERROR_EXT = 100208; + {$EXTERNALSYM GLU_OBJECT_PARAMETRIC_ERROR_EXT} + GLU_OBJECT_PATH_LENGTH_EXT = 100209; + {$EXTERNALSYM GLU_OBJECT_PATH_LENGTH_EXT} + + // EXT_point_parameters + GL_POINT_SIZE_MIN_EXT = $8126; + {$EXTERNALSYM GL_POINT_SIZE_MIN_EXT} + GL_POINT_SIZE_MAX_EXT = $8127; + {$EXTERNALSYM GL_POINT_SIZE_MAX_EXT} + GL_POINT_FADE_THRESHOLD_SIZE_EXT = $8128; + {$EXTERNALSYM GL_POINT_FADE_THRESHOLD_SIZE_EXT} + GL_DISTANCE_ATTENUATION_EXT = $8129; + {$EXTERNALSYM GL_DISTANCE_ATTENUATION_EXT} + + // EXT_compiled_vertex_array + GL_ARRAY_ELEMENT_LOCK_FIRST_EXT = $81A8; + {$EXTERNALSYM GL_ARRAY_ELEMENT_LOCK_FIRST_EXT} + GL_ARRAY_ELEMENT_LOCK_COUNT_EXT = $81A9; + {$EXTERNALSYM GL_ARRAY_ELEMENT_LOCK_COUNT_EXT} + + // ARB_multitexture + GL_ACTIVE_TEXTURE_ARB = $84E0; + {$EXTERNALSYM GL_ACTIVE_TEXTURE_ARB} + GL_CLIENT_ACTIVE_TEXTURE_ARB = $84E1; + {$EXTERNALSYM GL_CLIENT_ACTIVE_TEXTURE_ARB} + GL_MAX_TEXTURE_UNITS_ARB = $84E2; + {$EXTERNALSYM GL_MAX_TEXTURE_UNITS_ARB} + GL_TEXTURE0_ARB = $84C0; + {$EXTERNALSYM GL_TEXTURE0_ARB} + GL_TEXTURE1_ARB = $84C1; + {$EXTERNALSYM GL_TEXTURE1_ARB} + GL_TEXTURE2_ARB = $84C2; + {$EXTERNALSYM GL_TEXTURE2_ARB} + GL_TEXTURE3_ARB = $84C3; + {$EXTERNALSYM GL_TEXTURE3_ARB} + GL_TEXTURE4_ARB = $84C4; + {$EXTERNALSYM GL_TEXTURE4_ARB} + GL_TEXTURE5_ARB = $84C5; + {$EXTERNALSYM GL_TEXTURE5_ARB} + GL_TEXTURE6_ARB = $84C6; + {$EXTERNALSYM GL_TEXTURE6_ARB} + GL_TEXTURE7_ARB = $84C7; + {$EXTERNALSYM GL_TEXTURE7_ARB} + GL_TEXTURE8_ARB = $84C8; + {$EXTERNALSYM GL_TEXTURE8_ARB} + GL_TEXTURE9_ARB = $84C9; + {$EXTERNALSYM GL_TEXTURE9_ARB} + GL_TEXTURE10_ARB = $84CA; + {$EXTERNALSYM GL_TEXTURE10_ARB} + GL_TEXTURE11_ARB = $84CB; + {$EXTERNALSYM GL_TEXTURE11_ARB} + GL_TEXTURE12_ARB = $84CC; + {$EXTERNALSYM GL_TEXTURE12_ARB} + GL_TEXTURE13_ARB = $84CD; + {$EXTERNALSYM GL_TEXTURE13_ARB} + GL_TEXTURE14_ARB = $84CE; + {$EXTERNALSYM GL_TEXTURE14_ARB} + GL_TEXTURE15_ARB = $84CF; + {$EXTERNALSYM GL_TEXTURE15_ARB} + GL_TEXTURE16_ARB = $84D0; + {$EXTERNALSYM GL_TEXTURE16_ARB} + GL_TEXTURE17_ARB = $84D1; + {$EXTERNALSYM GL_TEXTURE17_ARB} + GL_TEXTURE18_ARB = $84D2; + {$EXTERNALSYM GL_TEXTURE18_ARB} + GL_TEXTURE19_ARB = $84D3; + {$EXTERNALSYM GL_TEXTURE19_ARB} + GL_TEXTURE20_ARB = $84D4; + {$EXTERNALSYM GL_TEXTURE20_ARB} + GL_TEXTURE21_ARB = $84D5; + {$EXTERNALSYM GL_TEXTURE21_ARB} + GL_TEXTURE22_ARB = $84D6; + {$EXTERNALSYM GL_TEXTURE22_ARB} + GL_TEXTURE23_ARB = $84D7; + {$EXTERNALSYM GL_TEXTURE23_ARB} + GL_TEXTURE24_ARB = $84D8; + {$EXTERNALSYM GL_TEXTURE24_ARB} + GL_TEXTURE25_ARB = $84D9; + {$EXTERNALSYM GL_TEXTURE25_ARB} + GL_TEXTURE26_ARB = $84DA; + {$EXTERNALSYM GL_TEXTURE26_ARB} + GL_TEXTURE27_ARB = $84DB; + {$EXTERNALSYM GL_TEXTURE27_ARB} + GL_TEXTURE28_ARB = $84DC; + {$EXTERNALSYM GL_TEXTURE28_ARB} + GL_TEXTURE29_ARB = $84DD; + {$EXTERNALSYM GL_TEXTURE29_ARB} + GL_TEXTURE30_ARB = $84DE; + {$EXTERNALSYM GL_TEXTURE30_ARB} + GL_TEXTURE31_ARB = $84DF; + {$EXTERNALSYM GL_TEXTURE31_ARB} + + // EXT_stencil_wrap + GL_INCR_WRAP_EXT = $8507; + {$EXTERNALSYM GL_INCR_WRAP_EXT} + GL_DECR_WRAP_EXT = $8508; + {$EXTERNALSYM GL_DECR_WRAP_EXT} + + // NV_texgen_reflection + GL_NORMAL_MAP_NV = $8511; + {$EXTERNALSYM GL_NORMAL_MAP_NV} + GL_REFLECTION_MAP_NV = $8512; + {$EXTERNALSYM GL_REFLECTION_MAP_NV} + + // EXT_texture_env_combine + GL_COMBINE_EXT = $8570; + {$EXTERNALSYM GL_COMBINE_EXT} + GL_COMBINE_RGB_EXT = $8571; + {$EXTERNALSYM GL_COMBINE_RGB_EXT} + GL_COMBINE_ALPHA_EXT = $8572; + {$EXTERNALSYM GL_COMBINE_ALPHA_EXT} + GL_RGB_SCALE_EXT = $8573; + {$EXTERNALSYM GL_RGB_SCALE_EXT} + GL_ADD_SIGNED_EXT = $8574; + {$EXTERNALSYM GL_ADD_SIGNED_EXT} + GL_INTERPOLATE_EXT = $8575; + {$EXTERNALSYM GL_INTERPOLATE_EXT} + GL_CONSTANT_EXT = $8576; + {$EXTERNALSYM GL_CONSTANT_EXT} + GL_PRIMARY_COLOR_EXT = $8577; + {$EXTERNALSYM GL_PRIMARY_COLOR_EXT} + GL_PREVIOUS_EXT = $8578; + {$EXTERNALSYM GL_PREVIOUS_EXT} + GL_SOURCE0_RGB_EXT = $8580; + {$EXTERNALSYM GL_SOURCE0_RGB_EXT} + GL_SOURCE1_RGB_EXT = $8581; + {$EXTERNALSYM GL_SOURCE1_RGB_EXT} + GL_SOURCE2_RGB_EXT = $8582; + {$EXTERNALSYM GL_SOURCE2_RGB_EXT} + GL_SOURCE0_ALPHA_EXT = $8588; + {$EXTERNALSYM GL_SOURCE0_ALPHA_EXT} + GL_SOURCE1_ALPHA_EXT = $8589; + {$EXTERNALSYM GL_SOURCE1_ALPHA_EXT} + GL_SOURCE2_ALPHA_EXT = $858A; + {$EXTERNALSYM GL_SOURCE2_ALPHA_EXT} + GL_OPERAND0_RGB_EXT = $8590; + {$EXTERNALSYM GL_OPERAND0_RGB_EXT} + GL_OPERAND1_RGB_EXT = $8591; + {$EXTERNALSYM GL_OPERAND1_RGB_EXT} + GL_OPERAND2_RGB_EXT = $8592; + {$EXTERNALSYM GL_OPERAND2_RGB_EXT} + GL_OPERAND0_ALPHA_EXT = $8598; + {$EXTERNALSYM GL_OPERAND0_ALPHA_EXT} + GL_OPERAND1_ALPHA_EXT = $8599; + {$EXTERNALSYM GL_OPERAND1_ALPHA_EXT} + GL_OPERAND2_ALPHA_EXT = $859A; + {$EXTERNALSYM GL_OPERAND2_ALPHA_EXT} + + // NV_texture_env_combine4 + GL_COMBINE4_NV = $8503; + {$EXTERNALSYM GL_COMBINE4_NV} + GL_SOURCE3_RGB_NV = $8583; + {$EXTERNALSYM GL_SOURCE3_RGB_NV} + GL_SOURCE3_ALPHA_NV = $858B; + {$EXTERNALSYM GL_SOURCE3_ALPHA_NV} + GL_OPERAND3_RGB_NV = $8593; + {$EXTERNALSYM GL_OPERAND3_RGB_NV} + GL_OPERAND3_ALPHA_NV = $859B; + {$EXTERNALSYM GL_OPERAND3_ALPHA_NV} + + GL_BLEND_EQUATION = $8009; + {$EXTERNALSYM GL_BLEND_EQUATION} + GL_TABLE_TOO_LARGE = $8031; + {$EXTERNALSYM GL_TABLE_TOO_LARGE} + GL_UNSIGNED_BYTE_3_3_2 = $8032; + {$EXTERNALSYM GL_UNSIGNED_BYTE_3_3_2} + GL_UNSIGNED_SHORT_4_4_4_4 = $8033; + {$EXTERNALSYM GL_UNSIGNED_SHORT_4_4_4_4} + GL_UNSIGNED_SHORT_5_5_5_1 = $8034; + {$EXTERNALSYM GL_UNSIGNED_SHORT_5_5_5_1} + GL_UNSIGNED_INT_8_8_8_8 = $8035; + {$EXTERNALSYM GL_UNSIGNED_INT_8_8_8_8} + GL_UNSIGNED_INT_10_10_10_2 = $8036; + {$EXTERNALSYM GL_UNSIGNED_INT_10_10_10_2} + GL_UNSIGNED_BYTE_2_3_3_REV = $8362; + {$EXTERNALSYM GL_UNSIGNED_BYTE_2_3_3_REV} + GL_UNSIGNED_SHORT_5_6_5 = $8363; + {$EXTERNALSYM GL_UNSIGNED_SHORT_5_6_5} + GL_UNSIGNED_SHORT_5_6_5_REV = $8364; + {$EXTERNALSYM GL_UNSIGNED_SHORT_5_6_5_REV} + GL_UNSIGNED_SHORT_4_4_4_4_REV = $8365; + {$EXTERNALSYM GL_UNSIGNED_SHORT_4_4_4_4_REV} + GL_UNSIGNED_SHORT_1_5_5_5_REV = $8366; + {$EXTERNALSYM GL_UNSIGNED_SHORT_1_5_5_5_REV} + GL_UNSIGNED_INT_8_8_8_8_REV = $8367; + {$EXTERNALSYM GL_UNSIGNED_INT_8_8_8_8_REV} + GL_UNSIGNED_INT_2_10_10_10_REV = $8368; + {$EXTERNALSYM GL_UNSIGNED_INT_2_10_10_10_REV} + + // GL_ARB_transpose_matrix + GL_TRANSPOSE_MODELVIEW_MATRIX_ARB = $84E3; + {$EXTERNALSYM GL_TRANSPOSE_MODELVIEW_MATRIX_ARB} + GL_TRANSPOSE_PROJECTION_MATRIX_ARB = $84E4; + {$EXTERNALSYM GL_TRANSPOSE_PROJECTION_MATRIX_ARB} + GL_TRANSPOSE_TEXTURE_MATRIX_ARB = $84E5; + {$EXTERNALSYM GL_TRANSPOSE_TEXTURE_MATRIX_ARB} + GL_TRANSPOSE_COLOR_MATRIX_ARB = $84E6; + {$EXTERNALSYM GL_TRANSPOSE_COLOR_MATRIX_ARB} + + // GL_ARB_multisample + GL_MULTISAMPLE_ARB = $809D; + {$EXTERNALSYM GL_MULTISAMPLE_ARB} + GL_SAMPLE_ALPHA_TO_COVERAGE_ARB = $809E; + {$EXTERNALSYM GL_SAMPLE_ALPHA_TO_COVERAGE_ARB} + GL_SAMPLE_ALPHA_TO_ONE_ARB = $809F; + {$EXTERNALSYM GL_SAMPLE_ALPHA_TO_ONE_ARB} + GL_SAMPLE_COVERAGE_ARB = $80A0; + {$EXTERNALSYM GL_SAMPLE_COVERAGE_ARB} + GL_SAMPLE_BUFFERS_ARB = $80A8; + {$EXTERNALSYM GL_SAMPLE_BUFFERS_ARB} + GL_SAMPLES_ARB = $80A9; + {$EXTERNALSYM GL_SAMPLES_ARB} + GL_SAMPLE_COVERAGE_VALUE_ARB = $80AA; + {$EXTERNALSYM GL_SAMPLE_COVERAGE_VALUE_ARB} + GL_SAMPLE_COVERAGE_INVERT_ARB = $80AB; + {$EXTERNALSYM GL_SAMPLE_COVERAGE_INVERT_ARB} + GL_MULTISAMPLE_BIT_ARB = $20000000; + {$EXTERNALSYM GL_MULTISAMPLE_BIT_ARB} + GLX_SAMPLE_BUFFERS_ARB = 100000; + {$EXTERNALSYM GLX_SAMPLE_BUFFERS_ARB} + GLX_SAMPLES_ARB = 100001; + {$EXTERNALSYM GLX_SAMPLES_ARB} + WGL_SAMPLE_BUFFERS_ARB = $2041; + {$EXTERNALSYM WGL_SAMPLE_BUFFERS_ARB} + WGL_SAMPLES_ARB = $2042; + {$EXTERNALSYM WGL_SAMPLES_ARB} + + // GL_ARB_texture_cube_map + GL_NORMAL_MAP_ARB = $8511; + {$EXTERNALSYM GL_NORMAL_MAP_ARB} + GL_REFLECTION_MAP_ARB = $8512; + {$EXTERNALSYM GL_REFLECTION_MAP_ARB} + GL_TEXTURE_CUBE_MAP_ARB = $8513; + {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_ARB} + GL_TEXTURE_BINDING_CUBE_MAP_ARB = $8514; + {$EXTERNALSYM GL_TEXTURE_BINDING_CUBE_MAP_ARB} + GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = $8515; + {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB} + GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = $8516; + {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB} + GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = $8517; + {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB} + GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = $8518; + {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB} + GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = $8519; + {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB} + GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = $851A; + {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB} + GL_PROXY_TEXTURE_CUBE_MAP_ARB = $851B; + {$EXTERNALSYM GL_PROXY_TEXTURE_CUBE_MAP_ARB} + GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB = $851C; + {$EXTERNALSYM GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB} + + // GL_ARB_texture_compression + GL_COMPRESSED_ALPHA_ARB = $84E9; + {$EXTERNALSYM GL_COMPRESSED_ALPHA_ARB} + GL_COMPRESSED_LUMINANCE_ARB = $84EA; + {$EXTERNALSYM GL_COMPRESSED_LUMINANCE_ARB} + GL_COMPRESSED_LUMINANCE_ALPHA_ARB = $84EB; + {$EXTERNALSYM GL_COMPRESSED_LUMINANCE_ALPHA_ARB} + GL_COMPRESSED_INTENSITY_ARB = $84EC; + {$EXTERNALSYM GL_COMPRESSED_INTENSITY_ARB} + GL_COMPRESSED_RGB_ARB = $84ED; + {$EXTERNALSYM GL_COMPRESSED_RGB_ARB} + GL_COMPRESSED_RGBA_ARB = $84EE; + {$EXTERNALSYM GL_COMPRESSED_RGBA_ARB} + GL_TEXTURE_COMPRESSION_HINT_ARB = $84EF; + {$EXTERNALSYM GL_TEXTURE_COMPRESSION_HINT_ARB} + GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB = $86A0; + {$EXTERNALSYM GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB} + GL_TEXTURE_COMPRESSED_ARB = $86A1; + {$EXTERNALSYM GL_TEXTURE_COMPRESSED_ARB} + GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB = $86A2; + {$EXTERNALSYM GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB} + GL_COMPRESSED_TEXTURE_FORMATS_ARB = $86A3; + {$EXTERNALSYM GL_COMPRESSED_TEXTURE_FORMATS_ARB} + + // GL_ARB_vertex_blend + GL_MAX_VERTEX_UNITS_ARB = $86A4; + {$EXTERNALSYM GL_MAX_VERTEX_UNITS_ARB} + GL_ACTIVE_VERTEX_UNITS_ARB = $86A5; + {$EXTERNALSYM GL_ACTIVE_VERTEX_UNITS_ARB} + GL_WEIGHT_SUM_UNITY_ARB = $86A6; + {$EXTERNALSYM GL_WEIGHT_SUM_UNITY_ARB} + GL_VERTEX_BLEND_ARB = $86A7; + {$EXTERNALSYM GL_VERTEX_BLEND_ARB} + GL_CURRENT_WEIGHT_ARB = $86A8; + {$EXTERNALSYM GL_CURRENT_WEIGHT_ARB} + GL_WEIGHT_ARRAY_TYPE_ARB = $86A9; + {$EXTERNALSYM GL_WEIGHT_ARRAY_TYPE_ARB} + GL_WEIGHT_ARRAY_STRIDE_ARB = $86AA; + {$EXTERNALSYM GL_WEIGHT_ARRAY_STRIDE_ARB} + GL_WEIGHT_ARRAY_SIZE_ARB = $86AB; + {$EXTERNALSYM GL_WEIGHT_ARRAY_SIZE_ARB} + GL_WEIGHT_ARRAY_POINTER_ARB = $86AC; + {$EXTERNALSYM GL_WEIGHT_ARRAY_POINTER_ARB} + GL_WEIGHT_ARRAY_ARB = $86AD; + {$EXTERNALSYM GL_WEIGHT_ARRAY_ARB} + GL_MODELVIEW0_ARB = $1700; + {$EXTERNALSYM GL_MODELVIEW0_ARB} + GL_MODELVIEW1_ARB = $850A; + {$EXTERNALSYM GL_MODELVIEW1_ARB} + GL_MODELVIEW2_ARB = $8722; + {$EXTERNALSYM GL_MODELVIEW2_ARB} + GL_MODELVIEW3_ARB = $8723; + {$EXTERNALSYM GL_MODELVIEW3_ARB} + GL_MODELVIEW4_ARB = $8724; + {$EXTERNALSYM GL_MODELVIEW4_ARB} + GL_MODELVIEW5_ARB = $8725; + {$EXTERNALSYM GL_MODELVIEW5_ARB} + GL_MODELVIEW6_ARB = $8726; + {$EXTERNALSYM GL_MODELVIEW6_ARB} + GL_MODELVIEW7_ARB = $8727; + {$EXTERNALSYM GL_MODELVIEW7_ARB} + GL_MODELVIEW8_ARB = $8728; + {$EXTERNALSYM GL_MODELVIEW8_ARB} + GL_MODELVIEW9_ARB = $8729; + {$EXTERNALSYM GL_MODELVIEW9_ARB} + GL_MODELVIEW10_ARB = $872A; + {$EXTERNALSYM GL_MODELVIEW10_ARB} + GL_MODELVIEW11_ARB = $872B; + {$EXTERNALSYM GL_MODELVIEW11_ARB} + GL_MODELVIEW12_ARB = $872C; + {$EXTERNALSYM GL_MODELVIEW12_ARB} + GL_MODELVIEW13_ARB = $872D; + {$EXTERNALSYM GL_MODELVIEW13_ARB} + GL_MODELVIEW14_ARB = $872E; + {$EXTERNALSYM GL_MODELVIEW14_ARB} + GL_MODELVIEW15_ARB = $872F; + {$EXTERNALSYM GL_MODELVIEW15_ARB} + GL_MODELVIEW16_ARB = $8730; + {$EXTERNALSYM GL_MODELVIEW16_ARB} + GL_MODELVIEW17_ARB = $8731; + {$EXTERNALSYM GL_MODELVIEW17_ARB} + GL_MODELVIEW18_ARB = $8732; + {$EXTERNALSYM GL_MODELVIEW18_ARB} + GL_MODELVIEW19_ARB = $8733; + {$EXTERNALSYM GL_MODELVIEW19_ARB} + GL_MODELVIEW20_ARB = $8734; + {$EXTERNALSYM GL_MODELVIEW20_ARB} + GL_MODELVIEW21_ARB = $8735; + {$EXTERNALSYM GL_MODELVIEW21_ARB} + GL_MODELVIEW22_ARB = $8736; + {$EXTERNALSYM GL_MODELVIEW22_ARB} + GL_MODELVIEW23_ARB = $8737; + {$EXTERNALSYM GL_MODELVIEW23_ARB} + GL_MODELVIEW24_ARB = $8738; + {$EXTERNALSYM GL_MODELVIEW24_ARB} + GL_MODELVIEW25_ARB = $8739; + {$EXTERNALSYM GL_MODELVIEW25_ARB} + GL_MODELVIEW26_ARB = $873A; + {$EXTERNALSYM GL_MODELVIEW26_ARB} + GL_MODELVIEW27_ARB = $873B; + {$EXTERNALSYM GL_MODELVIEW27_ARB} + GL_MODELVIEW28_ARB = $873C; + {$EXTERNALSYM GL_MODELVIEW28_ARB} + GL_MODELVIEW29_ARB = $873D; + {$EXTERNALSYM GL_MODELVIEW29_ARB} + GL_MODELVIEW30_ARB = $873E; + {$EXTERNALSYM GL_MODELVIEW30_ARB} + GL_MODELVIEW31_ARB = $873F; + {$EXTERNALSYM GL_MODELVIEW31_ARB} + + // GL_SGIS_texture_filter4 + GL_FILTER4_SGIS = $8146; + {$EXTERNALSYM GL_FILTER4_SGIS} + GL_TEXTURE_FILTER4_SIZE_SGIS = $8147; + {$EXTERNALSYM GL_TEXTURE_FILTER4_SIZE_SGIS} + + // GL_SGIS_pixel_texture + GL_PIXEL_TEXTURE_SGIS = $8353; + {$EXTERNALSYM GL_PIXEL_TEXTURE_SGIS} + GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS = $8354; + {$EXTERNALSYM GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS} + GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS = $8355; + {$EXTERNALSYM GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS} + GL_PIXEL_GROUP_COLOR_SGIS = $8356; + {$EXTERNALSYM GL_PIXEL_GROUP_COLOR_SGIS} + + // GL_SGIX_pixel_texture + GL_PIXEL_TEX_GEN_SGIX = $8139; + {$EXTERNALSYM GL_PIXEL_TEX_GEN_SGIX} + GL_PIXEL_TEX_GEN_MODE_SGIX = $832B; + {$EXTERNALSYM GL_PIXEL_TEX_GEN_MODE_SGIX} + + // GL_SGIS_texture4D + GL_PACK_SKIP_VOLUMES_SGIS = $8130; + {$EXTERNALSYM GL_PACK_SKIP_VOLUMES_SGIS} + GL_PACK_IMAGE_DEPTH_SGIS = $8131; + {$EXTERNALSYM GL_PACK_IMAGE_DEPTH_SGIS} + GL_UNPACK_SKIP_VOLUMES_SGIS = $8132; + {$EXTERNALSYM GL_UNPACK_SKIP_VOLUMES_SGIS} + GL_UNPACK_IMAGE_DEPTH_SGIS = $8133; + {$EXTERNALSYM GL_UNPACK_IMAGE_DEPTH_SGIS} + GL_TEXTURE_4D_SGIS = $8134; + {$EXTERNALSYM GL_TEXTURE_4D_SGIS} + GL_PROXY_TEXTURE_4D_SGIS = $8135; + {$EXTERNALSYM GL_PROXY_TEXTURE_4D_SGIS} + GL_TEXTURE_4DSIZE_SGIS = $8136; + {$EXTERNALSYM GL_TEXTURE_4DSIZE_SGIS} + GL_TEXTURE_WRAP_Q_SGIS = $8137; + {$EXTERNALSYM GL_TEXTURE_WRAP_Q_SGIS} + GL_MAX_4D_TEXTURE_SIZE_SGIS = $8138; + {$EXTERNALSYM GL_MAX_4D_TEXTURE_SIZE_SGIS} + GL_TEXTURE_4D_BINDING_SGIS = $814F; + {$EXTERNALSYM GL_TEXTURE_4D_BINDING_SGIS} + + // GL_SGIS_detail_texture + GL_DETAIL_TEXTURE_2D_SGIS = $8095; + {$EXTERNALSYM GL_DETAIL_TEXTURE_2D_SGIS} + GL_DETAIL_TEXTURE_2D_BINDING_SGIS = $8096; + {$EXTERNALSYM GL_DETAIL_TEXTURE_2D_BINDING_SGIS} + GL_LINEAR_DETAIL_SGIS = $8097; + {$EXTERNALSYM GL_LINEAR_DETAIL_SGIS} + GL_LINEAR_DETAIL_ALPHA_SGIS = $8098; + {$EXTERNALSYM GL_LINEAR_DETAIL_ALPHA_SGIS} + GL_LINEAR_DETAIL_COLOR_SGIS = $8099; + {$EXTERNALSYM GL_LINEAR_DETAIL_COLOR_SGIS} + GL_DETAIL_TEXTURE_LEVEL_SGIS = $809A; + {$EXTERNALSYM GL_DETAIL_TEXTURE_LEVEL_SGIS} + GL_DETAIL_TEXTURE_MODE_SGIS = $809B; + {$EXTERNALSYM GL_DETAIL_TEXTURE_MODE_SGIS} + GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS = $809C; + {$EXTERNALSYM GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS} + + // GL_SGIS_sharpen_texture + GL_LINEAR_SHARPEN_SGIS = $80AD; + {$EXTERNALSYM GL_LINEAR_SHARPEN_SGIS} + GL_LINEAR_SHARPEN_ALPHA_SGIS = $80AE; + {$EXTERNALSYM GL_LINEAR_SHARPEN_ALPHA_SGIS} + GL_LINEAR_SHARPEN_COLOR_SGIS = $80AF; + {$EXTERNALSYM GL_LINEAR_SHARPEN_COLOR_SGIS} + GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS = $80B0; + {$EXTERNALSYM GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS} + + // GL_SGIS_texture_lod + GL_TEXTURE_MIN_LOD_SGIS = $813A; + {$EXTERNALSYM GL_TEXTURE_MIN_LOD_SGIS} + GL_TEXTURE_MAX_LOD_SGIS = $813B; + {$EXTERNALSYM GL_TEXTURE_MAX_LOD_SGIS} + GL_TEXTURE_BASE_LEVEL_SGIS = $813C; + {$EXTERNALSYM GL_TEXTURE_BASE_LEVEL_SGIS} + GL_TEXTURE_MAX_LEVEL_SGIS = $813D; + {$EXTERNALSYM GL_TEXTURE_MAX_LEVEL_SGIS} + + // GL_SGIS_multisample + GL_MULTISAMPLE_SGIS = $809D; + {$EXTERNALSYM GL_MULTISAMPLE_SGIS} + GL_SAMPLE_ALPHA_TO_MASK_SGIS = $809E; + {$EXTERNALSYM GL_SAMPLE_ALPHA_TO_MASK_SGIS} + GL_SAMPLE_ALPHA_TO_ONE_SGIS = $809F; + {$EXTERNALSYM GL_SAMPLE_ALPHA_TO_ONE_SGIS} + GL_SAMPLE_MASK_SGIS = $80A0; + {$EXTERNALSYM GL_SAMPLE_MASK_SGIS} + GL_1PASS_SGIS = $80A1; + {$EXTERNALSYM GL_1PASS_SGIS} + GL_2PASS_0_SGIS = $80A2; + {$EXTERNALSYM GL_2PASS_0_SGIS} + GL_2PASS_1_SGIS = $80A3; + {$EXTERNALSYM GL_2PASS_1_SGIS} + GL_4PASS_0_SGIS = $80A4; + {$EXTERNALSYM GL_4PASS_0_SGIS} + GL_4PASS_1_SGIS = $80A5; + {$EXTERNALSYM GL_4PASS_1_SGIS} + GL_4PASS_2_SGIS = $80A6; + {$EXTERNALSYM GL_4PASS_2_SGIS} + GL_4PASS_3_SGIS = $80A7; + {$EXTERNALSYM GL_4PASS_3_SGIS} + GL_SAMPLE_BUFFERS_SGIS = $80A8; + {$EXTERNALSYM GL_SAMPLE_BUFFERS_SGIS} + GL_SAMPLES_SGIS = $80A9; + {$EXTERNALSYM GL_SAMPLES_SGIS} + GL_SAMPLE_MASK_VALUE_SGIS = $80AA; + {$EXTERNALSYM GL_SAMPLE_MASK_VALUE_SGIS} + GL_SAMPLE_MASK_INVERT_SGIS = $80AB; + {$EXTERNALSYM GL_SAMPLE_MASK_INVERT_SGIS} + GL_SAMPLE_PATTERN_SGIS = $80AC; + {$EXTERNALSYM GL_SAMPLE_PATTERN_SGIS} + + // GL_SGIS_generate_mipmap + GL_GENERATE_MIPMAP_SGIS = $8191; + {$EXTERNALSYM GL_GENERATE_MIPMAP_SGIS} + GL_GENERATE_MIPMAP_HINT_SGIS = $8192; + {$EXTERNALSYM GL_GENERATE_MIPMAP_HINT_SGIS} + + // GL_SGIX_clipmap + GL_LINEAR_CLIPMAP_LINEAR_SGIX = $8170; + {$EXTERNALSYM GL_LINEAR_CLIPMAP_LINEAR_SGIX} + GL_TEXTURE_CLIPMAP_CENTER_SGIX = $8171; + {$EXTERNALSYM GL_TEXTURE_CLIPMAP_CENTER_SGIX} + GL_TEXTURE_CLIPMAP_FRAME_SGIX = $8172; + {$EXTERNALSYM GL_TEXTURE_CLIPMAP_FRAME_SGIX} + GL_TEXTURE_CLIPMAP_OFFSET_SGIX = $8173; + {$EXTERNALSYM GL_TEXTURE_CLIPMAP_OFFSET_SGIX} + GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX = $8174; + {$EXTERNALSYM GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX} + GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX = $8175; + {$EXTERNALSYM GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX} + GL_TEXTURE_CLIPMAP_DEPTH_SGIX = $8176; + {$EXTERNALSYM GL_TEXTURE_CLIPMAP_DEPTH_SGIX} + GL_MAX_CLIPMAP_DEPTH_SGIX = $8177; + {$EXTERNALSYM GL_MAX_CLIPMAP_DEPTH_SGIX} + GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX = $8178; + {$EXTERNALSYM GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX} + GL_NEAREST_CLIPMAP_NEAREST_SGIX = $844D; + {$EXTERNALSYM GL_NEAREST_CLIPMAP_NEAREST_SGIX} + GL_NEAREST_CLIPMAP_LINEAR_SGIX = $844E; + {$EXTERNALSYM GL_NEAREST_CLIPMAP_LINEAR_SGIX} + GL_LINEAR_CLIPMAP_NEAREST_SGIX = $844F; + {$EXTERNALSYM GL_LINEAR_CLIPMAP_NEAREST_SGIX} + + // GL_SGIX_shadow + GL_TEXTURE_COMPARE_SGIX = $819A; + {$EXTERNALSYM GL_TEXTURE_COMPARE_SGIX} + GL_TEXTURE_COMPARE_OPERATOR_SGIX = $819B; + {$EXTERNALSYM GL_TEXTURE_COMPARE_OPERATOR_SGIX} + GL_TEXTURE_LEQUAL_R_SGIX = $819C; + {$EXTERNALSYM GL_TEXTURE_LEQUAL_R_SGIX} + GL_TEXTURE_GEQUAL_R_SGIX = $819D; + {$EXTERNALSYM GL_TEXTURE_GEQUAL_R_SGIX} + + // GL_SGIS_texture_edge_clamp + GL_CLAMP_TO_EDGE_SGIS = $812F; + {$EXTERNALSYM GL_CLAMP_TO_EDGE_SGIS} + + // GL_SGIS_texture_border_clamp + GL_CLAMP_TO_BORDER_SGIS = $812D; + {$EXTERNALSYM GL_CLAMP_TO_BORDER_SGIS} + + // GL_SGIX_interlace + GL_INTERLACE_SGIX = $8094; + {$EXTERNALSYM GL_INTERLACE_SGIX} + + // GL_SGIX_pixel_tiles + GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX = $813E; + {$EXTERNALSYM GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX} + GL_PIXEL_TILE_CACHE_INCREMENT_SGIX = $813F; + {$EXTERNALSYM GL_PIXEL_TILE_CACHE_INCREMENT_SGIX} + GL_PIXEL_TILE_WIDTH_SGIX = $8140; + {$EXTERNALSYM GL_PIXEL_TILE_WIDTH_SGIX} + GL_PIXEL_TILE_HEIGHT_SGIX = $8141; + {$EXTERNALSYM GL_PIXEL_TILE_HEIGHT_SGIX} + GL_PIXEL_TILE_GRID_WIDTH_SGIX = $8142; + {$EXTERNALSYM GL_PIXEL_TILE_GRID_WIDTH_SGIX} + GL_PIXEL_TILE_GRID_HEIGHT_SGIX = $8143; + {$EXTERNALSYM GL_PIXEL_TILE_GRID_HEIGHT_SGIX} + GL_PIXEL_TILE_GRID_DEPTH_SGIX = $8144; + {$EXTERNALSYM GL_PIXEL_TILE_GRID_DEPTH_SGIX} + GL_PIXEL_TILE_CACHE_SIZE_SGIX = $8145; + {$EXTERNALSYM GL_PIXEL_TILE_CACHE_SIZE_SGIX} + + // GL_SGIS_texture_select + GL_DUAL_ALPHA4_SGIS = $8110; + {$EXTERNALSYM GL_DUAL_ALPHA4_SGIS} + GL_DUAL_ALPHA8_SGIS = $8111; + {$EXTERNALSYM GL_DUAL_ALPHA8_SGIS} + GL_DUAL_ALPHA12_SGIS = $8112; + {$EXTERNALSYM GL_DUAL_ALPHA12_SGIS} + GL_DUAL_ALPHA16_SGIS = $8113; + {$EXTERNALSYM GL_DUAL_ALPHA16_SGIS} + GL_DUAL_LUMINANCE4_SGIS = $8114; + {$EXTERNALSYM GL_DUAL_LUMINANCE4_SGIS} + GL_DUAL_LUMINANCE8_SGIS = $8115; + {$EXTERNALSYM GL_DUAL_LUMINANCE8_SGIS} + GL_DUAL_LUMINANCE12_SGIS = $8116; + {$EXTERNALSYM GL_DUAL_LUMINANCE12_SGIS} + GL_DUAL_LUMINANCE16_SGIS = $8117; + {$EXTERNALSYM GL_DUAL_LUMINANCE16_SGIS} + GL_DUAL_INTENSITY4_SGIS = $8118; + {$EXTERNALSYM GL_DUAL_INTENSITY4_SGIS} + GL_DUAL_INTENSITY8_SGIS = $8119; + {$EXTERNALSYM GL_DUAL_INTENSITY8_SGIS} + GL_DUAL_INTENSITY12_SGIS = $811A; + {$EXTERNALSYM GL_DUAL_INTENSITY12_SGIS} + GL_DUAL_INTENSITY16_SGIS = $811B; + {$EXTERNALSYM GL_DUAL_INTENSITY16_SGIS} + GL_DUAL_LUMINANCE_ALPHA4_SGIS = $811C; + {$EXTERNALSYM GL_DUAL_LUMINANCE_ALPHA4_SGIS} + GL_DUAL_LUMINANCE_ALPHA8_SGIS = $811D; + {$EXTERNALSYM GL_DUAL_LUMINANCE_ALPHA8_SGIS} + GL_QUAD_ALPHA4_SGIS = $811E; + {$EXTERNALSYM GL_QUAD_ALPHA4_SGIS} + GL_QUAD_ALPHA8_SGIS = $811F; + {$EXTERNALSYM GL_QUAD_ALPHA8_SGIS} + GL_QUAD_LUMINANCE4_SGIS = $8120; + {$EXTERNALSYM GL_QUAD_LUMINANCE4_SGIS} + GL_QUAD_LUMINANCE8_SGIS = $8121; + {$EXTERNALSYM GL_QUAD_LUMINANCE8_SGIS} + GL_QUAD_INTENSITY4_SGIS = $8122; + {$EXTERNALSYM GL_QUAD_INTENSITY4_SGIS} + GL_QUAD_INTENSITY8_SGIS = $8123; + {$EXTERNALSYM GL_QUAD_INTENSITY8_SGIS} + GL_DUAL_TEXTURE_SELECT_SGIS = $8124; + {$EXTERNALSYM GL_DUAL_TEXTURE_SELECT_SGIS} + GL_QUAD_TEXTURE_SELECT_SGIS = $8125; + {$EXTERNALSYM GL_QUAD_TEXTURE_SELECT_SGIS} + + // GL_SGIX_sprite + GL_SPRITE_SGIX = $8148; + {$EXTERNALSYM GL_SPRITE_SGIX} + GL_SPRITE_MODE_SGIX = $8149; + {$EXTERNALSYM GL_SPRITE_MODE_SGIX} + GL_SPRITE_AXIS_SGIX = $814A; + {$EXTERNALSYM GL_SPRITE_AXIS_SGIX} + GL_SPRITE_TRANSLATION_SGIX = $814B; + {$EXTERNALSYM GL_SPRITE_TRANSLATION_SGIX} + GL_SPRITE_AXIAL_SGIX = $814C; + {$EXTERNALSYM GL_SPRITE_AXIAL_SGIX} + GL_SPRITE_OBJECT_ALIGNED_SGIX = $814D; + {$EXTERNALSYM GL_SPRITE_OBJECT_ALIGNED_SGIX} + GL_SPRITE_EYE_ALIGNED_SGIX = $814E; + {$EXTERNALSYM GL_SPRITE_EYE_ALIGNED_SGIX} + + // GL_SGIX_texture_multi_buffer + GL_TEXTURE_MULTI_BUFFER_HINT_SGIX = $812E; + {$EXTERNALSYM GL_TEXTURE_MULTI_BUFFER_HINT_SGIX} + + // GL_SGIS_point_parameters + GL_POINT_SIZE_MIN_SGIS = $8126; + {$EXTERNALSYM GL_POINT_SIZE_MIN_SGIS} + GL_POINT_SIZE_MAX_SGIS = $8127; + {$EXTERNALSYM GL_POINT_SIZE_MAX_SGIS} + GL_POINT_FADE_THRESHOLD_SIZE_SGIS = $8128; + {$EXTERNALSYM GL_POINT_FADE_THRESHOLD_SIZE_SGIS} + GL_DISTANCE_ATTENUATION_SGIS = $8129; + {$EXTERNALSYM GL_DISTANCE_ATTENUATION_SGIS} + + // GL_SGIX_instruments + GL_INSTRUMENT_BUFFER_POINTER_SGIX = $8180; + {$EXTERNALSYM GL_INSTRUMENT_BUFFER_POINTER_SGIX} + GL_INSTRUMENT_MEASUREMENTS_SGIX = $8181; + {$EXTERNALSYM GL_INSTRUMENT_MEASUREMENTS_SGIX} + + // GL_SGIX_texture_scale_bias + GL_POST_TEXTURE_FILTER_BIAS_SGIX = $8179; + {$EXTERNALSYM GL_POST_TEXTURE_FILTER_BIAS_SGIX} + GL_POST_TEXTURE_FILTER_SCALE_SGIX = $817A; + {$EXTERNALSYM GL_POST_TEXTURE_FILTER_SCALE_SGIX} + GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX = $817B; + {$EXTERNALSYM GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX} + GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX = $817C; + {$EXTERNALSYM GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX} + + // GL_SGIX_framezoom + GL_FRAMEZOOM_SGIX = $818B; + {$EXTERNALSYM GL_FRAMEZOOM_SGIX} + GL_FRAMEZOOM_FACTOR_SGIX = $818C; + {$EXTERNALSYM GL_FRAMEZOOM_FACTOR_SGIX} + GL_MAX_FRAMEZOOM_FACTOR_SGIX = $818D; + {$EXTERNALSYM GL_MAX_FRAMEZOOM_FACTOR_SGIX} + + // GL_FfdMaskSGIX + GL_TEXTURE_DEFORMATION_BIT_SGIX = $00000001; + {$EXTERNALSYM GL_TEXTURE_DEFORMATION_BIT_SGIX} + GL_GEOMETRY_DEFORMATION_BIT_SGIX = $00000002; + {$EXTERNALSYM GL_GEOMETRY_DEFORMATION_BIT_SGIX} + + // GL_SGIX_polynomial_ffd + GL_GEOMETRY_DEFORMATION_SGIX = $8194; + {$EXTERNALSYM GL_GEOMETRY_DEFORMATION_SGIX} + GL_TEXTURE_DEFORMATION_SGIX = $8195; + {$EXTERNALSYM GL_TEXTURE_DEFORMATION_SGIX} + GL_DEFORMATIONS_MASK_SGIX = $8196; + {$EXTERNALSYM GL_DEFORMATIONS_MASK_SGIX} + GL_MAX_DEFORMATION_ORDER_SGIX = $8197; + {$EXTERNALSYM GL_MAX_DEFORMATION_ORDER_SGIX} + + // GL_SGIX_reference_plane + GL_REFERENCE_PLANE_SGIX = $817D; + {$EXTERNALSYM GL_REFERENCE_PLANE_SGIX} + GL_REFERENCE_PLANE_EQUATION_SGIX = $817E; + {$EXTERNALSYM GL_REFERENCE_PLANE_EQUATION_SGIX} + + // GL_SGIX_depth_texture + GL_DEPTH_COMPONENT16_SGIX = $81A5; + {$EXTERNALSYM GL_DEPTH_COMPONENT16_SGIX} + GL_DEPTH_COMPONENT24_SGIX = $81A6; + {$EXTERNALSYM GL_DEPTH_COMPONENT24_SGIX} + GL_DEPTH_COMPONENT32_SGIX = $81A7; + {$EXTERNALSYM GL_DEPTH_COMPONENT32_SGIX} + + // GL_SGIS_fog_function + GL_FOG_FUNC_SGIS = $812A; + {$EXTERNALSYM GL_FOG_FUNC_SGIS} + GL_FOG_FUNC_POINTS_SGIS = $812B; + {$EXTERNALSYM GL_FOG_FUNC_POINTS_SGIS} + GL_MAX_FOG_FUNC_POINTS_SGIS = $812C; + {$EXTERNALSYM GL_MAX_FOG_FUNC_POINTS_SGIS} + + // GL_SGIX_fog_offset + GL_FOG_OFFSET_SGIX = $8198; + {$EXTERNALSYM GL_FOG_OFFSET_SGIX} + GL_FOG_OFFSET_VALUE_SGIX = $8199; + {$EXTERNALSYM GL_FOG_OFFSET_VALUE_SGIX} + + // GL_HP_image_transform + GL_IMAGE_SCALE_X_HP = $8155; + {$EXTERNALSYM GL_IMAGE_SCALE_X_HP} + GL_IMAGE_SCALE_Y_HP = $8156; + {$EXTERNALSYM GL_IMAGE_SCALE_Y_HP} + GL_IMAGE_TRANSLATE_X_HP = $8157; + {$EXTERNALSYM GL_IMAGE_TRANSLATE_X_HP} + GL_IMAGE_TRANSLATE_Y_HP = $8158; + {$EXTERNALSYM GL_IMAGE_TRANSLATE_Y_HP} + GL_IMAGE_ROTATE_ANGLE_HP = $8159; + {$EXTERNALSYM GL_IMAGE_ROTATE_ANGLE_HP} + GL_IMAGE_ROTATE_ORIGIN_X_HP = $815A; + {$EXTERNALSYM GL_IMAGE_ROTATE_ORIGIN_X_HP} + GL_IMAGE_ROTATE_ORIGIN_Y_HP = $815B; + {$EXTERNALSYM GL_IMAGE_ROTATE_ORIGIN_Y_HP} + GL_IMAGE_MAG_FILTER_HP = $815C; + {$EXTERNALSYM GL_IMAGE_MAG_FILTER_HP} + GL_IMAGE_MIN_FILTER_HP = $815D; + {$EXTERNALSYM GL_IMAGE_MIN_FILTER_HP} + GL_IMAGE_CUBIC_WEIGHT_HP = $815E; + {$EXTERNALSYM GL_IMAGE_CUBIC_WEIGHT_HP} + GL_CUBIC_HP = $815F; + {$EXTERNALSYM GL_CUBIC_HP} + GL_AVERAGE_HP = $8160; + {$EXTERNALSYM GL_AVERAGE_HP} + GL_IMAGE_TRANSFORM_2D_HP = $8161; + {$EXTERNALSYM GL_IMAGE_TRANSFORM_2D_HP} + GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = $8162; + {$EXTERNALSYM GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP} + GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = $8163; + {$EXTERNALSYM GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP} + + // GL_HP_convolution_border_modes + GL_IGNORE_BORDER_HP = $8150; + {$EXTERNALSYM GL_IGNORE_BORDER_HP} + GL_CONSTANT_BORDER_HP = $8151; + {$EXTERNALSYM GL_CONSTANT_BORDER_HP} + GL_REPLICATE_BORDER_HP = $8153; + {$EXTERNALSYM GL_REPLICATE_BORDER_HP} + GL_CONVOLUTION_BORDER_COLOR_HP = $8154; + {$EXTERNALSYM GL_CONVOLUTION_BORDER_COLOR_HP} + + // GL_SGIX_texture_add_env + GL_TEXTURE_ENV_BIAS_SGIX = $80BE; + {$EXTERNALSYM GL_TEXTURE_ENV_BIAS_SGIX} + + // GL_PGI_vertex_hints + GL_VERTEX_DATA_HINT_PGI = $1A22A; + {$EXTERNALSYM GL_VERTEX_DATA_HINT_PGI} + GL_VERTEX_CONSISTENT_HINT_PGI = $1A22B; + {$EXTERNALSYM GL_VERTEX_CONSISTENT_HINT_PGI} + GL_MATERIAL_SIDE_HINT_PGI = $1A22C; + {$EXTERNALSYM GL_MATERIAL_SIDE_HINT_PGI} + GL_MAX_VERTEX_HINT_PGI = $1A22D; + {$EXTERNALSYM GL_MAX_VERTEX_HINT_PGI} + GL_COLOR3_BIT_PGI = $00010000; + {$EXTERNALSYM GL_COLOR3_BIT_PGI} + GL_COLOR4_BIT_PGI = $00020000; + {$EXTERNALSYM GL_COLOR4_BIT_PGI} + GL_EDGEFLAG_BIT_PGI = $00040000; + {$EXTERNALSYM GL_EDGEFLAG_BIT_PGI} + GL_INDEX_BIT_PGI = $00080000; + {$EXTERNALSYM GL_INDEX_BIT_PGI} + GL_MAT_AMBIENT_BIT_PGI = $00100000; + {$EXTERNALSYM GL_MAT_AMBIENT_BIT_PGI} + GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI = $00200000; + {$EXTERNALSYM GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI} + GL_MAT_DIFFUSE_BIT_PGI = $00400000; + {$EXTERNALSYM GL_MAT_DIFFUSE_BIT_PGI} + GL_MAT_EMISSION_BIT_PGI = $00800000; + {$EXTERNALSYM GL_MAT_EMISSION_BIT_PGI} + GL_MAT_COLOR_INDEXES_BIT_PGI = $01000000; + {$EXTERNALSYM GL_MAT_COLOR_INDEXES_BIT_PGI} + GL_MAT_SHININESS_BIT_PGI = $02000000; + {$EXTERNALSYM GL_MAT_SHININESS_BIT_PGI} + GL_MAT_SPECULAR_BIT_PGI = $04000000; + {$EXTERNALSYM GL_MAT_SPECULAR_BIT_PGI} + GL_NORMAL_BIT_PGI = $08000000; + {$EXTERNALSYM GL_NORMAL_BIT_PGI} + GL_TEXCOORD1_BIT_PGI = $10000000; + {$EXTERNALSYM GL_TEXCOORD1_BIT_PGI} + GL_TEXCOORD2_BIT_PGI = $20000000; + {$EXTERNALSYM GL_TEXCOORD2_BIT_PGI} + GL_TEXCOORD3_BIT_PGI = $40000000; + {$EXTERNALSYM GL_TEXCOORD3_BIT_PGI} + GL_TEXCOORD4_BIT_PGI = $80000000; + {$EXTERNALSYM GL_TEXCOORD4_BIT_PGI} + GL_VERTEX23_BIT_PGI = $00000004; + {$EXTERNALSYM GL_VERTEX23_BIT_PGI} + GL_VERTEX4_BIT_PGI = $00000008; + {$EXTERNALSYM GL_VERTEX4_BIT_PGI} + + // GL_PGI_misc_hints + GL_PREFER_DOUBLEBUFFER_HINT_PGI = $1A1F8; + {$EXTERNALSYM GL_PREFER_DOUBLEBUFFER_HINT_PGI} + GL_CONSERVE_MEMORY_HINT_PGI = $1A1FD; + {$EXTERNALSYM GL_CONSERVE_MEMORY_HINT_PGI} + GL_RECLAIM_MEMORY_HINT_PGI = $1A1FE; + {$EXTERNALSYM GL_RECLAIM_MEMORY_HINT_PGI} + GL_NATIVE_GRAPHICS_HANDLE_PGI = $1A202; + {$EXTERNALSYM GL_NATIVE_GRAPHICS_HANDLE_PGI} + GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI = $1A203; + {$EXTERNALSYM GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI} + GL_NATIVE_GRAPHICS_END_HINT_PGI = $1A204; + {$EXTERNALSYM GL_NATIVE_GRAPHICS_END_HINT_PGI} + GL_ALWAYS_FAST_HINT_PGI = $1A20C; + {$EXTERNALSYM GL_ALWAYS_FAST_HINT_PGI} + GL_ALWAYS_SOFT_HINT_PGI = $1A20D; + {$EXTERNALSYM GL_ALWAYS_SOFT_HINT_PGI} + GL_ALLOW_DRAW_OBJ_HINT_PGI = $1A20E; + {$EXTERNALSYM GL_ALLOW_DRAW_OBJ_HINT_PGI} + GL_ALLOW_DRAW_WIN_HINT_PGI = $1A20F; + {$EXTERNALSYM GL_ALLOW_DRAW_WIN_HINT_PGI} + GL_ALLOW_DRAW_FRG_HINT_PGI = $1A210; + {$EXTERNALSYM GL_ALLOW_DRAW_FRG_HINT_PGI} + GL_ALLOW_DRAW_MEM_HINT_PGI = $1A211; + {$EXTERNALSYM GL_ALLOW_DRAW_MEM_HINT_PGI} + GL_STRICT_DEPTHFUNC_HINT_PGI = $1A216; + {$EXTERNALSYM GL_STRICT_DEPTHFUNC_HINT_PGI} + GL_STRICT_LIGHTING_HINT_PGI = $1A217; + {$EXTERNALSYM GL_STRICT_LIGHTING_HINT_PGI} + GL_STRICT_SCISSOR_HINT_PGI = $1A218; + {$EXTERNALSYM GL_STRICT_SCISSOR_HINT_PGI} + GL_FULL_STIPPLE_HINT_PGI = $1A219; + {$EXTERNALSYM GL_FULL_STIPPLE_HINT_PGI} + GL_CLIP_NEAR_HINT_PGI = $1A220; + {$EXTERNALSYM GL_CLIP_NEAR_HINT_PGI} + GL_CLIP_FAR_HINT_PGI = $1A221; + {$EXTERNALSYM GL_CLIP_FAR_HINT_PGI} + GL_WIDE_LINE_HINT_PGI = $1A222; + {$EXTERNALSYM GL_WIDE_LINE_HINT_PGI} + GL_BACK_NORMALS_HINT_PGI = $1A223; + {$EXTERNALSYM GL_BACK_NORMALS_HINT_PGI} + + // GL_EXT_paletted_texture + GL_TEXTURE_INDEX_SIZE_EXT = $80ED; + {$EXTERNALSYM GL_TEXTURE_INDEX_SIZE_EXT} + + // GL_SGIX_list_priority + GL_LIST_PRIORITY_SGIX = $8182; + {$EXTERNALSYM GL_LIST_PRIORITY_SGIX} + + // GL_SGIX_ir_instrument1 + GL_IR_INSTRUMENT1_SGIX = $817F; + {$EXTERNALSYM GL_IR_INSTRUMENT1_SGIX} + + // GL_SGIX_calligraphic_fragment + GL_CALLIGRAPHIC_FRAGMENT_SGIX = $8183; + {$EXTERNALSYM GL_CALLIGRAPHIC_FRAGMENT_SGIX} + + // GL_SGIX_texture_lod_bias + GL_TEXTURE_LOD_BIAS_S_SGIX = $818E; + {$EXTERNALSYM GL_TEXTURE_LOD_BIAS_S_SGIX} + GL_TEXTURE_LOD_BIAS_T_SGIX = $818F; + {$EXTERNALSYM GL_TEXTURE_LOD_BIAS_T_SGIX} + GL_TEXTURE_LOD_BIAS_R_SGIX = $8190; + {$EXTERNALSYM GL_TEXTURE_LOD_BIAS_R_SGIX} + + // GL_SGIX_shadow_ambient + GL_SHADOW_AMBIENT_SGIX = $80BF; + {$EXTERNALSYM GL_SHADOW_AMBIENT_SGIX} + + // GL_SGIX_ycrcb + GL_YCRCB_422_SGIX = $81BB; + {$EXTERNALSYM GL_YCRCB_422_SGIX} + GL_YCRCB_444_SGIX = $81BC; + {$EXTERNALSYM GL_YCRCB_444_SGIX} + + // GL_SGIX_fragment_lighting + GL_FRAGMENT_LIGHTING_SGIX = $8400; + {$EXTERNALSYM GL_FRAGMENT_LIGHTING_SGIX} + GL_FRAGMENT_COLOR_MATERIAL_SGIX = $8401; + {$EXTERNALSYM GL_FRAGMENT_COLOR_MATERIAL_SGIX} + GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX = $8402; + {$EXTERNALSYM GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX} + GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX = $8403; + {$EXTERNALSYM GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX} + GL_MAX_FRAGMENT_LIGHTS_SGIX = $8404; + {$EXTERNALSYM GL_MAX_FRAGMENT_LIGHTS_SGIX} + GL_MAX_ACTIVE_LIGHTS_SGIX = $8405; + {$EXTERNALSYM GL_MAX_ACTIVE_LIGHTS_SGIX} + GL_CURRENT_RASTER_NORMAL_SGIX = $8406; + {$EXTERNALSYM GL_CURRENT_RASTER_NORMAL_SGIX} + GL_LIGHT_ENV_MODE_SGIX = $8407; + {$EXTERNALSYM GL_LIGHT_ENV_MODE_SGIX} + GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX = $8408; + {$EXTERNALSYM GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX} + GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX = $8409; + {$EXTERNALSYM GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX} + GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX = $840A; + {$EXTERNALSYM GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX} + GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX = $840B; + {$EXTERNALSYM GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX} + GL_FRAGMENT_LIGHT0_SGIX = $840C; + {$EXTERNALSYM GL_FRAGMENT_LIGHT0_SGIX} + GL_FRAGMENT_LIGHT1_SGIX = $840D; + {$EXTERNALSYM GL_FRAGMENT_LIGHT1_SGIX} + GL_FRAGMENT_LIGHT2_SGIX = $840E; + {$EXTERNALSYM GL_FRAGMENT_LIGHT2_SGIX} + GL_FRAGMENT_LIGHT3_SGIX = $840F; + {$EXTERNALSYM GL_FRAGMENT_LIGHT3_SGIX} + GL_FRAGMENT_LIGHT4_SGIX = $8410; + {$EXTERNALSYM GL_FRAGMENT_LIGHT4_SGIX} + GL_FRAGMENT_LIGHT5_SGIX = $8411; + {$EXTERNALSYM GL_FRAGMENT_LIGHT5_SGIX} + GL_FRAGMENT_LIGHT6_SGIX = $8412; + {$EXTERNALSYM GL_FRAGMENT_LIGHT6_SGIX} + GL_FRAGMENT_LIGHT7_SGIX = $8413; + {$EXTERNALSYM GL_FRAGMENT_LIGHT7_SGIX} + + // GL_IBM_rasterpos_clip + GL_RASTER_POSITION_UNCLIPPED_IBM = $19262; + {$EXTERNALSYM GL_RASTER_POSITION_UNCLIPPED_IBM} + + // GL_HP_texture_lighting + GL_TEXTURE_LIGHTING_MODE_HP = $8167; + {$EXTERNALSYM GL_TEXTURE_LIGHTING_MODE_HP} + GL_TEXTURE_POST_SPECULAR_HP = $8168; + {$EXTERNALSYM GL_TEXTURE_POST_SPECULAR_HP} + GL_TEXTURE_PRE_SPECULAR_HP = $8169; + {$EXTERNALSYM GL_TEXTURE_PRE_SPECULAR_HP} + + // GL_EXT_draw_range_elements + GL_MAX_ELEMENTS_VERTICES_EXT = $80E8; + {$EXTERNALSYM GL_MAX_ELEMENTS_VERTICES_EXT} + GL_MAX_ELEMENTS_INDICES_EXT = $80E9; + {$EXTERNALSYM GL_MAX_ELEMENTS_INDICES_EXT} + + // GL_WIN_phong_shading + GL_PHONG_WIN = $80EA; + {$EXTERNALSYM GL_PHONG_WIN} + GL_PHONG_HINT_WIN = $80EB; + {$EXTERNALSYM GL_PHONG_HINT_WIN} + + // GL_WIN_specular_fog + GL_FOG_SPECULAR_TEXTURE_WIN = $80EC; + {$EXTERNALSYM GL_FOG_SPECULAR_TEXTURE_WIN} + + // GL_EXT_light_texture + GL_FRAGMENT_MATERIAL_EXT = $8349; + {$EXTERNALSYM GL_FRAGMENT_MATERIAL_EXT} + GL_FRAGMENT_NORMAL_EXT = $834A; + {$EXTERNALSYM GL_FRAGMENT_NORMAL_EXT} + GL_FRAGMENT_COLOR_EXT = $834C; + {$EXTERNALSYM GL_FRAGMENT_COLOR_EXT} + GL_ATTENUATION_EXT = $834D; + {$EXTERNALSYM GL_ATTENUATION_EXT} + GL_SHADOW_ATTENUATION_EXT = $834E; + {$EXTERNALSYM GL_SHADOW_ATTENUATION_EXT} + GL_TEXTURE_APPLICATION_MODE_EXT = $834F; + {$EXTERNALSYM GL_TEXTURE_APPLICATION_MODE_EXT} + GL_TEXTURE_LIGHT_EXT = $8350; + {$EXTERNALSYM GL_TEXTURE_LIGHT_EXT} + GL_TEXTURE_MATERIAL_FACE_EXT = $8351; + {$EXTERNALSYM GL_TEXTURE_MATERIAL_FACE_EXT} + GL_TEXTURE_MATERIAL_PARAMETER_EXT = $8352; + {$EXTERNALSYM GL_TEXTURE_MATERIAL_PARAMETER_EXT} + + // GL_SGIX_blend_alpha_minmax + GL_ALPHA_MIN_SGIX = $8320; + {$EXTERNALSYM GL_ALPHA_MIN_SGIX} + GL_ALPHA_MAX_SGIX = $8321; + {$EXTERNALSYM GL_ALPHA_MAX_SGIX} + + // GL_SGIX_async + GL_ASYNC_MARKER_SGIX = $8329; + {$EXTERNALSYM GL_ASYNC_MARKER_SGIX} + + // GL_SGIX_async_pixel + GL_ASYNC_TEX_IMAGE_SGIX = $835C; + {$EXTERNALSYM GL_ASYNC_TEX_IMAGE_SGIX} + GL_ASYNC_DRAW_PIXELS_SGIX = $835D; + {$EXTERNALSYM GL_ASYNC_DRAW_PIXELS_SGIX} + GL_ASYNC_READ_PIXELS_SGIX = $835E; + {$EXTERNALSYM GL_ASYNC_READ_PIXELS_SGIX} + GL_MAX_ASYNC_TEX_IMAGE_SGIX = $835F; + {$EXTERNALSYM GL_MAX_ASYNC_TEX_IMAGE_SGIX} + GL_MAX_ASYNC_DRAW_PIXELS_SGIX = $8360; + {$EXTERNALSYM GL_MAX_ASYNC_DRAW_PIXELS_SGIX} + GL_MAX_ASYNC_READ_PIXELS_SGIX = $8361; + {$EXTERNALSYM GL_MAX_ASYNC_READ_PIXELS_SGIX} + + // GL_SGIX_async_histogram + GL_ASYNC_HISTOGRAM_SGIX = $832C; + {$EXTERNALSYM GL_ASYNC_HISTOGRAM_SGIX} + GL_MAX_ASYNC_HISTOGRAM_SGIX = $832D; + {$EXTERNALSYM GL_MAX_ASYNC_HISTOGRAM_SGIX} + + // GL_INTEL_parallel_arrays + GL_PARALLEL_ARRAYS_INTEL = $83F4; + {$EXTERNALSYM GL_PARALLEL_ARRAYS_INTEL} + GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL = $83F5; + {$EXTERNALSYM GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL} + GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL = $83F6; + {$EXTERNALSYM GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL} + GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL = $83F7; + {$EXTERNALSYM GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL} + GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL = $83F8; + {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL} + + // GL_HP_occlusion_test + GL_OCCLUSION_TEST_HP = $8165; + {$EXTERNALSYM GL_OCCLUSION_TEST_HP} + GL_OCCLUSION_TEST_RESULT_HP = $8166; + {$EXTERNALSYM GL_OCCLUSION_TEST_RESULT_HP} + + // GL_EXT_pixel_transform + GL_PIXEL_TRANSFORM_2D_EXT = $8330; + {$EXTERNALSYM GL_PIXEL_TRANSFORM_2D_EXT} + GL_PIXEL_MAG_FILTER_EXT = $8331; + {$EXTERNALSYM GL_PIXEL_MAG_FILTER_EXT} + GL_PIXEL_MIN_FILTER_EXT = $8332; + {$EXTERNALSYM GL_PIXEL_MIN_FILTER_EXT} + GL_PIXEL_CUBIC_WEIGHT_EXT = $8333; + {$EXTERNALSYM GL_PIXEL_CUBIC_WEIGHT_EXT} + GL_CUBIC_EXT = $8334; + {$EXTERNALSYM GL_CUBIC_EXT} + GL_AVERAGE_EXT = $8335; + {$EXTERNALSYM GL_AVERAGE_EXT} + GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = $8336; + {$EXTERNALSYM GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT} + GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = $8337; + {$EXTERNALSYM GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT} + GL_PIXEL_TRANSFORM_2D_MATRIX_EXT = $8338; + {$EXTERNALSYM GL_PIXEL_TRANSFORM_2D_MATRIX_EXT} + + // GL_EXT_separate_specular_color + GL_LIGHT_MODEL_COLOR_CONTROL_EXT = $81F8; + {$EXTERNALSYM GL_LIGHT_MODEL_COLOR_CONTROL_EXT} + GL_SINGLE_COLOR_EXT = $81F9; + {$EXTERNALSYM GL_SINGLE_COLOR_EXT} + GL_SEPARATE_SPECULAR_COLOR_EXT = $81FA; + {$EXTERNALSYM GL_SEPARATE_SPECULAR_COLOR_EXT} + + // GL_EXT_secondary_color + GL_COLOR_SUM_EXT = $8458; + {$EXTERNALSYM GL_COLOR_SUM_EXT} + GL_CURRENT_SECONDARY_COLOR_EXT = $8459; + {$EXTERNALSYM GL_CURRENT_SECONDARY_COLOR_EXT} + GL_SECONDARY_COLOR_ARRAY_SIZE_EXT = $845A; + {$EXTERNALSYM GL_SECONDARY_COLOR_ARRAY_SIZE_EXT} + GL_SECONDARY_COLOR_ARRAY_TYPE_EXT = $845B; + {$EXTERNALSYM GL_SECONDARY_COLOR_ARRAY_TYPE_EXT} + GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT = $845C; + {$EXTERNALSYM GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT} + GL_SECONDARY_COLOR_ARRAY_POINTER_EXT = $845D; + {$EXTERNALSYM GL_SECONDARY_COLOR_ARRAY_POINTER_EXT} + GL_SECONDARY_COLOR_ARRAY_EXT = $845E; + {$EXTERNALSYM GL_SECONDARY_COLOR_ARRAY_EXT} + + // GL_EXT_texture_perturb_normal + GL_PERTURB_EXT = $85AE; + {$EXTERNALSYM GL_PERTURB_EXT} + GL_TEXTURE_NORMAL_EXT = $85AF; + {$EXTERNALSYM GL_TEXTURE_NORMAL_EXT} + + // GL_EXT_fog_coord + GL_FOG_COORDINATE_SOURCE_EXT = $8450; + {$EXTERNALSYM GL_FOG_COORDINATE_SOURCE_EXT} + GL_FOG_COORDINATE_EXT = $8451; + {$EXTERNALSYM GL_FOG_COORDINATE_EXT} + GL_FRAGMENT_DEPTH_EXT = $8452; + {$EXTERNALSYM GL_FRAGMENT_DEPTH_EXT} + GL_CURRENT_FOG_COORDINATE_EXT = $8453; + {$EXTERNALSYM GL_CURRENT_FOG_COORDINATE_EXT} + GL_FOG_COORDINATE_ARRAY_TYPE_EXT = $8454; + {$EXTERNALSYM GL_FOG_COORDINATE_ARRAY_TYPE_EXT} + GL_FOG_COORDINATE_ARRAY_STRIDE_EXT = $8455; + {$EXTERNALSYM GL_FOG_COORDINATE_ARRAY_STRIDE_EXT} + GL_FOG_COORDINATE_ARRAY_POINTER_EXT = $8456; + {$EXTERNALSYM GL_FOG_COORDINATE_ARRAY_POINTER_EXT} + GL_FOG_COORDINATE_ARRAY_EXT = $8457; + {$EXTERNALSYM GL_FOG_COORDINATE_ARRAY_EXT} + + // GL_REND_screen_coordinates + GL_SCREEN_COORDINATES_REND = $8490; + {$EXTERNALSYM GL_SCREEN_COORDINATES_REND} + GL_INVERTED_SCREEN_W_REND = $8491; + {$EXTERNALSYM GL_INVERTED_SCREEN_W_REND} + + // GL_EXT_coordinate_frame + GL_TANGENT_ARRAY_EXT = $8439; + {$EXTERNALSYM GL_TANGENT_ARRAY_EXT} + GL_BINORMAL_ARRAY_EXT = $843A; + {$EXTERNALSYM GL_BINORMAL_ARRAY_EXT} + GL_CURRENT_TANGENT_EXT = $843B; + {$EXTERNALSYM GL_CURRENT_TANGENT_EXT} + GL_CURRENT_BINORMAL_EXT = $843C; + {$EXTERNALSYM GL_CURRENT_BINORMAL_EXT} + GL_TANGENT_ARRAY_TYPE_EXT = $843E; + {$EXTERNALSYM GL_TANGENT_ARRAY_TYPE_EXT} + GL_TANGENT_ARRAY_STRIDE_EXT = $843F; + {$EXTERNALSYM GL_TANGENT_ARRAY_STRIDE_EXT} + GL_BINORMAL_ARRAY_TYPE_EXT = $8440; + {$EXTERNALSYM GL_BINORMAL_ARRAY_TYPE_EXT} + GL_BINORMAL_ARRAY_STRIDE_EXT = $8441; + {$EXTERNALSYM GL_BINORMAL_ARRAY_STRIDE_EXT} + GL_TANGENT_ARRAY_POINTER_EXT = $8442; + {$EXTERNALSYM GL_TANGENT_ARRAY_POINTER_EXT} + GL_BINORMAL_ARRAY_POINTER_EXT = $8443; + {$EXTERNALSYM GL_BINORMAL_ARRAY_POINTER_EXT} + GL_MAP1_TANGENT_EXT = $8444; + {$EXTERNALSYM GL_MAP1_TANGENT_EXT} + GL_MAP2_TANGENT_EXT = $8445; + {$EXTERNALSYM GL_MAP2_TANGENT_EXT} + GL_MAP1_BINORMAL_EXT = $8446; + {$EXTERNALSYM GL_MAP1_BINORMAL_EXT} + GL_MAP2_BINORMAL_EXT = $8447; + {$EXTERNALSYM GL_MAP2_BINORMAL_EXT} + + // GL_EXT_texture_env_combine + GL_SOURCE3_RGB_EXT = $8583; + {$EXTERNALSYM GL_SOURCE3_RGB_EXT} + GL_SOURCE4_RGB_EXT = $8584; + {$EXTERNALSYM GL_SOURCE4_RGB_EXT} + GL_SOURCE5_RGB_EXT = $8585; + {$EXTERNALSYM GL_SOURCE5_RGB_EXT} + GL_SOURCE6_RGB_EXT = $8586; + {$EXTERNALSYM GL_SOURCE6_RGB_EXT} + GL_SOURCE7_RGB_EXT = $8587; + {$EXTERNALSYM GL_SOURCE7_RGB_EXT} + GL_SOURCE3_ALPHA_EXT = $858B; + {$EXTERNALSYM GL_SOURCE3_ALPHA_EXT} + GL_SOURCE4_ALPHA_EXT = $858C; + {$EXTERNALSYM GL_SOURCE4_ALPHA_EXT} + GL_SOURCE5_ALPHA_EXT = $858D; + {$EXTERNALSYM GL_SOURCE5_ALPHA_EXT} + GL_SOURCE6_ALPHA_EXT = $858E; + {$EXTERNALSYM GL_SOURCE6_ALPHA_EXT} + GL_SOURCE7_ALPHA_EXT = $858F; + {$EXTERNALSYM GL_SOURCE7_ALPHA_EXT} + GL_OPERAND3_RGB_EXT = $8593; + {$EXTERNALSYM GL_OPERAND3_RGB_EXT} + GL_OPERAND4_RGB_EXT = $8594; + {$EXTERNALSYM GL_OPERAND4_RGB_EXT} + GL_OPERAND5_RGB_EXT = $8595; + {$EXTERNALSYM GL_OPERAND5_RGB_EXT} + GL_OPERAND6_RGB_EXT = $8596; + {$EXTERNALSYM GL_OPERAND6_RGB_EXT} + GL_OPERAND7_RGB_EXT = $8597; + {$EXTERNALSYM GL_OPERAND7_RGB_EXT} + GL_OPERAND3_ALPHA_EXT = $859B; + {$EXTERNALSYM GL_OPERAND3_ALPHA_EXT} + GL_OPERAND4_ALPHA_EXT = $859C; + {$EXTERNALSYM GL_OPERAND4_ALPHA_EXT} + GL_OPERAND5_ALPHA_EXT = $859D; + {$EXTERNALSYM GL_OPERAND5_ALPHA_EXT} + GL_OPERAND6_ALPHA_EXT = $859E; + {$EXTERNALSYM GL_OPERAND6_ALPHA_EXT} + GL_OPERAND7_ALPHA_EXT = $859F; + {$EXTERNALSYM GL_OPERAND7_ALPHA_EXT} + + // GL_APPLE_specular_vector + GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE = $85B0; + {$EXTERNALSYM GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE} + + // GL_APPLE_transform_hint + GL_TRANSFORM_HINT_APPLE = $85B1; + {$EXTERNALSYM GL_TRANSFORM_HINT_APPLE} + + // GL_SGIX_fog_scale + GL_FOG_SCALE_SGIX = $81FC; + {$EXTERNALSYM GL_FOG_SCALE_SGIX} + GL_FOG_SCALE_VALUE_SGIX = $81FD; + {$EXTERNALSYM GL_FOG_SCALE_VALUE_SGIX} + + // GL_SUNX_constant_data + GL_UNPACK_CONSTANT_DATA_SUNX = $81D5; + {$EXTERNALSYM GL_UNPACK_CONSTANT_DATA_SUNX} + GL_TEXTURE_CONSTANT_DATA_SUNX = $81D6; + {$EXTERNALSYM GL_TEXTURE_CONSTANT_DATA_SUNX} + + // GL_SUN_global_alpha + GL_GLOBAL_ALPHA_SUN = $81D9; + {$EXTERNALSYM GL_GLOBAL_ALPHA_SUN} + GL_GLOBAL_ALPHA_FACTOR_SUN = $81DA; + {$EXTERNALSYM GL_GLOBAL_ALPHA_FACTOR_SUN} + + // GL_SUN_triangle_list + GL_RESTART_SUN = $01; + {$EXTERNALSYM GL_RESTART_SUN} + GL_REPLACE_MIDDLE_SUN = $02; + {$EXTERNALSYM GL_REPLACE_MIDDLE_SUN} + GL_REPLACE_OLDEST_SUN = $03; + {$EXTERNALSYM GL_REPLACE_OLDEST_SUN} + GL_TRIANGLE_LIST_SUN = $81D7; + {$EXTERNALSYM GL_TRIANGLE_LIST_SUN} + GL_REPLACEMENT_CODE_SUN = $81D8; + {$EXTERNALSYM GL_REPLACEMENT_CODE_SUN} + GL_REPLACEMENT_CODE_ARRAY_SUN = $85C0; + {$EXTERNALSYM GL_REPLACEMENT_CODE_ARRAY_SUN} + GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN = $85C1; + {$EXTERNALSYM GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN} + GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN = $85C2; + {$EXTERNALSYM GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN} + GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN = $85C3; + {$EXTERNALSYM GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN} + GL_R1UI_V3F_SUN = $85C4; + {$EXTERNALSYM GL_R1UI_V3F_SUN} + GL_R1UI_C4UB_V3F_SUN = $85C5; + {$EXTERNALSYM GL_R1UI_C4UB_V3F_SUN} + GL_R1UI_C3F_V3F_SUN = $85C6; + {$EXTERNALSYM GL_R1UI_C3F_V3F_SUN} + GL_R1UI_N3F_V3F_SUN = $85C7; + {$EXTERNALSYM GL_R1UI_N3F_V3F_SUN} + GL_R1UI_C4F_N3F_V3F_SUN = $85C8; + {$EXTERNALSYM GL_R1UI_C4F_N3F_V3F_SUN} + GL_R1UI_T2F_V3F_SUN = $85C9; + {$EXTERNALSYM GL_R1UI_T2F_V3F_SUN} + GL_R1UI_T2F_N3F_V3F_SUN = $85CA; + {$EXTERNALSYM GL_R1UI_T2F_N3F_V3F_SUN} + GL_R1UI_T2F_C4F_N3F_V3F_SUN = $85CB; + {$EXTERNALSYM GL_R1UI_T2F_C4F_N3F_V3F_SUN} + + // GL_EXT_blend_func_separate + GL_BLEND_DST_RGB_EXT = $80C8; + {$EXTERNALSYM GL_BLEND_DST_RGB_EXT} + GL_BLEND_SRC_RGB_EXT = $80C9; + {$EXTERNALSYM GL_BLEND_SRC_RGB_EXT} + GL_BLEND_DST_ALPHA_EXT = $80CA; + {$EXTERNALSYM GL_BLEND_DST_ALPHA_EXT} + GL_BLEND_SRC_ALPHA_EXT = $80CB; + {$EXTERNALSYM GL_BLEND_SRC_ALPHA_EXT} + + // GL_INGR_color_clamp + GL_RED_MIN_CLAMP_INGR = $8560; + {$EXTERNALSYM GL_RED_MIN_CLAMP_INGR} + GL_GREEN_MIN_CLAMP_INGR = $8561; + {$EXTERNALSYM GL_GREEN_MIN_CLAMP_INGR} + GL_BLUE_MIN_CLAMP_INGR = $8562; + {$EXTERNALSYM GL_BLUE_MIN_CLAMP_INGR} + GL_ALPHA_MIN_CLAMP_INGR = $8563; + {$EXTERNALSYM GL_ALPHA_MIN_CLAMP_INGR} + GL_RED_MAX_CLAMP_INGR = $8564; + {$EXTERNALSYM GL_RED_MAX_CLAMP_INGR} + GL_GREEN_MAX_CLAMP_INGR = $8565; + {$EXTERNALSYM GL_GREEN_MAX_CLAMP_INGR} + GL_BLUE_MAX_CLAMP_INGR = $8566; + {$EXTERNALSYM GL_BLUE_MAX_CLAMP_INGR} + GL_ALPHA_MAX_CLAMP_INGR = $8567; + {$EXTERNALSYM GL_ALPHA_MAX_CLAMP_INGR} + + // GL_INGR_interlace_read + GL_INTERLACE_READ_INGR = $8568; + {$EXTERNALSYM GL_INTERLACE_READ_INGR} + + // GL_EXT_422_pixels + GL_422_EXT = $80CC; + {$EXTERNALSYM GL_422_EXT} + GL_422_REV_EXT = $80CD; + {$EXTERNALSYM GL_422_REV_EXT} + GL_422_AVERAGE_EXT = $80CE; + {$EXTERNALSYM GL_422_AVERAGE_EXT} + GL_422_REV_AVERAGE_EXT = $80CF; + {$EXTERNALSYM GL_422_REV_AVERAGE_EXT} + + // GL_EXT_texture_cube_map + GL_NORMAL_MAP_EXT = $8511; + {$EXTERNALSYM GL_NORMAL_MAP_EXT} + GL_REFLECTION_MAP_EXT = $8512; + {$EXTERNALSYM GL_REFLECTION_MAP_EXT} + GL_TEXTURE_CUBE_MAP_EXT = $8513; + {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_EXT} + GL_TEXTURE_BINDING_CUBE_MAP_EXT = $8514; + {$EXTERNALSYM GL_TEXTURE_BINDING_CUBE_MAP_EXT} + GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT = $8515; + {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT} + GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT = $8516; + {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT} + GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT = $8517; + {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT} + GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT = $8518; + {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT} + GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT = $8519; + {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT} + GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT = $851A; + {$EXTERNALSYM GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT} + GL_PROXY_TEXTURE_CUBE_MAP_EXT = $851B; + {$EXTERNALSYM GL_PROXY_TEXTURE_CUBE_MAP_EXT} + GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT = $851C; + {$EXTERNALSYM GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT} + + // GL_SUN_convolution_border_modes + GL_WRAP_BORDER_SUN = $81D4; + {$EXTERNALSYM GL_WRAP_BORDER_SUN} + + // GL_EXT_texture_lod_bias + GL_MAX_TEXTURE_LOD_BIAS_EXT = $84FD; + {$EXTERNALSYM GL_MAX_TEXTURE_LOD_BIAS_EXT} + GL_TEXTURE_FILTER_CONTROL_EXT = $8500; + {$EXTERNALSYM GL_TEXTURE_FILTER_CONTROL_EXT} + GL_TEXTURE_LOD_BIAS_EXT = $8501; + {$EXTERNALSYM GL_TEXTURE_LOD_BIAS_EXT} + + // GL_EXT_texture_filter_anisotropic + GL_TEXTURE_MAX_ANISOTROPY_EXT = $84FE; + {$EXTERNALSYM GL_TEXTURE_MAX_ANISOTROPY_EXT} + GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = $84FF; + {$EXTERNALSYM GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT} + + // GL_EXT_vertex_weighting + GL_MODELVIEW0_STACK_DEPTH_EXT = GL_MODELVIEW_STACK_DEPTH; + {$EXTERNALSYM GL_MODELVIEW0_STACK_DEPTH_EXT} + GL_MODELVIEW1_STACK_DEPTH_EXT = $8502; + {$EXTERNALSYM GL_MODELVIEW1_STACK_DEPTH_EXT} + GL_MODELVIEW0_MATRIX_EXT = GL_MODELVIEW_MATRIX; + {$EXTERNALSYM GL_MODELVIEW0_MATRIX_EXT} + GL_MODELVIEW_MATRIX1_EXT = $8506; + {$EXTERNALSYM GL_MODELVIEW_MATRIX1_EXT} + GL_VERTEX_WEIGHTING_EXT = $8509; + {$EXTERNALSYM GL_VERTEX_WEIGHTING_EXT} + GL_MODELVIEW0_EXT = GL_MODELVIEW; + {$EXTERNALSYM GL_MODELVIEW0_EXT} + GL_MODELVIEW1_EXT = $850A; + {$EXTERNALSYM GL_MODELVIEW1_EXT} + GL_CURRENT_VERTEX_WEIGHT_EXT = $850B; + {$EXTERNALSYM GL_CURRENT_VERTEX_WEIGHT_EXT} + GL_VERTEX_WEIGHT_ARRAY_EXT = $850C; + {$EXTERNALSYM GL_VERTEX_WEIGHT_ARRAY_EXT} + GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT = $850D; + {$EXTERNALSYM GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT} + GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT = $850E; + {$EXTERNALSYM GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT} + GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT = $850F; + {$EXTERNALSYM GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT} + GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT = $8510; + {$EXTERNALSYM GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT} + + // GL_NV_light_max_exponent + GL_MAX_SHININESS_NV = $8504; + {$EXTERNALSYM GL_MAX_SHININESS_NV} + GL_MAX_SPOT_EXPONENT_NV = $8505; + {$EXTERNALSYM GL_MAX_SPOT_EXPONENT_NV} + + // GL_NV_vertex_array_range + GL_VERTEX_ARRAY_RANGE_NV = $851D; + {$EXTERNALSYM GL_VERTEX_ARRAY_RANGE_NV} + GL_VERTEX_ARRAY_RANGE_LENGTH_NV = $851E; + {$EXTERNALSYM GL_VERTEX_ARRAY_RANGE_LENGTH_NV} + GL_VERTEX_ARRAY_RANGE_VALID_NV = $851F; + {$EXTERNALSYM GL_VERTEX_ARRAY_RANGE_VALID_NV} + GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV = $8520; + {$EXTERNALSYM GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV} + GL_VERTEX_ARRAY_RANGE_POINTER_NV = $8521; + {$EXTERNALSYM GL_VERTEX_ARRAY_RANGE_POINTER_NV} + + // GL_NV_register_combiners + GL_REGISTER_COMBINERS_NV = $8522; + {$EXTERNALSYM GL_REGISTER_COMBINERS_NV} + GL_VARIABLE_A_NV = $8523; + {$EXTERNALSYM GL_VARIABLE_A_NV} + GL_VARIABLE_B_NV = $8524; + {$EXTERNALSYM GL_VARIABLE_B_NV} + GL_VARIABLE_C_NV = $8525; + {$EXTERNALSYM GL_VARIABLE_C_NV} + GL_VARIABLE_D_NV = $8526; + {$EXTERNALSYM GL_VARIABLE_D_NV} + GL_VARIABLE_E_NV = $8527; + {$EXTERNALSYM GL_VARIABLE_E_NV} + GL_VARIABLE_F_NV = $8528; + {$EXTERNALSYM GL_VARIABLE_F_NV} + GL_VARIABLE_G_NV = $8529; + {$EXTERNALSYM GL_VARIABLE_G_NV} + GL_CONSTANT_COLOR0_NV = $852A; + {$EXTERNALSYM GL_CONSTANT_COLOR0_NV} + GL_CONSTANT_COLOR1_NV = $852B; + {$EXTERNALSYM GL_CONSTANT_COLOR1_NV} + GL_PRIMARY_COLOR_NV = $852C; + {$EXTERNALSYM GL_PRIMARY_COLOR_NV} + GL_SECONDARY_COLOR_NV = $852D; + {$EXTERNALSYM GL_SECONDARY_COLOR_NV} + GL_SPARE0_NV = $852E; + {$EXTERNALSYM GL_SPARE0_NV} + GL_SPARE1_NV = $852F; + {$EXTERNALSYM GL_SPARE1_NV} + GL_DISCARD_NV = $8530; + {$EXTERNALSYM GL_DISCARD_NV} + GL_E_TIMES_F_NV = $8531; + {$EXTERNALSYM GL_E_TIMES_F_NV} + GL_SPARE0_PLUS_SECONDARY_COLOR_NV = $8532; + {$EXTERNALSYM GL_SPARE0_PLUS_SECONDARY_COLOR_NV} + GL_UNSIGNED_IDENTITY_NV = $8536; + {$EXTERNALSYM GL_UNSIGNED_IDENTITY_NV} + GL_UNSIGNED_INVERT_NV = $8537; + {$EXTERNALSYM GL_UNSIGNED_INVERT_NV} + GL_EXPAND_NORMAL_NV = $8538; + {$EXTERNALSYM GL_EXPAND_NORMAL_NV} + GL_EXPAND_NEGATE_NV = $8539; + {$EXTERNALSYM GL_EXPAND_NEGATE_NV} + GL_HALF_BIAS_NORMAL_NV = $853A; + {$EXTERNALSYM GL_HALF_BIAS_NORMAL_NV} + GL_HALF_BIAS_NEGATE_NV = $853B; + {$EXTERNALSYM GL_HALF_BIAS_NEGATE_NV} + GL_SIGNED_IDENTITY_NV = $853C; + {$EXTERNALSYM GL_SIGNED_IDENTITY_NV} + GL_SIGNED_NEGATE_NV = $853D; + {$EXTERNALSYM GL_SIGNED_NEGATE_NV} + GL_SCALE_BY_TWO_NV = $853E; + {$EXTERNALSYM GL_SCALE_BY_TWO_NV} + GL_SCALE_BY_FOUR_NV = $853F; + {$EXTERNALSYM GL_SCALE_BY_FOUR_NV} + GL_SCALE_BY_ONE_HALF_NV = $8540; + {$EXTERNALSYM GL_SCALE_BY_ONE_HALF_NV} + GL_BIAS_BY_NEGATIVE_ONE_HALF_NV = $8541; + {$EXTERNALSYM GL_BIAS_BY_NEGATIVE_ONE_HALF_NV} + GL_COMBINER_INPUT_NV = $8542; + {$EXTERNALSYM GL_COMBINER_INPUT_NV} + GL_COMBINER_MAPPING_NV = $8543; + {$EXTERNALSYM GL_COMBINER_MAPPING_NV} + GL_COMBINER_COMPONENT_USAGE_NV = $8544; + {$EXTERNALSYM GL_COMBINER_COMPONENT_USAGE_NV} + GL_COMBINER_AB_DOT_PRODUCT_NV = $8545; + {$EXTERNALSYM GL_COMBINER_AB_DOT_PRODUCT_NV} + GL_COMBINER_CD_DOT_PRODUCT_NV = $8546; + {$EXTERNALSYM GL_COMBINER_CD_DOT_PRODUCT_NV} + GL_COMBINER_MUX_SUM_NV = $8547; + {$EXTERNALSYM GL_COMBINER_MUX_SUM_NV} + GL_COMBINER_SCALE_NV = $8548; + {$EXTERNALSYM GL_COMBINER_SCALE_NV} + GL_COMBINER_BIAS_NV = $8549; + {$EXTERNALSYM GL_COMBINER_BIAS_NV} + GL_COMBINER_AB_OUTPUT_NV = $854A; + {$EXTERNALSYM GL_COMBINER_AB_OUTPUT_NV} + GL_COMBINER_CD_OUTPUT_NV = $854B; + {$EXTERNALSYM GL_COMBINER_CD_OUTPUT_NV} + GL_COMBINER_SUM_OUTPUT_NV = $854C; + {$EXTERNALSYM GL_COMBINER_SUM_OUTPUT_NV} + GL_MAX_GENERAL_COMBINERS_NV = $854D; + {$EXTERNALSYM GL_MAX_GENERAL_COMBINERS_NV} + GL_NUM_GENERAL_COMBINERS_NV = $854E; + {$EXTERNALSYM GL_NUM_GENERAL_COMBINERS_NV} + GL_COLOR_SUM_CLAMP_NV = $854F; + {$EXTERNALSYM GL_COLOR_SUM_CLAMP_NV} + GL_COMBINER0_NV = $8550; + {$EXTERNALSYM GL_COMBINER0_NV} + GL_COMBINER1_NV = $8551; + {$EXTERNALSYM GL_COMBINER1_NV} + GL_COMBINER2_NV = $8552; + {$EXTERNALSYM GL_COMBINER2_NV} + GL_COMBINER3_NV = $8553; + {$EXTERNALSYM GL_COMBINER3_NV} + GL_COMBINER4_NV = $8554; + {$EXTERNALSYM GL_COMBINER4_NV} + GL_COMBINER5_NV = $8555; + {$EXTERNALSYM GL_COMBINER5_NV} + GL_COMBINER6_NV = $8556; + {$EXTERNALSYM GL_COMBINER6_NV} + GL_COMBINER7_NV = $8557; + {$EXTERNALSYM GL_COMBINER7_NV} + + // GL_NV_fog_distance + GL_FOG_DISTANCE_MODE_NV = $855A; + {$EXTERNALSYM GL_FOG_DISTANCE_MODE_NV} + GL_EYE_RADIAL_NV = $855B; + {$EXTERNALSYM GL_EYE_RADIAL_NV} + GL_EYE_PLANE_ABSOLUTE_NV = $855C; + {$EXTERNALSYM GL_EYE_PLANE_ABSOLUTE_NV} + + // GL_NV_texgen_emboss + GL_EMBOSS_LIGHT_NV = $855D; + {$EXTERNALSYM GL_EMBOSS_LIGHT_NV} + GL_EMBOSS_CONSTANT_NV = $855E; + {$EXTERNALSYM GL_EMBOSS_CONSTANT_NV} + GL_EMBOSS_MAP_NV = $855F; + {$EXTERNALSYM GL_EMBOSS_MAP_NV} + + // GL_EXT_texture_compression_s3tc + GL_COMPRESSED_RGB_S3TC_DXT1_EXT = $83F0; + {$EXTERNALSYM GL_COMPRESSED_RGB_S3TC_DXT1_EXT} + GL_COMPRESSED_RGBA_S3TC_DXT1_EXT = $83F1; + {$EXTERNALSYM GL_COMPRESSED_RGBA_S3TC_DXT1_EXT} + GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = $83F2; + {$EXTERNALSYM GL_COMPRESSED_RGBA_S3TC_DXT3_EXT} + GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = $83F3; + {$EXTERNALSYM GL_COMPRESSED_RGBA_S3TC_DXT5_EXT} + + // GL_IBM_cull_vertex + GL_CULL_VERTEX_IBM = 103050; + {$EXTERNALSYM GL_CULL_VERTEX_IBM} + + // GL_IBM_vertex_array_lists + GL_VERTEX_ARRAY_LIST_IBM = 103070; + {$EXTERNALSYM GL_VERTEX_ARRAY_LIST_IBM} + GL_NORMAL_ARRAY_LIST_IBM = 103071; + {$EXTERNALSYM GL_NORMAL_ARRAY_LIST_IBM} + GL_COLOR_ARRAY_LIST_IBM = 103072; + {$EXTERNALSYM GL_COLOR_ARRAY_LIST_IBM} + GL_INDEX_ARRAY_LIST_IBM = 103073; + {$EXTERNALSYM GL_INDEX_ARRAY_LIST_IBM} + GL_TEXTURE_COORD_ARRAY_LIST_IBM = 103074; + {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_LIST_IBM} + GL_EDGE_FLAG_ARRAY_LIST_IBM = 103075; + {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_LIST_IBM} + GL_FOG_COORDINATE_ARRAY_LIST_IBM = 103076; + {$EXTERNALSYM GL_FOG_COORDINATE_ARRAY_LIST_IBM} + GL_SECONDARY_COLOR_ARRAY_LIST_IBM = 103077; + {$EXTERNALSYM GL_SECONDARY_COLOR_ARRAY_LIST_IBM} + GL_VERTEX_ARRAY_LIST_STRIDE_IBM = 103080; + {$EXTERNALSYM GL_VERTEX_ARRAY_LIST_STRIDE_IBM} + GL_NORMAL_ARRAY_LIST_STRIDE_IBM = 103081; + {$EXTERNALSYM GL_NORMAL_ARRAY_LIST_STRIDE_IBM} + GL_COLOR_ARRAY_LIST_STRIDE_IBM = 103082; + {$EXTERNALSYM GL_COLOR_ARRAY_LIST_STRIDE_IBM} + GL_INDEX_ARRAY_LIST_STRIDE_IBM = 103083; + {$EXTERNALSYM GL_INDEX_ARRAY_LIST_STRIDE_IBM} + GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM = 103084; + {$EXTERNALSYM GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM} + GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM = 103085; + {$EXTERNALSYM GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM} + GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM = 103086; + {$EXTERNALSYM GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM} + GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM = 103087; + {$EXTERNALSYM GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM} + + // GL_SGIX_subsample + GL_PACK_SUBSAMPLE_RATE_SGIX = $85A0; + {$EXTERNALSYM GL_PACK_SUBSAMPLE_RATE_SGIX} + GL_UNPACK_SUBSAMPLE_RATE_SGIX = $85A1; + {$EXTERNALSYM GL_UNPACK_SUBSAMPLE_RATE_SGIX} + GL_PIXEL_SUBSAMPLE_4444_SGIX = $85A2; + {$EXTERNALSYM GL_PIXEL_SUBSAMPLE_4444_SGIX} + GL_PIXEL_SUBSAMPLE_2424_SGIX = $85A3; + {$EXTERNALSYM GL_PIXEL_SUBSAMPLE_2424_SGIX} + GL_PIXEL_SUBSAMPLE_4242_SGIX = $85A4; + {$EXTERNALSYM GL_PIXEL_SUBSAMPLE_4242_SGIX} + + // GL_SGIX_ycrcba + GL_YCRCB_SGIX = $8318; + {$EXTERNALSYM GL_YCRCB_SGIX} + GL_YCRCBA_SGIX = $8319; + {$EXTERNALSYM GL_YCRCBA_SGIX} + + // GL_SGI_depth_pass_instrument + GL_DEPTH_PASS_INSTRUMENT_SGIX = $8310; + {$EXTERNALSYM GL_DEPTH_PASS_INSTRUMENT_SGIX} + GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX = $8311; + {$EXTERNALSYM GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX} + GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX = $8312; + {$EXTERNALSYM GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX} + + // GL_3DFX_texture_compression_FXT1 + GL_COMPRESSED_RGB_FXT1_3DFX = $86B0; + {$EXTERNALSYM GL_COMPRESSED_RGB_FXT1_3DFX} + GL_COMPRESSED_RGBA_FXT1_3DFX = $86B1; + {$EXTERNALSYM GL_COMPRESSED_RGBA_FXT1_3DFX} + + // GL_3DFX_multisample + GL_MULTISAMPLE_3DFX = $86B2; + {$EXTERNALSYM GL_MULTISAMPLE_3DFX} + GL_SAMPLE_BUFFERS_3DFX = $86B3; + {$EXTERNALSYM GL_SAMPLE_BUFFERS_3DFX} + GL_SAMPLES_3DFX = $86B4; + {$EXTERNALSYM GL_SAMPLES_3DFX} + GL_MULTISAMPLE_BIT_3DFX = $20000000; + {$EXTERNALSYM GL_MULTISAMPLE_BIT_3DFX} + + // GL_EXT_multisample + GL_MULTISAMPLE_EXT = $809D; + {$EXTERNALSYM GL_MULTISAMPLE_EXT} + GL_SAMPLE_ALPHA_TO_MASK_EXT = $809E; + {$EXTERNALSYM GL_SAMPLE_ALPHA_TO_MASK_EXT} + GL_SAMPLE_ALPHA_TO_ONE_EXT = $809F; + {$EXTERNALSYM GL_SAMPLE_ALPHA_TO_ONE_EXT} + GL_SAMPLE_MASK_EXT = $80A0; + {$EXTERNALSYM GL_SAMPLE_MASK_EXT} + GL_1PASS_EXT = $80A1; + {$EXTERNALSYM GL_1PASS_EXT} + GL_2PASS_0_EXT = $80A2; + {$EXTERNALSYM GL_2PASS_0_EXT} + GL_2PASS_1_EXT = $80A3; + {$EXTERNALSYM GL_2PASS_1_EXT} + GL_4PASS_0_EXT = $80A4; + {$EXTERNALSYM GL_4PASS_0_EXT} + GL_4PASS_1_EXT = $80A5; + {$EXTERNALSYM GL_4PASS_1_EXT} + GL_4PASS_2_EXT = $80A6; + {$EXTERNALSYM GL_4PASS_2_EXT} + GL_4PASS_3_EXT = $80A7; + {$EXTERNALSYM GL_4PASS_3_EXT} + GL_SAMPLE_BUFFERS_EXT = $80A8; + {$EXTERNALSYM GL_SAMPLE_BUFFERS_EXT} + GL_SAMPLES_EXT = $80A9; + {$EXTERNALSYM GL_SAMPLES_EXT} + GL_SAMPLE_MASK_VALUE_EXT = $80AA; + {$EXTERNALSYM GL_SAMPLE_MASK_VALUE_EXT} + GL_SAMPLE_MASK_INVERT_EXT = $80AB; + {$EXTERNALSYM GL_SAMPLE_MASK_INVERT_EXT} + GL_SAMPLE_PATTERN_EXT = $80AC; + {$EXTERNALSYM GL_SAMPLE_PATTERN_EXT} + + // GL_SGIX_vertex_preclip + GL_VERTEX_PRECLIP_SGIX = $83EE; + {$EXTERNALSYM GL_VERTEX_PRECLIP_SGIX} + GL_VERTEX_PRECLIP_HINT_SGIX = $83EF; + {$EXTERNALSYM GL_VERTEX_PRECLIP_HINT_SGIX} + + // GL_SGIX_convolution_accuracy + GL_CONVOLUTION_HINT_SGIX = $8316; + {$EXTERNALSYM GL_CONVOLUTION_HINT_SGIX} + + // GL_SGIX_resample + GL_PACK_RESAMPLE_SGIX = $842C; + {$EXTERNALSYM GL_PACK_RESAMPLE_SGIX} + GL_UNPACK_RESAMPLE_SGIX = $842D; + {$EXTERNALSYM GL_UNPACK_RESAMPLE_SGIX} + GL_RESAMPLE_REPLICATE_SGIX = $842E; + {$EXTERNALSYM GL_RESAMPLE_REPLICATE_SGIX} + GL_RESAMPLE_ZERO_FILL_SGIX = $842F; + {$EXTERNALSYM GL_RESAMPLE_ZERO_FILL_SGIX} + GL_RESAMPLE_DECIMATE_SGIX = $8430; + {$EXTERNALSYM GL_RESAMPLE_DECIMATE_SGIX} + + // GL_SGIS_point_line_texgen + GL_EYE_DISTANCE_TO_POINT_SGIS = $81F0; + {$EXTERNALSYM GL_EYE_DISTANCE_TO_POINT_SGIS} + GL_OBJECT_DISTANCE_TO_POINT_SGIS = $81F1; + {$EXTERNALSYM GL_OBJECT_DISTANCE_TO_POINT_SGIS} + GL_EYE_DISTANCE_TO_LINE_SGIS = $81F2; + {$EXTERNALSYM GL_EYE_DISTANCE_TO_LINE_SGIS} + GL_OBJECT_DISTANCE_TO_LINE_SGIS = $81F3; + {$EXTERNALSYM GL_OBJECT_DISTANCE_TO_LINE_SGIS} + GL_EYE_POINT_SGIS = $81F4; + {$EXTERNALSYM GL_EYE_POINT_SGIS} + GL_OBJECT_POINT_SGIS = $81F5; + {$EXTERNALSYM GL_OBJECT_POINT_SGIS} + GL_EYE_LINE_SGIS = $81F6; + {$EXTERNALSYM GL_EYE_LINE_SGIS} + GL_OBJECT_LINE_SGIS = $81F7; + {$EXTERNALSYM GL_OBJECT_LINE_SGIS} + + // GL_SGIS_texture_color_mask + GL_TEXTURE_COLOR_WRITEMASK_SGIS = $81EF; + {$EXTERNALSYM GL_TEXTURE_COLOR_WRITEMASK_SGIS} + + // GL_NV_vertex_program + GL_VERTEX_PROGRAM_NV = $8620; + {$EXTERNALSYM GL_VERTEX_PROGRAM_NV} + GL_VERTEX_STATE_PROGRAM_NV = $8621; + {$EXTERNALSYM GL_VERTEX_STATE_PROGRAM_NV} + GL_ATTRIB_ARRAY_SIZE_NV = $8623; + {$EXTERNALSYM GL_ATTRIB_ARRAY_SIZE_NV} + GL_ATTRIB_ARRAY_STRIDE_NV = $8624; + {$EXTERNALSYM GL_ATTRIB_ARRAY_STRIDE_NV} + GL_ATTRIB_ARRAY_TYPE_NV = $8625; + {$EXTERNALSYM GL_ATTRIB_ARRAY_TYPE_NV} + GL_CURRENT_ATTRIB_NV = $8626; + {$EXTERNALSYM GL_CURRENT_ATTRIB_NV} + GL_PROGRAM_LENGTH_NV = $8627; + {$EXTERNALSYM GL_PROGRAM_LENGTH_NV} + GL_PROGRAM_STRING_NV = $8628; + {$EXTERNALSYM GL_PROGRAM_STRING_NV} + GL_MODELVIEW_PROJECTION_NV = $8629; + {$EXTERNALSYM GL_MODELVIEW_PROJECTION_NV} + GL_IDENTITY_NV = $862A; + {$EXTERNALSYM GL_IDENTITY_NV} + GL_INVERSE_NV = $862B; + {$EXTERNALSYM GL_INVERSE_NV} + GL_TRANSPOSE_NV = $862C; + {$EXTERNALSYM GL_TRANSPOSE_NV} + GL_INVERSE_TRANSPOSE_NV = $862D; + {$EXTERNALSYM GL_INVERSE_TRANSPOSE_NV} + GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV = $862E; + {$EXTERNALSYM GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV} + GL_MAX_TRACK_MATRICES_NV = $862F; + {$EXTERNALSYM GL_MAX_TRACK_MATRICES_NV} + GL_MATRIX0_NV = $8630; + {$EXTERNALSYM GL_MATRIX0_NV} + GL_MATRIX1_NV = $8631; + {$EXTERNALSYM GL_MATRIX1_NV} + GL_MATRIX2_NV = $8632; + {$EXTERNALSYM GL_MATRIX2_NV} + GL_MATRIX3_NV = $8633; + {$EXTERNALSYM GL_MATRIX3_NV} + GL_MATRIX4_NV = $8634; + {$EXTERNALSYM GL_MATRIX4_NV} + GL_MATRIX5_NV = $8635; + {$EXTERNALSYM GL_MATRIX5_NV} + GL_MATRIX6_NV = $8636; + {$EXTERNALSYM GL_MATRIX6_NV} + GL_MATRIX7_NV = $8637; + {$EXTERNALSYM GL_MATRIX7_NV} + GL_CURRENT_MATRIX_STACK_DEPTH_NV = $8640; + {$EXTERNALSYM GL_CURRENT_MATRIX_STACK_DEPTH_NV} + GL_CURRENT_MATRIX_NV = $8641; + {$EXTERNALSYM GL_CURRENT_MATRIX_NV} + GL_VERTEX_PROGRAM_POINT_SIZE_NV = $8642; + {$EXTERNALSYM GL_VERTEX_PROGRAM_POINT_SIZE_NV} + GL_VERTEX_PROGRAM_TWO_SIDE_NV = $8643; + {$EXTERNALSYM GL_VERTEX_PROGRAM_TWO_SIDE_NV} + GL_PROGRAM_PARAMETER_NV = $8644; + {$EXTERNALSYM GL_PROGRAM_PARAMETER_NV} + GL_ATTRIB_ARRAY_POINTER_NV = $8645; + {$EXTERNALSYM GL_ATTRIB_ARRAY_POINTER_NV} + GL_PROGRAM_TARGET_NV = $8646; + {$EXTERNALSYM GL_PROGRAM_TARGET_NV} + GL_PROGRAM_RESIDENT_NV = $8647; + {$EXTERNALSYM GL_PROGRAM_RESIDENT_NV} + GL_TRACK_MATRIX_NV = $8648; + {$EXTERNALSYM GL_TRACK_MATRIX_NV} + GL_TRACK_MATRIX_TRANSFORM_NV = $8649; + {$EXTERNALSYM GL_TRACK_MATRIX_TRANSFORM_NV} + GL_VERTEX_PROGRAM_BINDING_NV = $864A; + {$EXTERNALSYM GL_VERTEX_PROGRAM_BINDING_NV} + GL_PROGRAM_ERROR_POSITION_NV = $864B; + {$EXTERNALSYM GL_PROGRAM_ERROR_POSITION_NV} + GL_VERTEX_ATTRIB_ARRAY0_NV = $8650; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY0_NV} + GL_VERTEX_ATTRIB_ARRAY1_NV = $8651; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY1_NV} + GL_VERTEX_ATTRIB_ARRAY2_NV = $8652; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY2_NV} + GL_VERTEX_ATTRIB_ARRAY3_NV = $8653; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY3_NV} + GL_VERTEX_ATTRIB_ARRAY4_NV = $8654; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY4_NV} + GL_VERTEX_ATTRIB_ARRAY5_NV = $8655; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY5_NV} + GL_VERTEX_ATTRIB_ARRAY6_NV = $8656; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY6_NV} + GL_VERTEX_ATTRIB_ARRAY7_NV = $8657; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY7_NV} + GL_VERTEX_ATTRIB_ARRAY8_NV = $8658; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY8_NV} + GL_VERTEX_ATTRIB_ARRAY9_NV = $8659; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY9_NV} + GL_VERTEX_ATTRIB_ARRAY10_NV = $865A; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY10_NV} + GL_VERTEX_ATTRIB_ARRAY11_NV = $865B; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY11_NV} + GL_VERTEX_ATTRIB_ARRAY12_NV = $865C; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY12_NV} + GL_VERTEX_ATTRIB_ARRAY13_NV = $865D; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY13_NV} + GL_VERTEX_ATTRIB_ARRAY14_NV = $865E; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY14_NV} + GL_VERTEX_ATTRIB_ARRAY15_NV = $865F; + {$EXTERNALSYM GL_VERTEX_ATTRIB_ARRAY15_NV} + GL_MAP1_VERTEX_ATTRIB0_4_NV = $8660; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB0_4_NV} + GL_MAP1_VERTEX_ATTRIB1_4_NV = $8661; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB1_4_NV} + GL_MAP1_VERTEX_ATTRIB2_4_NV = $8662; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB2_4_NV} + GL_MAP1_VERTEX_ATTRIB3_4_NV = $8663; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB3_4_NV} + GL_MAP1_VERTEX_ATTRIB4_4_NV = $8664; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB4_4_NV} + GL_MAP1_VERTEX_ATTRIB5_4_NV = $8665; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB5_4_NV} + GL_MAP1_VERTEX_ATTRIB6_4_NV = $8666; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB6_4_NV} + GL_MAP1_VERTEX_ATTRIB7_4_NV = $8667; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB7_4_NV} + GL_MAP1_VERTEX_ATTRIB8_4_NV = $8668; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB8_4_NV} + GL_MAP1_VERTEX_ATTRIB9_4_NV = $8669; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB9_4_NV} + GL_MAP1_VERTEX_ATTRIB10_4_NV = $866A; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB10_4_NV} + GL_MAP1_VERTEX_ATTRIB11_4_NV = $866B; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB11_4_NV} + GL_MAP1_VERTEX_ATTRIB12_4_NV = $866C; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB12_4_NV} + GL_MAP1_VERTEX_ATTRIB13_4_NV = $866D; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB13_4_NV} + GL_MAP1_VERTEX_ATTRIB14_4_NV = $866E; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB14_4_NV} + GL_MAP1_VERTEX_ATTRIB15_4_NV = $866F; + {$EXTERNALSYM GL_MAP1_VERTEX_ATTRIB15_4_NV} + GL_MAP2_VERTEX_ATTRIB0_4_NV = $8670; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB0_4_NV} + GL_MAP2_VERTEX_ATTRIB1_4_NV = $8671; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB1_4_NV} + GL_MAP2_VERTEX_ATTRIB2_4_NV = $8672; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB2_4_NV} + GL_MAP2_VERTEX_ATTRIB3_4_NV = $8673; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB3_4_NV} + GL_MAP2_VERTEX_ATTRIB4_4_NV = $8674; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB4_4_NV} + GL_MAP2_VERTEX_ATTRIB5_4_NV = $8675; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB5_4_NV} + GL_MAP2_VERTEX_ATTRIB6_4_NV = $8676; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB6_4_NV} + GL_MAP2_VERTEX_ATTRIB7_4_NV = $8677; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB7_4_NV} + GL_MAP2_VERTEX_ATTRIB8_4_NV = $8678; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB8_4_NV} + GL_MAP2_VERTEX_ATTRIB9_4_NV = $8679; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB9_4_NV} + GL_MAP2_VERTEX_ATTRIB10_4_NV = $867A; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB10_4_NV} + GL_MAP2_VERTEX_ATTRIB11_4_NV = $867B; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB11_4_NV} + GL_MAP2_VERTEX_ATTRIB12_4_NV = $867C; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB12_4_NV} + GL_MAP2_VERTEX_ATTRIB13_4_NV = $867D; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB13_4_NV} + GL_MAP2_VERTEX_ATTRIB14_4_NV = $867E; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB14_4_NV} + GL_MAP2_VERTEX_ATTRIB15_4_NV = $867F; + {$EXTERNALSYM GL_MAP2_VERTEX_ATTRIB15_4_NV} + + // WGL_ARB_pixel_format + WGL_NUMBER_PIXEL_FORMATS_ARB = $2000; + {$EXTERNALSYM WGL_NUMBER_PIXEL_FORMATS_ARB} + WGL_DRAW_TO_WINDOW_ARB = $2001; + {$EXTERNALSYM WGL_DRAW_TO_WINDOW_ARB} + WGL_DRAW_TO_BITMAP_ARB = $2002; + {$EXTERNALSYM WGL_DRAW_TO_BITMAP_ARB} + WGL_ACCELERATION_ARB = $2003; + {$EXTERNALSYM WGL_ACCELERATION_ARB} + WGL_NEED_PALETTE_ARB = $2004; + {$EXTERNALSYM WGL_NEED_PALETTE_ARB} + WGL_NEED_SYSTEM_PALETTE_ARB = $2005; + {$EXTERNALSYM WGL_NEED_SYSTEM_PALETTE_ARB} + WGL_SWAP_LAYER_BUFFERS_ARB = $2006; + {$EXTERNALSYM WGL_SWAP_LAYER_BUFFERS_ARB} + WGL_SWAP_METHOD_ARB = $2007; + {$EXTERNALSYM WGL_SWAP_METHOD_ARB} + WGL_NUMBER_OVERLAYS_ARB = $2008; + {$EXTERNALSYM WGL_NUMBER_OVERLAYS_ARB} + WGL_NUMBER_UNDERLAYS_ARB = $2009; + {$EXTERNALSYM WGL_NUMBER_UNDERLAYS_ARB} + WGL_TRANSPARENT_ARB = $200A; + {$EXTERNALSYM WGL_TRANSPARENT_ARB} + WGL_TRANSPARENT_RED_VALUE_ARB = $2037; + {$EXTERNALSYM WGL_TRANSPARENT_RED_VALUE_ARB} + WGL_TRANSPARENT_GREEN_VALUE_ARB = $2038; + {$EXTERNALSYM WGL_TRANSPARENT_GREEN_VALUE_ARB} + WGL_TRANSPARENT_BLUE_VALUE_ARB = $2039; + {$EXTERNALSYM WGL_TRANSPARENT_BLUE_VALUE_ARB} + WGL_TRANSPARENT_ALPHA_VALUE_ARB = $203A; + {$EXTERNALSYM WGL_TRANSPARENT_ALPHA_VALUE_ARB} + WGL_TRANSPARENT_INDEX_VALUE_ARB = $203B; + {$EXTERNALSYM WGL_TRANSPARENT_INDEX_VALUE_ARB} + WGL_SHARE_DEPTH_ARB = $200C; + {$EXTERNALSYM WGL_SHARE_DEPTH_ARB} + WGL_SHARE_STENCIL_ARB = $200D; + {$EXTERNALSYM WGL_SHARE_STENCIL_ARB} + WGL_SHARE_ACCUM_ARB = $200E; + {$EXTERNALSYM WGL_SHARE_ACCUM_ARB} + WGL_SUPPORT_GDI_ARB = $200F; + {$EXTERNALSYM WGL_SUPPORT_GDI_ARB} + WGL_SUPPORT_OPENGL_ARB = $2010; + {$EXTERNALSYM WGL_SUPPORT_OPENGL_ARB} + WGL_DOUBLE_BUFFER_ARB = $2011; + {$EXTERNALSYM WGL_DOUBLE_BUFFER_ARB} + WGL_STEREO_ARB = $2012; + {$EXTERNALSYM WGL_STEREO_ARB} + WGL_PIXEL_TYPE_ARB = $2013; + {$EXTERNALSYM WGL_PIXEL_TYPE_ARB} + WGL_COLOR_BITS_ARB = $2014; + {$EXTERNALSYM WGL_COLOR_BITS_ARB} + WGL_RED_BITS_ARB = $2015; + {$EXTERNALSYM WGL_RED_BITS_ARB} + WGL_RED_SHIFT_ARB = $2016; + {$EXTERNALSYM WGL_RED_SHIFT_ARB} + WGL_GREEN_BITS_ARB = $2017; + {$EXTERNALSYM WGL_GREEN_BITS_ARB} + WGL_GREEN_SHIFT_ARB = $2018; + {$EXTERNALSYM WGL_GREEN_SHIFT_ARB} + WGL_BLUE_BITS_ARB = $2019; + {$EXTERNALSYM WGL_BLUE_BITS_ARB} + WGL_BLUE_SHIFT_ARB = $201A; + {$EXTERNALSYM WGL_BLUE_SHIFT_ARB} + WGL_ALPHA_BITS_ARB = $201B; + {$EXTERNALSYM WGL_ALPHA_BITS_ARB} + WGL_ALPHA_SHIFT_ARB = $201C; + {$EXTERNALSYM WGL_ALPHA_SHIFT_ARB} + WGL_ACCUM_BITS_ARB = $201D; + {$EXTERNALSYM WGL_ACCUM_BITS_ARB} + WGL_ACCUM_RED_BITS_ARB = $201E; + {$EXTERNALSYM WGL_ACCUM_RED_BITS_ARB} + WGL_ACCUM_GREEN_BITS_ARB = $201F; + {$EXTERNALSYM WGL_ACCUM_GREEN_BITS_ARB} + WGL_ACCUM_BLUE_BITS_ARB = $2020; + {$EXTERNALSYM WGL_ACCUM_BLUE_BITS_ARB} + WGL_ACCUM_ALPHA_BITS_ARB = $2021; + {$EXTERNALSYM WGL_ACCUM_ALPHA_BITS_ARB} + WGL_DEPTH_BITS_ARB = $2022; + {$EXTERNALSYM WGL_DEPTH_BITS_ARB} + WGL_STENCIL_BITS_ARB = $2023; + {$EXTERNALSYM WGL_STENCIL_BITS_ARB} + WGL_AUX_BUFFERS_ARB = $2024; + {$EXTERNALSYM WGL_AUX_BUFFERS_ARB} + WGL_NO_ACCELERATION_ARB = $2025; + {$EXTERNALSYM WGL_NO_ACCELERATION_ARB} + WGL_GENERIC_ACCELERATION_ARB = $2026; + {$EXTERNALSYM WGL_GENERIC_ACCELERATION_ARB} + WGL_FULL_ACCELERATION_ARB = $2027; + {$EXTERNALSYM WGL_FULL_ACCELERATION_ARB} + WGL_SWAP_EXCHANGE_ARB = $2028; + {$EXTERNALSYM WGL_SWAP_EXCHANGE_ARB} + WGL_SWAP_COPY_ARB = $2029; + {$EXTERNALSYM WGL_SWAP_COPY_ARB} + WGL_SWAP_UNDEFINED_ARB = $202A; + {$EXTERNALSYM WGL_SWAP_UNDEFINED_ARB} + WGL_TYPE_RGBA_ARB = $202B; + {$EXTERNALSYM WGL_TYPE_RGBA_ARB} + WGL_TYPE_COLORINDEX_ARB = $202C; + {$EXTERNALSYM WGL_TYPE_COLORINDEX_ARB} + + + // ********** GLU generic constants ********** + + // Errors: (return value 0 = no error) + GLU_INVALID_ENUM = 100900; + {$EXTERNALSYM GLU_INVALID_ENUM} + GLU_INVALID_VALUE = 100901; + {$EXTERNALSYM GLU_INVALID_VALUE} + GLU_OUT_OF_MEMORY = 100902; + {$EXTERNALSYM GLU_OUT_OF_MEMORY} + GLU_INCOMPATIBLE_GL_VERSION = 100903; + {$EXTERNALSYM GLU_INCOMPATIBLE_GL_VERSION} + + // StringName + GLU_VERSION = 100800; + {$EXTERNALSYM GLU_VERSION} + GLU_EXTENSIONS = 100801; + {$EXTERNALSYM GLU_EXTENSIONS} + + // Boolean + GLU_TRUE = GL_TRUE; + {$EXTERNALSYM GLU_TRUE} + GLU_FALSE = GL_FALSE; + {$EXTERNALSYM GLU_FALSE} + + // Quadric constants + // QuadricNormal + GLU_SMOOTH = 100000; + {$EXTERNALSYM GLU_SMOOTH} + GLU_FLAT = 100001; + {$EXTERNALSYM GLU_FLAT} + GLU_NONE = 100002; + {$EXTERNALSYM GLU_NONE} + + // QuadricDrawStyle + GLU_POINT = 100010; + {$EXTERNALSYM GLU_POINT} + GLU_LINE = 100011; + {$EXTERNALSYM GLU_LINE} + GLU_FILL = 100012; + {$EXTERNALSYM GLU_FILL} + GLU_SILHOUETTE = 100013; + {$EXTERNALSYM GLU_SILHOUETTE} + + // QuadricOrientation + GLU_OUTSIDE = 100020; + {$EXTERNALSYM GLU_OUTSIDE} + GLU_INSIDE = 100021; + {$EXTERNALSYM GLU_INSIDE} + + // Tesselation constants + GLU_TESS_MAX_COORD = 1.0e150; + {$EXTERNALSYM GLU_TESS_MAX_COORD} + + // TessProperty + GLU_TESS_WINDING_RULE = 100140; + {$EXTERNALSYM GLU_TESS_WINDING_RULE} + GLU_TESS_BOUNDARY_ONLY = 100141; + {$EXTERNALSYM GLU_TESS_BOUNDARY_ONLY} + GLU_TESS_TOLERANCE = 100142; + {$EXTERNALSYM GLU_TESS_TOLERANCE} + + // TessWinding + GLU_TESS_WINDING_ODD = 100130; + {$EXTERNALSYM GLU_TESS_WINDING_ODD} + GLU_TESS_WINDING_NONZERO = 100131; + {$EXTERNALSYM GLU_TESS_WINDING_NONZERO} + GLU_TESS_WINDING_POSITIVE = 100132; + {$EXTERNALSYM GLU_TESS_WINDING_POSITIVE} + GLU_TESS_WINDING_NEGATIVE = 100133; + {$EXTERNALSYM GLU_TESS_WINDING_NEGATIVE} + GLU_TESS_WINDING_ABS_GEQ_TWO = 100134; + {$EXTERNALSYM GLU_TESS_WINDING_ABS_GEQ_TWO} + + // TessCallback + GLU_TESS_BEGIN = 100100; // TGLUTessBeginProc + {$EXTERNALSYM GLU_TESS_BEGIN} + GLU_TESS_VERTEX = 100101; // TGLUTessVertexProc + {$EXTERNALSYM GLU_TESS_VERTEX} + GLU_TESS_END = 100102; // TGLUTessEndProc + {$EXTERNALSYM GLU_TESS_END} + GLU_TESS_ERROR = 100103; // TGLUTessErrorProc + {$EXTERNALSYM GLU_TESS_ERROR} + GLU_TESS_EDGE_FLAG = 100104; // TGLUTessEdgeFlagProc + {$EXTERNALSYM GLU_TESS_EDGE_FLAG} + GLU_TESS_COMBINE = 100105; // TGLUTessCombineProc + {$EXTERNALSYM GLU_TESS_COMBINE} + GLU_TESS_BEGIN_DATA = 100106; // TGLUTessBeginDataProc + {$EXTERNALSYM GLU_TESS_BEGIN_DATA} + GLU_TESS_VERTEX_DATA = 100107; // TGLUTessVertexDataProc + {$EXTERNALSYM GLU_TESS_VERTEX_DATA} + GLU_TESS_END_DATA = 100108; // TGLUTessEndDataProc + {$EXTERNALSYM GLU_TESS_END_DATA} + GLU_TESS_ERROR_DATA = 100109; // TGLUTessErrorDataProc + {$EXTERNALSYM GLU_TESS_ERROR_DATA} + GLU_TESS_EDGE_FLAG_DATA = 100110; // TGLUTessEdgeFlagDataProc + {$EXTERNALSYM GLU_TESS_EDGE_FLAG_DATA} + GLU_TESS_COMBINE_DATA = 100111; // TGLUTessCombineDataProc + {$EXTERNALSYM GLU_TESS_COMBINE_DATA} + + // TessError + GLU_TESS_ERROR1 = 100151; + {$EXTERNALSYM GLU_TESS_ERROR1} + GLU_TESS_ERROR2 = 100152; + {$EXTERNALSYM GLU_TESS_ERROR2} + GLU_TESS_ERROR3 = 100153; + {$EXTERNALSYM GLU_TESS_ERROR3} + GLU_TESS_ERROR4 = 100154; + {$EXTERNALSYM GLU_TESS_ERROR4} + GLU_TESS_ERROR5 = 100155; + {$EXTERNALSYM GLU_TESS_ERROR5} + GLU_TESS_ERROR6 = 100156; + {$EXTERNALSYM GLU_TESS_ERROR6} + GLU_TESS_ERROR7 = 100157; + {$EXTERNALSYM GLU_TESS_ERROR7} + GLU_TESS_ERROR8 = 100158; + {$EXTERNALSYM GLU_TESS_ERROR8} + + GLU_TESS_MISSING_BEGIN_POLYGON = GLU_TESS_ERROR1; + {$EXTERNALSYM GLU_TESS_MISSING_BEGIN_POLYGON} + GLU_TESS_MISSING_BEGIN_CONTOUR = GLU_TESS_ERROR2; + {$EXTERNALSYM GLU_TESS_MISSING_BEGIN_CONTOUR} + GLU_TESS_MISSING_END_POLYGON = GLU_TESS_ERROR3; + {$EXTERNALSYM GLU_TESS_MISSING_END_POLYGON} + GLU_TESS_MISSING_END_CONTOUR = GLU_TESS_ERROR4; + {$EXTERNALSYM GLU_TESS_MISSING_END_CONTOUR} + GLU_TESS_COORD_TOO_LARGE = GLU_TESS_ERROR5; + {$EXTERNALSYM GLU_TESS_COORD_TOO_LARGE} + GLU_TESS_NEED_COMBINE_CALLBACK = GLU_TESS_ERROR6; + {$EXTERNALSYM GLU_TESS_NEED_COMBINE_CALLBACK} + + // NURBS constants + + // NurbsProperty + GLU_AUTO_LOAD_MATRIX = 100200; + {$EXTERNALSYM GLU_AUTO_LOAD_MATRIX} + GLU_CULLING = 100201; + {$EXTERNALSYM GLU_CULLING} + GLU_SAMPLING_TOLERANCE = 100203; + {$EXTERNALSYM GLU_SAMPLING_TOLERANCE} + GLU_DISPLAY_MODE = 100204; + {$EXTERNALSYM GLU_DISPLAY_MODE} + GLU_PARAMETRIC_TOLERANCE = 100202; + {$EXTERNALSYM GLU_PARAMETRIC_TOLERANCE} + GLU_SAMPLING_METHOD = 100205; + {$EXTERNALSYM GLU_SAMPLING_METHOD} + GLU_U_STEP = 100206; + {$EXTERNALSYM GLU_U_STEP} + GLU_V_STEP = 100207; + {$EXTERNALSYM GLU_V_STEP} + + // NurbsSampling + GLU_PATH_LENGTH = 100215; + {$EXTERNALSYM GLU_PATH_LENGTH} + GLU_PARAMETRIC_ERROR = 100216; + {$EXTERNALSYM GLU_PARAMETRIC_ERROR} + GLU_DOMAIN_DISTANCE = 100217; + {$EXTERNALSYM GLU_DOMAIN_DISTANCE} + + // NurbsTrim + GLU_MAP1_TRIM_2 = 100210; + {$EXTERNALSYM GLU_MAP1_TRIM_2} + GLU_MAP1_TRIM_3 = 100211; + {$EXTERNALSYM GLU_MAP1_TRIM_3} + + // NurbsDisplay + GLU_OUTLINE_POLYGON = 100240; + {$EXTERNALSYM GLU_OUTLINE_POLYGON} + GLU_OUTLINE_PATCH = 100241; + {$EXTERNALSYM GLU_OUTLINE_PATCH} + + // NurbsErrors + GLU_NURBS_ERROR1 = 100251; + {$EXTERNALSYM GLU_NURBS_ERROR1} + GLU_NURBS_ERROR2 = 100252; + {$EXTERNALSYM GLU_NURBS_ERROR2} + GLU_NURBS_ERROR3 = 100253; + {$EXTERNALSYM GLU_NURBS_ERROR3} + GLU_NURBS_ERROR4 = 100254; + {$EXTERNALSYM GLU_NURBS_ERROR4} + GLU_NURBS_ERROR5 = 100255; + {$EXTERNALSYM GLU_NURBS_ERROR5} + GLU_NURBS_ERROR6 = 100256; + {$EXTERNALSYM GLU_NURBS_ERROR6} + GLU_NURBS_ERROR7 = 100257; + {$EXTERNALSYM GLU_NURBS_ERROR7} + GLU_NURBS_ERROR8 = 100258; + {$EXTERNALSYM GLU_NURBS_ERROR8} + GLU_NURBS_ERROR9 = 100259; + {$EXTERNALSYM GLU_NURBS_ERROR9} + GLU_NURBS_ERROR10 = 100260; + {$EXTERNALSYM GLU_NURBS_ERROR10} + GLU_NURBS_ERROR11 = 100261; + {$EXTERNALSYM GLU_NURBS_ERROR11} + GLU_NURBS_ERROR12 = 100262; + {$EXTERNALSYM GLU_NURBS_ERROR12} + GLU_NURBS_ERROR13 = 100263; + {$EXTERNALSYM GLU_NURBS_ERROR13} + GLU_NURBS_ERROR14 = 100264; + {$EXTERNALSYM GLU_NURBS_ERROR14} + GLU_NURBS_ERROR15 = 100265; + {$EXTERNALSYM GLU_NURBS_ERROR15} + GLU_NURBS_ERROR16 = 100266; + {$EXTERNALSYM GLU_NURBS_ERROR16} + GLU_NURBS_ERROR17 = 100267; + {$EXTERNALSYM GLU_NURBS_ERROR17} + GLU_NURBS_ERROR18 = 100268; + {$EXTERNALSYM GLU_NURBS_ERROR18} + GLU_NURBS_ERROR19 = 100269; + {$EXTERNALSYM GLU_NURBS_ERROR19} + GLU_NURBS_ERROR20 = 100270; + {$EXTERNALSYM GLU_NURBS_ERROR20} + GLU_NURBS_ERROR21 = 100271; + {$EXTERNALSYM GLU_NURBS_ERROR21} + GLU_NURBS_ERROR22 = 100272; + {$EXTERNALSYM GLU_NURBS_ERROR22} + GLU_NURBS_ERROR23 = 100273; + {$EXTERNALSYM GLU_NURBS_ERROR23} + GLU_NURBS_ERROR24 = 100274; + {$EXTERNALSYM GLU_NURBS_ERROR24} + GLU_NURBS_ERROR25 = 100275; + {$EXTERNALSYM GLU_NURBS_ERROR25} + GLU_NURBS_ERROR26 = 100276; + {$EXTERNALSYM GLU_NURBS_ERROR26} + GLU_NURBS_ERROR27 = 100277; + {$EXTERNALSYM GLU_NURBS_ERROR27} + GLU_NURBS_ERROR28 = 100278; + {$EXTERNALSYM GLU_NURBS_ERROR28} + GLU_NURBS_ERROR29 = 100279; + {$EXTERNALSYM GLU_NURBS_ERROR29} + GLU_NURBS_ERROR30 = 100280; + {$EXTERNALSYM GLU_NURBS_ERROR30} + GLU_NURBS_ERROR31 = 100281; + {$EXTERNALSYM GLU_NURBS_ERROR31} + GLU_NURBS_ERROR32 = 100282; + {$EXTERNALSYM GLU_NURBS_ERROR32} + GLU_NURBS_ERROR33 = 100283; + {$EXTERNALSYM GLU_NURBS_ERROR33} + GLU_NURBS_ERROR34 = 100284; + {$EXTERNALSYM GLU_NURBS_ERROR34} + GLU_NURBS_ERROR35 = 100285; + {$EXTERNALSYM GLU_NURBS_ERROR35} + GLU_NURBS_ERROR36 = 100286; + {$EXTERNALSYM GLU_NURBS_ERROR36} + GLU_NURBS_ERROR37 = 100287; + {$EXTERNALSYM GLU_NURBS_ERROR37} + + // Contours types -- obsolete! + GLU_CW = 100120; + {$EXTERNALSYM GLU_CW} + GLU_CCW = 100121; + {$EXTERNALSYM GLU_CCW} + GLU_INTERIOR = 100122; + {$EXTERNALSYM GLU_INTERIOR} + GLU_EXTERIOR = 100123; + {$EXTERNALSYM GLU_EXTERIOR} + GLU_UNKNOWN = 100124; + {$EXTERNALSYM GLU_UNKNOWN} + + // Names without "TESS_" prefix + GLU_BEGIN = GLU_TESS_BEGIN; + {$EXTERNALSYM GLU_BEGIN} + GLU_VERTEX = GLU_TESS_VERTEX; + {$EXTERNALSYM GLU_VERTEX} + GLU_END = GLU_TESS_END; + {$EXTERNALSYM GLU_END} + GLU_ERROR = GLU_TESS_ERROR; + {$EXTERNALSYM GLU_ERROR} + GLU_EDGE_FLAG = GLU_TESS_EDGE_FLAG; + {$EXTERNALSYM GLU_EDGE_FLAG} + + GLX_VERSION_1_1 = 1; + GLX_VERSION_1_2 = 1; + GLX_VERSION_1_3 = 1; + GLX_EXTENSION_NAME = 'GLX'; + {$EXTERNALSYM GLX_EXTENSION_NAME} + GLX_USE_GL = 1; + {$EXTERNALSYM GLX_USE_GL} + GLX_BUFFER_SIZE = 2; + {$EXTERNALSYM GLX_BUFFER_SIZE} + GLX_LEVEL = 3; + {$EXTERNALSYM GLX_LEVEL} + GLX_RGBA = 4; + {$EXTERNALSYM GLX_RGBA} + GLX_DOUBLEBUFFER = 5; + {$EXTERNALSYM GLX_DOUBLEBUFFER} + GLX_STEREO = 6; + {$EXTERNALSYM GLX_STEREO} + GLX_AUX_BUFFERS = 7; + {$EXTERNALSYM GLX_AUX_BUFFERS} + GLX_RED_SIZE = 8; + {$EXTERNALSYM GLX_RED_SIZE} + GLX_GREEN_SIZE = 9; + {$EXTERNALSYM GLX_GREEN_SIZE} + GLX_BLUE_SIZE = 10; + {$EXTERNALSYM GLX_BLUE_SIZE} + GLX_ALPHA_SIZE = 11; + {$EXTERNALSYM GLX_ALPHA_SIZE} + GLX_DEPTH_SIZE = 12; + {$EXTERNALSYM GLX_DEPTH_SIZE} + GLX_STENCIL_SIZE = 13; + {$EXTERNALSYM GLX_STENCIL_SIZE} + GLX_ACCUM_RED_SIZE = 14; + {$EXTERNALSYM GLX_ACCUM_RED_SIZE} + GLX_ACCUM_GREEN_SIZE = 15; + {$EXTERNALSYM GLX_ACCUM_GREEN_SIZE} + GLX_ACCUM_BLUE_SIZE = 16; + {$EXTERNALSYM GLX_ACCUM_BLUE_SIZE} + GLX_ACCUM_ALPHA_SIZE = 17; + {$EXTERNALSYM GLX_ACCUM_ALPHA_SIZE} + + // Error codes returned by glXGetConfig: + GLX_BAD_SCREEN = 1; + {$EXTERNALSYM GLX_BAD_SCREEN} + GLX_BAD_ATTRIBUTE = 2; + {$EXTERNALSYM GLX_BAD_ATTRIBUTE} + GLX_NO_EXTENSION = 3; + {$EXTERNALSYM GLX_NO_EXTENSION} + GLX_BAD_VISUAL = 4; + {$EXTERNALSYM GLX_BAD_VISUAL} + GLX_BAD_CONTEXT = 5; + {$EXTERNALSYM GLX_BAD_CONTEXT} + GLX_BAD_VALUE = 6; + {$EXTERNALSYM GLX_BAD_VALUE} + GLX_BAD_ENUM = 7; + {$EXTERNALSYM GLX_BAD_ENUM} + + // GLX 1.1 and later: + GLX_VENDOR = 1; + {$EXTERNALSYM GLX_VENDOR} + GLX_VERSION = 2; + {$EXTERNALSYM GLX_VERSION} + GLX_EXTENSIONS = 3; + {$EXTERNALSYM GLX_EXTENSIONS} + + // GLX 1.3 and later: + GLX_CONFIG_CAVEAT = $20; + {$EXTERNALSYM GLX_CONFIG_CAVEAT} + GLX_DONT_CARE = $FFFFFFFF; + {$EXTERNALSYM GLX_DONT_CARE} + GLX_SLOW_CONFIG = $8001; + {$EXTERNALSYM GLX_SLOW_CONFIG} + GLX_NON_CONFORMANT_CONFIG = $800D; + {$EXTERNALSYM GLX_NON_CONFORMANT_CONFIG} + GLX_X_VISUAL_TYPE = $22; + {$EXTERNALSYM GLX_X_VISUAL_TYPE} + GLX_TRANSPARENT_TYPE = $23; + {$EXTERNALSYM GLX_TRANSPARENT_TYPE} + GLX_TRANSPARENT_INDEX_VALUE = $24; + {$EXTERNALSYM GLX_TRANSPARENT_INDEX_VALUE} + GLX_TRANSPARENT_RED_VALUE = $25; + {$EXTERNALSYM GLX_TRANSPARENT_RED_VALUE} + GLX_TRANSPARENT_GREEN_VALUE = $26; + {$EXTERNALSYM GLX_TRANSPARENT_GREEN_VALUE} + GLX_TRANSPARENT_BLUE_VALUE = $27; + {$EXTERNALSYM GLX_TRANSPARENT_BLUE_VALUE} + GLX_TRANSPARENT_ALPHA_VALUE = $28; + {$EXTERNALSYM GLX_TRANSPARENT_ALPHA_VALUE} + GLX_MAX_PBUFFER_WIDTH = $8016; + {$EXTERNALSYM GLX_MAX_PBUFFER_WIDTH} + GLX_MAX_PBUFFER_HEIGHT = $8017; + {$EXTERNALSYM GLX_MAX_PBUFFER_HEIGHT} + GLX_MAX_PBUFFER_PIXELS = $8018; + {$EXTERNALSYM GLX_MAX_PBUFFER_PIXELS} + GLX_PRESERVED_CONTENTS = $801B; + {$EXTERNALSYM GLX_PRESERVED_CONTENTS} + GLX_LARGEST_BUFFER = $801C; + {$EXTERNALSYM GLX_LARGEST_BUFFER} + GLX_DRAWABLE_TYPE = $8010; + {$EXTERNALSYM GLX_DRAWABLE_TYPE} + GLX_FBCONFIG_ID = $8013; + {$EXTERNALSYM GLX_FBCONFIG_ID} + GLX_VISUAL_ID = $800B; + {$EXTERNALSYM GLX_VISUAL_ID} + GLX_WINDOW_BIT = $00000001; + {$EXTERNALSYM GLX_WINDOW_BIT} + GLX_PIXMAP_BIT = $00000002; + {$EXTERNALSYM GLX_PIXMAP_BIT} + GLX_PBUFFER_BIT = $00000004; + {$EXTERNALSYM GLX_PBUFFER_BIT} + GLX_AUX_BUFFERS_BIT = $00000010; + {$EXTERNALSYM GLX_AUX_BUFFERS_BIT} + GLX_FRONT_LEFT_BUFFER_BIT = $00000001; + {$EXTERNALSYM GLX_FRONT_LEFT_BUFFER_BIT} + GLX_FRONT_RIGHT_BUFFER_BIT = $00000002; + {$EXTERNALSYM GLX_FRONT_RIGHT_BUFFER_BIT} + GLX_BACK_LEFT_BUFFER_BIT = $00000004; + {$EXTERNALSYM GLX_BACK_LEFT_BUFFER_BIT} + GLX_BACK_RIGHT_BUFFER_BIT = $00000008; + {$EXTERNALSYM GLX_BACK_RIGHT_BUFFER_BIT} + GLX_DEPTH_BUFFER_BIT = $00000020; + {$EXTERNALSYM GLX_DEPTH_BUFFER_BIT} + GLX_STENCIL_BUFFER_BIT = $00000040; + {$EXTERNALSYM GLX_STENCIL_BUFFER_BIT} + GLX_ACCUM_BUFFER_BIT = $00000080; + {$EXTERNALSYM GLX_ACCUM_BUFFER_BIT} + GLX_RENDER_TYPE = $8011; + {$EXTERNALSYM GLX_RENDER_TYPE} + GLX_X_RENDERABLE = $8012; + {$EXTERNALSYM GLX_X_RENDERABLE} + GLX_NONE = $8000; + {$EXTERNALSYM GLX_NONE} + GLX_TRUE_COLOR = $8002; + {$EXTERNALSYM GLX_TRUE_COLOR} + GLX_DIRECT_COLOR = $8003; + {$EXTERNALSYM GLX_DIRECT_COLOR} + GLX_PSEUDO_COLOR = $8004; + {$EXTERNALSYM GLX_PSEUDO_COLOR} + GLX_STATIC_COLOR = $8005; + {$EXTERNALSYM GLX_STATIC_COLOR} + GLX_GRAY_SCALE = $8006; + {$EXTERNALSYM GLX_GRAY_SCALE} + GLX_STATIC_GRAY = $8007; + {$EXTERNALSYM GLX_STATIC_GRAY} + GLX_TRANSPARENT_INDEX = $8009; + {$EXTERNALSYM GLX_TRANSPARENT_INDEX} + GLX_COLOR_INDEX_TYPE = $8015; + {$EXTERNALSYM GLX_COLOR_INDEX_TYPE} + GLX_COLOR_INDEX_BIT = $00000002; + {$EXTERNALSYM GLX_COLOR_INDEX_BIT} + GLX_SCREEN = $800C; + {$EXTERNALSYM GLX_SCREEN} + GLX_PBUFFER_CLOBBER_MASK = $08000000; + {$EXTERNALSYM GLX_PBUFFER_CLOBBER_MASK} + GLX_DAMAGED = $8020; + {$EXTERNALSYM GLX_DAMAGED} + GLX_SAVED = $8021; + {$EXTERNALSYM GLX_SAVED} + GLX_WINDOW = $8022; + {$EXTERNALSYM GLX_WINDOW} + GLX_PBUFFER = $8023; + {$EXTERNALSYM GLX_PBUFFER} + GLX_EXT_visual_info = 1; + {$EXTERNALSYM GLX_EXT_visual_info} + GLX_X_VISUAL_TYPE_EXT = $22; + {$EXTERNALSYM GLX_X_VISUAL_TYPE_EXT} + GLX_TRANSPARENT_TYPE_EXT = $23; + {$EXTERNALSYM GLX_TRANSPARENT_TYPE_EXT} + GLX_TRANSPARENT_INDEX_VALUE_EXT = $24; + {$EXTERNALSYM GLX_TRANSPARENT_INDEX_VALUE_EXT} + GLX_TRANSPARENT_RED_VALUE_EXT = $25; + {$EXTERNALSYM GLX_TRANSPARENT_RED_VALUE_EXT} + GLX_TRANSPARENT_GREEN_VALUE_EXT = $26; + {$EXTERNALSYM GLX_TRANSPARENT_GREEN_VALUE_EXT} + GLX_TRANSPARENT_BLUE_VALUE_EXT = $27; + {$EXTERNALSYM GLX_TRANSPARENT_BLUE_VALUE_EXT} + GLX_TRANSPARENT_ALPHA_VALUE_EXT = $28; + {$EXTERNALSYM GLX_TRANSPARENT_ALPHA_VALUE_EXT} + GLX_TRUE_COLOR_EXT = $8002; + {$EXTERNALSYM GLX_TRUE_COLOR_EXT} + GLX_DIRECT_COLOR_EXT = $8003; + {$EXTERNALSYM GLX_DIRECT_COLOR_EXT} + GLX_PSEUDO_COLOR_EXT = $8004; + {$EXTERNALSYM GLX_PSEUDO_COLOR_EXT} + GLX_STATIC_COLOR_EXT = $8005; + {$EXTERNALSYM GLX_STATIC_COLOR_EXT} + GLX_GRAY_SCALE_EXT = $8006; + {$EXTERNALSYM GLX_GRAY_SCALE_EXT} + GLX_STATIC_GRAY_EXT = $8007; + {$EXTERNALSYM GLX_STATIC_GRAY_EXT} + GLX_NONE_EXT = $8000; + {$EXTERNALSYM GLX_NONE_EXT} + GLX_TRANSPARENT_RGB_EXT = $8008; + {$EXTERNALSYM GLX_TRANSPARENT_RGB_EXT} + GLX_TRANSPARENT_INDEX_EXT = $8009; + {$EXTERNALSYM GLX_TRANSPARENT_INDEX_EXT} + GLX_VISUAL_CAVEAT_EXT = $20; + {$EXTERNALSYM GLX_VISUAL_CAVEAT_EXT} + GLX_SLOW_VISUAL_EXT = $8001; + {$EXTERNALSYM GLX_SLOW_VISUAL_EXT} + GLX_NON_CONFORMANT_VISUAL_EXT = $800D; + {$EXTERNALSYM GLX_NON_CONFORMANT_VISUAL_EXT} + GLX_SHARE_CONTEXT_EXT = $800A; + {$EXTERNALSYM GLX_SHARE_CONTEXT_EXT} + GLX_VISUAL_ID_EXT = $800B; + {$EXTERNALSYM GLX_VISUAL_ID_EXT} + GLX_SCREEN_EXT = $800C; + {$EXTERNALSYM GLX_SCREEN_EXT} + GLX_3DFX_WINDOW_MODE_MESA = $1; + {$EXTERNALSYM GLX_3DFX_WINDOW_MODE_MESA} + GLX_3DFX_FULLSCREEN_MODE_MESA = $2; + {$EXTERNALSYM GLX_3DFX_FULLSCREEN_MODE_MESA} + + +type + // GLU types + TGLUNurbs = record end; + TGLUQuadric = record end; + TGLUTesselator = record end; + + PGLUNurbs = ^TGLUNurbs; + PGLUQuadric = ^TGLUQuadric; + PGLUTesselator = ^TGLUTesselator; + + // backwards compatibility + TGLUNurbsObj = TGLUNurbs; + TGLUQuadricObj = TGLUQuadric; + TGLUTesselatorObj = TGLUTesselator; + TGLUTriangulatorObj = TGLUTesselator; + + PGLUNurbsObj = PGLUNurbs; + PGLUQuadricObj = PGLUQuadric; + PGLUTesselatorObj = PGLUTesselator; + PGLUTriangulatorObj = PGLUTesselator; + + {$ifdef FPC} + PMaxLogPalette = ^TMaxLogPalette; + TMaxLogPalette = packed record + palversion : word; + palnumentries : word; + palpalentry : array[byte] of TPaletteEntry; + end; + {$endif} + + {$ifdef VER100, Delphi 3 compatibility} + PWGLSwap = ^TWGLSwap; + {$EXTERNALSYM _WGLSWAP} + _WGLSWAP = packed record + hdc: HDC; + uiFlags: UINT; + end; + TWGLSwap = _WGLSWAP; + {$EXTERNALSYM WGLSWAP} + WGLSWAP = _WGLSWAP; + {$endif VER100} + + // Callback function prototypes + // GLUQuadricCallback + TGLUQuadricErrorProc = procedure(errorCode: TGLEnum); {$ifdef MSWINDOWS} stdcall; {$endif} {$ifdef LINUX} cdecl; {$endif} + + // GLUTessCallback + TGLUTessBeginProc = procedure(AType: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + TGLUTessEdgeFlagProc = procedure(Flag: TGLboolean); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + TGLUTessVertexProc = procedure(VertexData: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + TGLUTessEndProc = procedure; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + TGLUTessErrorProc = procedure(ErrNo: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + TGLUTessCombineProc = procedure(Coords: TVector3d; VertexData: TVector4p; Weight: TVector4f; OutData: PPointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + TGLUTessBeginDataProc = procedure(AType: TGLEnum; UserData: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + TGLUTessEdgeFlagDataProc = procedure(Flag: TGLboolean; UserData: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + TGLUTessVertexDataProc = procedure(VertexData: Pointer; UserData: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + TGLUTessEndDataProc = procedure(UserData: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + TGLUTessErrorDataProc = procedure(ErrNo: TGLEnum; UserData: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + TGLUTessCombineDataProc = procedure(Coords: TVector3d; VertexData: TVector4p; Weight: TVector4f; OutData: PPointer; UserData: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + + // GLUNurbsCallback + TGLUNurbsErrorProc = procedure(ErrorCode: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + + // GL functions + procedure glBindTexture(target: TGLEnum; texture: TGLuint); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glTexParameteri(target, pname: TGLEnum; param: TGLint); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glTexImage2D(target: TGLEnum; level, internalformat: TGLint; width, height: TGLsizei; border: TGLint; format, atype: TGLEnum; Pixels:Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glDeleteTextures(n: TGLsizei; textures: PGLuint); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glGenTextures(n: GLsizei; textures: PGLuint); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glColor3f(red, green, blue: TGLfloat); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glBegin(mode: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glEnd; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glVertex2f(x, y: TGLfloat); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glColor4f(red, green, blue, alpha: TGLfloat); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glEnable(cap: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glDisable(cap: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glDepthRange(zNear, zFar: TGLclampd); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glDepthFunc(func: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glBlendFunc(sfactor: TGLEnum; dfactor: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glTexCoord2f(s, t: TGLfloat); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glVertex3f(x, y, z: TGLfloat); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glClearColor(red, green, blue, alpha: TGLclampf); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glClear(mask: TGLbitfield); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glMatrixMode(mode: TGLEnum); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glLoadIdentity; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glOrtho(left, right, bottom, top, zNear, zFar: TGLdouble); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glViewport(x, y: TGLint; width, height: TGLsizei); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glReadPixels(x, y: TGLint; width, height: TGLsizei; format, atype: TGLEnum; pixels: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glPixelStorei(pname: TGLEnum; param: TGLint); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + function glGetError:TGLuint; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glTexSubImage2D(target: TGLEnum; level, xoffset, yoffset: TGLint; width, height: TGLsizei; format, atype: TGLEnum; pixels: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure gluOrtho2D(left, right, bottom, top: TGLdouble); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glPushMatrix; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glPopMatrix; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glFrustum(left, right, bottom, top, zNear, zFar: TGLdouble); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glTranslatef(x, y, z: TGLfloat); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glRotatef(angle, x, y, z: TGLfloat); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glScalef(x, y, z: TGLfloat); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glTexParameterf(target, pname: TGLEnum; param: TGLfloat); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glCopyTexImage2D(target: TGLEnum; level: TGLint; internalFormat: TGLEnum; x, y: TGLint; width, height: TGLsizei; border: TGLint); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glGetIntegerv(pname: TGLEnum; params: PGLint); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + procedure glFinish; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external opengl32; + + // GLU functions + function gluBuild2DMipmaps(target: TGLEnum; components, width, height: TGLint; format, atype: TGLEnum; Data: Pointer): TGLint; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external glu32; + function gluScaleImage(format: TGLEnum; widthin, heightin: TGLint; typein: TGLEnum; datain: Pointer; widthout, heightout: TGLint; typeout: TGLEnum; dataout: Pointer): TGLint; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external glu32; + + Procedure LoadOpenGL; + Procedure UnloadOpenGL; + +implementation + +Procedure LoadOpenGL; +begin +end; + +Procedure UnloadOpenGL; +begin +end; + +end. diff --git a/Game/Code/MacOSX/Wrapper/PNGImage.pas b/Game/Code/MacOSX/Wrapper/PNGImage.pas index 9a82e193..e2454a01 100755 --- a/Game/Code/MacOSX/Wrapper/PNGImage.pas +++ b/Game/Code/MacOSX/Wrapper/PNGImage.pas @@ -1,6 +1,6 @@ unit PNGImage; -{$INCLUDE ../Platform.inc} +{$I switches.inc} interface diff --git a/Game/Code/MacOSX/Wrapper/Windows.pas b/Game/Code/MacOSX/Wrapper/Windows.pas index 333b08e7..cee75591 100755 --- a/Game/Code/MacOSX/Wrapper/Windows.pas +++ b/Game/Code/MacOSX/Wrapper/Windows.pas @@ -1,139 +1,167 @@ -unit Windows; - -{$INCLUDE ../Platform.inc} - -interface - -uses Types; - -const -{$IFDEF MSWINDOWS} - opengl32 = 'opengl32.dll'; -{$ENDIF} -{$IFDEF MACOS} - opengl32 = 'OpenGL'; -{$ENDIF} - -type - - DWORD = Types.DWORD; - {$EXTERNALSYM DWORD} - BOOL = LongBool; - {$EXTERNALSYM BOOL} - PBOOL = ^BOOL; - {$EXTERNALSYM PBOOL} - PByte = Types.PByte; - PINT = ^Integer; - {$EXTERNALSYM PINT} - PSingle = ^Single; - PWORD = ^Word; - {$EXTERNALSYM PWORD} - PDWORD = ^DWORD; - {$EXTERNALSYM PDWORD} - LPDWORD = PDWORD; - {$EXTERNALSYM LPDWORD} - HDC = type LongWord; - {$EXTERNALSYM HDC} - HGLRC = type LongWord; - {$EXTERNALSYM HGLRC} - TLargeInteger = Int64; - HFONT = type LongWord; - {$EXTERNALSYM HFONT} - HWND = type LongWord; - {$EXTERNALSYM HWND} - - PPaletteEntry = ^TPaletteEntry; - {$EXTERNALSYM tagPALETTEENTRY} - tagPALETTEENTRY = packed record - peRed: Byte; - peGreen: Byte; - peBlue: Byte; - peFlags: Byte; - end; - TPaletteEntry = tagPALETTEENTRY; - {$EXTERNALSYM PALETTEENTRY} - PALETTEENTRY = tagPALETTEENTRY; - - PRGBQuad = ^TRGBQuad; - {$EXTERNALSYM tagRGBQUAD} - tagRGBQUAD = packed record - rgbBlue: Byte; - rgbGreen: Byte; - rgbRed: Byte; - rgbReserved: Byte; - end; - TRGBQuad = tagRGBQUAD; - {$EXTERNALSYM RGBQUAD} - RGBQUAD = tagRGBQUAD; - - PBitmapInfoHeader = ^TBitmapInfoHeader; - {$EXTERNALSYM tagBITMAPINFOHEADER} - tagBITMAPINFOHEADER = packed record - biSize: DWORD; - biWidth: Longint; - biHeight: Longint; - biPlanes: Word; - biBitCount: Word; - biCompression: DWORD; - biSizeImage: DWORD; - biXPelsPerMeter: Longint; - biYPelsPerMeter: Longint; - biClrUsed: DWORD; - biClrImportant: DWORD; - end; - TBitmapInfoHeader = tagBITMAPINFOHEADER; - {$EXTERNALSYM BITMAPINFOHEADER} - BITMAPINFOHEADER = tagBITMAPINFOHEADER; - - PBitmapInfo = ^TBitmapInfo; - {$EXTERNALSYM tagBITMAPINFO} - tagBITMAPINFO = packed record - bmiHeader: TBitmapInfoHeader; - bmiColors: array[0..0] of TRGBQuad; - end; - TBitmapInfo = tagBITMAPINFO; - {$EXTERNALSYM BITMAPINFO} - BITMAPINFO = tagBITMAPINFO; - - function MakeLong(a, b: Word): Longint; - procedure ZeroMemory(Destination: Pointer; Length: DWORD); - function QueryPerformanceFrequency(var lpFrequency: TLargeInteger): BOOL; - function QueryPerformanceCounter(var lpPerformanceCount: TLargeInteger): BOOL; - -implementation - -uses SDL {$IFDEF MSWINDOWS}, Windows{$ENDIF}; - -function MakeLong(A, B: Word): Longint; -begin - Result := (LongInt(B) shl 16) + A; -end; - -procedure ZeroMemory(Destination: Pointer; Length: DWORD); -begin - FillChar( Destination^, Length, 0); -end; - -function QueryPerformanceFrequency(var lpFrequency: TLargeInteger): BOOL; -begin -{$IFDEF MSWINDOWS} - Result := Windows.QueryPerformanceFrequency(lpFrequency); -{$ENDIF} -{$IFDEF MACOS} - Result := true; - lpFrequency := 1000; -{$ENDIF} -end; - -function QueryPerformanceCounter(var lpPerformanceCount: TLargeInteger): BOOL; -begin -{$IFDEF MSWINDOWS} - Result := Windows.QueryPerformanceCounter(lpPerformanceCount); -{$ENDIF} -{$IFDEF MACOS} - Result := true; - lpPerformanceCount := SDL_GetTicks; -{$ENDIF} -end; - -end. +unit Windows; + +{$I switches.inc} + +interface + +uses Types; + +const + opengl32 = 'OpenGL'; + MAX_PATH = 260; + +type + + DWORD = Types.DWORD; + {$EXTERNALSYM DWORD} + BOOL = LongBool; + {$EXTERNALSYM BOOL} + PBOOL = ^BOOL; + {$EXTERNALSYM PBOOL} + PByte = Types.PByte; + PINT = ^Integer; + {$EXTERNALSYM PINT} + PSingle = ^Single; + PWORD = ^Word; + {$EXTERNALSYM PWORD} + PDWORD = ^DWORD; + {$EXTERNALSYM PDWORD} + LPDWORD = PDWORD; + {$EXTERNALSYM LPDWORD} + HDC = type LongWord; + {$EXTERNALSYM HDC} + HGLRC = type LongWord; + {$EXTERNALSYM HGLRC} + TLargeInteger = Int64; + HFONT = type LongWord; + {$EXTERNALSYM HFONT} + HWND = type LongWord; + {$EXTERNALSYM HWND} + + PPaletteEntry = ^TPaletteEntry; + {$EXTERNALSYM tagPALETTEENTRY} + tagPALETTEENTRY = packed record + peRed: Byte; + peGreen: Byte; + peBlue: Byte; + peFlags: Byte; + end; + TPaletteEntry = tagPALETTEENTRY; + {$EXTERNALSYM PALETTEENTRY} + PALETTEENTRY = tagPALETTEENTRY; + + PRGBQuad = ^TRGBQuad; + {$EXTERNALSYM tagRGBQUAD} + tagRGBQUAD = packed record + rgbBlue: Byte; + rgbGreen: Byte; + rgbRed: Byte; + rgbReserved: Byte; + end; + TRGBQuad = tagRGBQUAD; + {$EXTERNALSYM RGBQUAD} + RGBQUAD = tagRGBQUAD; + + PBitmapInfoHeader = ^TBitmapInfoHeader; + {$EXTERNALSYM tagBITMAPINFOHEADER} + tagBITMAPINFOHEADER = packed record + biSize: DWORD; + biWidth: Longint; + biHeight: Longint; + biPlanes: Word; + biBitCount: Word; + biCompression: DWORD; + biSizeImage: DWORD; + biXPelsPerMeter: Longint; + biYPelsPerMeter: Longint; + biClrUsed: DWORD; + biClrImportant: DWORD; + end; + TBitmapInfoHeader = tagBITMAPINFOHEADER; + {$EXTERNALSYM BITMAPINFOHEADER} + BITMAPINFOHEADER = tagBITMAPINFOHEADER; + + PBitmapInfo = ^TBitmapInfo; + {$EXTERNALSYM tagBITMAPINFO} + tagBITMAPINFO = packed record + bmiHeader: TBitmapInfoHeader; + bmiColors: array[0..0] of TRGBQuad; + end; + TBitmapInfo = tagBITMAPINFO; + {$EXTERNALSYM BITMAPINFO} + BITMAPINFO = tagBITMAPINFO; + + PBitmapFileHeader = ^TBitmapFileHeader; + {$EXTERNALSYM tagBITMAPFILEHEADER} + tagBITMAPFILEHEADER = packed record + bfType: Word; + bfSize: DWORD; + bfReserved1: Word; + bfReserved2: Word; + bfOffBits: DWORD; + end; + TBitmapFileHeader = tagBITMAPFILEHEADER; + {$EXTERNALSYM BITMAPFILEHEADER} + BITMAPFILEHEADER = tagBITMAPFILEHEADER; + + + function MakeLong(a, b: Word): Longint; + procedure ZeroMemory(Destination: Pointer; Length: DWORD); + function QueryPerformanceFrequency(var lpFrequency: TLargeInteger): BOOL; + function QueryPerformanceCounter(var lpPerformanceCount: TLargeInteger): BOOL; + function GetTickCount : Cardinal; + Procedure ShowMessage(msg : string); + procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: DWORD); + +implementation + +uses SDL; + +procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: DWORD); +begin + Move(Source^, Destination^, Length); +end; + +Procedure ShowMessage(msg : string); +begin + // to be implemented +end; + +function MakeLong(A, B: Word): Longint; +begin + Result := (LongInt(B) shl 16) + A; +end; + +procedure ZeroMemory(Destination: Pointer; Length: DWORD); +begin + FillChar( Destination^, Length, 0); +end; + +function QueryPerformanceFrequency(var lpFrequency: TLargeInteger): BOOL; +begin +{$IFDEF MSWINDOWS} + Result := Windows.QueryPerformanceFrequency(lpFrequency); +{$ENDIF} +{$IFDEF MACOS} + Result := true; + lpFrequency := 1000; +{$ENDIF} +end; + +function QueryPerformanceCounter(var lpPerformanceCount: TLargeInteger): BOOL; +begin +{$IFDEF MSWINDOWS} + Result := Windows.QueryPerformanceCounter(lpPerformanceCount); +{$ENDIF} +{$IFDEF MACOS} + Result := true; + lpPerformanceCount := SDL_GetTicks; +{$ENDIF} +end; + +function GetTickCount : Cardinal; +begin + Result := SDL_GetTicks; +end; + +end. diff --git a/Game/Code/MacOSX/Wrapper/zlportio.pas b/Game/Code/MacOSX/Wrapper/zlportio.pas index 4e6173bc..92b4a505 100755 --- a/Game/Code/MacOSX/Wrapper/zlportio.pas +++ b/Game/Code/MacOSX/Wrapper/zlportio.pas @@ -1,6 +1,6 @@ unit zlportio; -{$INCLUDE ../Platform.inc} +{$I switches.inc} interface diff --git a/Game/Code/Menu/UDisplay.pas b/Game/Code/Menu/UDisplay.pas index c83d3c37..b3529d0a 100644 --- a/Game/Code/Menu/UDisplay.pas +++ b/Game/Code/Menu/UDisplay.pas @@ -2,9 +2,7 @@ unit UDisplay; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} +{$I switches.inc} uses {$IFDEF win32} windows, @@ -62,7 +60,7 @@ var implementation uses - {$IFDEF FPC} + {$IFDEF LAZARUS} ulazjpeg, {$ELSE} JPEG, diff --git a/Game/Code/Menu/UDrawTexture.pas b/Game/Code/Menu/UDrawTexture.pas index 5a543f33..de20bd4b 100644 --- a/Game/Code/Menu/UDrawTexture.pas +++ b/Game/Code/Menu/UDrawTexture.pas @@ -1,6 +1,9 @@ unit UDrawTexture; interface + +{$I switches.inc} + uses UTexture; procedure DrawLine(X1, Y1, X2, Y2, ColR, ColG, ColB: real); diff --git a/Game/Code/Menu/UMenu.pas b/Game/Code/Menu/UMenu.pas index 75d6a957..08ba1e4d 100644 --- a/Game/Code/Menu/UMenu.pas +++ b/Game/Code/Menu/UMenu.pas @@ -2,9 +2,7 @@ unit UMenu; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} +{$I switches.inc} uses OpenGL12, SysUtils, UTexture, UMenuStatic, UMenuText, UMenuButton, UMenuSelect, UMenuSelectSlide, UMenuInteract, UThemes, UMenuButtonCollection, Math; diff --git a/Game/Code/Menu/UMenuButton.pas b/Game/Code/Menu/UMenuButton.pas index af4f69ee..93b987b7 100644 --- a/Game/Code/Menu/UMenuButton.pas +++ b/Game/Code/Menu/UMenuButton.pas @@ -1,6 +1,9 @@ unit UMenuButton; interface + +{$I switches.inc} + uses TextGL, UTexture, OpenGL12, UMenuText; type diff --git a/Game/Code/Menu/UMenuButtonCollection.pas b/Game/Code/Menu/UMenuButtonCollection.pas index 5c9045a7..981452b1 100644 --- a/Game/Code/Menu/UMenuButtonCollection.pas +++ b/Game/Code/Menu/UMenuButtonCollection.pas @@ -1,6 +1,9 @@ unit UMenuButtonCollection; interface + +{$I switches.inc} + uses UMenuButton; type diff --git a/Game/Code/Menu/UMenuInteract.pas b/Game/Code/Menu/UMenuInteract.pas index 43249e3e..78f9bd89 100644 --- a/Game/Code/Menu/UMenuInteract.pas +++ b/Game/Code/Menu/UMenuInteract.pas @@ -2,6 +2,8 @@ unit UMenuInteract; interface +{$I switches.inc} + type TInteract = record // for moving thru menu Typ: integer; // 0 - button, 1 - select, 2 - Text, 3 - Select SLide, 5 - ButtonCollection Child diff --git a/Game/Code/Menu/UMenuSelect.pas b/Game/Code/Menu/UMenuSelect.pas index 72141a27..b0ee2b78 100644 --- a/Game/Code/Menu/UMenuSelect.pas +++ b/Game/Code/Menu/UMenuSelect.pas @@ -1,6 +1,9 @@ unit UMenuSelect; interface + +{$I switches.inc} + uses TextGL, UTexture, OpenGL12, UMenuText; type diff --git a/Game/Code/Menu/UMenuSelectSlide.pas b/Game/Code/Menu/UMenuSelectSlide.pas index bb9b5809..e4c5f959 100644 --- a/Game/Code/Menu/UMenuSelectSlide.pas +++ b/Game/Code/Menu/UMenuSelectSlide.pas @@ -2,9 +2,7 @@ unit UMenuSelectSlide; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} +{$I switches.inc} uses TextGL, UTexture, diff --git a/Game/Code/Menu/UMenuStatic.pas b/Game/Code/Menu/UMenuStatic.pas index cfa4a596..a2c709ad 100644 --- a/Game/Code/Menu/UMenuStatic.pas +++ b/Game/Code/Menu/UMenuStatic.pas @@ -1,6 +1,9 @@ unit UMenuStatic; interface + +{$I switches.inc} + uses UTexture, OpenGL12; type diff --git a/Game/Code/Menu/UMenuText.pas b/Game/Code/Menu/UMenuText.pas index 19adef03..350c28de 100644 --- a/Game/Code/Menu/UMenuText.pas +++ b/Game/Code/Menu/UMenuText.pas @@ -2,9 +2,7 @@ unit UMenuText; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} +{$I switches.inc} uses TextGL, UTexture, @@ -61,6 +59,39 @@ uses UGraphic, {$ENDIF} StrUtils; +{$IFDEF DARWIN} +function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer; +var + I,X: Integer; + Len, LenSubStr: Integer; +begin + if Offset = 1 then + Result := Pos(SubStr, S) + else + begin + I := Offset; + LenSubStr := Length(SubStr); + Len := Length(S) - LenSubStr + 1; + while I <= Len do + begin + if S[I] = SubStr[1] then + begin + X := 1; + while (X < LenSubStr) and (S[I + X] = SubStr[X + 1]) do + Inc(X); + if (X = LenSubStr) then + begin + Result := I; + exit; + end; + end; + Inc(I); + end; + Result := 0; + end; +end; +{$ENDIF} + procedure TText.SetSelect(Value: Boolean); begin SelectBool := Value; diff --git a/Game/Code/Screens/UScreenCredits.pas b/Game/Code/Screens/UScreenCredits.pas index a24997d4..e60b9fb9 100644 --- a/Game/Code/Screens/UScreenCredits.pas +++ b/Game/Code/Screens/UScreenCredits.pas @@ -2,10 +2,6 @@ unit UScreenCredits; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - {$I switches.inc} diff --git a/Game/Code/Screens/UScreenEdit.pas b/Game/Code/Screens/UScreenEdit.pas index a58756e6..49adb994 100644 --- a/Game/Code/Screens/UScreenEdit.pas +++ b/Game/Code/Screens/UScreenEdit.pas @@ -2,6 +2,8 @@ unit UScreenEdit; interface +{$I switches.inc} + uses UMenu, SDL, UThemes; type diff --git a/Game/Code/Screens/UScreenEditConvert.pas b/Game/Code/Screens/UScreenEditConvert.pas index 1878337b..0c8244ab 100644 --- a/Game/Code/Screens/UScreenEditConvert.pas +++ b/Game/Code/Screens/UScreenEditConvert.pas @@ -2,10 +2,6 @@ unit UScreenEditConvert; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - {$I switches.inc} uses UMenu, diff --git a/Game/Code/Screens/UScreenEditHeader.pas b/Game/Code/Screens/UScreenEditHeader.pas index a7105b0e..7c8b2d56 100644 --- a/Game/Code/Screens/UScreenEditHeader.pas +++ b/Game/Code/Screens/UScreenEditHeader.pas @@ -2,6 +2,8 @@ unit UScreenEditHeader; interface +{$I switches.inc} + uses UMenu, SDL, USongs, UThemes; type diff --git a/Game/Code/Screens/UScreenEditSub.pas b/Game/Code/Screens/UScreenEditSub.pas index 1dd3fb24..d24fdede 100644 --- a/Game/Code/Screens/UScreenEditSub.pas +++ b/Game/Code/Screens/UScreenEditSub.pas @@ -2,10 +2,6 @@ unit UScreenEditSub; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - {$I switches.inc} uses diff --git a/Game/Code/Screens/UScreenLevel.pas b/Game/Code/Screens/UScreenLevel.pas index df23d340..d4b528b5 100644 --- a/Game/Code/Screens/UScreenLevel.pas +++ b/Game/Code/Screens/UScreenLevel.pas @@ -2,6 +2,8 @@ unit UScreenLevel; interface +{$I switches.inc} + uses UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes; diff --git a/Game/Code/Screens/UScreenLoading.pas b/Game/Code/Screens/UScreenLoading.pas index 2ccc5c79..989461f2 100644 --- a/Game/Code/Screens/UScreenLoading.pas +++ b/Game/Code/Screens/UScreenLoading.pas @@ -4,10 +4,6 @@ interface {$I switches.inc} -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - uses UMenu, SDL, diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index cb7390cc..38f58bf1 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -2,9 +2,7 @@ unit UScreenMain; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} +{$I switches.inc} uses UMenu, diff --git a/Game/Code/Screens/UScreenName.pas b/Game/Code/Screens/UScreenName.pas index 5363d2a2..76e79a3b 100644 --- a/Game/Code/Screens/UScreenName.pas +++ b/Game/Code/Screens/UScreenName.pas @@ -2,6 +2,8 @@ unit UScreenName; interface +{$I switches.inc} + uses UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes; diff --git a/Game/Code/Screens/UScreenOpen.pas b/Game/Code/Screens/UScreenOpen.pas index edf684db..30404d6e 100644 --- a/Game/Code/Screens/UScreenOpen.pas +++ b/Game/Code/Screens/UScreenOpen.pas @@ -2,6 +2,8 @@ unit UScreenOpen; interface +{$I switches.inc} + uses UMenu, UMusic, SDL, SysUtils, UFiles, UTime, USongs, UIni, ULog, UTexture, UMenuText, ULyrics, Math, OpenGL12, UThemes; diff --git a/Game/Code/Screens/UScreenOptions.pas b/Game/Code/Screens/UScreenOptions.pas index 1867d03b..bcd781cc 100644 --- a/Game/Code/Screens/UScreenOptions.pas +++ b/Game/Code/Screens/UScreenOptions.pas @@ -2,6 +2,8 @@ unit UScreenOptions; interface +{$I switches.inc} + uses UMenu, SDL, SysUtils, UDisplay, UMusic, UFiles, UIni, UThemes; diff --git a/Game/Code/Screens/UScreenOptionsAdvanced.pas b/Game/Code/Screens/UScreenOptionsAdvanced.pas index 271ff972..0d40b7ec 100644 --- a/Game/Code/Screens/UScreenOptionsAdvanced.pas +++ b/Game/Code/Screens/UScreenOptionsAdvanced.pas @@ -2,6 +2,8 @@ unit UScreenOptionsAdvanced; interface +{$I switches.inc} + uses UMenu, SDL, UDisplay, UMusic, UFiles, UIni, UThemes; diff --git a/Game/Code/Screens/UScreenOptionsGame.pas b/Game/Code/Screens/UScreenOptionsGame.pas index 1d94ffa6..6cd0a20c 100644 --- a/Game/Code/Screens/UScreenOptionsGame.pas +++ b/Game/Code/Screens/UScreenOptionsGame.pas @@ -2,6 +2,8 @@ unit UScreenOptionsGame; interface +{$I switches.inc} + uses UMenu, SDL, UDisplay, UMusic, UFiles, UIni, UThemes, USongs; diff --git a/Game/Code/Screens/UScreenOptionsGraphics.pas b/Game/Code/Screens/UScreenOptionsGraphics.pas index c0ea90ff..947d506b 100644 --- a/Game/Code/Screens/UScreenOptionsGraphics.pas +++ b/Game/Code/Screens/UScreenOptionsGraphics.pas @@ -2,6 +2,8 @@ unit UScreenOptionsGraphics; interface +{$I switches.inc} + uses UMenu, SDL, UDisplay, UMusic, UFiles, UIni, UThemes; diff --git a/Game/Code/Screens/UScreenOptionsLyrics.pas b/Game/Code/Screens/UScreenOptionsLyrics.pas index 7ef7c207..8d70eec9 100644 --- a/Game/Code/Screens/UScreenOptionsLyrics.pas +++ b/Game/Code/Screens/UScreenOptionsLyrics.pas @@ -2,6 +2,8 @@ unit UScreenOptionsLyrics; interface +{$I switches.inc} + uses UMenu, SDL, UDisplay, UMusic, UFiles, UIni, UThemes; diff --git a/Game/Code/Screens/UScreenOptionsRecord.pas b/Game/Code/Screens/UScreenOptionsRecord.pas index d497c637..4be16e70 100644 --- a/Game/Code/Screens/UScreenOptionsRecord.pas +++ b/Game/Code/Screens/UScreenOptionsRecord.pas @@ -2,6 +2,8 @@ unit UScreenOptionsRecord; interface +{$I switches.inc} + uses UMenu, SDL, UDisplay, UMusic, UFiles, UIni, UThemes; diff --git a/Game/Code/Screens/UScreenOptionsSound.pas b/Game/Code/Screens/UScreenOptionsSound.pas index 1777228b..867a10b6 100644 --- a/Game/Code/Screens/UScreenOptionsSound.pas +++ b/Game/Code/Screens/UScreenOptionsSound.pas @@ -2,6 +2,8 @@ unit UScreenOptionsSound; interface +{$I switches.inc} + uses UMenu, SDL, UDisplay, UMusic, UFiles, UIni, UThemes; diff --git a/Game/Code/Screens/UScreenOptionsThemes.pas b/Game/Code/Screens/UScreenOptionsThemes.pas index cf89ac3f..750e8859 100644 --- a/Game/Code/Screens/UScreenOptionsThemes.pas +++ b/Game/Code/Screens/UScreenOptionsThemes.pas @@ -2,6 +2,8 @@ unit UScreenOptionsThemes; interface +{$I switches.inc} + uses UMenu, SDL, UDisplay, UMusic, UFiles, UIni, UThemes; diff --git a/Game/Code/Screens/UScreenPartyNewRound.pas b/Game/Code/Screens/UScreenPartyNewRound.pas index ee534781..17f3b2b5 100644 --- a/Game/Code/Screens/UScreenPartyNewRound.pas +++ b/Game/Code/Screens/UScreenPartyNewRound.pas @@ -2,10 +2,7 @@ unit UScreenPartyNewRound; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - +{$I switches.inc} uses UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes; diff --git a/Game/Code/Screens/UScreenPartyOptions.pas b/Game/Code/Screens/UScreenPartyOptions.pas index 714e0d99..7be4d1c0 100644 --- a/Game/Code/Screens/UScreenPartyOptions.pas +++ b/Game/Code/Screens/UScreenPartyOptions.pas @@ -2,9 +2,7 @@ unit UScreenPartyOptions; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} +{$I switches.inc} uses UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes; diff --git a/Game/Code/Screens/UScreenPartyPlayer.pas b/Game/Code/Screens/UScreenPartyPlayer.pas index 24534599..4aaa5a3e 100644 --- a/Game/Code/Screens/UScreenPartyPlayer.pas +++ b/Game/Code/Screens/UScreenPartyPlayer.pas @@ -2,6 +2,8 @@ unit UScreenPartyPlayer; Interface +{$I switches.inc} + uses UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes; diff --git a/Game/Code/Screens/UScreenPartyScore.pas b/Game/Code/Screens/UScreenPartyScore.pas index 6af835f2..ea9b944b 100644 --- a/Game/Code/Screens/UScreenPartyScore.pas +++ b/Game/Code/Screens/UScreenPartyScore.pas @@ -2,6 +2,8 @@ unit UScreenPartyScore; interface +{$I switches.inc} + uses UMenu, SDL, UDisplay, UMusic, SysUtils, UThemes; diff --git a/Game/Code/Screens/UScreenPartyWin.pas b/Game/Code/Screens/UScreenPartyWin.pas index 3c7ad921..9806159a 100644 --- a/Game/Code/Screens/UScreenPartyWin.pas +++ b/Game/Code/Screens/UScreenPartyWin.pas @@ -2,6 +2,8 @@ unit UScreenPartyWin; interface +{$I switches.inc} + uses UMenu, SDL, UDisplay, UMusic, SysUtils, UThemes; diff --git a/Game/Code/Screens/UScreenPopup.pas b/Game/Code/Screens/UScreenPopup.pas index cc1b4492..402857a9 100644 --- a/Game/Code/Screens/UScreenPopup.pas +++ b/Game/Code/Screens/UScreenPopup.pas @@ -2,6 +2,8 @@ unit UScreenPopup; interface +{$I switches.inc} + uses UMenu, SDL, UMusic, UFiles, SysUtils, UThemes; diff --git a/Game/Code/Screens/UScreenScore.pas b/Game/Code/Screens/UScreenScore.pas index 97d31541..36e3b43b 100644 --- a/Game/Code/Screens/UScreenScore.pas +++ b/Game/Code/Screens/UScreenScore.pas @@ -2,9 +2,7 @@ unit UScreenScore; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} +{$I switches.inc} uses UMenu, diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index 8cba8f36..60cab0a4 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -4,10 +4,6 @@ interface {$I switches.inc} -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - uses UMenu, UMusic, diff --git a/Game/Code/Screens/UScreenSingModi.pas b/Game/Code/Screens/UScreenSingModi.pas index e2d53f0a..7f692af5 100644 --- a/Game/Code/Screens/UScreenSingModi.pas +++ b/Game/Code/Screens/UScreenSingModi.pas @@ -1,12 +1,9 @@ -unit UScreenSingModi; +unit UScreenSingModi; interface {$I switches.inc} -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} uses UMenu, UMusic, @@ -156,456 +153,456 @@ begin end; procedure TScreenSingModi.onShow; -var - I: Integer; -begin - - PlayersPlay := TeamInfo.NumTeams; - - if DLLMan.Selected.LoadSong then //Start with Song - begin - inherited; - end - else //Start Without Song - begin - AudioInput.CaptureStart; - end; - -//Set Playerinfo - PlayerInfo.NumPlayers := PlayersPlay; - for I := 0 to PlayerInfo.NumPlayers-1 do - begin - PlayerInfo.Playerinfo[I].Name := PChar(Ini.Name[I]); - PlayerInfo.Playerinfo[I].Score := 0; - PlayerInfo.Playerinfo[I].Bar := 50; - PlayerInfo.Playerinfo[I].Enabled := True; - end; - - for I := PlayerInfo.NumPlayers to high(PlayerInfo.Playerinfo) do - begin - PlayerInfo.Playerinfo[I].Score:= 0; - PlayerInfo.Playerinfo[I].Bar := 0; - PlayerInfo.Playerinfo[I].Enabled := False; - end; - - {Case PlayersPlay of - 1: begin - PlayerInfo.Playerinfo[0].PosX := Static[StaticP1ScoreBG].Texture.X; - PlayerInfo.Playerinfo[0].PosY := Static[StaticP1ScoreBG].Texture.Y + Static[StaticP1ScoreBG].Texture.H; - end; - 2,4: begin - PlayerInfo.Playerinfo[0].PosX := Static[StaticP1TwoPScoreBG].Texture.X; - PlayerInfo.Playerinfo[0].PosY := Static[StaticP1TwoPScoreBG].Texture.Y + Static[StaticP1TwoPScoreBG].Texture.H; - PlayerInfo.Playerinfo[2].PosX := Static[StaticP1TwoPScoreBG].Texture.X; - PlayerInfo.Playerinfo[2].PosY := Static[StaticP1TwoPScoreBG].Texture.Y + Static[StaticP1TwoPScoreBG].Texture.H; - PlayerInfo.Playerinfo[1].PosX := Static[StaticP2RScoreBG].Texture.X; - PlayerInfo.Playerinfo[1].PosY := Static[StaticP2RScoreBG].Texture.Y + Static[StaticP2RScoreBG].Texture.H; - PlayerInfo.Playerinfo[3].PosX := Static[StaticP2RScoreBG].Texture.X; - PlayerInfo.Playerinfo[3].PosY := Static[StaticP2RScoreBG].Texture.Y + Static[StaticP2RScoreBG].Texture.H; - end; - 3,6: begin - PlayerInfo.Playerinfo[0].PosX := Static[StaticP1ThreePScoreBG].Texture.X; - PlayerInfo.Playerinfo[0].PosY := Static[StaticP1ThreePScoreBG].Texture.Y + Static[StaticP1ThreePScoreBG].Texture.H; - PlayerInfo.Playerinfo[3].PosX := Static[StaticP1ThreePScoreBG].Texture.X; - PlayerInfo.Playerinfo[3].PosY := Static[StaticP1ThreePScoreBG].Texture.Y + Static[StaticP1ThreePScoreBG].Texture.H; - PlayerInfo.Playerinfo[1].PosX := Static[StaticP2MScoreBG].Texture.X; - PlayerInfo.Playerinfo[1].PosY := Static[StaticP2MScoreBG].Texture.Y + Static[StaticP2MScoreBG].Texture.H; - PlayerInfo.Playerinfo[4].PosX := Static[StaticP2MScoreBG].Texture.X; - PlayerInfo.Playerinfo[4].PosY := Static[StaticP2MScoreBG].Texture.Y + Static[StaticP2MScoreBG].Texture.H; - PlayerInfo.Playerinfo[2].PosX := Static[StaticP3RScoreBG].Texture.X; - PlayerInfo.Playerinfo[2].PosY := Static[StaticP3RScoreBG].Texture.Y + Static[StaticP3RScoreBG].Texture.H; - PlayerInfo.Playerinfo[5].PosX := Static[StaticP3RScoreBG].Texture.X; - PlayerInfo.Playerinfo[5].PosY := Static[StaticP3RScoreBG].Texture.Y + Static[StaticP3RScoreBG].Texture.H; - end; - end; } - - // play music (I) - //Music.CaptureStart; - //Music.MoveTo(AktSong.Start); - - //Init Plugin - if not DLLMan.PluginInit(TeamInfo, PlayerInfo, ToSentences(Czesci[0]), LoadTex, Print, LoadSound, PlaySound) then - begin - //Fehler - Log.LogError('Could not Init Plugin'); - Halt; - end; - - // Set Background (Little Workaround, maybe change sometime) - if (DLLMan.Selected.LoadBack) AND (DLLMan.Selected.LoadSong) then - ScreenSing.Tex_Background := Tex_Background; - - Winner := 0; - - //Set Score Visibility - {if PlayersPlay = 1 then begin - Text[TextP1Score].Visible := DLLMan.Selected.ShowScore; - Static[StaticP1ScoreBG].Visible := DLLMan.Selected.ShowScore; - end; - - if (PlayersPlay = 2) OR (PlayersPlay = 4) then begin - Text[TextP1TwoPScore].Visible := DLLMan.Selected.ShowScore; - Static[StaticP1TwoPScoreBG].Visible := DLLMan.Selected.ShowScore; - - Text[TextP2RScore].Visible := DLLMan.Selected.ShowScore; - Static[StaticP2RScoreBG].Visible := DLLMan.Selected.ShowScore; - end; - - if (PlayersPlay = 3) OR (PlayersPlay = 6) then begin - Text[TextP1ThreePScore].Visible := DLLMan.Selected.ShowScore; - Static[StaticP1ThreePScoreBG].Visible := DLLMan.Selected.ShowScore; - - Text[TextP2MScore].Visible := DLLMan.Selected.ShowScore; - Static[StaticP2MScoreBG].Visible := DLLMan.Selected.ShowScore; - - Text[TextP3RScore].Visible := DLLMan.Selected.ShowScore; - Static[StaticP3RScoreBG].Visible := DLLMan.Selected.ShowScore; - end; } -end; - -function TScreenSingModi.Draw: boolean; -var - Min: integer; - Sec: integer; - Tekst: string; - S, I: integer; - T: integer; -begin -//Set Playerinfo - PlayerInfo.NumPlayers := PlayersPlay; - for I := 0 to PlayerInfo.NumPlayers-1 do - begin - PlayerInfo.Playerinfo[I].Name := PChar(Player[I].Name); - if PlayerInfo.Playerinfo[I].Enabled then - begin - if (Player[I].ScoreTotalI<=10000) then - PlayerInfo.Playerinfo[I].Score:= Player[I].ScoreTotalI; - PlayerInfo.Playerinfo[I].Bar := Round(Scores.Players[I].RBPos * 100); - end; - end; - -//Show Score -if DLLMan.Selected.ShowScore then -begin - {//ScoreBG Mod - // set player colors - if PlayersPlay = 4 then begin - if ScreenAct = 1 then begin - LoadColor(Static[StaticP1TwoP].Texture.ColR, Static[StaticP1TwoP].Texture.ColG, - Static[StaticP1TwoP].Texture.ColB, 'P1Dark'); - LoadColor(Static[StaticP2R].Texture.ColR, Static[StaticP2R].Texture.ColG, - Static[StaticP2R].Texture.ColB, 'P2Dark'); - - - - LoadColor(Static[StaticP1TwoPScoreBG].Texture.ColR, Static[StaticP1TwoPScoreBG].Texture.ColG, - Static[StaticP1TwoPScoreBG].Texture.ColB, 'P1Dark'); - LoadColor(Static[StaticP2RScoreBG].Texture.ColR, Static[StaticP2RScoreBG].Texture.ColG, - Static[StaticP2RScoreBG].Texture.ColB, 'P2Dark'); - - - - end; - if ScreenAct = 2 then begin - LoadColor(Static[StaticP1TwoP].Texture.ColR, Static[StaticP1TwoP].Texture.ColG, - Static[StaticP1TwoP].Texture.ColB, 'P3Dark'); - LoadColor(Static[StaticP2R].Texture.ColR, Static[StaticP2R].Texture.ColG, - Static[StaticP2R].Texture.ColB, 'P4Dark'); - - - - LoadColor(Static[StaticP1TwoPScoreBG].Texture.ColR, Static[StaticP1TwoPScoreBG].Texture.ColG, - Static[StaticP1TwoPScoreBG].Texture.ColB, 'P3Dark'); - LoadColor(Static[StaticP2RScoreBG].Texture.ColR, Static[StaticP2RScoreBG].Texture.ColG, - Static[StaticP2RScoreBG].Texture.ColB, 'P4Dark'); - - - - end; - end; - - if PlayersPlay = 6 then begin - if ScreenAct = 1 then begin - LoadColor(Static[StaticP1ThreeP].Texture.ColR, Static[StaticP1ThreeP].Texture.ColG, - Static[StaticP1ThreeP].Texture.ColB, 'P1Dark'); - LoadColor(Static[StaticP2M].Texture.ColR, Static[StaticP2M].Texture.ColG, - Static[StaticP2R].Texture.ColB, 'P2Dark'); - LoadColor(Static[StaticP3R].Texture.ColR, Static[StaticP3R].Texture.ColG, - Static[StaticP3R].Texture.ColB, 'P3Dark'); - - - - LoadColor(Static[StaticP1ThreePScoreBG].Texture.ColR, Static[StaticP1ThreePScoreBG].Texture.ColG, - Static[StaticP1ThreePScoreBG].Texture.ColB, 'P1Dark'); - LoadColor(Static[StaticP2MScoreBG].Texture.ColR, Static[StaticP2MScoreBG].Texture.ColG, - Static[StaticP2RScoreBG].Texture.ColB, 'P2Dark'); - LoadColor(Static[StaticP3RScoreBG].Texture.ColR, Static[StaticP3RScoreBG].Texture.ColG, - Static[StaticP3RScoreBG].Texture.ColB, 'P3Dark'); - - - - end; - if ScreenAct = 2 then begin - LoadColor(Static[StaticP1ThreeP].Texture.ColR, Static[StaticP1ThreeP].Texture.ColG, - Static[StaticP1ThreeP].Texture.ColB, 'P4Dark'); - LoadColor(Static[StaticP2M].Texture.ColR, Static[StaticP2M].Texture.ColG, - Static[StaticP2R].Texture.ColB, 'P5Dark'); - LoadColor(Static[StaticP3R].Texture.ColR, Static[StaticP3R].Texture.ColG, - Static[StaticP3R].Texture.ColB, 'P6Dark'); - - - - - LoadColor(Static[StaticP1ThreePScoreBG].Texture.ColR, Static[StaticP1ThreePScoreBG].Texture.ColG, - Static[StaticP1ThreePScoreBG].Texture.ColB, 'P4Dark'); - LoadColor(Static[StaticP2MScoreBG].Texture.ColR, Static[StaticP2MScoreBG].Texture.ColG, - Static[StaticP2RScoreBG].Texture.ColB, 'P5Dark'); - LoadColor(Static[StaticP3RScoreBG].Texture.ColR, Static[StaticP3RScoreBG].Texture.ColG, - Static[StaticP3RScoreBG].Texture.ColB, 'P6Dark'); - - - - - end; - end; - //end ScoreBG Mod } - -// set player names (for 2 screens and only Singstar skin) - if ScreenAct = 1 then begin - Text[TextP1].Text := 'P1'; - Text[TextP1TwoP].Text := 'P1'; // added for ps3 skin - Text[TextP1ThreeP].Text := 'P1'; // added for ps3 skin - Text[TextP2R].Text := 'P2'; - Text[TextP2M].Text := 'P2'; - Text[TextP3R].Text := 'P3'; - end; - - if ScreenAct = 2 then begin - case PlayersPlay of - 4: begin - Text[TextP1TwoP].Text := 'P3'; - Text[TextP2R].Text := 'P4'; - end; - 6: begin - Text[TextP1ThreeP].Text := 'P4'; - Text[TextP2M].Text := 'P5'; - Text[TextP3R].Text := 'P6'; - end; - end; // case - end; // if - - - // stereo <- and where iss P2M? or P3? - Static[StaticP1].Texture.X := Static[StaticP1].Texture.X + 10*ScreenX; - Text[TextP1].X := Text[TextP1].X + 10*ScreenX; - - {Static[StaticP1ScoreBG].Texture.X := Static[StaticP1ScoreBG].Texture.X + 10*ScreenX; - Text[TextP1Score].X := Text[TextP1Score].X + 10*ScreenX;} - - Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X + 10*ScreenX; - Text[TextP2R].X := Text[TextP2R].X + 10*ScreenX; - - {Static[StaticP2RScoreBG].Texture.X := Static[StaticP2RScoreBG].Texture.X + 10*ScreenX; - Text[TextP2RScore].X := Text[TextP2RScore].X + 10*ScreenX;} - - // .. and scores - {if PlayersPlay = 1 then begin - Tekst := IntToStr(Player[0].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1Score].Text := Tekst; - end; - - if PlayersPlay = 2 then begin - Tekst := IntToStr(Player[0].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1TwoPScore].Text := Tekst; - - Tekst := IntToStr(Player[1].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP2RScore].Text := Tekst; - end; - - if PlayersPlay = 3 then begin - Tekst := IntToStr(Player[0].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1ThreePScore].Text := Tekst; - - Tekst := IntToStr(Player[1].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP2MScore].Text := Tekst; - - Tekst := IntToStr(Player[2].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP3RScore].Text := Tekst; - end; - - if PlayersPlay = 4 then begin - if ScreenAct = 1 then begin - Tekst := IntToStr(Player[0].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1TwoPScore].Text := Tekst; - - Tekst := IntToStr(Player[1].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP2RScore].Text := Tekst; - end; - if ScreenAct = 2 then begin - Tekst := IntToStr(Player[2].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1TwoPScore].Text := Tekst; - - Tekst := IntToStr(Player[3].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP2RScore].Text := Tekst; - end; - end; - - if PlayersPlay = 6 then begin - if ScreenAct = 1 then begin - Tekst := IntToStr(Player[0].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1ThreePScore].Text := Tekst; - - Tekst := IntToStr(Player[1].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP2MScore].Text := Tekst; - - Tekst := IntToStr(Player[2].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP3RScore].Text := Tekst; - end; - if ScreenAct = 2 then begin - Tekst := IntToStr(Player[3].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP1ThreePScore].Text := Tekst; - - Tekst := IntToStr(Player[4].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP2MScore].Text := Tekst; - - Tekst := IntToStr(Player[5].ScoreTotalI); - while Length(Tekst) < 5 do Tekst := '0' + Tekst; - Text[TextP3RScore].Text := Tekst; - end; - end; } - -end; //ShowScore - - for S := 1 to 1 do - Static[S].Texture.X := Static[S].Texture.X + 10*ScreenX; - - for T := 0 to 1 do - Text[T].X := Text[T].X + 10*ScreenX; - -if DLLMan.Selected.LoadSong then -begin - // update static menu with time ... - Min := Round(Czas.Teraz) div 60; - Sec := Round(Czas.Teraz) mod 60; - Text[TextTimeText].Text := ''; - if Min < 10 then Text[TextTimeText].Text := '0'; - Text[TextTimeText].Text := Text[TextTimeText].Text + IntToStr(Min) + ':'; - if Sec < 10 then Text[TextTimeText].Text := Text[TextTimeText].Text + '0'; - Text[TextTimeText].Text := Text[TextTimeText].Text + IntToStr(Sec); -end; - - // draw static menu (BG) - DrawBG; - - //Draw Background - if (DllMan.Selected.LoadSong) AND (DllMan.Selected.LoadBack) then - SingDrawBackground; - - // comment by blindy: wo zum henker wird denn in diesem screen ein video abgespielt? - // update and draw movie - // wie wo wadd? also in der selben funktion in der uscreensing kommt des video in der zeile 995, oder was wollteste wissen? :X -{ if ShowFinish and AktSong.VideoLoaded AND DllMan.Selected.LoadVideo then begin - UpdateSmpeg; // this only draws - end;} - - // draw static menu (FG) - DrawFG; - - if ShowFinish then begin - if DllMan.Selected.LoadSong then - begin - if (not AudioPlayback.Finished) and ((AktSong.Finish = 0) or (Czas.Teraz*1000 <= AktSong.Finish)) then begin - //Pause Mod: - if not Paused then - Sing(Self); // analyze song - end else begin - if not FadeOut then begin - Finish; - FadeOut := true; - FadeTo(@ScreenPartyScore); - end; - end; - end; - end; - - // draw custom items - SingModiDraw(PlayerInfo); // always draw - - //GoldenNoteStarsTwinkle Mod - GoldenRec.SpawnRec; - //GoldenNoteStarsTwinkle Mod - - //Update PlayerInfo - for I := 0 to PlayerInfo.NumPlayers-1 do - begin - if PlayerInfo.Playerinfo[I].Enabled then - begin - //PlayerInfo.Playerinfo[I].Bar := Player[I].ScorePercent; - PlayerInfo.Playerinfo[I].Score := Player[I].ScoreTotalI; - end; - end; - - if ((ShowFinish) AND (NOT Paused)) then - begin - if not DLLMan.PluginDraw(Playerinfo, Czesci[0].Akt) then - begin - if not FadeOut then begin - Finish; - FadeOut := true; - FadeTo(@ScreenPartyScore); - end; - end; - end; - - //Change PlayerInfo/Changeables - for I := 0 to PlayerInfo.NumPlayers-1 do - begin - if (Player[I].ScoreTotalI <> PlayerInfo.Playerinfo[I].Score) then - begin - //Player[I].ScoreTotal := Player[I].ScoreTotal + (PlayerInfo.Playerinfo[I].Score - Player[I].ScoreTotalI); - Player[I].ScoreTotalI := PlayerInfo.Playerinfo[I].Score; - end; - {if (PlayerInfo.Playerinfo[I].Bar <> Player[I].ScorePercent) then - Player[I].ScorePercentTarget := PlayerInfo.Playerinfo[I].Bar; } - end; - - // back stereo - Static[StaticP1].Texture.X := Static[StaticP1].Texture.X - 10*ScreenX; - Text[TextP1].X := Text[TextP1].X - 10*ScreenX; - - {Static[StaticP1ScoreBG].Texture.X := Static[StaticP1ScoreBG].Texture.X - 10*ScreenX; - Text[TextP1Score].X := Text[TextP1Score].X - 10*ScreenX;} - - - Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X - 10*ScreenX; - Text[TextP2R].X := Text[TextP2R].X - 10*ScreenX; - - {Static[StaticP2RScoreBG].Texture.X := Static[StaticP2RScoreBG].Texture.X - 10*ScreenX; - Text[TextP2RScore].X := Text[TextP2RScore].X - 10*ScreenX;} - - - for S := 1 to 1 do - Static[S].Texture.X := Static[S].Texture.X - 10*ScreenX; - - for T := 0 to 1 do - Text[T].X := Text[T].X - 10*ScreenX; - - +var + I: Integer; +begin + + PlayersPlay := TeamInfo.NumTeams; + + if DLLMan.Selected.LoadSong then //Start with Song + begin + inherited; + end + else //Start Without Song + begin + AudioInput.CaptureStart; + end; + +//Set Playerinfo + PlayerInfo.NumPlayers := PlayersPlay; + for I := 0 to PlayerInfo.NumPlayers-1 do + begin + PlayerInfo.Playerinfo[I].Name := PChar(Ini.Name[I]); + PlayerInfo.Playerinfo[I].Score := 0; + PlayerInfo.Playerinfo[I].Bar := 50; + PlayerInfo.Playerinfo[I].Enabled := True; + end; + + for I := PlayerInfo.NumPlayers to high(PlayerInfo.Playerinfo) do + begin + PlayerInfo.Playerinfo[I].Score:= 0; + PlayerInfo.Playerinfo[I].Bar := 0; + PlayerInfo.Playerinfo[I].Enabled := False; + end; + + {Case PlayersPlay of + 1: begin + PlayerInfo.Playerinfo[0].PosX := Static[StaticP1ScoreBG].Texture.X; + PlayerInfo.Playerinfo[0].PosY := Static[StaticP1ScoreBG].Texture.Y + Static[StaticP1ScoreBG].Texture.H; + end; + 2,4: begin + PlayerInfo.Playerinfo[0].PosX := Static[StaticP1TwoPScoreBG].Texture.X; + PlayerInfo.Playerinfo[0].PosY := Static[StaticP1TwoPScoreBG].Texture.Y + Static[StaticP1TwoPScoreBG].Texture.H; + PlayerInfo.Playerinfo[2].PosX := Static[StaticP1TwoPScoreBG].Texture.X; + PlayerInfo.Playerinfo[2].PosY := Static[StaticP1TwoPScoreBG].Texture.Y + Static[StaticP1TwoPScoreBG].Texture.H; + PlayerInfo.Playerinfo[1].PosX := Static[StaticP2RScoreBG].Texture.X; + PlayerInfo.Playerinfo[1].PosY := Static[StaticP2RScoreBG].Texture.Y + Static[StaticP2RScoreBG].Texture.H; + PlayerInfo.Playerinfo[3].PosX := Static[StaticP2RScoreBG].Texture.X; + PlayerInfo.Playerinfo[3].PosY := Static[StaticP2RScoreBG].Texture.Y + Static[StaticP2RScoreBG].Texture.H; + end; + 3,6: begin + PlayerInfo.Playerinfo[0].PosX := Static[StaticP1ThreePScoreBG].Texture.X; + PlayerInfo.Playerinfo[0].PosY := Static[StaticP1ThreePScoreBG].Texture.Y + Static[StaticP1ThreePScoreBG].Texture.H; + PlayerInfo.Playerinfo[3].PosX := Static[StaticP1ThreePScoreBG].Texture.X; + PlayerInfo.Playerinfo[3].PosY := Static[StaticP1ThreePScoreBG].Texture.Y + Static[StaticP1ThreePScoreBG].Texture.H; + PlayerInfo.Playerinfo[1].PosX := Static[StaticP2MScoreBG].Texture.X; + PlayerInfo.Playerinfo[1].PosY := Static[StaticP2MScoreBG].Texture.Y + Static[StaticP2MScoreBG].Texture.H; + PlayerInfo.Playerinfo[4].PosX := Static[StaticP2MScoreBG].Texture.X; + PlayerInfo.Playerinfo[4].PosY := Static[StaticP2MScoreBG].Texture.Y + Static[StaticP2MScoreBG].Texture.H; + PlayerInfo.Playerinfo[2].PosX := Static[StaticP3RScoreBG].Texture.X; + PlayerInfo.Playerinfo[2].PosY := Static[StaticP3RScoreBG].Texture.Y + Static[StaticP3RScoreBG].Texture.H; + PlayerInfo.Playerinfo[5].PosX := Static[StaticP3RScoreBG].Texture.X; + PlayerInfo.Playerinfo[5].PosY := Static[StaticP3RScoreBG].Texture.Y + Static[StaticP3RScoreBG].Texture.H; + end; + end; } + + // play music (I) + //Music.CaptureStart; + //Music.MoveTo(AktSong.Start); + + //Init Plugin + if not DLLMan.PluginInit(TeamInfo, PlayerInfo, ToSentences(Czesci[0]), LoadTex, Print, LoadSound, PlaySound) then + begin + //Fehler + Log.LogError('Could not Init Plugin'); + Halt; + end; + + // Set Background (Little Workaround, maybe change sometime) + if (DLLMan.Selected.LoadBack) AND (DLLMan.Selected.LoadSong) then + ScreenSing.Tex_Background := Tex_Background; + + Winner := 0; + + //Set Score Visibility + {if PlayersPlay = 1 then begin + Text[TextP1Score].Visible := DLLMan.Selected.ShowScore; + Static[StaticP1ScoreBG].Visible := DLLMan.Selected.ShowScore; + end; + + if (PlayersPlay = 2) OR (PlayersPlay = 4) then begin + Text[TextP1TwoPScore].Visible := DLLMan.Selected.ShowScore; + Static[StaticP1TwoPScoreBG].Visible := DLLMan.Selected.ShowScore; + + Text[TextP2RScore].Visible := DLLMan.Selected.ShowScore; + Static[StaticP2RScoreBG].Visible := DLLMan.Selected.ShowScore; + end; + + if (PlayersPlay = 3) OR (PlayersPlay = 6) then begin + Text[TextP1ThreePScore].Visible := DLLMan.Selected.ShowScore; + Static[StaticP1ThreePScoreBG].Visible := DLLMan.Selected.ShowScore; + + Text[TextP2MScore].Visible := DLLMan.Selected.ShowScore; + Static[StaticP2MScoreBG].Visible := DLLMan.Selected.ShowScore; + + Text[TextP3RScore].Visible := DLLMan.Selected.ShowScore; + Static[StaticP3RScoreBG].Visible := DLLMan.Selected.ShowScore; + end; } +end; + +function TScreenSingModi.Draw: boolean; +var + Min: integer; + Sec: integer; + Tekst: string; + S, I: integer; + T: integer; +begin +//Set Playerinfo + PlayerInfo.NumPlayers := PlayersPlay; + for I := 0 to PlayerInfo.NumPlayers-1 do + begin + PlayerInfo.Playerinfo[I].Name := PChar(Player[I].Name); + if PlayerInfo.Playerinfo[I].Enabled then + begin + if (Player[I].ScoreTotalI<=10000) then + PlayerInfo.Playerinfo[I].Score:= Player[I].ScoreTotalI; + PlayerInfo.Playerinfo[I].Bar := Round(Scores.Players[I].RBPos * 100); + end; + end; + +//Show Score +if DLLMan.Selected.ShowScore then +begin + {//ScoreBG Mod + // set player colors + if PlayersPlay = 4 then begin + if ScreenAct = 1 then begin + LoadColor(Static[StaticP1TwoP].Texture.ColR, Static[StaticP1TwoP].Texture.ColG, + Static[StaticP1TwoP].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP2R].Texture.ColR, Static[StaticP2R].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P2Dark'); + + + + LoadColor(Static[StaticP1TwoPScoreBG].Texture.ColR, Static[StaticP1TwoPScoreBG].Texture.ColG, + Static[StaticP1TwoPScoreBG].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP2RScoreBG].Texture.ColR, Static[StaticP2RScoreBG].Texture.ColG, + Static[StaticP2RScoreBG].Texture.ColB, 'P2Dark'); + + + + end; + if ScreenAct = 2 then begin + LoadColor(Static[StaticP1TwoP].Texture.ColR, Static[StaticP1TwoP].Texture.ColG, + Static[StaticP1TwoP].Texture.ColB, 'P3Dark'); + LoadColor(Static[StaticP2R].Texture.ColR, Static[StaticP2R].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P4Dark'); + + + + LoadColor(Static[StaticP1TwoPScoreBG].Texture.ColR, Static[StaticP1TwoPScoreBG].Texture.ColG, + Static[StaticP1TwoPScoreBG].Texture.ColB, 'P3Dark'); + LoadColor(Static[StaticP2RScoreBG].Texture.ColR, Static[StaticP2RScoreBG].Texture.ColG, + Static[StaticP2RScoreBG].Texture.ColB, 'P4Dark'); + + + + end; + end; + + if PlayersPlay = 6 then begin + if ScreenAct = 1 then begin + LoadColor(Static[StaticP1ThreeP].Texture.ColR, Static[StaticP1ThreeP].Texture.ColG, + Static[StaticP1ThreeP].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP2M].Texture.ColR, Static[StaticP2M].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P2Dark'); + LoadColor(Static[StaticP3R].Texture.ColR, Static[StaticP3R].Texture.ColG, + Static[StaticP3R].Texture.ColB, 'P3Dark'); + + + + LoadColor(Static[StaticP1ThreePScoreBG].Texture.ColR, Static[StaticP1ThreePScoreBG].Texture.ColG, + Static[StaticP1ThreePScoreBG].Texture.ColB, 'P1Dark'); + LoadColor(Static[StaticP2MScoreBG].Texture.ColR, Static[StaticP2MScoreBG].Texture.ColG, + Static[StaticP2RScoreBG].Texture.ColB, 'P2Dark'); + LoadColor(Static[StaticP3RScoreBG].Texture.ColR, Static[StaticP3RScoreBG].Texture.ColG, + Static[StaticP3RScoreBG].Texture.ColB, 'P3Dark'); + + + + end; + if ScreenAct = 2 then begin + LoadColor(Static[StaticP1ThreeP].Texture.ColR, Static[StaticP1ThreeP].Texture.ColG, + Static[StaticP1ThreeP].Texture.ColB, 'P4Dark'); + LoadColor(Static[StaticP2M].Texture.ColR, Static[StaticP2M].Texture.ColG, + Static[StaticP2R].Texture.ColB, 'P5Dark'); + LoadColor(Static[StaticP3R].Texture.ColR, Static[StaticP3R].Texture.ColG, + Static[StaticP3R].Texture.ColB, 'P6Dark'); + + + + + LoadColor(Static[StaticP1ThreePScoreBG].Texture.ColR, Static[StaticP1ThreePScoreBG].Texture.ColG, + Static[StaticP1ThreePScoreBG].Texture.ColB, 'P4Dark'); + LoadColor(Static[StaticP2MScoreBG].Texture.ColR, Static[StaticP2MScoreBG].Texture.ColG, + Static[StaticP2RScoreBG].Texture.ColB, 'P5Dark'); + LoadColor(Static[StaticP3RScoreBG].Texture.ColR, Static[StaticP3RScoreBG].Texture.ColG, + Static[StaticP3RScoreBG].Texture.ColB, 'P6Dark'); + + + + + end; + end; + //end ScoreBG Mod } + +// set player names (for 2 screens and only Singstar skin) + if ScreenAct = 1 then begin + Text[TextP1].Text := 'P1'; + Text[TextP1TwoP].Text := 'P1'; // added for ps3 skin + Text[TextP1ThreeP].Text := 'P1'; // added for ps3 skin + Text[TextP2R].Text := 'P2'; + Text[TextP2M].Text := 'P2'; + Text[TextP3R].Text := 'P3'; + end; + + if ScreenAct = 2 then begin + case PlayersPlay of + 4: begin + Text[TextP1TwoP].Text := 'P3'; + Text[TextP2R].Text := 'P4'; + end; + 6: begin + Text[TextP1ThreeP].Text := 'P4'; + Text[TextP2M].Text := 'P5'; + Text[TextP3R].Text := 'P6'; + end; + end; // case + end; // if + + + // stereo <- and where iss P2M? or P3? + Static[StaticP1].Texture.X := Static[StaticP1].Texture.X + 10*ScreenX; + Text[TextP1].X := Text[TextP1].X + 10*ScreenX; + + {Static[StaticP1ScoreBG].Texture.X := Static[StaticP1ScoreBG].Texture.X + 10*ScreenX; + Text[TextP1Score].X := Text[TextP1Score].X + 10*ScreenX;} + + Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X + 10*ScreenX; + Text[TextP2R].X := Text[TextP2R].X + 10*ScreenX; + + {Static[StaticP2RScoreBG].Texture.X := Static[StaticP2RScoreBG].Texture.X + 10*ScreenX; + Text[TextP2RScore].X := Text[TextP2RScore].X + 10*ScreenX;} + + // .. and scores + {if PlayersPlay = 1 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1Score].Text := Tekst; + end; + + if PlayersPlay = 2 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1TwoPScore].Text := Tekst; + + Tekst := IntToStr(Player[1].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2RScore].Text := Tekst; + end; + + if PlayersPlay = 3 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1ThreePScore].Text := Tekst; + + Tekst := IntToStr(Player[1].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2MScore].Text := Tekst; + + Tekst := IntToStr(Player[2].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP3RScore].Text := Tekst; + end; + + if PlayersPlay = 4 then begin + if ScreenAct = 1 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1TwoPScore].Text := Tekst; + + Tekst := IntToStr(Player[1].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2RScore].Text := Tekst; + end; + if ScreenAct = 2 then begin + Tekst := IntToStr(Player[2].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1TwoPScore].Text := Tekst; + + Tekst := IntToStr(Player[3].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2RScore].Text := Tekst; + end; + end; + + if PlayersPlay = 6 then begin + if ScreenAct = 1 then begin + Tekst := IntToStr(Player[0].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1ThreePScore].Text := Tekst; + + Tekst := IntToStr(Player[1].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2MScore].Text := Tekst; + + Tekst := IntToStr(Player[2].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP3RScore].Text := Tekst; + end; + if ScreenAct = 2 then begin + Tekst := IntToStr(Player[3].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP1ThreePScore].Text := Tekst; + + Tekst := IntToStr(Player[4].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP2MScore].Text := Tekst; + + Tekst := IntToStr(Player[5].ScoreTotalI); + while Length(Tekst) < 5 do Tekst := '0' + Tekst; + Text[TextP3RScore].Text := Tekst; + end; + end; } + +end; //ShowScore + + for S := 1 to 1 do + Static[S].Texture.X := Static[S].Texture.X + 10*ScreenX; + + for T := 0 to 1 do + Text[T].X := Text[T].X + 10*ScreenX; + +if DLLMan.Selected.LoadSong then +begin + // update static menu with time ... + Min := Round(Czas.Teraz) div 60; + Sec := Round(Czas.Teraz) mod 60; + Text[TextTimeText].Text := ''; + if Min < 10 then Text[TextTimeText].Text := '0'; + Text[TextTimeText].Text := Text[TextTimeText].Text + IntToStr(Min) + ':'; + if Sec < 10 then Text[TextTimeText].Text := Text[TextTimeText].Text + '0'; + Text[TextTimeText].Text := Text[TextTimeText].Text + IntToStr(Sec); +end; + + // draw static menu (BG) + DrawBG; + + //Draw Background + if (DllMan.Selected.LoadSong) AND (DllMan.Selected.LoadBack) then + SingDrawBackground; + + // comment by blindy: wo zum henker wird denn in diesem screen ein video abgespielt? + // update and draw movie + // wie wo wadd? also in der selben funktion in der uscreensing kommt des video in der zeile 995, oder was wollteste wissen? :X +{ if ShowFinish and AktSong.VideoLoaded AND DllMan.Selected.LoadVideo then begin + UpdateSmpeg; // this only draws + end;} + + // draw static menu (FG) + DrawFG; + + if ShowFinish then begin + if DllMan.Selected.LoadSong then + begin + if (not AudioPlayback.Finished) and ((AktSong.Finish = 0) or (Czas.Teraz*1000 <= AktSong.Finish)) then begin + //Pause Mod: + if not Paused then + Sing(Self); // analyze song + end else begin + if not FadeOut then begin + Finish; + FadeOut := true; + FadeTo(@ScreenPartyScore); + end; + end; + end; + end; + + // draw custom items + SingModiDraw(PlayerInfo); // always draw + + //GoldenNoteStarsTwinkle Mod + GoldenRec.SpawnRec; + //GoldenNoteStarsTwinkle Mod + + //Update PlayerInfo + for I := 0 to PlayerInfo.NumPlayers-1 do + begin + if PlayerInfo.Playerinfo[I].Enabled then + begin + //PlayerInfo.Playerinfo[I].Bar := Player[I].ScorePercent; + PlayerInfo.Playerinfo[I].Score := Player[I].ScoreTotalI; + end; + end; + + if ((ShowFinish) AND (NOT Paused)) then + begin + if not DLLMan.PluginDraw(Playerinfo, Czesci[0].Akt) then + begin + if not FadeOut then begin + Finish; + FadeOut := true; + FadeTo(@ScreenPartyScore); + end; + end; + end; + + //Change PlayerInfo/Changeables + for I := 0 to PlayerInfo.NumPlayers-1 do + begin + if (Player[I].ScoreTotalI <> PlayerInfo.Playerinfo[I].Score) then + begin + //Player[I].ScoreTotal := Player[I].ScoreTotal + (PlayerInfo.Playerinfo[I].Score - Player[I].ScoreTotalI); + Player[I].ScoreTotalI := PlayerInfo.Playerinfo[I].Score; + end; + {if (PlayerInfo.Playerinfo[I].Bar <> Player[I].ScorePercent) then + Player[I].ScorePercentTarget := PlayerInfo.Playerinfo[I].Bar; } + end; + + // back stereo + Static[StaticP1].Texture.X := Static[StaticP1].Texture.X - 10*ScreenX; + Text[TextP1].X := Text[TextP1].X - 10*ScreenX; + + {Static[StaticP1ScoreBG].Texture.X := Static[StaticP1ScoreBG].Texture.X - 10*ScreenX; + Text[TextP1Score].X := Text[TextP1Score].X - 10*ScreenX;} + + + Static[StaticP2R].Texture.X := Static[StaticP2R].Texture.X - 10*ScreenX; + Text[TextP2R].X := Text[TextP2R].X - 10*ScreenX; + + {Static[StaticP2RScoreBG].Texture.X := Static[StaticP2RScoreBG].Texture.X - 10*ScreenX; + Text[TextP2RScore].X := Text[TextP2RScore].X - 10*ScreenX;} + + + for S := 1 to 1 do + Static[S].Texture.X := Static[S].Texture.X - 10*ScreenX; + + for T := 0 to 1 do + Text[T].X := Text[T].X - 10*ScreenX; + + end; procedure TScreenSingModi.Finish; @@ -665,4 +662,4 @@ begin end; end. ->>>>>>> .r429 +>>>>>>> .r429 diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index 4d146283..3f2f5d58 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -1,12 +1,8 @@ unit UScreenSong; interface -{$I switches.inc} - -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} +{$I switches.inc} uses @@ -813,7 +809,7 @@ begin try AddButton(300 + Pet*250, 140, 200, 200, '', 'JPG', 'Plain', Theme.Song.Cover.Reflections); except - {$IFDEF win32} + {$IFDEF MSWINDOWS} Messagebox(0, PChar('No Cover Image is damage. Could not Workaround Song Loading, Ultrastar will exit now.'), PChar(Language.Translate('US_VERSION')), MB_ICONERROR or MB_OK); {$ELSE} // TODO : JB_linux - better handle this message and display to user.. diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index de78665e..14228964 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -2,6 +2,8 @@ unit UScreenSongJumpto; interface +{$I switches.inc} + uses UMenu, SDL, UDisplay, UMusic, UFiles, SysUtils, UThemes; diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index c6e16f60..6f9b0c53 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -2,9 +2,7 @@ unit UScreenSongMenu; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} +{$I switches.inc} uses UMenu, diff --git a/Game/Code/Screens/UScreenStatDetail.pas b/Game/Code/Screens/UScreenStatDetail.pas index 1310b127..414055f9 100644 --- a/Game/Code/Screens/UScreenStatDetail.pas +++ b/Game/Code/Screens/UScreenStatDetail.pas @@ -2,6 +2,8 @@ unit UScreenStatDetail; interface +{$I switches.inc} + uses UMenu, SDL, SysUtils, UDisplay, UMusic, UIni, UThemes; diff --git a/Game/Code/Screens/UScreenStatMain.pas b/Game/Code/Screens/UScreenStatMain.pas index 4f46bec2..02209dd7 100644 --- a/Game/Code/Screens/UScreenStatMain.pas +++ b/Game/Code/Screens/UScreenStatMain.pas @@ -2,10 +2,7 @@ unit UScreenStatMain; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - +{$I switches.inc} uses UMenu, @@ -164,7 +161,7 @@ var Result1, Result2: AStatResult; ResetTime: TSystemTime; - {$IFDEF win32} + {$IFDEF MSWINDOWS} function GetFileCreation(Filename: String): TSystemTime; var FindData: TWin32FindData; @@ -207,7 +204,7 @@ begin ResetTime := GetFileCreation(Database.Filename); - {$IFDEF win32} + {$IFDEF MSWINDOWS} A1 := ResetTime.wDay; A2 := ResetTime.wMonth; A3 := ResetTime.wYear; diff --git a/Game/Code/Screens/UScreenTop5.pas b/Game/Code/Screens/UScreenTop5.pas index d0fe15c8..83ba2bb0 100644 --- a/Game/Code/Screens/UScreenTop5.pas +++ b/Game/Code/Screens/UScreenTop5.pas @@ -2,10 +2,7 @@ unit UScreenTop5; interface -{$IFDEF FPC} - {$MODE DELPHI} -{$ENDIF} - +{$I switches.inc} uses UMenu, SDL, SysUtils, UDisplay, UMusic, USongs, UThemes, ULCD; diff --git a/Game/Code/Screens/UScreenWelcome.pas b/Game/Code/Screens/UScreenWelcome.pas index 35e159f8..fc088458 100644 --- a/Game/Code/Screens/UScreenWelcome.pas +++ b/Game/Code/Screens/UScreenWelcome.pas @@ -2,6 +2,8 @@ unit UScreenWelcome; interface +{$I switches.inc} + uses UMenu, SDL, SysUtils, UThemes; diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index 536ef6be..80312bd1 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -158,250 +158,10 @@ uses Windows, SysUtils; - -const - Version = 'UltraStar Deluxe V 1.10 Alpha Build'; - -var - WndTitle: string; - hWnd: THandle; - I: Integer; + + // eddie: I had to move the main procedure to UMain.pas, because + // I can't use the dpr file with Xcode on the mac. begin - WndTitle := Version; - -// InitializeSound(); -// writeln( 'DONE' ); -// exit; - - - //------------------------------ - //Start more than One Time Prevention - //------------------------------ - hWnd:= FindWindow(nil, PChar(WndTitle)); - //Programm already started - if (hWnd <> 0) then - begin - I := Messagebox(0, PChar('Another Instance of Ultrastar is already running. Continue ?'), PChar(WndTitle), MB_ICONWARNING or MB_YESNO); - if (I = IDYes) then - begin - I := 1; - repeat - Inc(I); - hWnd := FindWindow(nil, PChar(WndTitle + ' Instance ' + InttoStr(I))); - until (hWnd = 0); - WndTitle := WndTitle + ' Instance ' + InttoStr(I); - end - else - Exit; - end; - - //------------------------------ - //StartUp - Create Classes and Load Files - //------------------------------ - USTime := TTime.Create; - - // Commandline Parameter Parser - Params := TCMDParams.Create; - - // Log + Benchmark - Log := TLog.Create; - Log.Title := WndTitle; - Log.Enabled := Not Params.NoLog; - Log.BenchmarkStart(0); - - // Language - Log.BenchmarkStart(1); - Log.LogStatus('Initialize Paths', 'Initialization'); InitializePaths; - Log.LogStatus('Load Language', 'Initialization'); Language := TLanguage.Create; - //Add Const Values: - Language.AddConst('US_VERSION', Version); - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Language', 1); - - // SDL - Log.BenchmarkStart(1); - Log.LogStatus('Initialize SDL', 'Initialization'); - SDL_Init(SDL_INIT_VIDEO or SDL_INIT_AUDIO); - Log.BenchmarkEnd(1); - Log.LogBenchmark('Initializing SDL', 1); - - // SDL_ttf - Log.BenchmarkStart(1); - Log.LogStatus('Initialize SDL_ttf', 'Initialization'); - TTF_Init(); //ttf_quit(); - Log.BenchmarkEnd(1); - Log.LogBenchmark('Initializing SDL_ttf', 1); - - // Skin - Log.BenchmarkStart(1); - Log.LogStatus('Loading Skin List', 'Initialization'); Skin := TSkin.Create; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Skin List', 1); - - // Sound Card List - Log.BenchmarkStart(1); - Log.LogStatus('Loading Soundcard list', 'Initialization'); - Recording := TRecord.Create; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Soundcard list', 1); - - // Ini + Paths - Log.BenchmarkStart(1); - Log.LogStatus('Load Ini', 'Initialization'); Ini := TIni.Create; - Ini.Load; - - //Load Languagefile - if (Params.Language <> -1) then - Language.ChangeLanguage(ILanguage[Params.Language]) - else - Language.ChangeLanguage(ILanguage[Ini.Language]); - - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Ini', 1); - - - // LCD - Log.BenchmarkStart(1); - Log.LogStatus('Load LCD', 'Initialization'); LCD := TLCD.Create; - if Ini.LPT = 1 then begin -// LCD.HalfInterface := true; - LCD.Enable; - LCD.Clear; - LCD.WriteText(1, ' UltraStar '); - LCD.WriteText(2, ' Loading... '); - end; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading LCD', 1); - - // Light - Log.BenchmarkStart(1); - Log.LogStatus('Load Light', 'Initialization'); Light := TLight.Create; - if Ini.LPT = 2 then begin - Light.Enable; - end; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Light', 1); - - - - // Theme - Log.BenchmarkStart(1); - Log.LogStatus('Load Themes', 'Initialization'); Theme := TTheme.Create('Themes\' + ITheme[Ini.Theme] + '.ini', Ini.Color); - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Themes', 1); - - // Covers Cache - Log.BenchmarkStart(1); - Log.LogStatus('Creating Covers Cache', 'Initialization'); Covers := TCovers.Create; - Log.LogBenchmark('Loading Covers Cache Array', 1); - Log.BenchmarkStart(1); - - // Category Covers - Log.BenchmarkStart(1); - Log.LogStatus('Creating Category Covers Array', 'Initialization'); - CatCovers:= TCatCovers.Create; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Category Covers Array', 1); - - // Songs - //Log.BenchmarkStart(1); - Log.LogStatus('Creating Song Array', 'Initialization'); Songs := TSongs.Create; - Songs.LoadSongList; - Log.LogStatus('Creating 2nd Song Array', 'Initialization'); CatSongs := TCatSongs.Create; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Songs', 1); - - // PluginManager - Log.BenchmarkStart(1); - Log.LogStatus('PluginManager', 'Initialization'); - DLLMan := TDLLMan.Create; //Load PluginList - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading PluginManager', 1); - - // Party Mode Manager - Log.BenchmarkStart(1); - Log.LogStatus('PartySession Manager', 'Initialization'); - PartySession := TParty_Session.Create; //Load PartySession - - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading PartySession Manager', 1); - - // Sound - Log.BenchmarkStart(1); - Log.LogStatus('Initialize Sound', 'Initialization'); InitializeSound(); - Log.BenchmarkEnd(1); - Log.LogBenchmark('Initializing Sound', 1); - -// exit; - - // Graphics - Log.BenchmarkStart(1); - Log.LogStatus('Initialize 3D', 'Initialization'); Initialize3D(WndTitle); - Log.BenchmarkEnd(1); - Log.LogBenchmark('Initializing 3D', 1); - - // Score Saving System - Log.BenchmarkStart(1); - Log.LogStatus('DataBase System', 'Initialization'); - DataBase := TDataBaseSystem.Create; - - if (Params.ScoreFile = '') then - DataBase.Init ('Ultrastar.db') - else - DataBase.Init (Params.ScoreFile); - - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading DataBase System', 1); - - //Playlist Manager - Log.BenchmarkStart(1); - Log.LogStatus('Playlist Manager', 'Initialization'); - PlaylistMan := TPlaylistManager.Create; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Playlist Manager', 1); - - //GoldenStarsTwinkleMod - Log.BenchmarkStart(1); - Log.LogStatus('Effect Manager', 'Initialization'); - GoldenRec := TEffectManager.Create; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Loading Particel System', 1); - - // Joypad - if (Ini.Joypad = 1) OR (Params.Joypad) then begin - Log.BenchmarkStart(1); - Log.LogStatus('Initialize Joystick', 'Initialization'); Joy := TJoy.Create; - Log.BenchmarkEnd(1); - Log.LogBenchmark('Initializing Joystick', 1); - end; - - Log.BenchmarkEnd(0); - Log.LogBenchmark('Loading Time', 0); - - Log.LogError('Creating Core'); - Core := TCore.Create('Ultrastar Deluxe Beta', MakeVersion(1,1,0, chr(0))); - - Log.LogError('Running Core'); - Core.Run; - - //------------------------------ - //Start- Mainloop - //------------------------------ - //Music.SetLoop(true); - //Music.SetVolume(50); - //Music.Open(SkinPath + 'Menu Music 3.mp3'); - //Music.Play; - Log.LogStatus('Main Loop', 'Initialization'); MainLoop; - - //------------------------------ - //Finish Application - //------------------------------ - if Ini.LPT = 1 then LCD.Clear; - if Ini.LPT = 2 then Light.TurnOff; - - Log.LogStatus('Main Loop', 'Finished'); - - Log.Free; - -end. \ No newline at end of file + Main; +end. \ No newline at end of file diff --git a/Game/Code/lib/FreeImage/FreeBitmap.pas b/Game/Code/lib/FreeImage/FreeBitmap.pas new file mode 100755 index 00000000..47be822e --- /dev/null +++ b/Game/Code/lib/FreeImage/FreeBitmap.pas @@ -0,0 +1,1740 @@ +unit FreeBitmap; + +{$I switches.inc} + + +// ========================================================== +// +// Delphi wrapper for FreeImage 3 +// +// Design and implementation by +// - Anatoliy Pulyaevskiy (xvel84@rambler.ru) +// +// Contributors: +// - Enzo Costantini (enzocostantini@libero.it) +// +// This file is part of FreeImage 3 +// +// COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY +// OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES +// THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE +// OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED +// CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT +// THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY +// SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL +// PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER +// THIS DISCLAIMER. +// +// Use at your own risk! +// +// ========================================================== +// +// From begining all code of this file is based on C++ wrapper to +// FreeImage - FreeImagePlus. +// +// ========================================================== + +interface + +uses + SysUtils, Classes, Windows, FreeImage; + +type + { TFreeObject } + + TFreeObject = class(TObject) + public + function IsValid: Boolean; virtual; + end; + + { TFreeTag } + + TFreeTag = class(TFreeObject) + private + // fields + FTag: PFITAG; + + // getters & setters + function GetCount: Cardinal; + function GetDescription: string; + function GetID: Word; + function GetKey: string; + function GetLength: Cardinal; + function GetTagType: FREE_IMAGE_MDTYPE; + function GetValue: Pointer; + procedure SetCount(const Value: Cardinal); + procedure SetDescription(const Value: string); + procedure SetID(const Value: Word); + procedure SetKey(const Value: string); + procedure SetLength(const Value: Cardinal); + procedure SetTagType(const Value: FREE_IMAGE_MDTYPE); + procedure SetValue(const Value: Pointer); + public + // construction & destruction + constructor Create(ATag: PFITAG = nil); virtual; + destructor Destroy; override; + + // methods + function Clone: TFreeTag; + function IsValid: Boolean; override; + function ToString(Model: FREE_IMAGE_MDMODEL; Make: PChar = nil): string; + + // properties + property Key: string read GetKey write SetKey; + property Description: string read GetDescription write SetDescription; + property ID: Word read GetID write SetID; + property TagType: FREE_IMAGE_MDTYPE read GetTagType write SetTagType; + property Count: Cardinal read GetCount write SetCount; + property Length: Cardinal read GetLength write SetLength; + property Value: Pointer read GetValue write SetValue; + property Tag: PFITAG read FTag; + end; + + { forward declarations } + + TFreeBitmap = class; + TFreeMemoryIO = class; + + { TFreeBitmap } + + TFreeBitmapChangingEvent = procedure(Sender: TFreeBitmap; var OldDib, NewDib: PFIBITMAP; var Handled: Boolean) of object; + + TFreeBitmap = class(TFreeObject) + private + // fields + FDib: PFIBITMAP; + FOnChange: TNotifyEvent; + FOnChanging: TFreeBitmapChangingEvent; + + procedure SetDib(Value: PFIBITMAP); + protected + function DoChanging(var OldDib, NewDib: PFIBITMAP): Boolean; dynamic; + function Replace(NewDib: PFIBITMAP): Boolean; dynamic; + public + constructor Create(ImageType: FREE_IMAGE_TYPE = FIT_BITMAP; Width: Integer = 0; Height: Integer = 0; Bpp: Integer = 0); + destructor Destroy; override; + function SetSize(ImageType: FREE_IMAGE_TYPE; Width, Height, Bpp: Integer; RedMask: Cardinal = 0; GreenMask: Cardinal = 0; BlueMask: Cardinal = 0): Boolean; + procedure Change; dynamic; + procedure Assign(Source: TFreeBitmap); + function CopySubImage(Left, Top, Right, Bottom: Integer; Dest: TFreeBitmap): Boolean; + function PasteSubImage(Src: TFreeBitmap; Left, Top: Integer; Alpha: Integer = 256): Boolean; + procedure Clear; virtual; + function Load(const FileName: string; Flag: Integer = 0): Boolean; + function LoadU(const FileName: WideString; Flag: Integer = 0): Boolean; + function LoadFromHandle(IO: PFreeImageIO; Handle: fi_handle; Flag: Integer = 0): Boolean; + function LoadFromMemory(MemIO: TFreeMemoryIO; Flag: Integer = 0): Boolean; + function LoadFromStream(Stream: TStream; Flag: Integer = 0): Boolean; + // save functions + function CanSave(fif: FREE_IMAGE_FORMAT): Boolean; + function Save(const FileName: string; Flag: Integer = 0): Boolean; + function SaveU(const FileName: WideString; Flag: Integer = 0): Boolean; + function SaveToHandle(fif: FREE_IMAGE_FORMAT; IO: PFreeImageIO; Handle: fi_handle; Flag: Integer = 0): Boolean; + function SaveToMemory(fif: FREE_IMAGE_FORMAT; MemIO: TFreeMemoryIO; Flag: Integer = 0): Boolean; + function SaveToStream(fif: FREE_IMAGE_FORMAT; Stream: TStream; Flag: Integer = 0): Boolean; + // image information + function GetImageType: FREE_IMAGE_TYPE; + function GetWidth: Integer; + function GetHeight: Integer; + function GetScanWidth: Integer; + function IsValid: Boolean; override; + function GetInfo: PBitmapInfo; + function GetInfoHeader: PBitmapInfoHeader; + function GetImageSize: Cardinal; + function GetBitsPerPixel: Integer; + function GetLine: Integer; + function GetHorizontalResolution: Double; + function GetVerticalResolution: Double; + procedure SetHorizontalResolution(Value: Double); + procedure SetVerticalResolution(Value: Double); + // palette operations + function GetPalette: PRGBQUAD; + function GetPaletteSize: Integer; + function GetColorsUsed: Integer; + function GetColorType: FREE_IMAGE_COLOR_TYPE; + function IsGrayScale: Boolean; + // pixels access + function AccessPixels: PByte; + function GetScanLine(ScanLine: Integer): PByte; + function GetPixelIndex(X, Y: Cardinal; var Value: PByte): Boolean; + function GetPixelColor(X, Y: Cardinal; Value: PRGBQUAD): Boolean; + function SetPixelIndex(X, Y: Cardinal; Value: PByte): Boolean; + function SetPixelColor(X, Y: Cardinal; Value: PRGBQUAD): Boolean; + // convertion + function ConvertToStandardType(ScaleLinear: Boolean): Boolean; + function ConvertToType(ImageType: FREE_IMAGE_TYPE; ScaleLinear: Boolean): Boolean; + function Threshold(T: Byte): Boolean; + function ConvertTo4Bits: Boolean; + function ConvertTo8Bits: Boolean; + function ConvertTo16Bits555: Boolean; + function ConvertTo16Bits565: Boolean; + function ConvertTo24Bits: Boolean; + function ConvertTo32Bits: Boolean; + function ConvertToGrayscale: Boolean; + function ColorQuantize(Algorithm: FREE_IMAGE_QUANTIZE): Boolean; + function Dither(Algorithm: FREE_IMAGE_DITHER): Boolean; + function ConvertToRGBF: Boolean; + function ToneMapping(TMO: FREE_IMAGE_TMO; FirstParam, SecondParam: Double): Boolean; + // transparency + function IsTransparent: Boolean; + function GetTransparencyCount: Cardinal; + function GetTransparencyTable: PByte; + procedure SetTransparencyTable(Table: PByte; Count: Integer); + function HasFileBkColor: Boolean; + function GetFileBkColor(var BkColor: PRGBQuad): Boolean; + function SetFileBkColor(BkColor: PRGBQuad): Boolean; + // channel processing routines + function GetChannel(Bitmap: TFreeBitmap; Channel: FREE_IMAGE_COLOR_CHANNEL): Boolean; + function SetChannel(Bitmap: TFreeBitmap; Channel: FREE_IMAGE_COLOR_CHANNEL): Boolean; + function SplitChannels(RedChannel, GreenChannel, BlueChannel: TFreeBitmap): Boolean; + function CombineChannels(Red, Green, Blue: TFreeBitmap): Boolean; + // rotation and flipping + function RotateEx(Angle, XShift, YShift, XOrigin, YOrigin: Double; UseMask: Boolean): Boolean; + function Rotate(Angle: Double): Boolean; + function FlipHorizontal: Boolean; + function FlipVertical: Boolean; + // color manipulation routines + function Invert: Boolean; + function AdjustCurve(Lut: PByte; Channel: FREE_IMAGE_COLOR_CHANNEL): Boolean; + function AdjustGamma(Gamma: Double): Boolean; + function AdjustBrightness(Percentage: Double): Boolean; + function AdjustContrast(Percentage: Double): Boolean; + function GetHistogram(Histo: PDWORD; Channel: FREE_IMAGE_COLOR_CHANNEL = FICC_BLACK): Boolean; + // upsampling / downsampling + procedure MakeThumbnail(const Width, Height: Integer; DestBitmap: TFreeBitmap); + function Rescale(NewWidth, NewHeight: Integer; Filter: FREE_IMAGE_FILTER; Dest: TFreeBitmap = nil): Boolean; + // metadata routines + function FindFirstMetadata(Model: FREE_IMAGE_MDMODEL; var Tag: TFreeTag): PFIMETADATA; + function FindNextMetadata(MDHandle: PFIMETADATA; var Tag: TFreeTag): Boolean; + procedure FindCloseMetadata(MDHandle: PFIMETADATA); + function SetMetadata(Model: FREE_IMAGE_MDMODEL; const Key: string; Tag: TFreeTag): Boolean; + function GetMetadata(Model: FREE_IMAGE_MDMODEL; const Key: string; var Tag: TFreeTag): Boolean; + function GetMetadataCount(Model: FREE_IMAGE_MDMODEL): Cardinal; + + // properties + property Dib: PFIBITMAP read FDib write SetDib; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + property OnChanging: TFreeBitmapChangingEvent read FOnChanging write FOnChanging; + end; + + { TFreeWinBitmap } + + + { TFreeMemoryIO } + + TFreeMemoryIO = class(TFreeObject) + private + FHMem: PFIMEMORY; + public + // construction and destruction + constructor Create(Data: PByte = nil; SizeInBytes: DWORD = 0); + destructor Destroy; override; + + function GetFileType: FREE_IMAGE_FORMAT; + function Read(fif: FREE_IMAGE_FORMAT; Flag: Integer = 0): PFIBITMAP; + function Write(fif: FREE_IMAGE_FORMAT; dib: PFIBITMAP; Flag: Integer = 0): Boolean; + function Tell: Longint; + function Seek(Offset: Longint; Origin: Word): Boolean; + function Acquire(var Data: PByte; var SizeInBytes: DWORD): Boolean; + // overriden methods + function IsValid: Boolean; override; + end; + + { TFreeMultiBitmap } + + TFreeMultiBitmap = class(TFreeObject) + private + FMPage: PFIMULTIBITMAP; + FMemoryCache: Boolean; + public + // constructor and destructor + constructor Create(KeepCacheInMemory: Boolean = False); + destructor Destroy; override; + + // methods + function Open(const FileName: string; CreateNew, ReadOnly: Boolean; Flags: Integer = 0): Boolean; + function Close(Flags: Integer = 0): Boolean; + function GetPageCount: Integer; + procedure AppendPage(Bitmap: TFreeBitmap); + procedure InsertPage(Page: Integer; Bitmap: TFreeBitmap); + procedure DeletePage(Page: Integer); + function MovePage(Target, Source: Integer): Boolean; + procedure LockPage(Page: Integer; DestBitmap: TFreeBitmap); + procedure UnlockPage(Bitmap: TFreeBitmap; Changed: Boolean); + function GetLockedPageNumbers(var Pages: Integer; var Count: Integer): Boolean; + // overriden methods + function IsValid: Boolean; override; + + // properties + // change of this property influences only on the next opening of a file + property MemoryCache: Boolean read FMemoryCache write FMemoryCache; + end; + +implementation + +const + ThumbSize = 150; + +// marker used for clipboard copy / paste + +procedure SetFreeImageMarker(bmih: PBitmapInfoHeader; dib: PFIBITMAP); +begin + // Windows constants goes from 0L to 5L + // Add $FF to avoid conflicts + bmih.biCompression := $FF + FreeImage_GetImageType(dib); +end; + +function GetFreeImageMarker(bmih: PBitmapInfoHeader): FREE_IMAGE_TYPE; +begin + Result := FREE_IMAGE_TYPE(bmih.biCompression - $FF); +end; + +{ TFreePersistent } + +function TFreeObject.IsValid: Boolean; +begin + Result := False +end; + +{ TFreeBitmap } + +function TFreeBitmap.AccessPixels: PByte; +begin + Result := FreeImage_GetBits(FDib) +end; + +function TFreeBitmap.AdjustBrightness(Percentage: Double): Boolean; +begin + if FDib <> nil then + begin + Result := FreeImage_AdjustBrightness(FDib, Percentage); + Change; + end + else + Result := False +end; + +function TFreeBitmap.AdjustContrast(Percentage: Double): Boolean; +begin + if FDib <> nil then + begin + Result := FreeImage_AdjustContrast(FDib, Percentage); + Change; + end + else + Result := False +end; + +function TFreeBitmap.AdjustCurve(Lut: PByte; + Channel: FREE_IMAGE_COLOR_CHANNEL): Boolean; +begin + if FDib <> nil then + begin + Result := FreeImage_AdjustCurve(FDib, Lut, Channel); + Change; + end + else + Result := False +end; + +function TFreeBitmap.AdjustGamma(Gamma: Double): Boolean; +begin + if FDib <> nil then + begin + Result := FreeImage_AdjustGamma(FDib, Gamma); + Change; + end + else + Result := False +end; + +procedure TFreeBitmap.Assign(Source: TFreeBitmap); +var + SourceBmp: TFreeBitmap; + Clone: PFIBITMAP; +begin + if Source = nil then + begin + Clear; + Exit; + end; + + if Source is TFreeBitmap then + begin + SourceBmp := TFreeBitmap(Source); + if SourceBmp <> Self then + begin + if SourceBmp.IsValid then + begin + Clone := FreeImage_Clone(SourceBmp.FDib); + Replace(Clone); + end + else + Clear; + end; + end; +end; + +function TFreeBitmap.CanSave(fif: FREE_IMAGE_FORMAT): Boolean; +var + ImageType: FREE_IMAGE_TYPE; + Bpp: Word; +begin + Result := False; + if not IsValid then Exit; + + if fif <> FIF_UNKNOWN then + begin + // check that the dib can be saved in this format + ImageType := FreeImage_GetImageType(FDib); + if ImageType = FIT_BITMAP then + begin + // standard bitmap type + Bpp := FreeImage_GetBPP(FDib); + Result := FreeImage_FIFSupportsWriting(fif) + and FreeImage_FIFSupportsExportBPP(fif, Bpp); + end + else // special bitmap type + Result := FreeImage_FIFSupportsExportType(fif, ImageType); + end; +end; + +procedure TFreeBitmap.Change; +begin + if Assigned(FOnChange) then FOnChange(Self) +end; + +procedure TFreeBitmap.Clear; +begin + if FDib <> nil then + begin + FreeImage_Unload(FDib); + FDib := nil; + Change; + end; +end; + +function TFreeBitmap.ColorQuantize( + Algorithm: FREE_IMAGE_QUANTIZE): Boolean; +var + dib8: PFIBITMAP; +begin + if FDib <> nil then + begin + dib8 := FreeImage_ColorQuantize(FDib, Algorithm); + Result := Replace(dib8); + end + else + Result := False; +end; + +function TFreeBitmap.CombineChannels(Red, Green, + Blue: TFreeBitmap): Boolean; +var + Width, Height: Integer; +begin + if FDib = nil then + begin + Width := Red.GetWidth; + Height := Red.GetHeight; + FDib := FreeImage_Allocate(Width, Height, 24, FI_RGBA_RED_MASK, + FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK); + end; + + if FDib <> nil then + begin + Result := FreeImage_SetChannel(FDib, Red.FDib, FICC_RED) and + FreeImage_SetChannel(FDib, Green.FDib, FICC_GREEN) and + FreeImage_SetChannel(FDib, Blue.FDib, FICC_BLUE); + + Change + end + else + Result := False; +end; + +function TFreeBitmap.ConvertTo16Bits555: Boolean; +var + dib16_555: PFIBITMAP; +begin + if FDib <> nil then + begin + dib16_555 := FreeImage_ConvertTo16Bits555(FDib); + Result := Replace(dib16_555); + end + else + Result := False +end; + +function TFreeBitmap.ConvertTo16Bits565: Boolean; +var + dib16_565: PFIBITMAP; +begin + if FDib <> nil then + begin + dib16_565 := FreeImage_ConvertTo16Bits565(FDib); + Result := Replace(dib16_565); + end + else + Result := False +end; + +function TFreeBitmap.ConvertTo24Bits: Boolean; +var + dibRGB: PFIBITMAP; +begin + if FDib <> nil then + begin + dibRGB := FreeImage_ConvertTo24Bits(FDib); + Result := Replace(dibRGB); + end + else + Result := False +end; + +function TFreeBitmap.ConvertTo32Bits: Boolean; +var + dib32: PFIBITMAP; +begin + if FDib <> nil then + begin + dib32 := FreeImage_ConvertTo32Bits(FDib); + Result := Replace(dib32); + end + else + Result := False +end; + +function TFreeBitmap.ConvertTo4Bits: Boolean; +var + dib4: PFIBITMAP; +begin + Result := False; + if IsValid then + begin + dib4 := FreeImage_ConvertTo4Bits(FDib); + Result := Replace(dib4); + end; +end; + +function TFreeBitmap.ConvertTo8Bits: Boolean; +var + dib8: PFIBITMAP; +begin + if FDib <> nil then + begin + dib8 := FreeImage_ConvertTo8Bits(FDib); + Result := Replace(dib8); + end + else + Result := False +end; + +function TFreeBitmap.ConvertToGrayscale: Boolean; +var + dib8: PFIBITMAP; +begin + Result := False; + + if IsValid then + begin + dib8 := FreeImage_ConvertToGreyscale(FDib); + Result := Replace(dib8); + end +end; + +function TFreeBitmap.ConvertToRGBF: Boolean; +var + ImageType: FREE_IMAGE_TYPE; + NewDib: PFIBITMAP; +begin + Result := False; + if not IsValid then Exit; + + ImageType := GetImageType; + + if (ImageType = FIT_BITMAP) then + begin + if GetBitsPerPixel < 24 then + if not ConvertTo24Bits then + Exit + end; + NewDib := FreeImage_ConvertToRGBF(FDib); + Result := Replace(NewDib); +end; + +function TFreeBitmap.ConvertToStandardType(ScaleLinear: Boolean): Boolean; +var + dibStandard: PFIBITMAP; +begin + if IsValid then + begin + dibStandard := FreeImage_ConvertToStandardType(FDib, ScaleLinear); + Result := Replace(dibStandard); + end + else + Result := False; +end; + +function TFreeBitmap.ConvertToType(ImageType: FREE_IMAGE_TYPE; + ScaleLinear: Boolean): Boolean; +var + dib: PFIBITMAP; +begin + if FDib <> nil then + begin + dib := FreeImage_ConvertToType(FDib, ImageType, ScaleLinear); + Result := Replace(dib) + end + else + Result := False +end; + +function TFreeBitmap.CopySubImage(Left, Top, Right, Bottom: Integer; + Dest: TFreeBitmap): Boolean; +begin + if FDib <> nil then + begin + Dest.FDib := FreeImage_Copy(FDib, Left, Top, Right, Bottom); + Result := Dest.IsValid; + end else + Result := False; +end; + +constructor TFreeBitmap.Create(ImageType: FREE_IMAGE_TYPE; Width, Height, + Bpp: Integer); +begin + inherited Create; + + FDib := nil; + if (Width > 0) and (Height > 0) and (Bpp > 0) then + SetSize(ImageType, Width, Height, Bpp); +end; + +destructor TFreeBitmap.Destroy; +begin + if FDib <> nil then + FreeImage_Unload(FDib); + inherited; +end; + +function TFreeBitmap.Dither(Algorithm: FREE_IMAGE_DITHER): Boolean; +var + dib: PFIBITMAP; +begin + if FDib <> nil then + begin + dib := FreeImage_Dither(FDib, Algorithm); + Result := Replace(dib); + end + else + Result := False; +end; + +function TFreeBitmap.DoChanging(var OldDib, NewDib: PFIBITMAP): Boolean; +begin + Result := False; + if (OldDib <> NewDib) and Assigned(FOnChanging) then + FOnChanging(Self, OldDib, NewDib, Result); +end; + +procedure TFreeBitmap.FindCloseMetadata(MDHandle: PFIMETADATA); +begin + FreeImage_FindCloseMetadata(MDHandle); +end; + +function TFreeBitmap.FindFirstMetadata(Model: FREE_IMAGE_MDMODEL; + var Tag: TFreeTag): PFIMETADATA; +begin + Result := FreeImage_FindFirstMetadata(Model, FDib, Tag.FTag); +end; + +function TFreeBitmap.FindNextMetadata(MDHandle: PFIMETADATA; + var Tag: TFreeTag): Boolean; +begin + Result := FreeImage_FindNextMetadata(MDHandle, Tag.FTag); +end; + +function TFreeBitmap.FlipHorizontal: Boolean; +begin + if FDib <> nil then + begin + Result := FreeImage_FlipHorizontal(FDib); + Change; + end + else + Result := False +end; + +function TFreeBitmap.FlipVertical: Boolean; +begin + if FDib <> nil then + begin + Result := FreeImage_FlipVertical(FDib); + Change; + end + else + Result := False +end; + +function TFreeBitmap.GetBitsPerPixel: Integer; +begin + Result := FreeImage_GetBPP(FDib) +end; + +function TFreeBitmap.GetChannel(Bitmap: TFreeBitmap; + Channel: FREE_IMAGE_COLOR_CHANNEL): Boolean; +begin + if FDib <> nil then + begin + Bitmap.Dib := FreeImage_GetChannel(FDib, Channel); + Result := Bitmap.IsValid; + end + else + Result := False +end; + +function TFreeBitmap.GetColorsUsed: Integer; +begin + Result := FreeImage_GetColorsUsed(FDib) +end; + +function TFreeBitmap.GetColorType: FREE_IMAGE_COLOR_TYPE; +begin + Result := FreeImage_GetColorType(FDib); +end; + +function TFreeBitmap.GetFileBkColor(var BkColor: PRGBQuad): Boolean; +begin + Result := FreeImage_GetBackgroundColor(FDib, BkColor) +end; + +function TFreeBitmap.GetHeight: Integer; +begin + Result := FreeImage_GetHeight(FDib) +end; + +function TFreeBitmap.GetHistogram(Histo: PDWORD; + Channel: FREE_IMAGE_COLOR_CHANNEL): Boolean; +begin + if FDib <> nil then + Result := FreeImage_GetHistogram(FDib, Histo, Channel) + else + Result := False +end; + +function TFreeBitmap.GetHorizontalResolution: Double; +begin + Result := FreeImage_GetDotsPerMeterX(FDib) / 100 +end; + +function TFreeBitmap.GetImageSize: Cardinal; +begin + Result := FreeImage_GetDIBSize(FDib); +end; + +function TFreeBitmap.GetImageType: FREE_IMAGE_TYPE; +begin + Result := FreeImage_GetImageType(FDib); +end; + +function TFreeBitmap.GetInfo: PBitmapInfo; +begin + Result := FreeImage_GetInfo(FDib^) +end; + +function TFreeBitmap.GetInfoHeader: PBITMAPINFOHEADER; +begin + Result := FreeImage_GetInfoHeader(FDib) +end; + +function TFreeBitmap.GetLine: Integer; +begin + Result := FreeImage_GetLine(FDib) +end; + +function TFreeBitmap.GetMetadata(Model: FREE_IMAGE_MDMODEL; + const Key: string; var Tag: TFreeTag): Boolean; +begin + Result := FreeImage_GetMetaData(Model, FDib, PChar(Key), Tag.FTag); +end; + +function TFreeBitmap.GetMetadataCount(Model: FREE_IMAGE_MDMODEL): Cardinal; +begin + Result := FreeImage_GetMetadataCount(Model, FDib); +end; + +function TFreeBitmap.GetPalette: PRGBQUAD; +begin + Result := FreeImage_GetPalette(FDib) +end; + +function TFreeBitmap.GetPaletteSize: Integer; +begin + Result := FreeImage_GetColorsUsed(FDib) * SizeOf(RGBQUAD) +end; + +function TFreeBitmap.GetPixelColor(X, Y: Cardinal; Value: PRGBQUAD): Boolean; +begin + Result := FreeImage_GetPixelColor(FDib, X, Y, Value) +end; + +function TFreeBitmap.GetPixelIndex(X, Y: Cardinal; + var Value: PByte): Boolean; +begin + Result := FreeImage_GetPixelIndex(FDib, X, Y, Value) +end; + +function TFreeBitmap.GetScanLine(ScanLine: Integer): PByte; +var + H: Integer; +begin + H := FreeImage_GetHeight(FDib); + if ScanLine < H then + Result := FreeImage_GetScanLine(FDib, ScanLine) + else + Result := nil; +end; + +function TFreeBitmap.GetScanWidth: Integer; +begin + Result := FreeImage_GetPitch(FDib) +end; + +function TFreeBitmap.GetTransparencyCount: Cardinal; +begin + Result := FreeImage_GetTransparencyCount(FDib) +end; + +function TFreeBitmap.GetTransparencyTable: PByte; +begin + Result := FreeImage_GetTransparencyTable(FDib) +end; + +function TFreeBitmap.GetVerticalResolution: Double; +begin + Result := FreeImage_GetDotsPerMeterY(Fdib) / 100 +end; + +function TFreeBitmap.GetWidth: Integer; +begin + Result := FreeImage_GetWidth(FDib) +end; + +function TFreeBitmap.HasFileBkColor: Boolean; +begin + Result := FreeImage_HasBackgroundColor(FDib) +end; + +function TFreeBitmap.Invert: Boolean; +begin + if FDib <> nil then + begin + Result := FreeImage_Invert(FDib); + Change; + end + else + Result := False +end; + +function TFreeBitmap.IsGrayScale: Boolean; +begin + Result := (FreeImage_GetBPP(FDib) = 8) + and (FreeImage_GetColorType(FDib) = FIC_PALETTE); +end; + +function TFreeBitmap.IsTransparent: Boolean; +begin + Result := FreeImage_IsTransparent(FDib); +end; + +function TFreeBitmap.IsValid: Boolean; +begin + Result := FDib <> nil +end; + +function TFreeBitmap.Load(const FileName: string; Flag: Integer): Boolean; +var + fif: FREE_IMAGE_FORMAT; +begin + + // check the file signature and get its format + fif := FreeImage_GetFileType(PChar(Filename), 0); + if fif = FIF_UNKNOWN then + // no signature? + // try to guess the file format from the file extention + fif := FreeImage_GetFIFFromFilename(PChar(FileName)); + + // check that the plugin has reading capabilities ... + if (fif <> FIF_UNKNOWN) and FreeImage_FIFSupportsReading(FIF) then + begin + // free the previous dib + if FDib <> nil then + FreeImage_Unload(dib); + + // load the file + FDib := FreeImage_Load(fif, PChar(FileName), Flag); + + Change; + Result := IsValid; + end else + Result := False; +end; + +function TFreeBitmap.LoadFromHandle(IO: PFreeImageIO; Handle: fi_handle; + Flag: Integer): Boolean; +var + fif: FREE_IMAGE_FORMAT; +begin + // check the file signature and get its format + fif := FreeImage_GetFileTypeFromHandle(IO, Handle, 16); + if (fif <> FIF_UNKNOWN) and FreeImage_FIFSupportsReading(fif) then + begin + // free the previous dib + if FDib <> nil then + FreeImage_Unload(FDib); + + // load the file + FDib := FreeImage_LoadFromHandle(fif, IO, Handle, Flag); + + Change; + Result := IsValid; + end else + Result := False; +end; + +function TFreeBitmap.LoadFromMemory(MemIO: TFreeMemoryIO; + Flag: Integer): Boolean; +var + fif: FREE_IMAGE_FORMAT; +begin + + // check the file signature and get its format + fif := MemIO.GetFileType; + if (fif <> FIF_UNKNOWN) and FreeImage_FIFSupportsReading(fif) then + begin + // free the previous dib + if FDib <> nil then + FreeImage_Unload(FDib); + + // load the file + FDib := MemIO.Read(fif, Flag); + + Result := IsValid; + Change; + end else + Result := False; +end; + +function TFreeBitmap.LoadFromStream(Stream: TStream; + Flag: Integer): Boolean; +var + MemIO: TFreeMemoryIO; + Data: PByte; + MemStream: TMemoryStream; + Size: Cardinal; +begin + Size := Stream.Size; + + MemStream := TMemoryStream.Create; + try + MemStream.CopyFrom(Stream, Size); + Data := MemStream.Memory; + + MemIO := TFreeMemoryIO.Create(Data, Size); + try + Result := LoadFromMemory(MemIO); + finally + MemIO.Free; + end; + finally + MemStream.Free; + end; +end; + +function TFreeBitmap.LoadU(const FileName: WideString; + Flag: Integer): Boolean; +var + fif: FREE_IMAGE_FORMAT; +begin + + // check the file signature and get its format + fif := FreeImage_GetFileTypeU(PWideChar(Filename), 0); + if fif = FIF_UNKNOWN then + // no signature? + // try to guess the file format from the file extention + fif := FreeImage_GetFIFFromFilenameU(PWideChar(FileName)); + + // check that the plugin has reading capabilities ... + if (fif <> FIF_UNKNOWN) and FreeImage_FIFSupportsReading(FIF) then + begin + // free the previous dib + if FDib <> nil then + FreeImage_Unload(dib); + + // load the file + FDib := FreeImage_LoadU(fif, PWideChar(FileName), Flag); + + Change; + Result := IsValid; + end else + Result := False; +end; + +procedure TFreeBitmap.MakeThumbnail(const Width, Height: Integer; + DestBitmap: TFreeBitmap); +type + PRGB24 = ^TRGB24; + TRGB24 = packed record + B: Byte; + G: Byte; + R: Byte; + end; +var + x, y, ix, iy: integer; + x1, x2, x3: integer; + + xscale, yscale: single; + iRed, iGrn, iBlu, iRatio: Longword; + p, c1, c2, c3, c4, c5: TRGB24; + pt, pt1: PRGB24; + iSrc, iDst, s1: integer; + i, j, r, g, b, tmpY: integer; + + RowDest, RowSource, RowSourceStart: integer; + w, h: Integer; + dxmin, dymin: integer; + ny1, ny2, ny3: integer; + dx, dy: integer; + lutX, lutY: array of integer; + + SrcBmp, DestBmp: PFIBITMAP; +begin + if not IsValid then Exit; + + if (GetWidth <= ThumbSize) and (GetHeight <= ThumbSize) then + begin + DestBitmap.Assign(Self); + Exit; + end; + + w := Width; + h := Height; + + // prepare bitmaps + if GetBitsPerPixel <> 24 then + SrcBmp := FreeImage_ConvertTo24Bits(FDib) + else + SrcBmp := FDib; + DestBmp := FreeImage_Allocate(w, h, 24); + Assert(DestBmp <> nil, 'TFreeBitmap.MakeThumbnail error'); + +{ iDst := (w * 24 + 31) and not 31; + iDst := iDst div 8; //BytesPerScanline + iSrc := (GetWidth * 24 + 31) and not 31; + iSrc := iSrc div 8; +} + // BytesPerScanline + iDst := FreeImage_GetPitch(DestBmp); + iSrc := FreeImage_GetPitch(SrcBmp); + + xscale := 1 / (w / FreeImage_GetWidth(SrcBmp)); + yscale := 1 / (h / FreeImage_GetHeight(SrcBmp)); + + // X lookup table + SetLength(lutX, w); + x1 := 0; + x2 := trunc(xscale); + for x := 0 to w - 1 do + begin + lutX[x] := x2 - x1; + x1 := x2; + x2 := trunc((x + 2) * xscale); + end; + + // Y lookup table + SetLength(lutY, h); + x1 := 0; + x2 := trunc(yscale); + for x := 0 to h - 1 do + begin + lutY[x] := x2 - x1; + x1 := x2; + x2 := trunc((x + 2) * yscale); + end; + + Dec(w); + Dec(h); + RowDest := integer(FreeImage_GetScanLine(DestBmp, 0)); + RowSourceStart := integer(FreeImage_GetScanLine(SrcBmp, 0)); + RowSource := RowSourceStart; + + for y := 0 to h do + // resampling + begin + dy := lutY[y]; + x1 := 0; + x3 := 0; + for x := 0 to w do // loop through row + begin + dx:= lutX[x]; + iRed:= 0; + iGrn:= 0; + iBlu:= 0; + RowSource := RowSourceStart; + for iy := 1 to dy do + begin + pt := PRGB24(RowSource + x1); + for ix := 1 to dx do + begin + iRed := iRed + pt.R; + iGrn := iGrn + pt.G; + iBlu := iBlu + pt.B; + inc(pt); + end; + RowSource := RowSource + iSrc; + end; + iRatio := 65535 div (dx * dy); + pt1 := PRGB24(RowDest + x3); + pt1.R := (iRed * iRatio) shr 16; + pt1.G := (iGrn * iRatio) shr 16; + pt1.B := (iBlu * iRatio) shr 16; + x1 := x1 + 3 * dx; + inc(x3,3); + end; + RowDest := RowDest + iDst; + RowSourceStart := RowSource; + end; // resampling + + if FreeImage_GetHeight(DestBmp) >= 3 then + // Sharpening... + begin + s1 := integer(FreeImage_GetScanLine(DestBmp, 0)); + iDst := integer(FreeImage_GetScanLine(DestBmp, 1)) - s1; + ny1 := Integer(s1); + ny2 := ny1 + iDst; + ny3 := ny2 + iDst; + for y := 1 to FreeImage_GetHeight(DestBmp) - 2 do + begin + for x := 0 to FreeImage_GetWidth(DestBmp) - 3 do + begin + x1 := x * 3; + x2 := x1 + 3; + x3 := x1 + 6; + + c1 := pRGB24(ny1 + x1)^; + c2 := pRGB24(ny1 + x3)^; + c3 := pRGB24(ny2 + x2)^; + c4 := pRGB24(ny3 + x1)^; + c5 := pRGB24(ny3 + x3)^; + + r := (c1.R + c2.R + (c3.R * -12) + c4.R + c5.R) div -8; + g := (c1.G + c2.G + (c3.G * -12) + c4.G + c5.G) div -8; + b := (c1.B + c2.B + (c3.B * -12) + c4.B + c5.B) div -8; + + if r < 0 then r := 0 else if r > 255 then r := 255; + if g < 0 then g := 0 else if g > 255 then g := 255; + if b < 0 then b := 0 else if b > 255 then b := 255; + + pt1 := pRGB24(ny2 + x2); + pt1.R := r; + pt1.G := g; + pt1.B := b; + end; + inc(ny1, iDst); + inc(ny2, iDst); + inc(ny3, iDst); + end; + end; // sharpening + + if SrcBmp <> FDib then + FreeImage_Unload(SrcBmp); + DestBitmap.Replace(DestBmp); +end; + +function TFreeBitmap.PasteSubImage(Src: TFreeBitmap; Left, Top, + Alpha: Integer): Boolean; +begin + if FDib <> nil then + begin + Result := FreeImage_Paste(FDib, Src.Dib, Left, Top, Alpha); + Change; + end else + Result := False; +end; + +function TFreeBitmap.Replace(NewDib: PFIBITMAP): Boolean; +begin + Result := False; + if NewDib = nil then Exit; + + if not DoChanging(FDib, NewDib) and IsValid then + FreeImage_Unload(FDib); + + FDib := NewDib; + Result := True; + Change; +end; + +function TFreeBitmap.Rescale(NewWidth, NewHeight: Integer; + Filter: FREE_IMAGE_FILTER; Dest: TFreeBitmap): Boolean; +var + Bpp: Integer; + DstDib: PFIBITMAP; +begin + Result := False; + + if FDib <> nil then + begin + Bpp := FreeImage_GetBPP(FDib); + + if Bpp < 8 then + if not ConvertToGrayscale then Exit + else + if Bpp = 16 then + // convert to 24-bit + if not ConvertTo24Bits then Exit; + + // perform upsampling / downsampling + DstDib := FreeImage_Rescale(FDib, NewWidth, NewHeight, Filter); + if Dest = nil then + Result := Replace(DstDib) + else + Result := Dest.Replace(DstDib) + end +end; + +function TFreeBitmap.Rotate(Angle: Double): Boolean; +var + Bpp: Integer; + Rotated: PFIBITMAP; +begin + Result := False; + if IsValid then + begin + Bpp := FreeImage_GetBPP(FDib); + if Bpp in [1, 8, 24, 32] then + begin + Rotated := FreeImage_RotateClassic(FDib, Angle); + Result := Replace(Rotated); + end + end; +end; + +function TFreeBitmap.RotateEx(Angle, XShift, YShift, XOrigin, + YOrigin: Double; UseMask: Boolean): Boolean; +var + Rotated: PFIBITMAP; +begin + Result := False; + if FDib <> nil then + begin + if FreeImage_GetBPP(FDib) >= 8 then + begin + Rotated := FreeImage_RotateEx(FDib, Angle, XShift, YShift, XOrigin, YOrigin, UseMask); + Result := Replace(Rotated); + end + end; +end; + +function TFreeBitmap.Save(const FileName: string; Flag: Integer): Boolean; +var + fif: FREE_IMAGE_FORMAT; +begin + Result := False; + + // try to guess the file format from the file extension + fif := FreeImage_GetFIFFromFilename(PChar(Filename)); + if CanSave(fif) then + Result := FreeImage_Save(fif, FDib, PChar(FileName), Flag); +end; + +function TFreeBitmap.SaveToHandle(fif: FREE_IMAGE_FORMAT; IO: PFreeImageIO; + Handle: fi_handle; Flag: Integer): Boolean; +begin + Result := False; + if CanSave(fif) then + Result := FreeImage_SaveToHandle(fif, FDib, IO, Handle, Flag) +end; + +function TFreeBitmap.SaveToMemory(fif: FREE_IMAGE_FORMAT; + MemIO: TFreeMemoryIO; Flag: Integer): Boolean; +begin + Result := False; + + if CanSave(fif) then + Result := MemIO.Write(fif, FDib, Flag) +end; + +function TFreeBitmap.SaveToStream(fif: FREE_IMAGE_FORMAT; Stream: TStream; + Flag: Integer): Boolean; +var + MemIO: TFreeMemoryIO; + Data: PByte; + Size: Cardinal; +begin + MemIO := TFreeMemoryIO.Create; + try + Result := SaveToMemory(fif, MemIO, Flag); + if Result then + begin + MemIO.Acquire(Data, Size); + Stream.WriteBuffer(Data^, Size); + end; + finally + MemIO.Free; + end; +end; + +function TFreeBitmap.SaveU(const FileName: WideString; + Flag: Integer): Boolean; +var + fif: FREE_IMAGE_FORMAT; +begin + Result := False; + + // try to guess the file format from the file extension + fif := FreeImage_GetFIFFromFilenameU(PWideChar(Filename)); + if CanSave(fif) then + Result := FreeImage_SaveU(fif, FDib, PWideChar(FileName), Flag); +end; + +function TFreeBitmap.SetChannel(Bitmap: TFreeBitmap; + Channel: FREE_IMAGE_COLOR_CHANNEL): Boolean; +begin + if FDib <> nil then + begin + Result := FreeImage_SetChannel(FDib, Bitmap.FDib, Channel); + Change; + end + else + Result := False +end; + +procedure TFreeBitmap.SetDib(Value: PFIBITMAP); +begin + Replace(Value); +end; + +function TFreeBitmap.SetFileBkColor(BkColor: PRGBQuad): Boolean; +begin + Result := FreeImage_SetBackgroundColor(FDib, BkColor); + Change; +end; + +procedure TFreeBitmap.SetHorizontalResolution(Value: Double); +begin + if IsValid then + begin + FreeImage_SetDotsPerMeterX(FDib, Trunc(Value * 100 + 0.5)); + Change; + end; +end; + +function TFreeBitmap.SetMetadata(Model: FREE_IMAGE_MDMODEL; + const Key: string; Tag: TFreeTag): Boolean; +begin + Result := FreeImage_SetMetadata(Model, FDib, PChar(Key), Tag.Tag); +end; + +function TFreeBitmap.SetPixelColor(X, Y: Cardinal; + Value: PRGBQUAD): Boolean; +begin + Result := FreeImage_SetPixelColor(FDib, X, Y, Value); + Change; +end; + +function TFreeBitmap.SetPixelIndex(X, Y: Cardinal; Value: PByte): Boolean; +begin + Result := FreeImage_SetPixelIndex(FDib, X, Y, Value); + Change; +end; + +function TFreeBitmap.SetSize(ImageType: FREE_IMAGE_TYPE; Width, Height, + Bpp: Integer; RedMask, GreenMask, BlueMask: Cardinal): Boolean; +var + Pal: PRGBQuad; + I: Cardinal; +begin + Result := False; + + if FDib <> nil then + FreeImage_Unload(FDib); + + FDib := FreeImage_Allocate(Width, Height, Bpp, RedMask, GreenMask, BlueMask); + if FDib = nil then Exit; + + if ImageType = FIT_BITMAP then + case Bpp of + 1, 4, 8: + begin + Pal := FreeImage_GetPalette(FDib); + for I := 0 to FreeImage_GetColorsUsed(FDib) - 1 do + begin + Pal.rgbBlue := I; + Pal.rgbGreen := I; + Pal.rgbRed := I; + Inc(Pal, SizeOf(RGBQUAD)); + end; + end; + end; + + Result := True; + Change; +end; + +procedure TFreeBitmap.SetTransparencyTable(Table: PByte; Count: Integer); +begin + FreeImage_SetTransparencyTable(FDib, Table, Count); + Change; +end; + +procedure TFreeBitmap.SetVerticalResolution(Value: Double); +begin + if IsValid then + begin + FreeImage_SetDotsPerMeterY(FDib, Trunc(Value * 100 + 0.5)); + Change; + end; +end; + +function TFreeBitmap.SplitChannels(RedChannel, GreenChannel, + BlueChannel: TFreeBitmap): Boolean; +begin + if FDib <> nil then + begin + RedChannel.FDib := FreeImage_GetChannel(FDib, FICC_RED); + GreenChannel.FDib := FreeImage_GetChannel(FDib, FICC_GREEN); + BlueChannel.FDib := FreeImage_GetChannel(FDib, FICC_BLUE); + Result := RedChannel.IsValid and GreenChannel.IsValid and BlueChannel.IsValid; + end + else + Result := False +end; + +function TFreeBitmap.Threshold(T: Byte): Boolean; +var + dib1: PFIBITMAP; +begin + if FDib <> nil then + begin + dib1 := FreeImage_Threshold(FDib, T); + Result := Replace(dib1); + end + else + Result := False +end; + +function TFreeBitmap.ToneMapping(TMO: FREE_IMAGE_TMO; FirstParam, + SecondParam: Double): Boolean; +var + NewDib: PFIBITMAP; +begin + Result := False; + if not IsValid then Exit; + + NewDib := FreeImage_ToneMapping(Fdib, TMO, FirstParam, SecondParam); + Result := Replace(NewDib); +end; + + +{ TFreeMultiBitmap } + +procedure TFreeMultiBitmap.AppendPage(Bitmap: TFreeBitmap); +begin + if IsValid then + FreeImage_AppendPage(FMPage, Bitmap.FDib); +end; + +function TFreeMultiBitmap.Close(Flags: Integer): Boolean; +begin + Result := FreeImage_CloseMultiBitmap(FMPage, Flags); + FMPage := nil; +end; + +constructor TFreeMultiBitmap.Create(KeepCacheInMemory: Boolean); +begin + inherited Create; + FMemoryCache := KeepCacheInMemory; +end; + +procedure TFreeMultiBitmap.DeletePage(Page: Integer); +begin + if IsValid then + FreeImage_DeletePage(FMPage, Page); +end; + +destructor TFreeMultiBitmap.Destroy; +begin + if FMPage <> nil then Close; + inherited; +end; + +function TFreeMultiBitmap.GetLockedPageNumbers(var Pages, + Count: Integer): Boolean; +begin + Result := False; + if not IsValid then Exit; + Result := FreeImage_GetLockedPageNumbers(FMPage, Pages, Count) +end; + +function TFreeMultiBitmap.GetPageCount: Integer; +begin + Result := 0; + if IsValid then + Result := FreeImage_GetPageCount(FMPage) +end; + +procedure TFreeMultiBitmap.InsertPage(Page: Integer; Bitmap: TFreeBitmap); +begin + if IsValid then + FreeImage_InsertPage(FMPage, Page, Bitmap.FDib); +end; + +function TFreeMultiBitmap.IsValid: Boolean; +begin + Result := FMPage <> nil +end; + +procedure TFreeMultiBitmap.LockPage(Page: Integer; DestBitmap: TFreeBitmap); +begin + if not IsValid then Exit; + + if Assigned(DestBitmap) then + begin + DestBitmap.Replace(FreeImage_LockPage(FMPage, Page)); + end; +end; + +function TFreeMultiBitmap.MovePage(Target, Source: Integer): Boolean; +begin + Result := False; + if not IsValid then Exit; + Result := FreeImage_MovePage(FMPage, Target, Source); +end; + +function TFreeMultiBitmap.Open(const FileName: string; CreateNew, + ReadOnly: Boolean; Flags: Integer): Boolean; +var + fif: FREE_IMAGE_FORMAT; +begin + Result := False; + + // try to guess the file format from the filename + fif := FreeImage_GetFIFFromFilename(PChar(FileName)); + + // check for supported file types + if (fif <> FIF_UNKNOWN) and (not fif in [FIF_TIFF, FIF_ICO, FIF_GIF]) then + Exit; + + // open the stream + FMPage := FreeImage_OpenMultiBitmap(fif, PChar(FileName), CreateNew, ReadOnly, FMemoryCache, Flags); + + Result := FMPage <> nil; +end; + +procedure TFreeMultiBitmap.UnlockPage(Bitmap: TFreeBitmap; + Changed: Boolean); +begin + if IsValid then + begin + FreeImage_UnlockPage(FMPage, Bitmap.FDib, Changed); + // clear the image so that it becomes invalid. + // don't use Bitmap.Clear method because it calls FreeImage_Unload + // just clear the pointer + Bitmap.FDib := nil; + Bitmap.Change; + end; +end; + +{ TFreeMemoryIO } + +function TFreeMemoryIO.Acquire(var Data: PByte; + var SizeInBytes: DWORD): Boolean; +begin + Result := FreeImage_AcquireMemory(FHMem, Data, SizeInBytes); +end; + +constructor TFreeMemoryIO.Create(Data: PByte; SizeInBytes: DWORD); +begin + inherited Create; + FHMem := FreeImage_OpenMemory(Data, SizeInBytes); +end; + +destructor TFreeMemoryIO.Destroy; +begin + FreeImage_CloseMemory(FHMem); + inherited; +end; + +function TFreeMemoryIO.GetFileType: FREE_IMAGE_FORMAT; +begin + Result := FreeImage_GetFileTypeFromMemory(FHMem); +end; + +function TFreeMemoryIO.IsValid: Boolean; +begin + Result := FHMem <> nil +end; + +function TFreeMemoryIO.Read(fif: FREE_IMAGE_FORMAT; + Flag: Integer): PFIBITMAP; +begin + Result := FreeImage_LoadFromMemory(fif, FHMem, Flag) +end; + +function TFreeMemoryIO.Seek(Offset: Longint; Origin: Word): Boolean; +begin + Result := FreeImage_SeekMemory(FHMem, Offset, Origin) +end; + +function TFreeMemoryIO.Tell: Longint; +begin + Result := FreeImage_TellMemory(FHMem) +end; + +function TFreeMemoryIO.Write(fif: FREE_IMAGE_FORMAT; dib: PFIBITMAP; + Flag: Integer): Boolean; +begin + Result := FreeImage_SaveToMemory(fif, dib, FHMem, Flag) +end; + +{ TFreeTag } + +function TFreeTag.Clone: TFreeTag; +var + CloneTag: PFITAG; +begin + Result := nil; + if not IsValid then Exit; + + CloneTag := FreeImage_CloneTag(FTag); + Result := TFreeTag.Create(CloneTag); +end; + +constructor TFreeTag.Create(ATag: PFITAG); +begin + inherited Create; + + if ATag <> nil then + FTag := ATag + else + FTag := FreeImage_CreateTag; +end; + +destructor TFreeTag.Destroy; +begin + if IsValid then + FreeImage_DeleteTag(FTag); + + inherited; +end; + +function TFreeTag.GetCount: Cardinal; +begin + Result := 0; + if not IsValid then Exit; + + Result := FreeImage_GetTagCount(FTag); +end; + +function TFreeTag.GetDescription: string; +begin + Result := ''; + if not IsValid then Exit; + + Result := FreeImage_GetTagDescription(FTag); +end; + +function TFreeTag.GetID: Word; +begin + Result := 0; + if not IsValid then Exit; + + Result := FreeImage_GetTagID(FTag); +end; + +function TFreeTag.GetKey: string; +begin + Result := ''; + if not IsValid then Exit; + + Result := FreeImage_GetTagKey(FTag); +end; + +function TFreeTag.GetLength: Cardinal; +begin + Result := 0; + if not IsValid then Exit; + + Result := FreeImage_GetTagLength(FTag); +end; + +function TFreeTag.GetTagType: FREE_IMAGE_MDTYPE; +begin + Result := FIDT_NOTYPE; + if not IsValid then Exit; + + Result := FreeImage_GetTagType(FTag); +end; + +function TFreeTag.GetValue: Pointer; +begin + Result := nil; + if not IsValid then Exit; + + Result := FreeImage_GetTagValue(FTag); +end; + +function TFreeTag.IsValid: Boolean; +begin + Result := FTag <> nil; +end; + +procedure TFreeTag.SetCount(const Value: Cardinal); +begin + if IsValid then + FreeImage_SetTagCount(FTag, Value); +end; + +procedure TFreeTag.SetDescription(const Value: string); +begin + if IsValid then + FreeImage_SetTagDescription(FTag, PChar(Value)); +end; + +procedure TFreeTag.SetID(const Value: Word); +begin + if IsValid then + FreeImage_SetTagID(FTag, Value); +end; + +procedure TFreeTag.SetKey(const Value: string); +begin + if IsValid then + FreeImage_SetTagKey(FTag, PChar(Value)); +end; + +procedure TFreeTag.SetLength(const Value: Cardinal); +begin + if IsValid then + FreeImage_SetTagLength(FTag, Value); +end; + +procedure TFreeTag.SetTagType(const Value: FREE_IMAGE_MDTYPE); +begin + if IsValid then + FreeImage_SetTagType(FTag, Value); +end; + +procedure TFreeTag.SetValue(const Value: Pointer); +begin + if IsValid then + FreeImage_SetTagValue(FTag, Value); +end; + +function TFreeTag.ToString(Model: FREE_IMAGE_MDMODEL; Make: PChar): string; +begin + Result := FreeImage_TagToString(Model, FTag, Make); +end; + +end. diff --git a/Game/Code/lib/FreeImage/FreeImage.pas b/Game/Code/lib/FreeImage/FreeImage.pas new file mode 100755 index 00000000..a1c0e7de --- /dev/null +++ b/Game/Code/lib/FreeImage/FreeImage.pas @@ -0,0 +1,743 @@ +unit FreeImage; + +{$I switches.inc} + + + + +// ========================================================== +// Delphi wrapper for FreeImage 3 +// +// Design and implementation by +// - Simon Beavis +// - Peter Byström +// - Anatoliy Pulyaevskiy (xvel84@rambler.ru) +// +// This file is part of FreeImage 3 +// +// COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY +// OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES +// THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE +// OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED +// CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT +// THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY +// SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL +// PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER +// THIS DISCLAIMER. +// +// Use at your own risk! +// ========================================================== + +interface + +uses Windows; + +{$MINENUMSIZE 4} // Make sure enums are stored as an integer to be compatible with C/C++ + +const + FIDLL = 'libfreeimage.dylib'; + +// -------------------------------------------------------------------------- +// Bitmap types ------------------------------------------------------------- +// -------------------------------------------------------------------------- + +type + FIBITMAP = record + data : Pointer; + end; + PFIBITMAP = ^FIBITMAP; + + FIMULTIBITMAP = record + data : Pointer; + end; + PFIMULTIBITMAP = ^FIMULTIBITMAP; + +// -------------------------------------------------------------------------- +// Indexes for byte arrays, masks and shifts for treating pixels as words --- +// These coincide with the order of RGBQUAD and RGBTRIPLE ------------------- +// Little Endian (x86 / MS Windows, Linux) : BGR(A) order ------------------- +// -------------------------------------------------------------------------- + +const + FI_RGBA_RED = 2; + FI_RGBA_GREEN = 1; + FI_RGBA_BLUE = 0; + FI_RGBA_ALPHA = 3; + FI_RGBA_RED_MASK = $00FF0000; + FI_RGBA_GREEN_MASK = $0000FF00; + FI_RGBA_BLUE_MASK = $000000FF; + FI_RGBA_ALPHA_MASK = $FF000000; + FI_RGBA_RED_SHIFT = 16; + FI_RGBA_GREEN_SHIFT = 8; + FI_RGBA_BLUE_SHIFT = 0; + FI_RGBA_ALPHA_SHIFT = 24; + +// -------------------------------------------------------------------------- +// The 16bit macros only include masks and shifts, -------------------------- +// since each color element is not byte aligned ----------------------------- +// -------------------------------------------------------------------------- + +const + FI16_555_RED_MASK = $7C00; + FI16_555_GREEN_MASK = $03E0; + FI16_555_BLUE_MASK = $001F; + FI16_555_RED_SHIFT = 10; + FI16_555_GREEN_SHIFT = 5; + FI16_555_BLUE_SHIFT = 0; + FI16_565_RED_MASK = $F800; + FI16_565_GREEN_MASK = $07E0; + FI16_565_BLUE_MASK = $001F; + FI16_565_RED_SHIFT = 11; + FI16_565_GREEN_SHIFT = 5; + FI16_565_BLUE_SHIFT = 0; + +// -------------------------------------------------------------------------- +// ICC profile support ------------------------------------------------------ +// -------------------------------------------------------------------------- + +const + FIICC_DEFAULT = $0; + FIICC_COLOR_IS_CMYK = $1; + +type + FIICCPROFILE = record + flags : WORD; // info flag + size : DWORD; // profile's size measured in bytes + data : Pointer; // points to a block of contiguous memory containing the profile + end; + PFIICCPROFILE = ^FIICCPROFILE; + +// -------------------------------------------------------------------------- +// Important enums ---------------------------------------------------------- +// -------------------------------------------------------------------------- + +type + FREE_IMAGE_FORMAT = type Integer; + FREE_IMAGE_TYPE = type Integer; + FREE_IMAGE_COLOR_TYPE = type Integer; + FREE_IMAGE_QUANTIZE = type Integer; + FREE_IMAGE_DITHER = type Integer; + FREE_IMAGE_FILTER = type Integer; + FREE_IMAGE_COLOR_CHANNEL = type Integer; + FREE_IMAGE_MDTYPE = type Integer; + FREE_IMAGE_MDMODEL = type Integer; + FREE_IMAGE_JPEG_OPERATION = type Integer; + FREE_IMAGE_TMO = type Integer; + +const + // I/O image format identifiers. + FIF_UNKNOWN = FREE_IMAGE_FORMAT(-1); + FIF_BMP = FREE_IMAGE_FORMAT(0); + FIF_ICO = FREE_IMAGE_FORMAT(1); + FIF_JPEG = FREE_IMAGE_FORMAT(2); + FIF_JNG = FREE_IMAGE_FORMAT(3); + FIF_KOALA = FREE_IMAGE_FORMAT(4); + FIF_LBM = FREE_IMAGE_FORMAT(5); + FIF_IFF = FIF_LBM; + FIF_MNG = FREE_IMAGE_FORMAT(6); + FIF_PBM = FREE_IMAGE_FORMAT(7); + FIF_PBMRAW = FREE_IMAGE_FORMAT(8); + FIF_PCD = FREE_IMAGE_FORMAT(9); + FIF_PCX = FREE_IMAGE_FORMAT(10); + FIF_PGM = FREE_IMAGE_FORMAT(11); + FIF_PGMRAW = FREE_IMAGE_FORMAT(12); + FIF_PNG = FREE_IMAGE_FORMAT(13); + FIF_PPM = FREE_IMAGE_FORMAT(14); + FIF_PPMRAW = FREE_IMAGE_FORMAT(15); + FIF_RAS = FREE_IMAGE_FORMAT(16); + FIF_TARGA = FREE_IMAGE_FORMAT(17); + FIF_TIFF = FREE_IMAGE_FORMAT(18); + FIF_WBMP = FREE_IMAGE_FORMAT(19); + FIF_PSD = FREE_IMAGE_FORMAT(20); + FIF_CUT = FREE_IMAGE_FORMAT(21); + FIF_XBM = FREE_IMAGE_FORMAT(22); + FIF_XPM = FREE_IMAGE_FORMAT(23); + FIF_DDS = FREE_IMAGE_FORMAT(24); + FIF_GIF = FREE_IMAGE_FORMAT(25); + FIF_HDR = FREE_IMAGE_FORMAT(26); + FIF_FAXG3 = FREE_IMAGE_FORMAT(27); + FIF_SGI = FREE_IMAGE_FORMAT(28); + + // Image type used in FreeImage. + FIT_UNKNOWN = FREE_IMAGE_TYPE(0); // unknown type + FIT_BITMAP = FREE_IMAGE_TYPE(1); // standard image: 1-, 4-, 8-, 16-, 24-, 32-bit + FIT_UINT16 = FREE_IMAGE_TYPE(2); // array of unsigned short: unsigned 16-bit + FIT_INT16 = FREE_IMAGE_TYPE(3); // array of short: signed 16-bit + FIT_UINT32 = FREE_IMAGE_TYPE(4); // array of unsigned long: unsigned 32-bit + FIT_INT32 = FREE_IMAGE_TYPE(5); // array of long: signed 32-bit + FIT_FLOAT = FREE_IMAGE_TYPE(6); // array of float: 32-bit IEEE floating point + FIT_DOUBLE = FREE_IMAGE_TYPE(7); // array of double: 64-bit IEEE floating point + FIT_COMPLEX = FREE_IMAGE_TYPE(8); // array of FICOMPLEX: 2 x 64-bit IEEE floating point + FIT_RGB16 = FREE_IMAGE_TYPE(9); // 48-bit RGB image: 3 x 16-bit + FIT_RGBA16 = FREE_IMAGE_TYPE(10); // 64-bit RGBA image: 4 x 16-bit + FIT_RGBF = FREE_IMAGE_TYPE(11); // 96-bit RGB float image: 3 x 32-bit IEEE floating point + FIT_RGBAF = FREE_IMAGE_TYPE(12); // 128-bit RGBA float image: 4 x 32-bit IEEE floating point + + // Image color type used in FreeImage. + FIC_MINISWHITE = FREE_IMAGE_COLOR_TYPE(0); // min value is white + FIC_MINISBLACK = FREE_IMAGE_COLOR_TYPE(1); // min value is black + FIC_RGB = FREE_IMAGE_COLOR_TYPE(2); // RGB color model + FIC_PALETTE = FREE_IMAGE_COLOR_TYPE(3); // color map indexed + FIC_RGBALPHA = FREE_IMAGE_COLOR_TYPE(4); // RGB color model with alpha channel + FIC_CMYK = FREE_IMAGE_COLOR_TYPE(5); // CMYK color model + + // Color quantization algorithms. Constants used in FreeImage_ColorQuantize. + FIQ_WUQUANT = FREE_IMAGE_QUANTIZE(0); // Xiaolin Wu color quantization algorithm + FIQ_NNQUANT = FREE_IMAGE_QUANTIZE(1); // NeuQuant neural-net quantization algorithm by Anthony Dekker + + // Dithering algorithms. Constants used FreeImage_Dither. + FID_FS = FREE_IMAGE_DITHER(0); // Floyd & Steinberg error diffusion + FID_BAYER4x4 = FREE_IMAGE_DITHER(1); // Bayer ordered dispersed dot dithering (order 2 dithering matrix) + FID_BAYER8x8 = FREE_IMAGE_DITHER(2); // Bayer ordered dispersed dot dithering (order 3 dithering matrix) + FID_CLUSTER6x6 = FREE_IMAGE_DITHER(3); // Ordered clustered dot dithering (order 3 - 6x6 matrix) + FID_CLUSTER8x8 = FREE_IMAGE_DITHER(4); // Ordered clustered dot dithering (order 4 - 8x8 matrix) + FID_CLUSTER16x16 = FREE_IMAGE_DITHER(5); // Ordered clustered dot dithering (order 8 - 16x16 matrix) + + // Lossless JPEG transformations Constants used in FreeImage_JPEGTransform + FIJPEG_OP_NONE = FREE_IMAGE_JPEG_OPERATION(0); // no transformation + FIJPEG_OP_FLIP_H = FREE_IMAGE_JPEG_OPERATION(1); // horizontal flip + FIJPEG_OP_FLIP_V = FREE_IMAGE_JPEG_OPERATION(2); // vertical flip + FIJPEG_OP_TRANSPOSE = FREE_IMAGE_JPEG_OPERATION(3); // transpose across UL-to-LR axis + FIJPEG_OP_TRANSVERSE = FREE_IMAGE_JPEG_OPERATION(4); // transpose across UR-to-LL axis + FIJPEG_OP_ROTATE_90 = FREE_IMAGE_JPEG_OPERATION(5); // 90-degree clockwise rotation + FIJPEG_OP_ROTATE_180 = FREE_IMAGE_JPEG_OPERATION(6); // 180-degree rotation + FIJPEG_OP_ROTATE_270 = FREE_IMAGE_JPEG_OPERATION(7); // 270-degree clockwise (or 90 ccw) + + // Tone mapping operators. Constants used in FreeImage_ToneMapping. + FITMO_DRAGO03 = FREE_IMAGE_TMO(0); // Adaptive logarithmic mapping (F. Drago, 2003) + FITMO_REINHARD05 = FREE_IMAGE_TMO(1); // Dynamic range reduction inspired by photoreceptor physiology (E. Reinhard, 2005) + + // Upsampling / downsampling filters. Constants used in FreeImage_Rescale. + FILTER_BOX = FREE_IMAGE_FILTER(0); // Box, pulse, Fourier window, 1st order (constant) b-spline + FILTER_BICUBIC = FREE_IMAGE_FILTER(1); // Mitchell & Netravali's two-param cubic filter + FILTER_BILINEAR = FREE_IMAGE_FILTER(2); // Bilinear filter + FILTER_BSPLINE = FREE_IMAGE_FILTER(3); // 4th order (cubic) b-spline + FILTER_CATMULLROM = FREE_IMAGE_FILTER(4); // Catmull-Rom spline, Overhauser spline + FILTER_LANCZOS3 = FREE_IMAGE_FILTER(5); // Lanczos3 filter + + // Color channels. Constants used in color manipulation routines. + FICC_RGB = FREE_IMAGE_COLOR_CHANNEL(0); // Use red, green and blue channels + FICC_RED = FREE_IMAGE_COLOR_CHANNEL(1); // Use red channel + FICC_GREEN = FREE_IMAGE_COLOR_CHANNEL(2); // Use green channel + FICC_BLUE = FREE_IMAGE_COLOR_CHANNEL(3); // Use blue channel + FICC_ALPHA = FREE_IMAGE_COLOR_CHANNEL(4); // Use alpha channel + FICC_BLACK = FREE_IMAGE_COLOR_CHANNEL(5); // Use black channel + FICC_REAL = FREE_IMAGE_COLOR_CHANNEL(6); // Complex images: use real part + FICC_IMAG = FREE_IMAGE_COLOR_CHANNEL(7); // Complex images: use imaginary part + FICC_MAG = FREE_IMAGE_COLOR_CHANNEL(8); // Complex images: use magnitude + FICC_PHASE = FREE_IMAGE_COLOR_CHANNEL(9); // Complex images: use phase + + // Tag data type information (based on TIFF specifications) + FIDT_NOTYPE = FREE_IMAGE_MDTYPE(0); // placeholder + FIDT_BYTE = FREE_IMAGE_MDTYPE(1); // 8-bit unsigned integer + FIDT_ASCII = FREE_IMAGE_MDTYPE(2); // 8-bit bytes w/ last byte null + FIDT_SHORT = FREE_IMAGE_MDTYPE(3); // 16-bit unsigned integer + FIDT_LONG = FREE_IMAGE_MDTYPE(4); // 32-bit unsigned integer + FIDT_RATIONAL = FREE_IMAGE_MDTYPE(5); // 64-bit unsigned fraction + FIDT_SBYTE = FREE_IMAGE_MDTYPE(6); // 8-bit signed integer + FIDT_UNDEFINED = FREE_IMAGE_MDTYPE(7); // 8-bit untyped data + FIDT_SSHORT = FREE_IMAGE_MDTYPE(8); // 16-bit signed integer + FIDT_SLONG = FREE_IMAGE_MDTYPE(9); // 32-bit signed integer + FIDT_SRATIONAL = FREE_IMAGE_MDTYPE(10); // 64-bit signed fraction + FIDT_FLOAT = FREE_IMAGE_MDTYPE(11); // 32-bit IEEE floating point + FIDT_DOUBLE = FREE_IMAGE_MDTYPE(12); // 64-bit IEEE floating point + FIDT_IFD = FREE_IMAGE_MDTYPE(13); // 32-bit unsigned integer (offset) + FIDT_PALETTE = FREE_IMAGE_MDTYPE(14); // 32-bit RGBQUAD + + // Metadata models supported by FreeImage + FIMD_NODATA = FREE_IMAGE_MDMODEL(-1); + FIMD_COMMENTS = FREE_IMAGE_MDMODEL(0); // single comment or keywords + FIMD_EXIF_MAIN = FREE_IMAGE_MDMODEL(1); // Exif-TIFF metadata + FIMD_EXIF_EXIF = FREE_IMAGE_MDMODEL(2); // Exif-specific metadata + FIMD_EXIF_GPS = FREE_IMAGE_MDMODEL(3); // Exif GPS metadata + FIMD_EXIF_MAKERNOTE = FREE_IMAGE_MDMODEL(4); // Exif maker note metadata + FIMD_EXIF_INTEROP = FREE_IMAGE_MDMODEL(5); // Exif interoperability metadata + FIMD_IPTC = FREE_IMAGE_MDMODEL(6); // IPTC/NAA metadata + FIMD_XMP = FREE_IMAGE_MDMODEL(7); // Abobe XMP metadata + FIMD_GEOTIFF = FREE_IMAGE_MDMODEL(8); // GeoTIFF metadata (to be implemented) + FIMD_ANIMATION = FREE_IMAGE_MDMODEL(9); // Animation metadata + FIMD_CUSTOM = FREE_IMAGE_MDMODEL(10); // Used to attach other metadata types to a dib + +//{$endif} + +type + // Handle to a metadata model + FIMETADATA = record + data: Pointer; + end; + PFIMETADATA = ^FIMETADATA; + + // Handle to a metadata tag + FITAG = record + data: Pointer; + end; + PFITAG = ^FITAG; + +// -------------------------------------------------------------------------- +// File IO routines --------------------------------------------------------- +// -------------------------------------------------------------------------- + +type + FI_Handle = Pointer; + PCardinal = ^Cardinal; + PInt = ^Integer; + + FI_ReadProc = function(buffer : pointer; size : Cardinal; count : Cardinal; handle : fi_handle) : PCardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_WriteProc = function(buffer : pointer; size, count : Cardinal; handle : FI_Handle) : PCardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_SeekProc = function(handle : fi_handle; offset : longint; origin : integer) : pint; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_TellProc = function(handle : fi_handle) : PCardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + + FreeImageIO = packed record + read_proc : FI_ReadProc; // pointer to the function used to read data + write_proc: FI_WriteProc; // pointer to the function used to write data + seek_proc : FI_SeekProc; // pointer to the function used to seek + tell_proc : FI_TellProc; // pointer to the function used to aquire the current position + end; + PFreeImageIO = ^FreeImageIO; + + // Handle to a memory I/O stream + FIMEMORY = record + data: Pointer; + end; + PFIMEMORY = ^FIMEMORY; + +const + // constants used in FreeImage_Seek for Origin parameter + SEEK_SET = 0; + SEEK_CUR = 1; + SEEK_END = 2; + +// -------------------------------------------------------------------------- +// Plugin routines ---------------------------------------------------------- +// -------------------------------------------------------------------------- + +type + PPluginStruct = ^PluginStruct; + + FI_InitProc = procedure(Plugin: PPluginStruct; Format_ID: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_FormatProc = function: PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_DescriptionProc = function: PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_ExtensionListProc = function: PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_RegExprProc = function: PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_OpenProc = function(IO: PFreeImageIO; Handle: FI_Handle; Read: Boolean): Pointer; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_CloseProc = procedure(IO: PFreeImageIO; Handle: FI_Handle; Data: Pointer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_PageCountProc = function(IO: PFreeImageIO; Handle: FI_Handle; Data: Pointer): Integer; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_PageCapabilityProc = function(IO: PFreeImageIO; Handle: FI_Handle; Data: Pointer): integer; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_LoadProc = function(IO: PFreeImageIO; Handle: FI_Handle; Page, Flags: Integer; data: pointer): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_SaveProc = function(IO: PFreeImageIO; Dib: PFIBITMAP; Handle: FI_Handle; Page, Flags: Integer; Data: Pointer): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_ValidateProc = function(IO: PFreeImageIO; Handle: FI_Handle): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_MimeProc = function: PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_SupportsExportBPPProc = function(Bpp: integer): boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_SupportsExportTypeProc = function(AType: FREE_IMAGE_TYPE): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + FI_SupportsICCProfilesProc = function: Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + + PluginStruct = record + format_proc: FI_FormatProc; + description_proc: FI_DescriptionProc; + extension_proc: FI_ExtensionListProc; + regexpr_proc: FI_RegExprProc; + open_proc: FI_OpenProc; + close_proc: FI_CloseProc; + pagecount_proc: FI_PageCountProc; + pagecapability_proc: FI_PageCapabilityProc; + load_proc: FI_LoadProc; + save_proc: FI_SaveProc; + validate_proc: FI_ValidateProc; + mime_proc: FI_MimeProc; + supports_export_bpp_proc: FI_SupportsExportBPPProc; + supports_export_type_proc: FI_SupportsExportTypeProc; + supports_icc_profiles_proc: FI_SupportsICCProfilesProc; + end; + +// -------------------------------------------------------------------------- +// Load/Save flag constants ------------------------------------------------- +// -------------------------------------------------------------------------- + +const + BMP_DEFAULT = 0; + BMP_SAVE_RLE = 1; + CUT_DEFAULT = 0; + DDS_DEFAULT = 0; + FAXG3_DEFAULT = 0; + GIF_DEFAULT = 0; + ICO_DEFAULT = 0; + ICO_MAKEALPHA = 0; // convert to 32bpp and create an alpha channel from the AND-mask when loading + IFF_DEFAULT = 0; + JPEG_DEFAULT = 0; + JPEG_FAST = 1; + JPEG_ACCURATE = 2; + JPEG_QUALITYSUPERB = $0080; + JPEG_QUALITYGOOD = $0100; + JPEG_QUALITYNORMAL = $0200; + JPEG_QUALITYAVERAGE = $0400; + JPEG_QUALITYBAD = $0800; + JPEG_CMYK = $1000; // load separated CMYK "as is" (use | to combine with other flags) + KOALA_DEFAULT = 0; + LBM_DEFAULT = 0; + MNG_DEFAULT = 0; + PCD_DEFAULT = 0; + PCD_BASE = 1; // load the bitmap sized 768 x 512 + PCD_BASEDIV4 = 2; // load the bitmap sized 384 x 256 + PCD_BASEDIV16 = 3; // load the bitmap sized 192 x 128 + PCX_DEFAULT = 0; + PNG_DEFAULT = 0; + PNG_IGNOREGAMMA = 1; // avoid gamma correction + PNM_DEFAULT = 0; + PNM_SAVE_RAW = 0; // If set the writer saves in RAW format (i.e. P4, P5 or P6) + PNM_SAVE_ASCII = 1; // If set the writer saves in ASCII format (i.e. P1, P2 or P3) + PSD_DEFAULT = 0; + RAS_DEFAULT = 0; + SGI_DEFAULT = 0; + TARGA_DEFAULT = 0; + TARGA_LOAD_RGB888 = 1; // If set the loader converts RGB555 and ARGB8888 -> RGB888. + TIFF_DEFAULT = 0; + TIFF_CMYK = $0001; // reads/stores tags for separated CMYK (use | to combine with compression flags) + TIFF_PACKBITS = $0100; // save using PACKBITS compression + TIFF_DEFLATE = $0200; // save using DEFLATE compression + TIFF_ADOBE_DEFLATE = $0400; // save using ADOBE DEFLATE compression + TIFF_NONE = $0800; // save without any compression + TIFF_CCITTFAX3 = $1000; // save using CCITT Group 3 fax encoding + TIFF_CCITTFAX4 = $2000; // save using CCITT Group 4 fax encoding + TIFF_LZW = $4000; // save using LZW compression + TIFF_JPEG = $8000; // save using JPEG compression + WBMP_DEFAULT = 0; + XBM_DEFAULT = 0; + XPM_DEFAULT = 0; + +// -------------------------------------------------------------------------- +// Init/Error routines ------------------------------------------------------ +// -------------------------------------------------------------------------- + +procedure FreeImage_Initialise(load_local_plugins_only : boolean = False); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_DeInitialise; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// Version routines --------------------------------------------------------- +// -------------------------------------------------------------------------- + +function FreeImage_GetVersion : PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetCopyrightMessage : PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// Message output functions ------------------------------------------------- +// -------------------------------------------------------------------------- + +procedure FreeImage_OutPutMessageProc(fif: Integer; fmt: PChar); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +type FreeImage_OutputMessageFunction = function(fif: FREE_IMAGE_FORMAT; msg: PChar): pointer; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} +procedure FreeImage_SetOutputMessage(omf: FreeImage_OutputMessageFunction); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// Allocate/Unload routines ------------------------------------------------- +// -------------------------------------------------------------------------- + +function FreeImage_Allocate(width, height, bpp: integer; red_mask: Cardinal = 0; green_mask: Cardinal = 0; blue_mask: Cardinal = 0): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_AllocateT(Atype: FREE_IMAGE_TYPE; Width, Height: Integer; bpp: Integer = 8; red_mask: Cardinal = 0; green_mask: Cardinal = 0; blue_mask: Cardinal = 0): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_Clone(dib: PFIBITMAP): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_Unload(dib: PFIBITMAP); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// Load / Save routines ----------------------------------------------------- +// -------------------------------------------------------------------------- + +function FreeImage_Load(fif: FREE_IMAGE_FORMAT; const filename: PChar; flags: integer = 0): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_LoadU(fif: FREE_IMAGE_FORMAT; const filename: PWideChar; flags: Integer = 0): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_LoadFromHandle(fif: FREE_IMAGE_FORMAT; io: PFreeImageIO; handle: fi_handle; flags: integer = 0): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_Save(fif: FREE_IMAGE_FORMAT; dib: PFIBITMAP; filename: PChar; flags: integer = 0): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SaveU(fif: FREE_IMAGE_FORMAT; dib: PFIBITMAP; const filename: PWideChar; flags: Integer = 0): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SaveToHandle(fif: FREE_IMAGE_FORMAT; dib: PFIBITMAP; io : PFreeImageIO; handle : fi_handle; flags : integer = 0) : Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// Memory I/O stream routines ----------------------------------------------- +// -------------------------------------------------------------------------- + +function FreeImage_OpenMemory(data: PByte = nil; size_in_bytes: DWORD = 0): PFIMEMORY; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_CloseMemory(stream: PFIMEMORY); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_LoadFromMemory(fif: FREE_IMAGE_FORMAT; stream: PFIMEMORY; flags: Integer = 0): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SaveToMemory(fif: FREE_IMAGE_FORMAT; dib: PFIBITMAP; stream: PFIMEMORY; flags: Integer = 0): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_TellMemory(stream: PFIMEMORY): Longint; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SeekMemory(stream: PFIMEMORY; offset: Longint; origin: Integer): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_AcquireMemory(stream: PFIMEMORY; var data: PByte; var size_in_bytes: DWORD): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// Plugin Interface --------------------------------------------------------- +// -------------------------------------------------------------------------- + +function FreeImage_RegisterLocalPlugin(proc_address: FI_InitProc; format, description, extension, regexpr: PChar): FREE_IMAGE_FORMAT; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_RegisterExternalPlugin(path, format, description, extension, regexpr: PChar): FREE_IMAGE_FORMAT; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetFIFCount: Integer; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_SetPluginEnabled(fif: FREE_IMAGE_FORMAT; enable: Boolean); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_IsPluginEnabled(fif: FREE_IMAGE_FORMAT): Integer; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetFIFFromFormat(const format: PChar): FREE_IMAGE_FORMAT; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetFIFFromMime(const format: PChar): FREE_IMAGE_FORMAT; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetFormatFromFIF(fif: FREE_IMAGE_FORMAT): PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetFIFExtensionList(fif: FREE_IMAGE_FORMAT): PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetFIFDescription(fif: FREE_IMAGE_FORMAT): PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetFIFRegExpr(fif: FREE_IMAGE_FORMAT): PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetFIFFromFilename(const fname: PChar): FREE_IMAGE_FORMAT; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetFIFFromFilenameU(const fname:PWideChar): FREE_IMAGE_FORMAT; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_FIFSupportsReading(fif: FREE_IMAGE_FORMAT): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_FIFSupportsWriting(fif: FREE_IMAGE_FORMAT): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_FIFSupportsExportBPP(fif: FREE_IMAGE_FORMAT; bpp: Integer): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_FIFSupportsICCProfiles(fif: FREE_IMAGE_FORMAT): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_FIFSupportsExportType(fif: FREE_IMAGE_FORMAT; image_type: FREE_IMAGE_TYPE): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// Multipaging interface ---------------------------------------------------- +// -------------------------------------------------------------------------- + +function FreeImage_OpenMultiBitmap(fif: FREE_IMAGE_FORMAT; filename: PChar; create_new, read_only, keep_cache_in_memory: Boolean; flags: integer = 0): PFIMULTIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_CloseMultiBitmap(bitmap: PFIMULTIBITMAP; flags: Integer = 0): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetPageCount(bitmap: PFIMULTIBITMAP): Integer; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_AppendPage(bitmap: PFIMULTIBITMAP; data: PFIBITMAP); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_InsertPage(bitmap: PFIMULTIBITMAP; page: Integer; data: PFIBITMAP); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_DeletePage(bitmap: PFIMULTIBITMAP; page: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_LockPage(bitmap: PFIMULTIBITMAP; page: Integer): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_UnlockPage(bitmap: PFIMULTIBITMAP; page: PFIBITMAP; changed: boolean); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_MovePage(bitmap: PFIMULTIBITMAP; target, source: Integer): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetLockedPageNumbers(bitmap: PFIMULTIBITMAP; var pages: Integer; var count : integer): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// Filetype request routines ------------------------------------------------ +// -------------------------------------------------------------------------- + +function FreeImage_GetFileType(const filename: PChar; size: Integer): FREE_IMAGE_FORMAT; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetFileTypeU(const filename: PWideChar; size: Integer): FREE_IMAGE_FORMAT; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetFileTypeFromHandle(io: PFreeImageIO; handle: FI_Handle; size: Integer = 0): FREE_IMAGE_FORMAT; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetFileTypeFromMemory(stream: PFIMEMORY; size: Integer = 0): FREE_IMAGE_FORMAT; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// ImageType request routine ------------------------------------------------ +// -------------------------------------------------------------------------- + +function FreeImage_GetImageType(dib: PFIBITMAP): FREE_IMAGE_TYPE; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// FreeImage helper routines ------------------------------------------------ +// -------------------------------------------------------------------------- + +function FreeImage_IsLittleEndian: Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_LookupX11Color(const szColor: PChar; var nRed, nGreen, nBlue: PByte): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_LookupSVGColor(const szColor: PChar; var nRed, nGreen, nBlue: PByte): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// Pixels access routines --------------------------------------------------- +// -------------------------------------------------------------------------- + +function FreeImage_GetBits(dib: PFIBITMAP): PByte; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetScanLine(dib: PFIBITMAP; scanline: Integer): PByte; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +function FreeImage_GetPixelIndex(dib: PFIBITMAP; X, Y: Longint; Value: PByte): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetPixelColor(dib: PFIBITMAP; X, Y: Longint; Value: PRGBQuad): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SetPixelIndex(dib: PFIBITMAP; X, Y: Longint; Value: PByte): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SetPixelColor(dib: PFIBITMAP; X, Y: Longint; Value: PRGBQuad): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// DIB info routines -------------------------------------------------------- +// -------------------------------------------------------------------------- + +function FreeImage_GetColorsUsed(dib: PFIBITMAP): Cardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetBPP(dib: PFIBITMAP): Cardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetWidth(dib: PFIBITMAP): Cardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetHeight(dib: PFIBITMAP): Cardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetLine(dib: PFIBITMAP): Cardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetPitch(dib : PFIBITMAP) : Cardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetDIBSize(dib: PFIBITMAP): Cardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetPalette(dib: PFIBITMAP): PRGBQUAD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +function FreeImage_GetDotsPerMeterX(dib: PFIBITMAP): Cardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetDotsPerMeterY(dib: PFIBITMAP): Cardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_SetDotsPerMeterX(dib: PFIBITMAP; res: Cardinal); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_SetDotsPerMeterY(dib: PFIBITMAP; res: Cardinal); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +function FreeImage_GetInfoHeader(dib: PFIBITMAP): PBITMAPINFOHEADER; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetInfo(var dib: FIBITMAP): PBITMAPINFO; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetColorType(dib: PFIBITMAP): FREE_IMAGE_COLOR_TYPE; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +function FreeImage_GetRedMask(dib: PFIBITMAP): Cardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetGreenMask(dib: PFIBITMAP): Cardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetBlueMask(dib: PFIBITMAP): Cardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +function FreeImage_GetTransparencyCount(dib: PFIBITMAP): Cardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetTransparencyTable(dib: PFIBITMAP): PByte; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_SetTransparent(dib: PFIBITMAP; enabled: boolean); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_SetTransparencyTable(dib: PFIBITMAP; table: PByte; count: integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_IsTransparent(dib: PFIBITMAP): boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +function FreeImage_HasBackgroundColor(dib: PFIBITMAP): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetBackgroundColor(dib: PFIBITMAP; var bkcolor: PRGBQUAD): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SetBackgroundColor(dib: PFIBITMAP; bkcolor: PRGBQUAD): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// ICC profile routines ----------------------------------------------------- +// -------------------------------------------------------------------------- + +function FreeImage_GetICCProfile(var dib: FIBITMAP): PFIICCPROFILE; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_CreateICCProfile(var dib: FIBITMAP; data: Pointer; size: Longint): PFIICCPROFILE; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_DestroyICCProfile(var dib : FIBITMAP); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// Line conversion routines ------------------------------------------------- +// -------------------------------------------------------------------------- + +procedure FreeImage_ConvertLine1To4(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine8To4(target, source: PBYTE; width_in_pixels: Integer; palette: PRGBQuad); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine16To4_555(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine16To4_565(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine24To4(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine32To4(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +procedure FreeImage_ConvertLine1To8(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine4To8(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine16To8_555(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine16To8_565(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine24To8(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine32To8(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +procedure FreeImage_ConvertLine1To16_555(target, source: PBYTE; width_in_pixels: Integer; palette: PRGBQUAD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine4To16_555(target, source: PBYTE; width_in_pixels: Integer; palette: PRGBQUAD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine8To16_555(target, source: PBYTE; width_in_pixels: Integer; palette: PRGBQUAD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine16_565_To16_555(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine24To16_555(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine32To16_555(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +procedure FreeImage_ConvertLine1To16_565(target, source : PBYTE; width_in_pixels: Integer; palette: PRGBQUAD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine4To16_565(target, source : PBYTE; width_in_pixels : Integer; palette : PRGBQUAD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine8To16_565(target, source: PBYTE; width_in_pixels: Integer; palette: PRGBQUAD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine16_555_To16_565(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine24To16_565(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine32To16_565(target, source : PBYTE; width_in_pixels : Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +procedure FreeImage_ConvertLine1To24(target, source: PBYTE; width_in_pixels: Integer; palette: PRGBQUAD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine4To24(target, source : PBYTE; width_in_pixels: Integer; palette: PRGBQUAD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine8To24(target, source: PBYTE; width_in_pixels: Integer; palette: PRGBQUAD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine16To24_555(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine16To24_565(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine32To24(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +procedure FreeImage_ConvertLine1To32(target, source: PBYTE; width_in_pixels: Integer; palette: PRGBQUAD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine4To32(target, source: PBYTE; width_in_pixels: Integer; palette: PRGBQUAD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine8To32(target, source: PBYTE; width_in_pixels: Integer; palette: PRGBQUAD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine16To32_555(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine16To32_565(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertLine24To32(target, source: PBYTE; width_in_pixels: Integer); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// Smart conversion routines ------------------------------------------------ +// -------------------------------------------------------------------------- + +function FreeImage_ConvertTo4Bits(dib: PFIBITMAP): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_ConvertTo8Bits(dib: PFIBITMAP): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_ConvertToGreyscale(dib: PFIBITMAP): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_ConvertTo16Bits555(dib: PFIBITMAP): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_ConvertTo16Bits565(dib: PFIBITMAP): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_ConvertTo24Bits(dib: PFIBITMAP): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_ConvertTo32Bits(dib: PFIBITMAP): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_ColorQuantize(dib: PFIBITMAP; quantize: FREE_IMAGE_QUANTIZE): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_ColorQuantizeEx(dib: PFIBITMAP; quantize: FREE_IMAGE_QUANTIZE = FIQ_WUQUANT; PaletteSize: Integer = 256; ReserveSize: Integer = 0; ReservePalette: PRGBQuad = nil): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_Threshold(dib: PFIBITMAP; T: Byte): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_Dither(dib: PFIBITMAP; algorithm: FREE_IMAGE_DITHER): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +function FreeImage_ConvertFromRawBits(bits: PBYTE; width, height, pitch: Integer; bpp, red_mask, green_mask, blue_mask: LongWord; topdown: Boolean): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_ConvertToRawBits(bits: PBYTE; dib: PFIBITMAP; pitch: Integer; bpp, red_mask, green_mask, blue_mask: LongWord; topdown: Boolean); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +function FreeImage_ConvertToRGBF(dib: PFIBITMAP): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +function FreeImage_ConvertToStandardType(src: PFIBITMAP; scale_linear: Boolean = True): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_ConvertToType(src: PFIBITMAP; dst_type: FREE_IMAGE_TYPE; scale_linear: Boolean = True): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// tone mapping operators +function FreeImage_ToneMapping(dib: PFIBITMAP; tmo: FREE_IMAGE_TMO; first_param: Double = 0; second_param: Double = 0): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_TmoDrago03(src: PFIBITMAP; gamma: Double = 2.2; exposure: Double = 0): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_TmoReinhard05(src: PFIBITMAP; intensity: Double = 0; contrast: Double = 0): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// ZLib interface ----------------------------------------------------------- +// -------------------------------------------------------------------------- + +function FreeImage_ZLibCompress(target: PBYTE; target_size: DWORD; source: PBYTE; source_size: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_ZLibUncompress(target: PBYTE; target_size: DWORD; source: PBYTE; source_size: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +function FreeImage_ZLibGZip(target: PBYTE; target_size: DWORD; source: PBYTE; source_size: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_ZLibGUnzip(target: PBYTE; target_size: DWORD; source: PBYTE; source_size: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_ZLibCRC32(crc: DWORD; source: PByte; source_size: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// Metadata routines -------------------------------------------------------- +// -------------------------------------------------------------------------- + +// tag creation / destruction +function FreeImage_CreateTag: PFITAG; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_DeleteTag(tag: PFITAG); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_CloneTag(tag: PFITAG): PFITAG; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// tag getters and setters +function FreeImage_GetTagKey(tag: PFITAG): PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetTagDescription(tag: PFITAG): PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetTagID(tag: PFITAG): Word; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetTagType(tag: PFITAG): FREE_IMAGE_MDTYPE; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetTagCount(tag: PFITAG): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetTagLength(tag: PFITAG): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetTagValue(tag: PFITAG): Pointer; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +function FreeImage_SetTagKey(tag: PFITAG; const key: PChar): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SetTagDescription(tag: PFITAG; const description: PChar): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SetTagID(tag: PFITAG; id: Word): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SetTagType(tag: PFITAG; atype: FREE_IMAGE_MDTYPE): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SetTagCount(tag: PFITAG; count: DWORD): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SetTagLength(tag: PFITAG; length: DWORD): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SetTagValue(tag: PFITAG; const value: Pointer): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// iterator +function FreeImage_FindFirstMetadata(model: FREE_IMAGE_MDMODEL; dib: PFIBITMAP; var tag: PFITAG): PFIMETADATA; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_FindNextMetadata(mdhandle: PFIMETADATA; var tag: PFITAG): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +procedure FreeImage_FindCloseMetadata(mdhandle: PFIMETADATA); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// metadata setter and getter +function FreeImage_SetMetadata(model: FREE_IMAGE_MDMODEL; dib: PFIBITMAP; const key: PChar; tag: PFITAG): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetMetadata(model: FREE_IMAGE_MDMODEL; dib: PFIBITMAP; const key: PChar; var tag: PFITAG): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// helpers +function FreeImage_GetMetadataCount(model: FREE_IMAGE_MDMODEL; dib: PFIBITMAP): Cardinal; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// tag to C string conversion +function FreeImage_TagToString(model: FREE_IMAGE_MDMODEL; tag: PFITAG; Make: PChar = nil): PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// -------------------------------------------------------------------------- +// Image manipulation toolkit ----------------------------------------------- +// -------------------------------------------------------------------------- + +// rotation and flipping +function FreeImage_RotateClassic(dib: PFIBITMAP; angle: Double): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_RotateEx(dib: PFIBITMAP; angle, x_shift, y_shift, x_origin, y_origin: Double; use_mask: Boolean): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_FlipHorizontal(dib: PFIBITMAP): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_FlipVertical(dib: PFIBITMAP): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_JPEGTransform(const src_file: PChar; const dst_file: PChar; operation: FREE_IMAGE_JPEG_OPERATION; perfect: Boolean = False): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// upsampling / downsampling +function FreeImage_Rescale(dib: PFIBITMAP; dst_width, dst_height: Integer; filter: FREE_IMAGE_FILTER): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_MakeThumbnail(dib: PFIBITMAP; max_pixel_size: Integer; convert:boolean = TRUE): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// color manipulation routines (point operations) +function FreeImage_AdjustCurve(dib: PFIBITMAP; LUT: PBYTE; channel: FREE_IMAGE_COLOR_CHANNEL): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_AdjustGamma(dib: PFIBITMAP; gamma: Double): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_AdjustBrightness(dib: PFIBITMAP; percentage: Double): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_AdjustContrast(dib: PFIBITMAP; percentage: Double): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_Invert(dib: PFIBITMAP): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetHistogram(dib: PFIBITMAP; histo: PDWORD; channel: FREE_IMAGE_COLOR_CHANNEL = FICC_BLACK): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// channel processing routines +function FreeImage_GetChannel(dib: PFIBITMAP; channel: FREE_IMAGE_COLOR_CHANNEL): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SetChannel(dib, dib8: PFIBITMAP; channel: FREE_IMAGE_COLOR_CHANNEL): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_GetComplexChannel(src: PFIBITMAP; channel: FREE_IMAGE_COLOR_CHANNEL): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_SetComplexChannel(src: PFIBITMAP; channel: FREE_IMAGE_COLOR_CHANNEL): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +// copy / paste / composite routines + +function FreeImage_Copy(dib: PFIBITMAP; left, top, right, bottom: Integer): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_Paste(dst, src: PFIBITMAP; left, top, alpha: Integer): Boolean; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; +function FreeImage_Composite(fg: PFIBITMAP; useFileBkg: Boolean = False; appBkColor: PRGBQUAD = nil; bg: PFIBITMAP = nil): PFIBITMAP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external FIDLL; + +{$MINENUMSIZE 1} +implementation + +end. diff --git a/Game/Code/lib/FreeImage/libfreeimage.dylib b/Game/Code/lib/FreeImage/libfreeimage.dylib new file mode 100755 index 00000000..5f9aecce Binary files /dev/null and b/Game/Code/lib/FreeImage/libfreeimage.dylib differ diff --git a/Game/Code/lib/SQLite/SQLite3.pas b/Game/Code/lib/SQLite/SQLite3.pas index b7f9d375..4991fc66 100644 --- a/Game/Code/lib/SQLite/SQLite3.pas +++ b/Game/Code/lib/SQLite/SQLite3.pas @@ -10,9 +10,19 @@ unit SQLite3; interface +{$I switches.inc} + const +{$IFDEF MSWINDOWS} SQLiteDLL = 'sqlite3.dll'; +{$ENDIF} +{$IFDEF LINUX} + SQLiteDLL = 'sqlite3.so'; +{$ENDIF} +{$IFDEF DARWIN} + SQLiteDLL = 'libsqlite3.dylib'; +{$ENDIF} // Return values for sqlite3_exec() and sqlite3_step() diff --git a/Game/Code/lib/SQLite/SQLiteTable3.pas b/Game/Code/lib/SQLite/SQLiteTable3.pas index 05fbd573..18135765 100644 --- a/Game/Code/lib/SQLite/SQLiteTable3.pas +++ b/Game/Code/lib/SQLite/SQLiteTable3.pas @@ -17,9 +17,7 @@ unit SQLiteTable3; interface -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} +{$I switches.inc} uses {$ifdef win32} diff --git a/Game/Code/lib/bass/MacOSX/Bass.pas b/Game/Code/lib/bass/MacOSX/Bass.pas new file mode 100755 index 00000000..d065f027 --- /dev/null +++ b/Game/Code/lib/bass/MacOSX/Bass.pas @@ -0,0 +1,984 @@ +{ + BASS 2.3 Audio Library, (c) 1999-2007 Ian Luck. + Please report bugs/suggestions/etc... to bass@un4seen.com + + See the BASS.CHM file for more complete documentation + + + How to install + ---------------- + Copy BASS.PAS to the \LIB subdirectory of your Delphi path or your project dir +} +unit Bass; + +{$I switches.inc} + +interface + +uses + Windows; + +const + BASSVERSION = $203; // API version + + // Use these to test for error from functions that return a DWORD or QWORD + DW_ERROR = Cardinal(-1); // -1 (DWORD) + QW_ERROR = Int64(-1); // -1 (QWORD) + + // Error codes returned by BASS_GetErrorCode() + BASS_OK = 0; // all is OK + BASS_ERROR_MEM = 1; // memory error + BASS_ERROR_FILEOPEN = 2; // can't open the file + BASS_ERROR_DRIVER = 3; // can't find a free sound driver + BASS_ERROR_BUFLOST = 4; // the sample buffer was lost - please report this! + BASS_ERROR_HANDLE = 5; // invalid handle + BASS_ERROR_FORMAT = 6; // unsupported sample format + BASS_ERROR_POSITION = 7; // invalid playback position + BASS_ERROR_INIT = 8; // BASS_Init has not been successfully called + BASS_ERROR_START = 9; // BASS_Start has not been successfully called + BASS_ERROR_ALREADY = 14; // already initialized/paused/whatever + BASS_ERROR_NOPAUSE = 16; // not paused + BASS_ERROR_NOCHAN = 18; // can't get a free channel + BASS_ERROR_ILLTYPE = 19; // an illegal type was specified + BASS_ERROR_ILLPARAM = 20; // an illegal parameter was specified + BASS_ERROR_NO3D = 21; // no 3D support + BASS_ERROR_NOEAX = 22; // no EAX support + BASS_ERROR_DEVICE = 23; // illegal device number + BASS_ERROR_NOPLAY = 24; // not playing + BASS_ERROR_FREQ = 25; // illegal sample rate + BASS_ERROR_NOTFILE = 27; // the stream is not a file stream + BASS_ERROR_NOHW = 29; // no hardware voices available + BASS_ERROR_EMPTY = 31; // the MOD music has no sequence data + BASS_ERROR_NONET = 32; // no internet connection could be opened + BASS_ERROR_CREATE = 33; // couldn't create the file + BASS_ERROR_NOFX = 34; // effects are not enabled + BASS_ERROR_PLAYING = 35; // the channel is playing + BASS_ERROR_NOTAVAIL = 37; // requested data is not available + BASS_ERROR_DECODE = 38; // the channel is a "decoding channel" + BASS_ERROR_DX = 39; // a sufficient DirectX version is not installed + BASS_ERROR_TIMEOUT = 40; // connection timedout + BASS_ERROR_FILEFORM = 41; // unsupported file format + BASS_ERROR_SPEAKER = 42; // unavailable speaker + BASS_ERROR_VERSION = 43; // invalid BASS version (used by add-ons) + BASS_ERROR_CODEC = 44; // codec is not available/supported + BASS_ERROR_UNKNOWN = -1; // some other mystery error + + // Initialization flags + BASS_DEVICE_8BITS = 1; // use 8 bit resolution, else 16 bit + BASS_DEVICE_MONO = 2; // use mono, else stereo + BASS_DEVICE_3D = 4; // enable 3D functionality + { + If the BASS_DEVICE_3D flag is not specified when + initilizing BASS, then the 3D flags (BASS_SAMPLE_3D + and BASS_MUSIC_3D) are ignored when loading/creating + a sample/stream/music. + } + BASS_DEVICE_LATENCY = 256; // calculate device latency (BASS_INFO struct) + BASS_DEVICE_SPEAKERS = 2048; // force enabling of speaker assignment + BASS_DEVICE_NOSPEAKER = 4096; // ignore speaker arrangement + + // DirectSound interfaces (for use with BASS_GetDSoundObject) + BASS_OBJECT_DS = 1; // IDirectSound + BASS_OBJECT_DS3DL = 2; // IDirectSound3DListener + + // BASS_INFO flags (from DSOUND.H) + DSCAPS_CONTINUOUSRATE = $00000010; + { supports all sample rates between min/maxrate } + DSCAPS_EMULDRIVER = $00000020; + { device does NOT have hardware DirectSound support } + DSCAPS_CERTIFIED = $00000040; + { device driver has been certified by Microsoft } + { + The following flags tell what type of samples are + supported by HARDWARE mixing, all these formats are + supported by SOFTWARE mixing + } + DSCAPS_SECONDARYMONO = $00000100; // mono + DSCAPS_SECONDARYSTEREO = $00000200; // stereo + DSCAPS_SECONDARY8BIT = $00000400; // 8 bit + DSCAPS_SECONDARY16BIT = $00000800; // 16 bit + + // BASS_RECORDINFO flags (from DSOUND.H) + DSCCAPS_EMULDRIVER = DSCAPS_EMULDRIVER; + { device does NOT have hardware DirectSound recording support } + DSCCAPS_CERTIFIED = DSCAPS_CERTIFIED; + { device driver has been certified by Microsoft } + + // defines for formats field of BASS_RECORDINFO (from MMSYSTEM.H) + WAVE_FORMAT_1M08 = $00000001; // 11.025 kHz, Mono, 8-bit + WAVE_FORMAT_1S08 = $00000002; // 11.025 kHz, Stereo, 8-bit + WAVE_FORMAT_1M16 = $00000004; // 11.025 kHz, Mono, 16-bit + WAVE_FORMAT_1S16 = $00000008; // 11.025 kHz, Stereo, 16-bit + WAVE_FORMAT_2M08 = $00000010; // 22.05 kHz, Mono, 8-bit + WAVE_FORMAT_2S08 = $00000020; // 22.05 kHz, Stereo, 8-bit + WAVE_FORMAT_2M16 = $00000040; // 22.05 kHz, Mono, 16-bit + WAVE_FORMAT_2S16 = $00000080; // 22.05 kHz, Stereo, 16-bit + WAVE_FORMAT_4M08 = $00000100; // 44.1 kHz, Mono, 8-bit + WAVE_FORMAT_4S08 = $00000200; // 44.1 kHz, Stereo, 8-bit + WAVE_FORMAT_4M16 = $00000400; // 44.1 kHz, Mono, 16-bit + WAVE_FORMAT_4S16 = $00000800; // 44.1 kHz, Stereo, 16-bit + + // Sample info flags + BASS_SAMPLE_8BITS = 1; // 8 bit + BASS_SAMPLE_FLOAT = 256; // 32-bit floating-point + BASS_SAMPLE_MONO = 2; // mono, else stereo + BASS_SAMPLE_LOOP = 4; // looped + BASS_SAMPLE_3D = 8; // 3D functionality enabled + BASS_SAMPLE_SOFTWARE = 16; // it's NOT using hardware mixing + BASS_SAMPLE_MUTEMAX = 32; // muted at max distance (3D only) + BASS_SAMPLE_VAM = 64; // uses the DX7 voice allocation & management + BASS_SAMPLE_FX = 128; // old implementation of DX8 effects are enabled + BASS_SAMPLE_OVER_VOL = $10000; // override lowest volume + BASS_SAMPLE_OVER_POS = $20000; // override longest playing + BASS_SAMPLE_OVER_DIST = $30000; // override furthest from listener (3D only) + + BASS_STREAM_PRESCAN = $20000; // enable pin-point seeking (MP3/MP2/MP1) + BASS_MP3_SETPOS = BASS_STREAM_PRESCAN; + BASS_STREAM_AUTOFREE = $40000; // automatically free the stream when it stop/ends + BASS_STREAM_RESTRATE = $80000; // restrict the download rate of internet file streams + BASS_STREAM_BLOCK = $100000;// download/play internet file stream in small blocks + BASS_STREAM_DECODE = $200000;// don't play the stream, only decode (BASS_ChannelGetData) + BASS_STREAM_STATUS = $800000;// give server status info (HTTP/ICY tags) in DOWNLOADPROC + + BASS_MUSIC_FLOAT = BASS_SAMPLE_FLOAT; // 32-bit floating-point + BASS_MUSIC_MONO = BASS_SAMPLE_MONO; // force mono mixing (less CPU usage) + BASS_MUSIC_LOOP = BASS_SAMPLE_LOOP; // loop music + BASS_MUSIC_3D = BASS_SAMPLE_3D; // enable 3D functionality + BASS_MUSIC_FX = BASS_SAMPLE_FX; // enable old implementation of DX8 effects + BASS_MUSIC_AUTOFREE = BASS_STREAM_AUTOFREE; // automatically free the music when it stop/ends + BASS_MUSIC_DECODE = BASS_STREAM_DECODE; // don't play the music, only decode (BASS_ChannelGetData) + BASS_MUSIC_PRESCAN = BASS_STREAM_PRESCAN; // calculate playback length + BASS_MUSIC_CALCLEN = BASS_MUSIC_PRESCAN; + BASS_MUSIC_RAMP = $200; // normal ramping + BASS_MUSIC_RAMPS = $400; // sensitive ramping + BASS_MUSIC_SURROUND = $800; // surround sound + BASS_MUSIC_SURROUND2 = $1000; // surround sound (mode 2) + BASS_MUSIC_FT2MOD = $2000; // play .MOD as FastTracker 2 does + BASS_MUSIC_PT1MOD = $4000; // play .MOD as ProTracker 1 does + BASS_MUSIC_NONINTER = $10000; // non-interpolated mixing + BASS_MUSIC_POSRESET = $8000; // stop all notes when moving position + BASS_MUSIC_POSRESETEX = $400000; // stop all notes and reset bmp/etc when moving position + BASS_MUSIC_STOPBACK = $80000; // stop the music on a backwards jump effect + BASS_MUSIC_NOSAMPLE = $100000; // don't load the samples + + // Speaker assignment flags + BASS_SPEAKER_FRONT = $1000000; // front speakers + BASS_SPEAKER_REAR = $2000000; // rear/side speakers + BASS_SPEAKER_CENLFE = $3000000; // center & LFE speakers (5.1) + BASS_SPEAKER_REAR2 = $4000000; // rear center speakers (7.1) + BASS_SPEAKER_LEFT = $10000000; // modifier: left + BASS_SPEAKER_RIGHT = $20000000; // modifier: right + BASS_SPEAKER_FRONTLEFT = BASS_SPEAKER_FRONT or BASS_SPEAKER_LEFT; + BASS_SPEAKER_FRONTRIGHT = BASS_SPEAKER_FRONT or BASS_SPEAKER_RIGHT; + BASS_SPEAKER_REARLEFT = BASS_SPEAKER_REAR or BASS_SPEAKER_LEFT; + BASS_SPEAKER_REARRIGHT = BASS_SPEAKER_REAR or BASS_SPEAKER_RIGHT; + BASS_SPEAKER_CENTER = BASS_SPEAKER_CENLFE or BASS_SPEAKER_LEFT; + BASS_SPEAKER_LFE = BASS_SPEAKER_CENLFE or BASS_SPEAKER_RIGHT; + BASS_SPEAKER_REAR2LEFT = BASS_SPEAKER_REAR2 or BASS_SPEAKER_LEFT; + BASS_SPEAKER_REAR2RIGHT = BASS_SPEAKER_REAR2 or BASS_SPEAKER_RIGHT; + + BASS_UNICODE = $80000000; + + BASS_RECORD_PAUSE = $8000; // start recording paused + + // DX7 voice allocation flags + BASS_VAM_HARDWARE = 1; + { + Play the sample in hardware. If no hardware voices are available then + the "play" call will fail + } + BASS_VAM_SOFTWARE = 2; + { + Play the sample in software (ie. non-accelerated). No other VAM flags + may be used together with this flag. + } + + // DX7 voice management flags + { + These flags enable hardware resource stealing... if the hardware has no + available voices, a currently playing buffer will be stopped to make room + for the new buffer. NOTE: only samples loaded/created with the + BASS_SAMPLE_VAM flag are considered for termination by the DX7 voice + management. + } + BASS_VAM_TERM_TIME = 4; + { + If there are no free hardware voices, the buffer to be terminated will be + the one with the least time left to play. + } + BASS_VAM_TERM_DIST = 8; + { + If there are no free hardware voices, the buffer to be terminated will be + one that was loaded/created with the BASS_SAMPLE_MUTEMAX flag and is + beyond + it's max distance. If there are no buffers that match this criteria, then + the "play" call will fail. + } + BASS_VAM_TERM_PRIO = 16; + { + If there are no free hardware voices, the buffer to be terminated will be + the one with the lowest priority. + } + + // BASS_CHANNELINFO types + BASS_CTYPE_SAMPLE = 1; + BASS_CTYPE_RECORD = 2; + BASS_CTYPE_STREAM = $10000; + BASS_CTYPE_STREAM_OGG = $10002; + BASS_CTYPE_STREAM_MP1 = $10003; + BASS_CTYPE_STREAM_MP2 = $10004; + BASS_CTYPE_STREAM_MP3 = $10005; + BASS_CTYPE_STREAM_AIFF = $10006; + BASS_CTYPE_STREAM_WAV = $40000; // WAVE flag, LOWORD=codec + BASS_CTYPE_STREAM_WAV_PCM = $50001; + BASS_CTYPE_STREAM_WAV_FLOAT = $50003; + BASS_CTYPE_MUSIC_MOD = $20000; + BASS_CTYPE_MUSIC_MTM = $20001; + BASS_CTYPE_MUSIC_S3M = $20002; + BASS_CTYPE_MUSIC_XM = $20003; + BASS_CTYPE_MUSIC_IT = $20004; + BASS_CTYPE_MUSIC_MO3 = $00100; // MO3 flag + + // 3D channel modes + BASS_3DMODE_NORMAL = 0; + { normal 3D processing } + BASS_3DMODE_RELATIVE = 1; + { + The channel's 3D position (position/velocity/ + orientation) are relative to the listener. When the + listener's position/velocity/orientation is changed + with BASS_Set3DPosition, the channel's position + relative to the listener does not change. + } + BASS_3DMODE_OFF = 2; + { + Turn off 3D processing on the channel, the sound will + be played in the center. + } + + // EAX environments, use with BASS_SetEAXParameters + EAX_ENVIRONMENT_GENERIC = 0; + EAX_ENVIRONMENT_PADDEDCELL = 1; + EAX_ENVIRONMENT_ROOM = 2; + EAX_ENVIRONMENT_BATHROOM = 3; + EAX_ENVIRONMENT_LIVINGROOM = 4; + EAX_ENVIRONMENT_STONEROOM = 5; + EAX_ENVIRONMENT_AUDITORIUM = 6; + EAX_ENVIRONMENT_CONCERTHALL = 7; + EAX_ENVIRONMENT_CAVE = 8; + EAX_ENVIRONMENT_ARENA = 9; + EAX_ENVIRONMENT_HANGAR = 10; + EAX_ENVIRONMENT_CARPETEDHALLWAY = 11; + EAX_ENVIRONMENT_HALLWAY = 12; + EAX_ENVIRONMENT_STONECORRIDOR = 13; + EAX_ENVIRONMENT_ALLEY = 14; + EAX_ENVIRONMENT_FOREST = 15; + EAX_ENVIRONMENT_CITY = 16; + EAX_ENVIRONMENT_MOUNTAINS = 17; + EAX_ENVIRONMENT_QUARRY = 18; + EAX_ENVIRONMENT_PLAIN = 19; + EAX_ENVIRONMENT_PARKINGLOT = 20; + EAX_ENVIRONMENT_SEWERPIPE = 21; + EAX_ENVIRONMENT_UNDERWATER = 22; + EAX_ENVIRONMENT_DRUGGED = 23; + EAX_ENVIRONMENT_DIZZY = 24; + EAX_ENVIRONMENT_PSYCHOTIC = 25; + // total number of environments + EAX_ENVIRONMENT_COUNT = 26; + + // software 3D mixing algorithm modes (used with BASS_Set3DAlgorithm) + BASS_3DALG_DEFAULT = 0; + { + default algorithm (currently translates to BASS_3DALG_OFF) + } + BASS_3DALG_OFF = 1; + { + Uses normal left and right panning. The vertical axis is ignored except + for scaling of volume due to distance. Doppler shift and volume scaling + are still applied, but the 3D filtering is not performed. This is the + most CPU efficient software implementation, but provides no virtual 3D + audio effect. Head Related Transfer Function processing will not be done. + Since only normal stereo panning is used, a channel using this algorithm + may be accelerated by a 2D hardware voice if no free 3D hardware voices + are available. + } + BASS_3DALG_FULL = 2; + { + This algorithm gives the highest quality 3D audio effect, but uses more + CPU. Requires Windows 98 2nd Edition or Windows 2000 that uses WDM + drivers, if this mode is not available then BASS_3DALG_OFF will be used + instead. + } + BASS_3DALG_LIGHT = 3; + { + This algorithm gives a good 3D audio effect, and uses less CPU than the + FULL mode. Requires Windows 98 2nd Edition or Windows 2000 that uses WDM + drivers, if this mode is not available then BASS_3DALG_OFF will be used + instead. + } + + { + Sync types (with BASS_ChannelSetSync() "param" and + SYNCPROC "data" definitions) & flags. + } + BASS_SYNC_POS = 0; + { + Sync when a channel reaches a position. + param: position in bytes + data : not used + } + BASS_SYNC_END = 2; + { + Sync when a channel reaches the end. + param: not used + data : not used + } + BASS_SYNC_META = 4; + { + Sync when metadata is received in a stream. + param: not used + data : pointer to the metadata + } + BASS_SYNC_SLIDE = 5; + { + Sync when an attribute slide is completed. + param: not used + data : the type of slide completed (one of the BASS_SLIDE_xxx values) + } + BASS_SYNC_STALL = 6; + { + Sync when playback has stalled. + param: not used + data : 0=stalled, 1=resumed + } + BASS_SYNC_DOWNLOAD = 7; + { + Sync when downloading of an internet (or "buffered" user file) stream has ended. + param: not used + data : not used + } + BASS_SYNC_FREE = 8; + { + Sync when a channel is freed. + param: not used + data : not used + } + BASS_SYNC_SETPOS = 11; + { + Sync when a channel's position is set. + param: not used + data : 0 = playback buffer not flushed, 1 = playback buffer flushed + } + BASS_SYNC_MUSICPOS = 10; + { + Sync when a MOD music reaches an order:row position. + param: LOWORD=order (0=first, -1=all) HIWORD=row (0=first, -1=all) + data : LOWORD=order HIWORD=row + } + BASS_SYNC_MUSICINST = 1; + { + Sync when an instrument (sample for the non-instrument based formats) + is played in a MOD music (not including retrigs). + param: LOWORD=instrument (1=first) HIWORD=note (0=c0...119=b9, -1=all) + data : LOWORD=note HIWORD=volume (0-64) + } + BASS_SYNC_MUSICFX = 3; + { + Sync when the "sync" effect (XM/MTM/MOD: E8x/Wxx, IT/S3M: S2x) is used. + param: 0:data=pos, 1:data="x" value + data : param=0: LOWORD=order HIWORD=row, param=1: "x" value + } + BASS_SYNC_MESSAGE = $20000000; + { FLAG: post a Windows message (instead of callback) + When using a window message "callback", the message to post is given in the "proc" + parameter of BASS_ChannelSetSync, and is posted to the window specified in the BASS_Init + call. The message parameters are: WPARAM = data, LPARAM = user. + } + BASS_SYNC_MIXTIME = $40000000; + { FLAG: sync at mixtime, else at playtime } + BASS_SYNC_ONETIME = $80000000; + { FLAG: sync only once, else continuously } + + // BASS_ChannelIsActive return values + BASS_ACTIVE_STOPPED = 0; + BASS_ACTIVE_PLAYING = 1; + BASS_ACTIVE_STALLED = 2; + BASS_ACTIVE_PAUSED = 3; + + // BASS_ChannelIsSliding return flags + BASS_SLIDE_FREQ = 1; + BASS_SLIDE_VOL = 2; + BASS_SLIDE_PAN = 4; + + // BASS_ChannelGetData flags + BASS_DATA_AVAILABLE = 0; // query how much data is buffered + BASS_DATA_FLOAT = $40000000; // flag: return floating-point sample data + BASS_DATA_FFT512 = $80000000; // 512 sample FFT + BASS_DATA_FFT1024 = $80000001; // 1024 FFT + BASS_DATA_FFT2048 = $80000002; // 2048 FFT + BASS_DATA_FFT4096 = $80000003; // 4096 FFT + BASS_DATA_FFT8192 = $80000004; // 8192 FFT + BASS_DATA_FFT_INDIVIDUAL = $10; // FFT flag: FFT for each channel, else all combined + BASS_DATA_FFT_NOWINDOW = $20; // FFT flag: no Hanning window + + // BASS_ChannelGetTags types : what's returned + BASS_TAG_ID3 = 0; // ID3v1 tags : 128 byte block + BASS_TAG_ID3V2 = 1; // ID3v2 tags : variable length block + BASS_TAG_OGG = 2; // OGG comments : array of null-terminated strings + BASS_TAG_HTTP = 3; // HTTP headers : array of null-terminated strings + BASS_TAG_ICY = 4; // ICY headers : array of null-terminated strings + BASS_TAG_META = 5; // ICY metadata : null-terminated string + BASS_TAG_VENDOR = 9; // OGG encoder : null-terminated string + BASS_TAG_LYRICS3 = 10; // Lyric3v2 tag : ASCII string + BASS_TAG_RIFF_INFO = $100; // RIFF/WAVE tags : array of null-terminated ANSI strings + BASS_TAG_MUSIC_NAME = $10000; // MOD music name : ANSI string + BASS_TAG_MUSIC_MESSAGE = $10001; // MOD message : ANSI string + BASS_TAG_MUSIC_INST = $10100; // + instrument #, MOD instrument name : ANSI string + BASS_TAG_MUSIC_SAMPLE = $10300; // + sample #, MOD sample name : ANSI string + + BASS_FX_CHORUS = 0; // GUID_DSFX_STANDARD_CHORUS + BASS_FX_COMPRESSOR = 1; // GUID_DSFX_STANDARD_COMPRESSOR + BASS_FX_DISTORTION = 2; // GUID_DSFX_STANDARD_DISTORTION + BASS_FX_ECHO = 3; // GUID_DSFX_STANDARD_ECHO + BASS_FX_FLANGER = 4; // GUID_DSFX_STANDARD_FLANGER + BASS_FX_GARGLE = 5; // GUID_DSFX_STANDARD_GARGLE + BASS_FX_I3DL2REVERB = 6; // GUID_DSFX_STANDARD_I3DL2REVERB + BASS_FX_PARAMEQ = 7; // GUID_DSFX_STANDARD_PARAMEQ + BASS_FX_REVERB = 8; // GUID_DSFX_WAVES_REVERB + + BASS_FX_PHASE_NEG_180 = 0; + BASS_FX_PHASE_NEG_90 = 1; + BASS_FX_PHASE_ZERO = 2; + BASS_FX_PHASE_90 = 3; + BASS_FX_PHASE_180 = 4; + + // BASS_RecordSetInput flags + BASS_INPUT_OFF = $10000; + BASS_INPUT_ON = $20000; + BASS_INPUT_LEVEL = $40000; + + BASS_INPUT_TYPE_MASK = $ff000000; + BASS_INPUT_TYPE_UNDEF = $00000000; + BASS_INPUT_TYPE_DIGITAL = $01000000; + BASS_INPUT_TYPE_LINE = $02000000; + BASS_INPUT_TYPE_MIC = $03000000; + BASS_INPUT_TYPE_SYNTH = $04000000; + BASS_INPUT_TYPE_CD = $05000000; + BASS_INPUT_TYPE_PHONE = $06000000; + BASS_INPUT_TYPE_SPEAKER = $07000000; + BASS_INPUT_TYPE_WAVE = $08000000; + BASS_INPUT_TYPE_AUX = $09000000; + BASS_INPUT_TYPE_ANALOG = $0a000000; + + // BASS_SetNetConfig flags + BASS_NET_TIMEOUT = 0; + BASS_NET_BUFFER = 1; + + // BASS_StreamGetFilePosition modes + BASS_FILEPOS_CURRENT = 0; + BASS_FILEPOS_DECODE = BASS_FILEPOS_CURRENT; + BASS_FILEPOS_DOWNLOAD = 1; + BASS_FILEPOS_END = 2; + BASS_FILEPOS_START = 3; + BASS_FILEPOS_CONNECTED = 4; + + // STREAMFILEPROC actions + BASS_FILE_CLOSE = 0; + BASS_FILE_READ = 1; + BASS_FILE_LEN = 3; + BASS_FILE_SEEK = 4; + + BASS_STREAMPROC_END = $80000000; // end of user stream flag + + // BASS_MusicSet/GetAttribute options + BASS_MUSIC_ATTRIB_AMPLIFY = 0; + BASS_MUSIC_ATTRIB_PANSEP = 1; + BASS_MUSIC_ATTRIB_PSCALER = 2; + BASS_MUSIC_ATTRIB_BPM = 3; + BASS_MUSIC_ATTRIB_SPEED = 4; + BASS_MUSIC_ATTRIB_VOL_GLOBAL = 5; + BASS_MUSIC_ATTRIB_VOL_CHAN = $100; // + channel # + BASS_MUSIC_ATTRIB_VOL_INST = $200; // + instrument # + + // BASS_Set/GetConfig options + BASS_CONFIG_BUFFER = 0; + BASS_CONFIG_UPDATEPERIOD = 1; + BASS_CONFIG_MAXVOL = 3; + BASS_CONFIG_GVOL_SAMPLE = 4; + BASS_CONFIG_GVOL_STREAM = 5; + BASS_CONFIG_GVOL_MUSIC = 6; + BASS_CONFIG_CURVE_VOL = 7; + BASS_CONFIG_CURVE_PAN = 8; + BASS_CONFIG_FLOATDSP = 9; + BASS_CONFIG_3DALGORITHM = 10; + BASS_CONFIG_NET_TIMEOUT = 11; + BASS_CONFIG_NET_BUFFER = 12; + BASS_CONFIG_PAUSE_NOPLAY = 13; + BASS_CONFIG_NET_PREBUF = 15; + BASS_CONFIG_NET_AGENT = 16; + BASS_CONFIG_NET_PROXY = 17; + BASS_CONFIG_NET_PASSIVE = 18; + BASS_CONFIG_REC_BUFFER = 19; + BASS_CONFIG_NET_PLAYLIST = 21; + BASS_CONFIG_MUSIC_VIRTUAL = 22; + +type + DWORD = cardinal; + BOOL = LongBool; + FLOAT = Single; + QWORD = int64; // 64-bit (replace "int64" with "comp" if using Delphi 3) + + HMUSIC = DWORD; // MOD music handle + HSAMPLE = DWORD; // sample handle + HCHANNEL = DWORD; // playing sample's channel handle + HSTREAM = DWORD; // sample stream handle + HRECORD = DWORD; // recording handle + HSYNC = DWORD; // synchronizer handle + HDSP = DWORD; // DSP handle + HFX = DWORD; // DX8 effect handle + HPLUGIN = DWORD; // Plugin handle + + BASS_INFO = record + flags: DWORD; // device capabilities (DSCAPS_xxx flags) + hwsize: DWORD; // size of total device hardware memory + hwfree: DWORD; // size of free device hardware memory + freesam: DWORD; // number of free sample slots in the hardware + free3d: DWORD; // number of free 3D sample slots in the hardware + minrate: DWORD; // min sample rate supported by the hardware + maxrate: DWORD; // max sample rate supported by the hardware + eax: BOOL; // device supports EAX? (always FALSE if BASS_DEVICE_3D was not used) + minbuf: DWORD; // recommended minimum buffer length in ms (requires BASS_DEVICE_LATENCY) + dsver: DWORD; // DirectSound version + latency: DWORD; // delay (in ms) before start of playback (requires BASS_DEVICE_LATENCY) + initflags: DWORD; // "flags" parameter of BASS_Init call + speakers: DWORD; // number of speakers available + driver: PChar; // driver + freq: DWORD; // current output rate (OSX only) + end; + + BASS_RECORDINFO = record + flags: DWORD; // device capabilities (DSCCAPS_xxx flags) + formats: DWORD; // supported standard formats (WAVE_FORMAT_xxx flags) + inputs: DWORD; // number of inputs + singlein: BOOL; // only 1 input can be set at a time + driver: PChar; // driver + freq: DWORD; // current input rate (OSX only) + end; + + BASS_CHANNELINFO = record + freq: DWORD; // default playback rate + chans: DWORD; // channels + flags: DWORD; // BASS_SAMPLE/STREAM/MUSIC/SPEAKER flags + ctype: DWORD; // type of channel + origres: DWORD; // original resolution + plugin: HPLUGIN; // plugin + end; + + BASS_PLUGINFORM = record + ctype: DWORD; // channel type + name: PChar; // format description + exts: PChar; // file extension filter ( *.ext1;*.ext2;etc...) + end; + PBASS_PLUGINFORMS = ^TBASS_PLUGINFORMS; + TBASS_PLUGINFORMS = array[0..maxInt div sizeOf(BASS_PLUGINFORM) - 1] of BASS_PLUGINFORM; + + BASS_PLUGININFO = record + version: DWORD; // version (same form as BASS_GetVersion) + formatc: DWORD; // number of formats + formats: PBASS_PLUGINFORMS; // the array of formats + end; + PBASS_PLUGININFO = ^BASS_PLUGININFO; + + // Sample info structure + BASS_SAMPLE = record + freq: DWORD; // default playback rate + volume: DWORD; // default volume (0-100) + pan: Integer; // default pan (-100=left, 0=middle, 100=right) + flags: DWORD; // BASS_SAMPLE_xxx flags + length: DWORD; // length (in samples, not bytes) + max: DWORD; // maximum simultaneous playbacks + origres: DWORD; // original resolution + chans: DWORD; // number of channels + mingap: DWORD; // minimum gap (ms) between creating channels + { + The following are the samples default 3D attributes + (if the sample is 3D, BASS_SAMPLE_3D is in flags) + see BASS_ChannelSet3DAttributes + } + mode3d: DWORD; // BASS_3DMODE_xxx mode + mindist: FLOAT; // minimum distance + maxdist: FLOAT; // maximum distance + iangle: DWORD; // angle of inside projection cone + oangle: DWORD; // angle of outside projection cone + outvol: DWORD; // delta-volume outside the projection cone + { + The following are the defaults used if the sample uses the DirectX 7 + voice allocation/management features. + } + vam: DWORD; // voice allocation/management flags (BASS_VAM_xxx) + priority: DWORD; // priority (0=lowest, $ffffffff=highest) + end; + + // 3D vector (for 3D positions/velocities/orientations) + BASS_3DVECTOR = record + x: FLOAT; // +=right, -=left + y: FLOAT; // +=up, -=down + z: FLOAT; // +=front, -=behind + end; + + BASS_FXCHORUS = record + fWetDryMix: FLOAT; + fDepth: FLOAT; + fFeedback: FLOAT; + fFrequency: FLOAT; + lWaveform: DWORD; // 0=triangle, 1=sine + fDelay: FLOAT; + lPhase: DWORD; // BASS_FX_PHASE_xxx + end; + + BASS_FXCOMPRESSOR = record + fGain: FLOAT; + fAttack: FLOAT; + fRelease: FLOAT; + fThreshold: FLOAT; + fRatio: FLOAT; + fPredelay: FLOAT; + end; + + BASS_FXDISTORTION = record + fGain: FLOAT; + fEdge: FLOAT; + fPostEQCenterFrequency: FLOAT; + fPostEQBandwidth: FLOAT; + fPreLowpassCutoff: FLOAT; + end; + + BASS_FXECHO = record + fWetDryMix: FLOAT; + fFeedback: FLOAT; + fLeftDelay: FLOAT; + fRightDelay: FLOAT; + lPanDelay: BOOL; + end; + + BASS_FXFLANGER = record + fWetDryMix: FLOAT; + fDepth: FLOAT; + fFeedback: FLOAT; + fFrequency: FLOAT; + lWaveform: DWORD; // 0=triangle, 1=sine + fDelay: FLOAT; + lPhase: DWORD; // BASS_FX_PHASE_xxx + end; + + BASS_FXGARGLE = record + dwRateHz: DWORD; // Rate of modulation in hz + dwWaveShape: DWORD; // 0=triangle, 1=square + end; + + BASS_FXI3DL2REVERB = record + lRoom: Longint; // [-10000, 0] default: -1000 mB + lRoomHF: Longint; // [-10000, 0] default: 0 mB + flRoomRolloffFactor: FLOAT; // [0.0, 10.0] default: 0.0 + flDecayTime: FLOAT; // [0.1, 20.0] default: 1.49s + flDecayHFRatio: FLOAT; // [0.1, 2.0] default: 0.83 + lReflections: Longint; // [-10000, 1000] default: -2602 mB + flReflectionsDelay: FLOAT; // [0.0, 0.3] default: 0.007 s + lReverb: Longint; // [-10000, 2000] default: 200 mB + flReverbDelay: FLOAT; // [0.0, 0.1] default: 0.011 s + flDiffusion: FLOAT; // [0.0, 100.0] default: 100.0 % + flDensity: FLOAT; // [0.0, 100.0] default: 100.0 % + flHFReference: FLOAT; // [20.0, 20000.0] default: 5000.0 Hz + end; + + BASS_FXPARAMEQ = record + fCenter: FLOAT; + fBandwidth: FLOAT; + fGain: FLOAT; + end; + + BASS_FXREVERB = record + fInGain: FLOAT; // [-96.0,0.0] default: 0.0 dB + fReverbMix: FLOAT; // [-96.0,0.0] default: 0.0 db + fReverbTime: FLOAT; // [0.001,3000.0] default: 1000.0 ms + fHighFreqRTRatio: FLOAT; // [0.001,0.999] default: 0.001 + end; + + // callback function types + STREAMPROC = function(handle: HSTREAM; buffer: Pointer; length: DWORD; user: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + { + User stream callback function. NOTE: A stream function should obviously be as + quick as possible, other streams (and MOD musics) can't be mixed until + it's finished. + handle : The stream that needs writing + buffer : Buffer to write the samples in + length : Number of bytes to write + user : The 'user' parameter value given when calling BASS_StreamCreate + RETURN : Number of bytes written. Set the BASS_STREAMPROC_END flag to end + the stream. + } + + STREAMFILEPROC = function(action, param1, param2, user: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + { + User file stream callback function. + action : The action to perform, one of BASS_FILE_xxx values. + param1 : Depends on "action" + param2 : Depends on "action" + user : The 'user' parameter value given when calling BASS_StreamCreate + RETURN : Depends on "action" + } + + DOWNLOADPROC = procedure(buffer: Pointer; length: DWORD; user: DWORD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + { + Internet stream download callback function. + buffer : Buffer containing the downloaded data... NULL=end of download + length : Number of bytes in the buffer + user : The 'user' parameter value given when calling BASS_StreamCreateURL + } + + SYNCPROC = procedure(handle: HSYNC; channel, data: DWORD; user: DWORD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + { + Sync callback function. NOTE: a sync callback function should be very + quick as other syncs cannot be processed until it has finished. If the + sync is a "mixtime" sync, then other streams and MOD musics can not be + mixed until it's finished either. + handle : The sync that has occured + channel: Channel that the sync occured in + data : Additional data associated with the sync's occurance + user : The 'user' parameter given when calling BASS_ChannelSetSync + } + + DSPPROC = procedure(handle: HDSP; channel: DWORD; buffer: Pointer; length: DWORD; user: DWORD); {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + { + DSP callback function. NOTE: A DSP function should obviously be as quick + as possible... other DSP functions, streams and MOD musics can not be + processed until it's finished. + handle : The DSP handle + channel: Channel that the DSP is being applied to + buffer : Buffer to apply the DSP to + length : Number of bytes in the buffer + user : The 'user' parameter given when calling BASS_ChannelSetDSP + } + + RECORDPROC = function(handle: HRECORD; const buffer: Pointer; length: DWORD; user: DWORD): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} + { + Recording callback function. + handle : The recording handle + buffer : Buffer containing the recorded sample data + length : Number of bytes + user : The 'user' parameter value given when calling BASS_RecordStart + RETURN : TRUE = continue recording, FALSE = stop + } + + +// Functions +const + +{$IFDEF MSWINDOWS} + bassdll = 'bass.dll'; +{$ENDIF} +{$IFDEF DARWIN} + bassdll = 'libbass.dylib'; +{$ENDIF} + +function BASS_SetConfig(option, value: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_GetConfig(option: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_GetVersion: DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_GetDeviceDescription(device: DWORD): PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ErrorGetCode: Integer; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_Init(device: Integer; freq, flags: DWORD; win: HWND; clsid: PGUID): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_SetDevice(device: DWORD): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_GetDevice: DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_Free: BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_GetDSoundObject(obj: DWORD): Pointer; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_GetInfo(var info: BASS_INFO): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_Update: BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_GetCPU: FLOAT; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_Start: BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_Stop: BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_Pause: BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_SetVolume(volume: DWORD): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_GetVolume: Integer; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; + +function BASS_PluginLoad(filename: PChar; flags: DWORD): HPLUGIN; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_PluginFree(handle: HPLUGIN): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_PluginGetInfo(handle: HPLUGIN): PBASS_PLUGININFO; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; + +function BASS_Set3DFactors(distf, rollf, doppf: FLOAT): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_Get3DFactors(var distf, rollf, doppf: FLOAT): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_Set3DPosition(var pos, vel, front, top: BASS_3DVECTOR): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_Get3DPosition(var pos, vel, front, top: BASS_3DVECTOR): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +procedure BASS_Apply3D; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +{$IFDEF MSWINDOWS} +function BASS_SetEAXParameters(env: Integer; vol, decay, damp: FLOAT): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_GetEAXParameters(var env: DWORD; var vol, decay, damp: FLOAT): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +{$ENDIF} + +function BASS_MusicLoad(mem: BOOL; f: Pointer; offset, length, flags, freq: DWORD): HMUSIC; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_MusicFree(handle: HMUSIC): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_MusicSetAttribute(handle: HMUSIC; attrib,value: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_MusicGetAttribute(handle: HMUSIC; attrib: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_MusicGetOrders(handle: HMUSIC): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_MusicGetOrderPosition(handle: HMUSIC): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; + +function BASS_SampleLoad(mem: BOOL; f: Pointer; offset, length, max, flags: DWORD): HSAMPLE; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_SampleCreate(length, freq, chans, max, flags: DWORD): Pointer; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_SampleCreateDone: HSAMPLE; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_SampleFree(handle: HSAMPLE): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_SampleGetInfo(handle: HSAMPLE; var info: BASS_SAMPLE): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_SampleSetInfo(handle: HSAMPLE; var info: BASS_SAMPLE): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_SampleGetChannel(handle: HSAMPLE; onlynew: BOOL): HCHANNEL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_SampleGetChannels(handle: HSAMPLE; channels: Pointer): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_SampleStop(handle: HSAMPLE): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; + +function BASS_StreamCreate(freq, chans, flags: DWORD; proc: Pointer; user: DWORD): HSTREAM; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_StreamCreateFile(mem: BOOL; f: Pointer; offset, length, flags: DWORD): HSTREAM; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_StreamCreateURL(url: PChar; offset: DWORD; flags: DWORD; proc: DOWNLOADPROC; user: DWORD):HSTREAM; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_StreamCreateFileUser(buffered: BOOL; flags: DWORD; proc: STREAMFILEPROC; user: DWORD): HSTREAM; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_StreamFree(handle: HSTREAM): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_StreamGetFilePosition(handle:HSTREAM; mode:DWORD) : DWORD;{$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF}external bassdll; +function BASS_StreamGetLength(handle: DWORD): QWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll name 'BASS_ChannelGetLength'; + +function BASS_RecordGetDeviceDescription(devnum: DWORD):PChar;{$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF}external bassdll; +function BASS_RecordInit(device: Integer):BOOL;{$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF}external bassdll; +function BASS_RecordSetDevice(device: DWORD): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_RecordGetDevice: DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_RecordFree:BOOL;{$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF}external bassdll; +function BASS_RecordGetInfo(var info:BASS_RECORDINFO):BOOL;{$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF}external bassdll; +function BASS_RecordGetInputName(input:Integer):PChar;{$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF}external bassdll; +function BASS_RecordSetInput(input:Integer; setting:DWORD):BOOL;{$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF}external bassdll; +function BASS_RecordGetInput(input:Integer):DWORD;{$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF}external bassdll; +function BASS_RecordStart(freq,chans,flags:DWORD; proc:RECORDPROC; user:DWORD):HRECORD;{$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF}external bassdll; + +function BASS_ChannelBytes2Seconds(handle: DWORD; pos: QWORD): FLOAT; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF}external bassdll; +function BASS_ChannelSeconds2Bytes(handle: DWORD; pos: FLOAT): QWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF}external bassdll; +function BASS_ChannelGetDevice(handle: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelSetDevice(handle, device: DWORD): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelIsActive(handle: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF}external bassdll; +function BASS_ChannelGetInfo(handle: DWORD; var info:BASS_CHANNELINFO):BOOL;{$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF}external bassdll; +function BASS_ChannelGetTags(handle: HSTREAM; tags : DWORD): PChar; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelSetFlags(handle, flags: DWORD): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelPreBuf(handle, length: DWORD): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelStop(handle: DWORD): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelPause(handle: DWORD): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelSetAttributes(handle: DWORD; freq, volume, pan: Integer): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelGetAttributes(handle: DWORD; var freq, volume: DWORD; var pan: Integer): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelSlideAttributes(handle: DWORD; freq, volume, pan: Integer; time: DWORD): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelIsSliding(handle: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF}external bassdll; +function BASS_ChannelSet3DAttributes(handle: DWORD; mode: Integer; min, max: FLOAT; iangle, oangle, outvol: Integer): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelGet3DAttributes(handle: DWORD; var mode: DWORD; var min, max: FLOAT; var iangle, oangle, outvol: DWORD): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelSet3DPosition(handle: DWORD; var pos, orient, vel: BASS_3DVECTOR): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelGet3DPosition(handle: DWORD; var pos, orient, vel: BASS_3DVECTOR): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelGetLength(handle: DWORD): QWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelSetPosition(handle: DWORD; pos: QWORD): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelGetPosition(handle: DWORD): QWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelGetLevel(handle: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelGetData(handle: DWORD; buffer: Pointer; length: DWORD): DWORD; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelSetSync(handle: DWORD; stype: DWORD; param: QWORD; proc: SYNCPROC; user: DWORD): HSYNC; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelRemoveSync(handle: DWORD; sync: HSYNC): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelSetDSP(handle: DWORD; proc: DSPPROC; user: DWORD; priority: Integer): HDSP; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelRemoveDSP(handle: DWORD; dsp: HDSP): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +{$IFDEF MSWINDOWS} +function BASS_ChannelSetEAXMix(handle: DWORD; mix: FLOAT): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelGetEAXMix(handle: DWORD; var mix: FLOAT): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +{$ENDIF} +function BASS_ChannelSetLink(handle, chan: DWORD): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelRemoveLink(handle, chan: DWORD): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelSetFX(handle, etype: DWORD; priority: Integer): HFX; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_ChannelRemoveFX(handle: DWORD; fx: HFX): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; + +function BASS_FXSetParameters(handle: HFX; par: Pointer): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_FXGetParameters(handle: HFX; par: Pointer): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; +function BASS_FXReset(handle: HFX): BOOL; {$IFDEF DLL_STDCALL} stdcall; {$ENDIF} {$IFDEF DLL_CDECL} cdecl; {$ENDIF} external bassdll; + + +function BASS_SPEAKER_N(n: DWORD): DWORD; +function MAKEMUSICPOS(order,row: DWORD): DWORD; +{$IFDEF MSWINDOWS} +function BASS_SetEAXPreset(env: Integer): BOOL; +{ + This function is defined in the implementation part of this unit. + It is not part of BASS.DLL but an extra function which makes it easier + to set the predefined EAX environments. + env : a EAX_ENVIRONMENT_xxx constant +} +{$ENDIF} + +implementation + +function BASS_SPEAKER_N(n: DWORD): DWORD; +begin + Result := n shl 24; +end; + +function MAKEMUSICPOS(order,row: DWORD): DWORD; +begin + Result := $80000000 or DWORD(MAKELONG(order,row)); +end; + +{$IFDEF MSWINDOWS} +function BASS_SetEAXPreset(env: Integer): BOOL; +begin + case (env) of + EAX_ENVIRONMENT_GENERIC: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_GENERIC, 0.5, 1.493, 0.5); + EAX_ENVIRONMENT_PADDEDCELL: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PADDEDCELL, 0.25, 0.1, 0); + EAX_ENVIRONMENT_ROOM: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ROOM, 0.417, 0.4, 0.666); + EAX_ENVIRONMENT_BATHROOM: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_BATHROOM, 0.653, 1.499, 0.166); + EAX_ENVIRONMENT_LIVINGROOM: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_LIVINGROOM, 0.208, 0.478, 0); + EAX_ENVIRONMENT_STONEROOM: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_STONEROOM, 0.5, 2.309, 0.888); + EAX_ENVIRONMENT_AUDITORIUM: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_AUDITORIUM, 0.403, 4.279, 0.5); + EAX_ENVIRONMENT_CONCERTHALL: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CONCERTHALL, 0.5, 3.961, 0.5); + EAX_ENVIRONMENT_CAVE: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CAVE, 0.5, 2.886, 1.304); + EAX_ENVIRONMENT_ARENA: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ARENA, 0.361, 7.284, 0.332); + EAX_ENVIRONMENT_HANGAR: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_HANGAR, 0.5, 10.0, 0.3); + EAX_ENVIRONMENT_CARPETEDHALLWAY: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CARPETEDHALLWAY, 0.153, 0.259, 2.0); + EAX_ENVIRONMENT_HALLWAY: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_HALLWAY, 0.361, 1.493, 0); + EAX_ENVIRONMENT_STONECORRIDOR: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_STONECORRIDOR, 0.444, 2.697, 0.638); + EAX_ENVIRONMENT_ALLEY: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_ALLEY, 0.25, 1.752, 0.776); + EAX_ENVIRONMENT_FOREST: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_FOREST, 0.111, 3.145, 0.472); + EAX_ENVIRONMENT_CITY: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_CITY, 0.111, 2.767, 0.224); + EAX_ENVIRONMENT_MOUNTAINS: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_MOUNTAINS, 0.194, 7.841, 0.472); + EAX_ENVIRONMENT_QUARRY: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_QUARRY, 1, 1.499, 0.5); + EAX_ENVIRONMENT_PLAIN: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PLAIN, 0.097, 2.767, 0.224); + EAX_ENVIRONMENT_PARKINGLOT: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PARKINGLOT, 0.208, 1.652, 1.5); + EAX_ENVIRONMENT_SEWERPIPE: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_SEWERPIPE, 0.652, 2.886, 0.25); + EAX_ENVIRONMENT_UNDERWATER: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_UNDERWATER, 1, 1.499, 0); + EAX_ENVIRONMENT_DRUGGED: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_DRUGGED, 0.875, 8.392, 1.388); + EAX_ENVIRONMENT_DIZZY: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_DIZZY, 0.139, 17.234, 0.666); + EAX_ENVIRONMENT_PSYCHOTIC: + Result := BASS_SetEAXParameters(EAX_ENVIRONMENT_PSYCHOTIC, 0.486, 7.563, 0.806); + else + Result := FALSE; + end; +end; +{$ENDIF} + +end. +// END OF FILE ///////////////////////////////////////////////////////////////// + diff --git a/Game/Code/switches.inc b/Game/Code/switches.inc index 578271c0..1e1d4cad 100644 --- a/Game/Code/switches.inc +++ b/Game/Code/switches.inc @@ -1,19 +1,43 @@ -{$DEFINE DEBUG} // to-do : Remove b4 release - -{$IFDEF FPC} - {$UNDEF UseSerialPort} - {$UNDEF UseMIDIPort} -{$ELSE} - {$UNDEF UseSerialPort} - {$DEFINE UseMIDIPort} -{$ENDIF} - -{$IFDEF win32} - {$DEFINE UseBASS} - {$IFDEF DEBUG} - {$APPTYPE CONSOLE} - {$ENDIF} -{$ELSE} - {$UNDEF UseBASS} -{$ENDIF} - +{$DEFINE DEBUG} // to-do : Remove b4 release + +// Comment by eddie: +// The mac port currently also uses the WIN32 define. +// Once I get the beast compiled, linked and running +// I will change this. +// There are some parts where the WIN32 define could not +// be used. I changed the WIN32 to MSWINDOWS. +// So, for Windows-only code use the MSWINDOWS define. + + +{$IFDEF FPC} + {$IFDEF DARWIN} + {$H+} + {$R-} + {$DEFINE WIN32} + {$DEFINE TRANSLATE} + {$ELSE} + {$DEFINE LAZARUS} + {$ENDIF} + + {$MODE DELPHI} + {$DEFINE DLL_CDECL} + {$UNDEF UseSerialPort} + {$UNDEF UseMIDIPort} +{$ELSE} + {$DEFINE DLL_STDCALL} + {$UNDEF UseSerialPort} + {$DEFINE UseMIDIPort} +{$ENDIF} + + +{$IFDEF win32} + {$DEFINE UseBASS} + {$IFDEF DEBUG} + {$IFNDEF DARWIN} + {$APPTYPE CONSOLE} + {$ENDIF} + {$ENDIF} +{$ELSE} + {$UNDEF UseBASS} +{$ENDIF} + -- cgit v1.2.3